C語言實(shí)現(xiàn)學(xué)籍管理系統(tǒng)課程設(shè)計
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)學(xué)籍管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
學(xué)校的課程設(shè)計,自己完成后整理了一下。
自己用鏈表實(shí)現(xiàn)的一個較簡單的學(xué)籍管理系統(tǒng),都是通過一些鏈表以及文件的基本操作完成。
功能實(shí)現(xiàn)
1-錄入學(xué)生信息。
2-查詢學(xué)生信息。
3-修改學(xué)生信息 。
4-刪除學(xué)生信息。
5-顯示學(xué)生信息。
6-統(tǒng)計信息報表。
7-讀盤,存盤。
注:一些getchar()以及換行符是我為了讓界面美觀自己加的。
#include<stdio.h> #include<stdlib.h> #include<conio.h> #include<ctype.h> #include<string.h> #include<windows.h> #define LEN sizeof(struct _stu) typedef struct _stu { ? ? long int id; ? ? ? ?//學(xué)號 ? ? char name[20]; ? ? ?//姓名 ? ? char sex[10]; ? ? ? //性別 ? ? char teacher[20]; ? //老師 ? ? int years; ? ? ? ? ?//年齡 ? ? char date[20]; ? ? ?//入學(xué)時間 ? ? float score; ? ? ? ?//入學(xué)成績 ? ? struct _stu *next; ?//指向下個結(jié)點(diǎn)的指針 }Stu; int count = 0;//鏈表長度,學(xué)生總數(shù) char choice_s;//選擇 void Show();//登陸界面 void Menu();//顯示主菜單 Stu *Insert(Stu *pHead);//錄入 Stu *Find(Stu *pHead, int id); void Find_sum(Stu *pHead);//查詢 void print(Stu *p);//顯示 void Change(Stu *pHead, int id);//修改 Stu *Delete(Stu *pHead, int id);//刪除 void printAll(Stu *pHead);//顯示全部學(xué)生信息(總) void printAll_1(Stu *pHead);//顯示全部學(xué)生信息(姓名升序) void printAll_2(Stu *pHead);//顯示全部學(xué)生信息(成績降序) void data_statistics(Stu *pHead);//數(shù)據(jù)統(tǒng)計,打印報表 Stu *read_file(Stu *pHead);//讀盤 void DeleteLink(Stu *pHead);//銷毀鏈表 void save_file(Stu *pHead);//存盤 int main() { ? ? SetConsoleTitle("西安郵電大學(xué)學(xué)籍管理系統(tǒng)");?? ??? ?//頭文件<windows.h> ? ? int i = 0; ? ? long int id; ? ? Stu *pHead = NULL; ? ? system("color 5A");?? ??? ??? ??? ??? ?//頭文件<windows.h>,改變程序背景及字體顏色 ? ? Show(); ? ? pHead = read_file(pHead); ? ? while(1) ? ? { ? ? ? ? Menu(); ? ? ? ? switch(choice) ? ? ? ? { ? ? ? ? case '1': ? ? ? ? ? ? pHead = Insert(pHead); ? ? ? ? ? ? break; ? ? ? ? case '2': ? ? ? ? ? ? Find_sum(pHead); ? ? ? ? ? ? break; ? ? ? ? case '3': ? ? ? ? ? ? printf("\n\n"); ? ? ? ? ? ? printf("\t輸入要修改學(xué)生學(xué)號: "); ? ? ? ? ? ? scanf("%ld",&id); ? ? ? ? ? ? Change(pHead,id); ? ? ? ? ? ? break; ? ? ? ? case '4': ? ? ? ? ? ? printf("\n\n"); ? ? ? ? ? ? printf("\t輸入要刪除學(xué)生學(xué)號: "); ? ? ? ? ? ? scanf("%ld",&id); ? ? ? ? ? ? pHead = Delete(pHead,id); ? ? ? ? ? ? break; ? ? ? ? case '5': ? ? ? ? ? ? printAll(pHead); ? ? ? ? ? ? break; ? ? ? ? case '6': ? ? ? ? ? ? data_statistics(pHead); ? ? ? ? ? ? break; ? ? ? ? case '7': ? ? ? ? ? ? printf("\n\n"); ? ? ? ? ? ? printf("\t學(xué)生總數(shù)為:%d\n",count); ? ? ? ? ? ? printf("\n"); ? ? ? ??? ? ?? ?printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? ? ? break; ? ? ? ? case '0': ? ? ? ? ? ? save_file(pHead); ? ? ? ? ? ? DeleteLink(pHead);?? ?//銷毀鏈表 ? ? ? ? ? ? printf("\n\n\n"); ? ? ? ? ? ? printf("\t謝謝使用!\n"); ? ? ? ? ? ? exit(0); ? ? ? ? } ? ? } ? ? return 0; } void Show()?? ?//自己添加的登陸功能,比較簡單,可以自己修改添加 { ? ? int i; ? ? char passwd[18]; ? ? char *ch = "WELCOME"; ? ? printf("\n\n\n"); ? ? printf("\t\t\t----------------------------------------------------------\n"); ? ? printf("\t\t\t| ? ? ? ? ? ? ? ? Welcome To The System ? ? ? ? ? ? ? ? ?|\n"); ? ? printf("\t\t\t----------------------------------------------------------\n"); ? ? printf("\t\t\t ? ? ? ? ? ? ? ? ?用戶名登陸:"); ? ?do ? ? { ? ? ? ? scanf("%s",passwd); ? ? ? ? if((strcmp(passwd,"1234567")) != 0) ? ? ? ? { ? ? ? ? ? ? printf("\a");//錯誤警示 ? ? ? ? ? ? printf("\n"); ? ? ? ? ? ? printf("\t\t\t ? ? ? ? ? ? ? ? ?用戶名錯誤,請重新輸入:"); ? ? ? ? ? ? fflush(stdin); ? ? ? ? } ? ? }while((strcmp(passwd,"1234567")) != 0); ? ? for(i = 1; i <= 100; i++) ? ? { ? ? ? ? printf("\n\n\n\n\n\n\n\n\n"); ? ? ? ? printf("\t\t\t\t\t加載:%d%%",i); ? ? ? ? Sleep(9);?? ??? ??? ??? ?//頭文件<windows.h>,停頓9毫秒 ? ? ? ? system("cls");?? ??? ??? ?//頭文件<windows.h>,清屏 ? ? } ? ? printf("\n\n\n\n\n\n\n\n\n"); ? ? printf("\t\t\t\t\t加載完畢"); ? ? Sleep(666); ? ? system("cls"); ? ? printf("\n\n\n\n\n\n\n\n\n"); ? ? printf("\t\t\t\t\t"); ? ? for(i = 0; i < 7; i++) ? ? { ? ? ? ? printf("%c",ch[i]); ? ? ? ? Sleep(333); ? ? } ? ? printf("\n\n\n"); ? ? printf("\t\t\t\t\t\t\t請按任意鍵繼續(xù)..."); } void Menu()?? ??? ?//主菜單 { ? ? getch(); ? ? system("cls");//清屏 ? ? system("color 0D"); ? ? printf("\n\n"); ? ? printf("\t----------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? 歡迎使用學(xué)籍管理系統(tǒng) ? ? ? ? ? ? ? ? ? |\n"); ? ? printf("\t----------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? 1-錄入學(xué)生信息 ? ? ? ? ? ? ? ? ? ? ? |\n"); ? ? printf("\t----------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? 2-查詢學(xué)生信息 ? ? ? ? ? ? ? ? ? ? ? |\n"); ? ? printf("\t----------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? 3-修改學(xué)生信息 ? ? ? ? ? ? ? ? ? ? ? |\n"); ? ? printf("\t----------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? 4-刪除學(xué)生信息 ? ? ? ? ? ? ? ? ? ? ? |\n"); ? ? printf("\t----------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? 5-顯示學(xué)生信息 ? ? ? ? ? ? ? ? ? ? ? |\n"); ? ? printf("\t----------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? 6-統(tǒng)計信息報表 ? ? ? ? ? ? ? ? ? ? ? |\n"); ? ? printf("\t----------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? 7-學(xué)生總數(shù)(.讀盤) ? ? ? ? ? ? ? ? ? ?|\n"); ? ? printf("\t----------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? 0-退出程序(.存盤) ? ? ? ? ? ? ? ? ? ?|\n"); ? ? printf("\t----------------------------------------------------------\n"); ? ? printf("\t請選擇功能(0-7): "); ? ? fflush(stdin); ? ? scanf("%c",&choice_s); ? ? if(choice_s < '0' || choice_s > '7') ? ? { ? ? ? ? printf("\t請重新選擇功能(0-7): "); ? ? ? ? scanf("%c",&choice_s); ? ? } ? ? system("cls");//清屏 } Stu *Insert(Stu *pHead)?? ??? ?//創(chuàng)建鏈表 { ? ? Stu *pEnd; ? ? Stu *pNew,*q; ? ? pNew = (Stu *)malloc(LEN); ? ? q = pHead; ? ? pEnd = pHead; ? ? printf("\n\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ?***錄入學(xué)生信息*** ? ? ? ? ? ? ? ? ? |\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t該學(xué)生的學(xué)號為: "); ? ? scanf("%ld",&pNew->id); ? ? while(pNew->id < 0) ? ? { ? ? ? ? printf("\t學(xué)號不能為負(fù),請重新輸入"); ? ? ? ? scanf("%ld",&pNew->id); ? ? } ? ? while(q) ? ? { ? ? ? ? if(q->id == pNew->id) ? ? ? ? { ? ? ? ? ? ? printf("\t學(xué)號已存在,請重新輸入: "); ? ? ? ? ? ? scanf("%ld",&pNew->id); ? ? ? ? ? ? q = pHead; ? ? ? ? ? ? continue; ? ? ? ? } ? ? ? ? q = q->next; ? ? } ? ? printf("\t學(xué)生姓名: "); ? ? scanf("%s",pNew->name); ? ? printf("\t學(xué)生性別: "); ? ? scanf("%s",pNew->sex); ? ? printf("\t學(xué)生老師: "); ? ? scanf("%s",pNew->teacher); ? ? printf("\t學(xué)生年齡: "); ? ? scanf("%d",&pNew->years); ? ? while(pNew->years < 0) ? ? { ? ? ? ? printf("\t年齡不能為負(fù),請重新輸入:"); ? ? ? ? scanf("%d",&pNew->years); ? ? } ? ? printf("\t學(xué)生入學(xué)時間: "); ? ? scanf("%s",pNew->date); ? ? while(strlen(pNew->date) < 8) ? ? { ? ? ? ? printf("\t入學(xué)日期(年/月/日),請重新輸入; "); ? ? ? ? scanf("%s",pNew->date); ? ? } ? ? printf("\t學(xué)生入學(xué)成績: "); ? ? scanf("%f",&pNew->score); ? ? while(pNew->score < 0 || pNew->score > 750) ? ? { ? ? ? ? printf("\t入學(xué)成績(0-750),請重新輸入: "); ? ? ? ? scanf("%f",&pNew->score); ? ? } ? ?? ? ? pNew->next = NULL; ? ? if(pHead == NULL) ? ? ? ? pHead = pNew; ? ? else ? ? { ? ? ? ? while(pEnd && pEnd->next != NULL) ? ? ? ? ? ? pEnd = pEnd->next; ? ? ? ? pEnd->next = pNew; ? ? } ? ? count++; ? ? printf("\n"); ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? return pHead; } void Find_sum(Stu *pHead)?? ?//4種查詢方式?? ? { ? ? char choice; ? ? long int id; ? ? float score; ? ? char teacher[20]; ? ? Stu *p = pHead; ? ? printf("\n\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ?***查詢學(xué)生信息*** ? ? ? ? ? ? ? ? ? |\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? ? 1.按學(xué)號查詢 ? ? ? ? ? ? ? ? ? ? ?|\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? ? 2.按成績查詢 ? ? ? ? ? ? ? ? ? ? ?|\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? ? 3.按老師和學(xué)號查詢 ? ? ? ? ? ? ? ?|\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? ? 4.按老師和成績查詢 ? ? ? ? ? ? ? ?|\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? ? 0.返回主菜單 ? ? ? ? ? ? ? ? ? ? ?|\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t請選擇查詢方式: "); ? ? fflush(stdin); ? ? scanf("%c",&choice); ? ? while(choice < '0' || choice > '4') ? ? { ? ? ? ? printf("\t請重新選擇功能(0-4): "); ? ? ? ? fflush(stdin); ? ? ? ? scanf("%c",&choice); ? ? } ? ? switch(choice) ? ? { ? ? case '1': ? ? ? ? printf("\t輸入要查詢學(xué)生學(xué)號: "); ? ? ? ? scanf("%ld",&id); ? ? ? ? print(Find(pHead,id));?? ??? ?//調(diào)用print(),F(xiàn)ind()函數(shù) ? ? ? ? printf("\n"); ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? getchar(); ? ? ? ? return; ? ? case '2': ? ? ? ? printf("\t輸入要查詢學(xué)生成績: "); ? ? ? ? scanf("%f",&score); ? ? ? ? while(p && p->score != score) p = p->next; ? ? ? ? if(!p) ? ? ? ? { ? ? ? ? ? ? printf("\t對不起,沒有查詢到該學(xué)生信息.\n"); ? ? ? ? } ? ? ? ? else ? ? ? ? { ? ? ? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n"); ? ? ? ? ? ? printf("\t---------------------------------------------------------\n"); ? ? ? ? ? ? while(p) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? if(p->score == score) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",p->id,p->name,p->sex,p->teacher,p->years,p->date,p->score); ? ? ? ? ? ? ? ? ? ? p = p->next; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? p = p->next; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? printf("\n"); ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? getchar(); ? ? ? ? return; ? ? case '3': ? ? ? ? printf("\t輸入要查詢老師和其學(xué)生學(xué)號: "); ? ? ? ? scanf("%s %ld",teacher,&id); ? ? ? ? while(p && strcmp(p->teacher,teacher) != 0 && p->id != id) p = p->next; ? ? ? ? if(!p) ? ? ? ? { ? ? ? ? ? ? printf("\t對不起,沒有查詢到該信息.\n"); ? ? ? ? } ? ? ? ? else ? ? ? ? { ? ? ? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n"); ? ? ? ? ? ? printf("\t---------------------------------------------------------\n"); ? ? ? ? ? ? while(p) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? if(strcmp(p->teacher,teacher) == 0 && p->id == id) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",p->id,p->name,p->sex,p->teacher,p->years,p->date,p->score); ? ? ? ? ? ? ? ? ? ? p = p->next; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? p = p->next; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? printf("\n"); ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? getchar(); ? ? ? ? return; ? ? case '4': ? ? ? ? printf("\t輸入要查詢老師和其學(xué)生成績: "); ? ? ? ? scanf("%s %f",teacher,&score); ? ? ? ? while(p && strcmp(p->teacher,teacher) != 0 && p->score != score) p = p->next; ? ? ? ? if(!p) ? ? ? ? { ? ? ? ? ? ? printf("\t對不起,沒有查詢到該信息.\n"); ? ? ? ? } ? ? ? ? else ? ? ? ? { ? ? ? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n"); ? ? ? ? ? ? printf("\t---------------------------------------------------------\n"); ? ? ? ? ? ? while(p) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? if(strcmp(p->teacher,teacher) == 0 && p->score == score) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",p->id,p->name,p->sex,p->teacher,p->years,p->date,p->score); ? ? ? ? ? ? ? ? ? ? p = p->next; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? else ? ? ? ? ? ? ? ? ? ? p = p->next; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? printf("\n"); ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? getchar(); ? ? ? ? return; ? ? case '0': ? ? ? ? return; ? ? } } Stu *Find(Stu *pHead, int id) { ? ? Stu *p = pHead; ? ? while(p && p->id != id) p = p->next; ? ? return p; } void print(Stu *p) { ? ? if(!p) ? ? { ? ? ? ? printf("\t對不起,沒有查詢到該學(xué)生信息.\n"); ? ? } ? ? else ? ? { ? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n"); ? ? ? ? printf("\t---------------------------------------------------------\n"); ? ? ? ? getchar(); ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",p->id,p->name,p->sex,p->teacher,p->years,p->date,p->score); ? ? } } void Change(Stu *pHead, int id) { ? ? Stu *pNew = Find(pHead,id);?? ??? ?調(diào)用Find()函數(shù) ? ? Stu *q = pHead; ? ? char choice; ? ? int num; ? ? int flag = 0; ? ? if(pNew) ? ? { ? ? ? ? printf("\n\n"); ? ? ? ? printf("\t---------------------------------------------------------\n"); ? ? ? ? printf("\t| ? ? ? ? ? ? ? ? ?***修改學(xué)生信息*** ? ? ? ? ? ? ? ? ? |\n"); ? ? ? ? printf("\t---------------------------------------------------------\n"); ? ? ? ? printf("\t該學(xué)生信息如下: \n"); ? ? ? ? printf("\t---------------------------------------------------------\n"); ? ? ? ? print(pNew);?? ??? ??? ?//調(diào)用print()函數(shù) ? ? ? ? printf("\t---------------------------------------------------------\n"); ? ? ? ? printf("\t1.學(xué)號\t2.姓名3.性別\t4.老師\t5.年齡\n"); ? ? ? ? printf("\t6.入學(xué)時間\t7.入學(xué)成績\t8.全部修改\t0.返回主菜單\n"); ? ? ? ? printf("\t請選擇修改類型: "); ? ? ? ? fflush(stdin); ? ? ? ? scanf("%c",&choice); ? ? ? ? while(choice < '0' || choice > '8') ? ? ? ? { ? ? ? ? ? ? printf("\t請重新選擇功能(0-8): "); ? ? ? ? ? ? fflush(stdin); ? ? ? ? ? ? scanf("%c",&choice); ? ? ? ? } ? ? ? ? switch(choice) ? ? ? ? { ? ? ? ? case '1': ? ? ? ? ? ? printf("\t請輸入新的學(xué)號: "); ? ? ? ? ? ? scanf("%ld",&pNew->id); ? ? ? ? ? ? while(pNew->id < 0) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\t學(xué)號不能為負(fù),請重新輸入: "); ? ? ? ? ? ? ? ? scanf("%ld",&pNew->id); ? ? ? ? ? ? } ? ? ? ? ? ? num = pNew->id; ? ? ? ? ? ? while(q) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? if(q->id == num) ? ? ? ? ? ? ? ? ? ? flag++; ? ? ? ? ? ? ? ? q = q->next; ? ? ? ? ? ? } ? ? ? ? ? ? if(flag > 1) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\t學(xué)號已存在,請重新選擇!\n");?? ?//學(xué)號已存在,直接返回主菜單 ? ? ? ? ? ? ? ? printf("\n"); ? ? ? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? ? ? ? ? return; ? ? ? ? ? ? } ? ? ? ? ? ? printf("\n"); ? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? ? ? getchar(); ? ? ? ? ? ? return; ? ? ? ? case '2': ? ? ? ? ? ? printf("\t請輸入新的學(xué)生姓名: "); ? ? ? ? ? ? scanf("%s",pNew->name); ? ? ? ? ? ? printf("\n"); ? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? ? ? getchar(); ? ? ? ? ? ? return; ? ? ? ? case '3': ? ? ? ? ? ? printf("\t請輸入新的學(xué)生性別: "); ? ? ? ? ? ? scanf("%s",pNew->sex); ? ? ? ? ? ? printf("\n"); ? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? ? ? getchar(); ? ? ? ? ? ? return; ? ? ? ? case '4': ? ? ? ? ? ? printf("\t請輸入新的學(xué)生老師: "); ? ? ? ? ? ? scanf("%s",pNew->teacher); ? ? ? ? ? ? printf("\n"); ? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? ? ? getchar(); ? ? ? ? ? ? return; ? ? ? ? case '5': ? ? ? ? ? ? printf("\t請輸入新的學(xué)生年齡: "); ? ? ? ? ? ? scanf("%d",&pNew->years); ? ? ? ? ? ? while(pNew->years < 0) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\t年齡不能為負(fù),請重新輸入:"); ? ? ? ? ? ? ? ? scanf("%d",&pNew->years); ? ? ? ? ? ? } ? ? ? ? ? ? printf("\n"); ? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? ? ? getchar(); ? ? ? ? ? ? return; ? ? ? ? case '6': ? ? ? ? ? ? printf("\t請輸入新的入學(xué)時間: "); ? ? ? ? ? ? scanf("%s",pNew->date); ? ? ? ? ? ? while(strlen(pNew->date) < 8) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\t入學(xué)日期(年/月/日),請重新輸入; "); ? ? ? ? ? ? ? ? scanf("%s",pNew->date); ? ? ? ? ? ? } ? ? ? ? ? ? printf("\n"); ? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? ? ? getchar(); ? ? ? ? ? ? return; ? ? ? ? case '7': ? ? ? ? ? ? printf("\t請輸入新的入學(xué)成績: "); ? ? ? ? ? ? scanf("%f",&pNew->score); ? ? ? ? ? ? while(pNew->score < 0 || pNew->score > 750) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\t入學(xué)成績(0-750),請重新輸入: "); ? ? ? ? ? ? ? ? scanf("%f",&pNew->score); ? ? ? ? ? ? } ? ? ? ? ? ? printf("\n"); ? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? ? ? getchar(); ? ? ? ? ? ? return; ? ? ? ? case '8': ? ? ? ? ? ? printf("\t學(xué)號: "); ? ? ? ? ? ? scanf("%ld",&pNew->id); ? ? ? ? ? ? while(pNew->id < 0) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\t學(xué)號不能為負(fù),請重新輸入: "); ? ? ? ? ? ? ? ? scanf("%ld",&pNew->id); ? ? ? ? ? ? } ? ? ? ? ? ? num = pNew->id; ? ? ? ? ? ? while(q) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? if(q->id == num) ? ? ? ? ? ? ? ? ? ? flag++; ? ? ? ? ? ? ? ? q = q->next; ? ? ? ? ? ? } ? ? ? ? ? ? if(flag > 1) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\t學(xué)號已存在,請重新選擇!"); ? ? ? ? ? ? ? ? printf("\n"); ? ? ? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? ? ? ? ? return; ? ? ? ? ? ? } ? ? ? ? ? ? printf("\t學(xué)生名稱: "); ? ? ? ? ? ? scanf("%s",pNew->name); ? ? ? ? ? ? printf("\t學(xué)生性別: "); ? ? ? ? ? ? scanf("%s",pNew->sex); ? ? ? ? ? ? printf("\t老師: "); ? ? ? ? ? ? scanf("%s",pNew->teacher); ? ? ? ? ? ? printf("\t年齡: "); ? ? ? ? ? ? scanf("%d",&pNew->years); ? ? ? ? ? ? while(pNew->years < 0) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\t年齡不能為負(fù),請重新輸入:"); ? ? ? ? ? ? ? ? scanf("%d",&pNew->years); ? ? ? ? ? ? } ? ? ? ? ? ? printf("\t入學(xué)時間: "); ? ? ? ? ? ? scanf("%s",pNew->date); ? ? ? ? ? ? while(strlen(pNew->date) < 8) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\t入學(xué)日期(年/月/日),請重新輸入; "); ? ? ? ? ? ? ? ? scanf("%s",pNew->date); ? ? ? ? ? ? } ? ? ? ? ? ? printf("\t入學(xué)成績: "); ? ? ? ? ? ? scanf("%f",&pNew->score); ? ? ? ? ? ? while(pNew->score < 0 || pNew->score > 750) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\t入學(xué)成績(0-750),請重新輸入: "); ? ? ? ? ? ? ? ? scanf("%f",&pNew->score); ? ? ? ? ? ? } ? ? ? ? ? ? printf("\n"); ? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? ? ? getchar(); ? ? ? ? ? ? return; ? ? ? ? case '0': ? ? ? ? ? ? printf("\n"); ? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? ? ? return; ? ? ? ? } ? ? } ? ? else ? ? { ? ? ? ? printf("\t對不起,沒有查詢到該學(xué)生信息.\n"); ? ? ? ? printf("\n"); ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? getchar(); ? ? } } Stu *Delete(Stu *pHead, int id) { ? ? Stu *pNew = Find(pHead,id);?? ??? ?//調(diào)用Find()函數(shù) ? ? Stu *pTemp,*q; ? ? char ch; ? ? pTemp = pHead; ? ? q = pTemp; ? ? if(pTemp == NULL) ? ? { ? ? ? ? printf("\t暫無學(xué)生信息,請先添加!"); ? ? ? ? printf("\n"); ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? getchar(); ? ? ? ? return pHead; ? ? } ? ? if(pNew) ? ? { ? ? ? ? print(pNew); ? ? ? ? printf("\t是否刪除(y/n): "); ? ? ? ? scanf("%c",&ch); ? ? ? ? count--; ? ? ? ? switch(ch) ? ? ? ? { ? ? ? ? case 'y': ? ? ? ? ? ? while(pTemp) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? if(pTemp->id == id) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? if(pHead == pTemp)?? ?//特殊情況,刪除頭節(jié)點(diǎn) ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? pHead = pTemp->next; ? ? ? ? ? ? ? ? ? ? ? ? printf("\n"); ? ? ? ? ? ? ? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? ? ? ? ? ? ? ? ? return pHead; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? q->next = pTemp->next; ? ? ? ? ? ? ? ? ? ? free(pTemp); ? ? ? ? ? ? ? ? ? ? printf("\n"); ? ? ? ? ? ? ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? ? ? ? ? ? ? return pHead; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? q = pTemp; ? ? ? ? ? ? ? ? pTemp = pTemp->next; ? ? ? ? ? ? } ? ? ? ? case 'n': ? ? ? ? ? ? return pHead; ? ? ? ? } ? ? } ? ? else ? ? { ? ? ? ? printf("\t對不起,沒有查詢到該學(xué)生信息.\n"); ? ? ? ? printf("\n"); ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? getchar(); ? ? ? ? return pHead; ? ? } } void printAll(Stu *pHead)?? ??? ?//3種顯示方式,通過冒泡排序 { ? ? char choice; ? ? Stu *pNew = pHead; ? ? printf("\n\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ?***顯示學(xué)生信息*** ? ? ? ? ? ? ? ? ? |\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? 1.按學(xué)號升序顯示 ? ? ? ? ? ? ? ? ? ?|\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? 2.按姓名升序顯示 ? ? ? ? ? ? ? ? ? ?|\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? 3.按成績降序顯示 ? ? ? ? ? ? ? ? ? ?|\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? 0.返回主菜單 ? ? ? ? ? ? ? ? ? ? ? ?|\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t請選擇顯示方式: "); ? ? fflush(stdin); ? ? scanf("%c",&choice); ? ? while(choice < '0' || choice > '3') ? ? { ? ? ? ? printf("\t請重新選擇功能(0-3): "); ? ? ? ? fflush(stdin); ? ? ? ? scanf("%c",&choice); ? ? } ? ? switch(choice) ? ? { ? ? case '1': ? ? ? ? if(pNew == NULL) ? ? ? ? { ? ? ? ? ? ? printf("\t對不起,無學(xué)生信息!\n"); ? ? ? ? } ? ? ? ? else ? ? ? ? {?? ? ? ? ? ? ?? ?//冒泡排序 ? ? ? ? ? ? Stu *p = NULL; ? ? ? ? ? ? Stu *q = NULL; ? ? ? ? ? ? Stu *r = NULL; ? ? ? ? ? ? Stu n; ? ? ? ? ? ? for(p = pHead; p; p = p->next) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? for(q = p->next; q; q = q->next) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? if(p->id > q->id) ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? n = *p; ? ? ? ? ? ? ? ? ? ? ? ? *p = *q; ? ? ? ? ? ? ? ? ? ? ? ? *q = n; ? ? ? ? ? ? ? ? ? ? ? ? r = p->next; ? ? ? ? ? ? ? ? ? ? ? ? p->next = q->next; ? ? ? ? ? ? ? ? ? ? ? ? q->next = r; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n"); ? ? ? ? ? ? printf("\t-------------------------------------------------------------\n"); ? ? ? ? ? ? while(pNew) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",pNew->id,pNew->name,pNew->sex,pNew->teacher,pNew->years,pNew->date,pNew->score); ? ? ? ? ? ? ? ? pNew = pNew->next; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? printf("\n"); ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? getchar(); ? ? ? ? return; ? ? case '2': ? ? ? ? printAll_1(pHead); ? ? ? ? printf("\n"); ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? getchar(); ? ? ? ? return; ? ? case '3': ? ? ? ? printAll_2(pHead); ? ? ? ? printf("\n"); ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? getchar(); ? ? ? ? return; ? ? case '0': ? ? ? ? return; ? ? } } void printAll_1(Stu *pHead) { ? ? Stu *pNew = pHead; ? ? if(pNew == NULL) ? ? { ? ? ? ? printf("\t對不起,無學(xué)生信息!\n"); ? ? } ? ? else ? ? { ? ? ? ? Stu *p = NULL; ? ? ? ? Stu *q = NULL; ? ? ? ? Stu *r = NULL; ? ? ? ? Stu n; ? ? ? ? for(p = pHead; p; p = p->next) ? ? ? ? { ? ? ? ? ? ? for(q = p->next; q; q = q->next) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? if(strcmp(p->name,q->name) > 0) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? n = *p; ? ? ? ? ? ? ? ? ? ? *p = *q; ? ? ? ? ? ? ? ? ? ? *q = n; ? ? ? ? ? ? ? ? ? ? r = p->next; ? ? ? ? ? ? ? ? ? ? p->next = q->next; ? ? ? ? ? ? ? ? ? ? q->next = r; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n"); ? ? ? ? printf("\t-------------------------------------------------------------\n"); ? ? ? ? while(pNew) ? ? ? ? { ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",pNew->id,pNew->name,pNew->sex,pNew->teacher,pNew->years,pNew->date,pNew->score); ? ? ? ? ? ? pNew = pNew->next; ? ? ? ? } ? ? } } void printAll_2(Stu *pHead) { ? ? Stu *pNew = pHead; ? ? if(pNew == NULL) ? ? { ? ? ? ? printf("\t對不起,無學(xué)生信息!\n"); ? ? } ? ? else ? ? { ? ? ? ? Stu *p = NULL; ? ? ? ? Stu *q = NULL; ? ? ? ? Stu *r = NULL; ? ? ? ? Stu n; ? ? ? ? for(p = pHead; p; p = p->next) ? ? ? ? { ? ? ? ? ? ? for(q = p->next; q; q = q->next) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? if(p->score < q->score) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? n = *p; ? ? ? ? ? ? ? ? ? ? *p = *q; ? ? ? ? ? ? ? ? ? ? *q = n; ? ? ? ? ? ? ? ? ? ? r = p->next; ? ? ? ? ? ? ? ? ? ? p->next = q->next; ? ? ? ? ? ? ? ? ? ? q->next = r; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n"); ? ? ? ? printf("\t-------------------------------------------------------------\n"); ? ? ? ? while(pNew) ? ? ? ? { ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",pNew->id,pNew->name,pNew->sex,pNew->teacher,pNew->years,pNew->date,pNew->score); ? ? ? ? ? ? pNew = pNew->next; ? ? ? ? } ? ? } } void data_statistics(Stu *pHead)?? ??? ?//3種打印方式,通過多遍遍歷鏈表 { ? ? char choice; ? ? float score; ? ? Stu *p,*q,*a,*b; ? ? p = q = a = b = pHead; ? ? printf("\n\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ?***統(tǒng)計信息報表*** ? ? ? ? ? ? ? ? ? |\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? 1.分性別打印報表 ? ? ? ? ? ? ? ? ? ?|\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? 2.分成績打印報表 ? ? ? ? ? ? ? ? ? ?|\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? 3.分性別和成績打印報表 ? ? ? ? ? ? ?|\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t| ? ? ? ? ? ? ? ? ? 0.返回主菜單 ? ? ? ? ? ? ? ? ? ? ? ?|\n"); ? ? printf("\t---------------------------------------------------------\n"); ? ? printf("\t請選擇顯示方式: "); ? ? fflush(stdin); ? ? scanf("%c",&choice); ? ? while(choice < '0' || choice > '3') ? ? { ? ? ? ? printf("\t請重新選擇功能(0-3): "); ? ? ? ? fflush(stdin); ? ? ? ? scanf("%c",&choice); ? ? } ? ? switch(choice) ? ? { ? ? case '1': ? ? ? ? printf("\t男: \n"); ? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n"); ? ? ? ? printf("\t-------------------------------------------------------------\n"); ? ? ? ? while(p) ? ? ? ? { ? ? ? ? ? ? if(strcmp(p->sex,"男") == 0) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",p->id,p->name,p->sex,p->teacher,p->years,p->date,p->score); ? ? ? ? ? ? ? ? p = p->next; ? ? ? ? ? ? } ? ? ? ? ? ? else ? ? ? ? ? ? ? ? p = p->next; ? ? ? ? } ? ? ? ? printf("\n"); ? ? ? ? printf("\t女: \n"); ? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n"); ? ? ? ? printf("\t-------------------------------------------------------------\n"); ? ? ? ? while(q) ? ? ? ? { ? ? ? ? ? ? if(strcmp(q->sex,"女") == 0) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",q->id,q->name,q->sex,q->teacher,q->years,q->date,q->score); ? ? ? ? ? ? ? ? q = q->next; ? ? ? ? ? ? } ? ? ? ? ? ? else ? ? ? ? ? ? ? ? q = q->next; ? ? ? ? } ? ? ? ? printf("\n"); ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? getchar(); ? ? ? ? return; ? ? case '2': ? ? ? ? printf("\t你想要以多少分為分界線: "); ? ? ? ? scanf("%f",&score); ? ? ? ? printf("\t%.1f分以下: \n",score); ? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n"); ? ? ? ? printf("\t-------------------------------------------------------------\n"); ? ? ? ? while(p) ? ? ? ? { ? ? ? ? ? ? if(p->score < score) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",p->id,p->name,p->sex,p->teacher,p->years,p->date,p->score); ? ? ? ? ? ? ? ? p = p->next; ? ? ? ? ? ? } ? ? ? ? ? ? else ? ? ? ? ? ? ? ? p = p->next; ? ? ? ? } ? ? ? ? printf("\n"); ? ? ? ? printf("\t%.1f分及以上: \n",score); ? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n"); ? ? ? ? printf("\t-------------------------------------------------------------\n"); ? ? ? ? while(q) ? ? ? ? { ? ? ? ? ? ? if(q->score >= score) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",q->id,q->name,q->sex,q->teacher,q->years,q->date,q->score); ? ? ? ? ? ? ? ? q = q->next; ? ? ? ? ? ? } ? ? ? ? ? ? else ? ? ? ? ? ? ? ? q = q->next; ? ? ? ? } ? ? ? ? printf("\n"); ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? getchar(); ? ? ? ? return; ? ? case '3': ? ? ? ? printf("\t你想要以多少分為分界線: "); ? ? ? ? scanf("%f",&score); ? ? ? ? printf("\t%.1f分及以上男生: \n",score); ? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n"); ? ? ? ? printf("\t-------------------------------------------------------------\n"); ? ? ? ? while(a) ? ? ? ? { ? ? ? ? ? ? if(strcmp(a->sex,"男") == 0 && a->score >= score) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",a->id,a->name,a->sex,a->teacher,a->years,a->date,a->score); ? ? ? ? ? ? ? ? a = a->next; ? ? ? ? ? ? } ? ? ? ? ? ? else ? ? ? ? ? ? ? ? a = a->next; ? ? ? ? } ? ? ? ? printf("\n"); ? ? ? ? printf("\t%.1f分及以上女生: \n",score); ? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n"); ? ? ? ? printf("\t-------------------------------------------------------------\n"); ? ? ? ? while(b) ? ? ? ? { ? ? ? ? ? ? if(strcmp(b->sex,"女") == 0 && b->score >= score) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",b->id,b->name,b->sex,b->teacher,b->years,b->date,b->score); ? ? ? ? ? ? ? ? b = b->next; ? ? ? ? ? ? } ? ? ? ? ? ? else ? ? ? ? ? ? ? ? b = b->next; ? ? ? ? } ? ? ? ? printf("\n"); ? ? ? ? printf("\t%.1f分以下男生: \n",score); ? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n"); ? ? ? ? printf("\t-------------------------------------------------------------\n"); ? ? ? ? while(p) ? ? ? ? { ? ? ? ? ? ? if(strcmp(p->sex,"男") == 0 && p->score < score) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",p->id,p->name,p->sex,p->teacher,p->years,p->date,p->score); ? ? ? ? ? ? ? ? p = p->next; ? ? ? ? ? ? } ? ? ? ? ? ? else ? ? ? ? ? ? ? ? p = p->next; ? ? ? ? } ? ? ? ? printf("\n"); ? ? ? ? printf("\t%.1f分以下女生: \n",score); ? ? ? ? printf("\t學(xué)號\t姓名\t性別\t老師\t年齡\t入學(xué)時間\t入學(xué)成績\n"); ? ? ? ? printf("\t-------------------------------------------------------------\n"); ? ? ? ? while(q) ? ? ? ? { ? ? ? ? ? ? if(strcmp(q->sex,"女") == 0 && q->score < score) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? printf("\t%ld\t%s\t%s\t%s\t%d\t%s\t%.1f\n",q->id,q->name,q->sex,q->teacher,q->years,q->date,q->score); ? ? ? ? ? ? ? ? q = q->next; ? ? ? ? ? ? } ? ? ? ? ? ? else ? ? ? ? ? ? ? ? q = q->next; ? ? ? ? } ? ? ? ? printf("\n"); ? ? ? ? printf("\t請按任意鍵繼續(xù)..."); ? ? ? ? getchar(); ? ? ? ? return; ? ? case '0': ? ? ? ? return; ? ? } } void DeleteLink(Stu *pHead)?? ??? ?//銷毀鏈表 { ? ? Stu *q = pHead; ? ? if(pHead == NULL) ? ? ? ? return; ? ? while(pHead) ? ? { ? ? ? ? q = pHead->next; ? ? ? ? free(pHead); ? ? ? ? pHead = q; ? ? } ?? ?pHead = NULL; } Stu *read_file(Stu *pHead)?? ??? ?//讀盤,直接連接到鏈表 { ? ? FILE *fp; ? ? Stu *pEnd,*pNew; ? ? fp = fopen("d:\\code\\student.txt","r");?? ??? ?//文件名自己設(shè)置 ? ? if(fp == NULL) ? ? { ? ? ? ? printf("\t打開失敗,按任意鍵退出!"); ? ? ? ? getchar(); ? ? } ? ? pNew = (Stu *)malloc(LEN);?? ?//分配內(nèi)存 ? ? while(fscanf(fp,"%ld %s %s %s %d %s %f",&pNew->id,pNew->name,pNew->sex,pNew->teacher,&pNew->years,pNew->date,&pNew->score) != EOF) ? ? { ? ? ? ? count++;?? ?//記錄 ? ? ? ? pNew->next = NULL; ? ? ? ? if(pHead == NULL) ? ? ? ? ? ? pHead = pNew; ? ? ? ? else ? ? ? ? { ? ? ? ? ? ? pEnd = pHead; ? ? ? ? ? ? while(pEnd && pEnd->next != NULL) ? ? ? ? ? ? ? ? pEnd = pEnd->next; ? ? ? ? ? ? pEnd->next = pNew; ? ? ? ? } ? ? ? ? pNew = (Stu *)malloc(LEN);?? ?//再次分配內(nèi)存 ? ? } ? ? free(pNew);?? ?//最后一次分配內(nèi)存是沒有用到的,要釋放掉 ? ? fclose(fp); ? ? getchar(); ? ? return pHead; } void save_file(Stu *pHead)?? ??? ?//存盤 { ? ? FILE *fp; ? ? Stu *p = pHead; ? ? fp = fopen("d:\\code\\student.txt","w");?? ??? ?//文件名自己設(shè)置 ? ? if(fp == NULL) ? ? { ? ? ? ? printf("\t打開失敗,按任意鍵退出!"); ? ? ? ? getchar(); ? ? } ? ? if(p == NULL) ? ? ? ? getch(); ? ? else ? ? { ? ? ? ? while(p) ? ? ? ? { ? ? ? ? ? ? fprintf(fp,"%ld %s %s %s %d %s %.1f",p->id,p->name,p->sex,p->teacher,p->years,p->date,p->score); ? ? ? ? ? ? fprintf(fp,"\n"); ? ? ? ? ? ? p = p->next; ? ? ? ? } ? ? ? ? printf("\n\n"); ? ? ? ? printf("\t存盤成功!"); ? ? } ? ? fclose(fp); }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C語言模擬實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)
- C語言實(shí)現(xiàn)學(xué)籍信息管理系統(tǒng)
- C語言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)課程設(shè)計
- C語言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)程序設(shè)計
- C語言實(shí)現(xiàn)學(xué)籍管理系統(tǒng)
- C語言學(xué)籍管理系統(tǒng)源代碼
- C語言實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)
- C語言學(xué)生學(xué)籍管理系統(tǒng)課程設(shè)計
- C語言實(shí)現(xiàn)簡單學(xué)生學(xué)籍管理系統(tǒng)
- C語言動態(tài)鏈表實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)
相關(guān)文章
Cocos2d-x UI開發(fā)之場景切換代碼實(shí)例
這篇文章主要介紹了Cocos2d-x UI開發(fā)之場景切換代碼實(shí)例,cocos2d-x中的場景切換是通過導(dǎo)演類調(diào)用相應(yīng)的方法完成的,本文通過代碼和詳細(xì)注釋來說明,需要的朋友可以參考下2014-09-09簡單掌握Linux系統(tǒng)中fork()函數(shù)創(chuàng)建子進(jìn)程的用法
fork()函數(shù)只能在類Unix系統(tǒng)下使用,因為需要引入unistd頭文件,這里我們就來簡單掌握Linux系統(tǒng)中fork()函數(shù)創(chuàng)建子進(jìn)程的用法,需要的朋友可以參考下2016-06-06