




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、C語言綜合應用實例、學生信息管理系統(tǒng)#defineBUFLENlOO/*緩沖區(qū)最大字符數(shù)*/ #defineLEN15/*學號和姓名最大字符數(shù),實際請更改*/#defineN100/*最大學生人數(shù),實際請更改*/ structrecord/*結構體*/ charcodeLEN+1;/*學號*/ charnameLEN+1;/*姓名*/in tage;/*年齡*/ charsex3;/*性別*/chartimeLEN+1;/*出生年月*/charadd30;/*家庭地址*/chartelLEN+1;/*電話號碼*/stuN;voidseekO;voidmodify();#include/*l/O
2、函數(shù)*/#include/*其它說明*/#in clude/*字符串函數(shù)*/charmail30;/*電子郵件地址*/in tk=1, n, m;/*定義全局變量*/voidreadfile();/*函數(shù)聲明*/voidinsert();voiddel();voiddisplay();voidsave();voidmenu();intmain() while(k) menu();system(pause);return0;voidhelp()voidreadfile()/*建立信息*/ char*p=student.txt;FILE*fp;printf(n0.歡迎使用系統(tǒng)幫助!n);print
3、f(n1.進入系統(tǒng)后,先刷新學生信息,再查詢;n);printf(n2.按照菜單提示鍵入數(shù)字代號;n);printf(n3.增加學生信息后,切記保存按7;n);printf(n4.謝謝您的使用!n);printf(按學號查詢n);printf(-2.按姓名查詢 -n);inti=0;if(fp=fopen(student.txt,r)=NULL)printf(Openfile%serror!Strikeanykeytoexit!,p);system(pause);exit(0);while(fscanf(fp,%s%s%d%s%s%s%s%s,stui.code,,&
4、stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail)=8) i+;fclose(fp);n=i;printf(錄入完畢!n);voidseek()/*查找*/ inti,item,flag;chars121;/*以姓名和學號最長長度+1為準*/printf(n);printf( 3.退出本菜單n);printf(該學號不存在!n);break;printf( while(1)printf(請選擇子菜單編號:);scanf(%d,&item);flag=0;switch(item) case1: printf(請輸入要查詢的學生
5、的學號:n);scanf(%s,s1);for(i=0;in;i+) if(strcmp(stui.code,s1)=0) flag=1;printf(學生學號學生姓名年齡性別出生年月地址電話E-mailn);printf( );printf(%6s%7s%6d%5s%9s%8s%10s%14sn,stui.code,,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail);if(flag=0)n);ncase2: printf(請輸入要查詢的學生的姓名:n);scanf(%s,s1);for(i=0;in;i+) i
6、f(strcmp(,s1)=0) flag=1;printf(學生學號學生姓名年齡性別出生年月地址電話E-mailn);printf( );printf(%6s%7s%6d%5s%9s%8s%10s%14sn,stui.code,,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail);if(flag=0) printf(該姓名不存在!n);break;case3:return;default:printf(請在1-3之間選擇n);voidmodify()/*修改信息*/ inti,item,num;
7、charsex13,s1LEN+1,s2LEN+1;/*以姓名和學號最長長度+1為準*/nprintf(請輸入新的姓名:n);scanf(%s,s2);printf(請輸入要要修改的學生的學號:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.code,s1)=0)/*num=i;printf(printf( while(1)printf(請選擇子菜單編號:);scanf(%d,&item);switch(item) case1:比較字符串是否相等*/n);printf(1.修改姓名n);printf(2.修改年齡n);printf(3.修改性別
8、n);printf(4.修改出生年月n);printf(5.修改地址n);printf(6.修改電話號碼n);printf(7.修改E-mail地址n);printf(8.退出本菜單n);n);printf(請輸入新的E-mail地址:n);scanf(%s,s2);strcpy(,s2);break;case2: printf(請輸入新的年齡:n);scanf(%d,&stunum.age);break;case3: printf(請輸入新的性別:n);scanf(%s,sex1);strcpy(stunum.sex,sex1);break;case4: pri
9、ntf(請輸入新的出生年月:n);scanf(%s,s2);strcpy(stunum.time,s2);break;case5: printf(請輸入新的地址:n);scanf(%s,s2);strcpy(stunum.add,s2);break;case6: printf(請輸入新的電話號碼:n);scanf(%s,s2);strcpy(stunum.tel,s2);break;case7: strcpy(stunum.mail,s2);break;strcpy(temp,stuj-1.time);case8:return;default:printf(請在1-8之間選擇n);voidso
10、rt()/*按學號排序*/ inti,j,*p,*q,s;chartemp10;for(i=0;ii;j-)if(strcmp(stuj-1.code,stuj.code)0)strcpy(temp,stuj-1.code);strcpy(stuj-1.code,stuj.code);strcpy(stuj.code,temp);strcpy(temp,);strcpy(,);strcpy(,temp);strcpy(temp,stuj-1.sex);strcpy(stuj-1.sex,stuj.sex);strc
11、py(stuj.sex,temp);printf(請輸入待增加的學生數(shù):n);scanf(%d,&m);strcpy(stuj-1.time,stuj.time);strcpy(stuj.time,temp);strcpy(temp,stuj-1.add);strcpy(stuj-1.add,stuj.add);strcpy(stuj.add,temp);strcpy(temp,stuj-1.tel);strcpy(stuj-1.tel,stuj.tel);strcpy(stuj.tel,temp);strcpy(temp,stuj-1.mail);strcpy(stuj-1.mail
12、,stuj.mail);strcpy(stuj.mail,temp);p=&stuj-1.age;q=&stuj.age;s=*q;q=*p;p=s;voidinsert()/*插入函數(shù)*/ inti=n,j,flag;printf(請輸入第d個學生的出生年月:(格式:年.月)n,i+1);scanf(%s,stui.time);do flag=1;while(flag) flag=0;printf(請輸入第d個學生的學號:n,i+1);scanf(%s,stui.code);for(j=0;ji;j+)if(strcmp(stui.code,stuj.code)=0)flag
13、=1;scanf(%s,);printf(請輸入第d個學生的年齡:n,i+1);scanf(%d,&stui.age);printf(請輸入第d個學生的性別:n,i+1);scanf(%s,stui.sex);printf(已有該學號,請檢查后重新錄入!n);break;/*如有重復立即退出該層循環(huán),提高判斷速度*/printf(請輸入第d個學生的姓名:n,i+1);printf(請輸入要刪除學生的學號:n);scanf(%s,s1);printf(請輸入第d個學生的地址:n,i+1);scanf(%s,stui.add);printf(請輸入第d個學生的電話:n,i
14、+1);scanf(%s,stui.tel);printf(請輸入第|個學生的E-mail:n,i+1);scanf(%s,stui.mail);if(flag=0) i+;while(in+m);n+=m;printf(錄入完畢!nn);sort();voiddel() inti,j,flag=0;chars1LEN+1;for(i=0;in;i+)if(strcmp(stui.code,s1)=0) flag=1;for(j=i;jn-1;j+) stuj=stuj+1;if(flag=0) printf(該學號不存在!n);if(flag=1) printf(刪除成功,顯示結果請選擇菜單
15、6n);n-;voiddisplay() inti;printf(所有學生的信息為:n);printf(學生學號學生姓名年齡性別出生年月地址電話E-mailn);printf( );for(i=0;in;i+)printf(%6s%7s%5d%5s%9s%8s%10s%14sn,stui.code,,stui.age,nstui.sex,stui.time,stui.add,stui.tel,stui.mail);printf(*系統(tǒng)功能菜單*n);voidsave() inti;FILE*fp;fp=fopen(student.txt,w);/*for(i=0;in;i+)
16、fprintf(fp,%s%s%d%s%s%s%s%sn,stui.code,,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail);fclose(fp);voidmenu()/*界面*/ intnum;printf(nn學生信息管理系統(tǒng)nn);printf(*nn);printf(*制作人:*nn);printf(*nn);printf(友情提醒:查詢前請先刷新系統(tǒng)!n);寫入*/printf(printf(*n);printf(*0.系統(tǒng)幫助及說明*1.刷新學生信息*n);printf(*n);printf(*2
17、.查詢學生信息*3.修改學生信息*n);printf(*n);printf(*4.增加學生信息*5.按學號刪除信息*n);printf(*n);printf(*6.顯示當前信息*7.保存當前學生信息*n);printf(*n);printf(*8.退出系統(tǒng)*n);printf(*n);printf( printf(請選擇菜單編號:);scanf(%d,&num);switch(num) case0:help();break;case1:readfile();break;case2:seek();break;case3:modify();break;case4:insert();brea
18、k;case5:del();break;case6:display();break;n);n);case7:save();break;case8:k=0;break;default:printf(請在0-8之間選擇n);、學生成績管理編寫一個菜單驅動的學生成績管理程序。要求如下:能輸入并顯示n個學生的m門考試科目的成績、總分和平均分。 按總分由高到低進行排序。任意輸入一個學號,能顯示該學生的姓名、各門功課的成績。#in clude #in clude #in clude#in cludestructstude ntscoreCOURSE_NUM; /*每個學生M門功課的成績*/;typ ede
19、fstructstude ntSTU;intsum; /*每個學生的總成績*/floataverage; /*每個學生的平均成績*/#defineSTU NUM40/*最多的學生人數(shù)*/#defineCOURSE NUM 10/*最多的考試科目*/intnu mber;/*每個學生的學號*/charname10; /*每個學生的姓名*/int/*函數(shù)功能: 向鏈表的末尾添加從鍵盤輸入學生的學號、姓名和成績等信息結構體指針head,指向存儲學生信息的結構體數(shù)組的首地址整型變量n,表示學生人數(shù) 整型變量m,表示考試科目函數(shù)返回值: 無*/ voidAppendScore(STU*head,intn
20、,intm)intSTU *p;for(p=head;pnumber);printf(Inputname:);scanf(%s,p-name);for(j=0;jscore+j);/*函數(shù)功能:打印n個學生的學號、姓名和成績等信息函數(shù)參數(shù):函數(shù)參數(shù):結構體指針head,指向存儲學生信息的結構體數(shù)組的首地址整型變量n,表示學生人數(shù) 整型變量m,表示考試科目函數(shù)返回值: 無*/ voidPrintScore(STU*head,intn,intm)STU*p;inti;charstr100=0,temp3;strcat(str,NumberName);for(i=1;i=m;i+)strcat(st
21、r,Score);itoa(i,temp,10);strcat(str,temp);strcat(str,);strcat(str,sumaverage);printf(%s,str);/*打印表頭*/for(p=head;pnumber,p-name);for(i=0;iscorei);printf(%11d%9.2fn,p-sum,p-average);/*函數(shù)功能:計算每個學生的m門功課的總成績和平均成績*/函數(shù)參數(shù):結構體指針head,指向存儲學生信息的結構體數(shù)組的首地址整型變量n,表示學生人數(shù)整型變量m,表示考試科目函數(shù)返回值: 無voidTotalScore(STU*head,in
22、tn,intm)STU*p;inti;for(p=head;psum=0;for(i=0;isum=p-sum+p-scorei;p-average=(float)p-sum/m;結構體指針head,指向存儲學生信息的結構體數(shù)組的首地址整型變量n,表示學生人數(shù)函數(shù)返回值: 無*/ voidSortScore(STU*head,intn)inti,j,k;STUtemp;for(i=0;in-1;i+)k=i;for(j=i;jsum(head+k)-sum)k=j;if(k!=i)temp=*(head+k);/*函數(shù)功能:用選擇法按總成績由高到低排序函數(shù)參數(shù):*(head+k)=*(head
23、+i);*(head+i)=temp;結構體指針head,指向存儲學生信息的結構體數(shù)組的首地址整型變量num表示要查找的學號 整型變量n,表示學生人數(shù)函數(shù)返回值: 如果找到學號,則返回它在結構體數(shù)組中的位置,否則返回-1*/intSearchNum(STU*head,intnum,intn)inti;for(i=0;inumber=num) returni;return-1;結構體指針head, 指向存儲學生信息的結構體數(shù)組的首地址 整型變量n,表示學生人數(shù) 整型變量m,表示考試科目/*函數(shù)功能:查找學生的學號函數(shù)參數(shù):/*函數(shù)功能:按學號查找學生成績并顯示查找結果函數(shù)參數(shù):函數(shù)返回值: 無*
24、/ voidSearchScore(STU*head,intn,intm)intnumber,findNo;printf(PleaseInputthenumberyouwanttosearch:);scanf(%d,&number);findNo=SearchNum(head,number,n);if(findNo=-1)printf(nNotfound!n);elsePrintScore(head+findNo,1,m);函數(shù)參數(shù):函數(shù)返回值:用戶輸入的選項*/charMenu(void)charch;/*函數(shù)功能:顯示菜單并獲得用戶鍵盤輸入的選項printf(nManagement
25、forStudentsscoresn);printf(0.Exitn);printf(PleaseInputyourchoice:);sea nf(%c, &ch);/*在前面加一個空格,將存于緩沖區(qū)中的回車符讀入returnch;main()m,n;printf(Inputstudentnumberandcoursenumber(n40,m10):);scanf(%d,%d,&n,&m);while(1)switch(ch)case1:AppendScore(stu,n,m);/*TotalScore(stu,n,m);ch=Menu();/*顯示菜單,并讀取用戶輸入
26、*/printf(1.Appendr ecordn);printf(2.Listrecordn);printf(3.Searchr ecordn);printf(4.Sortrecordn);*/charch;intSTUstuSTU_NUM;調用成績添加模塊*/break;printf(Endofprogram!);break;default:printf(Inputerror!);break;學生成績管理系統(tǒng)#includestdio.h #includestdlib.h#includestring.h intshoudsave=0;/*/intpassword()break;case2:
27、PrintScore(stu,n,m);/*調用成績顯示模塊*/break;case3:SearchScore(stu,n,m);/*調用按學號查找模塊*/break;case4:SortScore(stu,n);/*調用成績排序模塊*/printf(nSortedresultn);PrintScore(stu,n,m);/*顯示成績排序結果*/case0:exit(0);/*退出程序*/charpassword10;intflag,i=1;do printf(password?n);scanf(%s,password);if(strcmp(password,123) flag=0;i+;el
28、se flag=1;break;while(idata.num,,p-data.sex,p-data.egrade,p-data.mgrade,p-data.cgrade,p-data.totle,p-data.ave);Node*Locate(Linkl,charfindmess,charnameornum)/*求的接點,并返回該指針*/printf(-n);voidWrong()printf(n提示:輸入錯誤!n);voidNofind()printf(n提示:沒有找到該學生!n);voidprintc()/*本函數(shù)用于輸出中文*/printf(學號t該函數(shù)用于定位連
29、表中符合要Node*r;if(strcmp(nameornum,num)=0)/*按學號查詢*/r=l-next;while(r!=NULL)if(strcmp(r-data.num,findmess)=0)returnr;r=r-next;elseif(strcmp(nameornum,name)=0)/*按姓名查詢*/r=l-next;while(r!=NULL)if(strcmp(,findmess)=0)returnr;r=r-next;return0;voidAdd(Linkl)/*增加學生*/Node*p,*r,*s;charnum10;r=l;s=l-nex
30、t;while(r-next!=NULL) r=r-next;/*將指針置于最末尾*/ while(1) printf(請你輸入學號(以0返回上一級菜單:);scanf(%s,num);if(strcmp(num,0)=0) break;while(s) if(strcmp(s-data.num,num)=0)提示:學號為%s的學生已經(jīng)存在,若要修改請你選擇4修改!n,num);printstart();printc();printe(s);printstart();printf(n);return;printf(p-next=NULL;s=s-next;p=(Node*)malloc(siz
31、eof(Node);strcpy(p-data.num,num);printf(請你輸入姓名:);scanf(%s,);getchar();printf(請你輸入性別:);scanf(%s,p-data.sex);getchar();printf(請你輸入c語言成績:);scanf(%d,&p-data.cgrade);getchar();printf(請你輸入數(shù)學成績:);scanf(%d,&p-data.mgrade);getchar();printf(請你輸入英語成績:);scanf(%d,&p-data.egrade);getchar();
32、p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade;p-data.ave=p-data.totle/3;/*信息輸入已經(jīng)完成*/ r-next=p;printf(tttt查找結果n);r=p;shoudsave=1;intsel;charfindmess20;Node*p;if(!l-next)return;scanf(%d,&sel);if(sel=1)/*學號*/ printf(請你輸入要查找的學號:);scanf(%s,findmess);p=Locate(l,findmess,num);if(p)voidQur(Link
33、l)/*查詢學生*/printf(n提示:沒有資料可以查詢!n);printf(n1按學號查找n2按姓名查找n);printstart();printc();printe(p);printstart();elseNofind();printf(請你輸入要查找的姓名:);scanf(%s,findmess);p=Locate(l,findmess,name);if(p) printstart();printc();printe(p);printstart();elseNofind();elseif(sel=2)/*姓名*/printf(tttt查找結果n);elseWrong();return;
34、scanf(%d,&sel);if(sel=1) printf(請你輸入要刪除的學號:);scanf(%s,findmess);p=Locate(l,findmess,num);if(p) r=l;while(r-next!=p)printf(n1按學號刪除n2按姓名刪除n);voidDel(Linkl)/*刪除*/intsel;Node*p,*r;charfindmess20;if(!l-next)printf(n提示:沒有資料可以刪除!n);r=r-next;r-next=p-next;free(p);shoudsave=1;elseNofind();elseif(sel=2) p
35、rintf(請你輸入要刪除的姓名:);scanf(%s,findmess);p=Locate(l,findmess,name);if(p) r=l;while(r-next!=p) r=r-next;r-next=p-next;free(p);shoudsave=1;printf(n提示:該學生已經(jīng)成功刪除!n);printf(n提示:該學生已經(jīng)成功刪除!n);elseNofind();elseWrong();voidModify(Linkl)/*本函數(shù)用于修改資料*/Node*p;charfindmess20;if(!l-next)return;printf(請你輸入要修改的學生學號:);s
36、canf(%s,findmess);p=Locate(l,findmess,num);if(p) printf(請你輸入新學號(原來是%s):,p-data.num);scanf(%s,p-data.num);printf(請你輸入新姓名(原來是%s):,);scanf(%s,);printf(n提示:沒有資料可以修改!n);getchar();printf(請你輸入新性別(原來是%s):,p-data.sex);scanf(%s,p-data.sex);printf(請你輸入新的c語言成績(原來是小小分):,p-data.cgrade);scanf
37、(%d,&p-data.cgrade);getchar();printf(請你輸入新的數(shù)學成績(原來是d分):,p-data.mgrade);scanf(%d,&p-data.mgrade);getchar();printf(請你輸入新的英語成績(原來是d分):,p-data.egrade);scanf(%d,&p-data.egrade);p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade;p-data.ave=p-data.totle/3;shoudsave=1;elseNofind();voidDisp(L
38、inkl)/*本函數(shù)用于顯示資料*/ intcount=0;Node*p;p=l-next;printf(n提示:資料修改成功!n);printf(n提示:沒有資料可以統(tǒng)計!n);if(!p)printf(n提示:沒有資料可以顯示!n);return;printf(tttt顯示結果n);printstart();printc();printf(n);while(p)printe(p);p=p-next;printstart();printf(n);voidTongji(Linkl)/*本函數(shù)用于統(tǒng)計分數(shù)*/Node*pm,*pe,*pc,*pt,*pa;/*用于指向分數(shù)最高的接點*/Node*
39、r=l-next;if(!r)return;pm=pe=pc=pt=pa=r;while(r!=NULL) if(r-data.cgrade=pc-data.cgrade) pc=r;if(r-data.mgrade=pm-data.mgrade) pm=r;if(r-data.egrade=pe-data.egrade) pe=r;if(r-data.totle=pt-data.totle) pt=r;if(r-data.ave=pa-data.ave) pa=r;r=r-next;printf(統(tǒng)計結果printf(printf(printf(printf(printf(cn);總分最高者
40、:t%s%d分n,,pt-data.totle);平均分最高者:t%s%d分n,,pa-data.ave);英語最高者:t%s%d分n,,pe-data.egrade);數(shù)學最高者:t%s%d分n,,pm-data.mgrade);語言最高者:t%s%d分n,,pc-data.cgrade);printstart();voidSort(Linkl)Linkll;Node*p,*rr,*s;ll=(Link)malloc(sizeof(Node);/*ll-next=NULL;if(l-next=NULL)return;p=l-next;while(p)s=(Node*)malloc(sizeof(Node);/*s-data=p-data;s-next=NULL;rr=ll;while(rr-next!=NULL&rr-next-data.totle=p-data.totle) rr=rr-next;if(rr-next=NULL) rr-next=s;printf(n提示:沒有資料可以排序!n);用于做新的連表*/新建接點用于保存信息*/提示:重新打開文件時發(fā)生錯誤!n);else s-next=rr-n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 一個小鎮(zhèn)的傳奇:課件展示
- 班會課件-男生
- 汽車維修工(高級)試題庫+參考答案解析
- 《醫(yī)學影像學基本原理與應用課件》
- 種子種苗的低溫儲存技術研究考核試卷
- 四大告訴你如何做報告
- 絕緣制品在工業(yè)控制系統(tǒng)網(wǎng)絡安全的考核試卷
- 《企業(yè)安全生產(chǎn)文化建設的實踐與創(chuàng)新》課件
- 小組班會課件
- 糧油行業(yè)展會營銷與品牌推廣考核試卷
- JGJT301-2013 大型塔式起重機混凝土基礎工程技術規(guī)程
- 波浪理論基礎圖解
- 成人社區(qū)獲得性肺炎診斷與治療指南解讀
- 汽車改色備案流程委托書范本
- 角的度量說課PPT
- 西漢馬王堆T型帛畫
- 肥皂盒模具畢業(yè)設計
- 社會主義建設道路初步探索的意義和經(jīng)驗教訓
- 四年級下冊數(shù)學說課稿-5 解決問題的策略(1)-蘇教版
- 跨境電商視覺營銷PPT完整全套教學課件
- GB/T 6739-2022色漆和清漆鉛筆法測定漆膜硬度
評論
0/150
提交評論