版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、“學(xué)生學(xué)習(xí)成績管理系統(tǒng)”用于對(duì)學(xué)生學(xué)習(xí)成績數(shù)據(jù)文件的新文件創(chuàng)建和老文件管理,并可以進(jìn)行密碼設(shè)置。具體要求實(shí)現(xiàn)的功能如下:1、輸入添加記錄:將每一個(gè)學(xué)生的學(xué)號(hào)、姓名和各科學(xué)習(xí)成績作為一個(gè)記錄進(jìn)行輸入或添加。要求經(jīng)過密碼驗(yàn)證后能建立一個(gè)新的數(shù)據(jù)文件或給已建立好的數(shù)據(jù)文件增加記錄。2、顯示、查詢記錄:能按學(xué)生姓名(或?qū)W號(hào))顯示、查詢一個(gè)或多個(gè)學(xué)生的各門(或某門)功課的成績和平均成績。3、修改記錄:可以對(duì)數(shù)據(jù)文件中的任意記錄的數(shù)據(jù)進(jìn)行修改,在修改前后對(duì)該記錄的內(nèi)容進(jìn)行顯示,并設(shè)確認(rèn)提示。(要求設(shè)置密碼,驗(yàn)證通過后方可進(jìn)入修改環(huán)節(jié))4、刪除記錄:可以刪除數(shù)據(jù)文件中的任一記錄,包括邏輯刪除(具有恢復(fù)功能)
2、和物理刪除(不可恢復(fù))。(說明:該功能也應(yīng)設(shè)置為經(jīng)過驗(yàn)證密碼后才可實(shí)施刪除)5、成績排序:采用不同的排序方法對(duì)單科成績和總(或平均)成績進(jìn)行排序,但不能改變?cè)涗浀捻樞颉?、統(tǒng)計(jì)功能:(a)計(jì)算各門課程全班總成績及平均成績;(b)統(tǒng)計(jì)各門課程得分為100、9099、8089、7079、6069和不及格學(xué)生的人數(shù),以及與全班總?cè)藬?shù)的百分比。7、其他:該軟件應(yīng)具有系統(tǒng)名稱、設(shè)計(jì)單位或個(gè)人等基本信息。學(xué)生成績管理系統(tǒng)源程序清單:#include#include#include#include#define null 0#define len sizeof(student)#define n 5typ
3、edef struct stuint flag;long num;char name10;int scoren;struct stu *next;student;void edit();/*編輯菜單*/void search(student *head); /*查找函數(shù)*/student *search_number(student *head,long number); /*按學(xué)號(hào)查找*/void search_name(student *head); /*按姓名查找*/student *search_score(student *head,int min,int max,int i); /
4、*按成績查找*/void enter_record(student *p); /*輸入成績*/student *creat(void); /*建立鏈表*/student * insert(student *head); /*插入結(jié)點(diǎn)*/void count(int *p); /*計(jì)算總成績及平均成績*/void print(student *p); /*輸出結(jié)點(diǎn)*/void print_title();/*輸出標(biāo)題*/student *delete(student *head); /*刪除結(jié)點(diǎn)*/void recover(student *head); /*恢復(fù)刪除*/void revise(
5、student *head); /*修改記錄*/void tongji(student *head); /*統(tǒng)計(jì)*/void paixu(student *head,int m); /*排序*/int cipher_check();/*密碼檢測*/void set_up_cipher();/*設(shè)立密碼*/student *load();/*載入*/void save(student *head); /*保存*/void about();/*關(guān)于*/int n;char cipher11=;/*字符串,保存密碼*/main()char c;student *head=null;system(cl
6、s);about();for(;)system(cls);printf(*n);printf(tt welcome ton);printf(ntt the student score manage systemn);printf(*menu*n);printf(ttt1. creat the recordn);printf(ttt2. load the filen);printf(ttt3. edit the recordn);printf(ttt4. about designn);printf(ttt5. quitn);printf(*n); printf(ntttenter your ch
7、oice(15):);for(;) c=getchar(); if(c=n) continue; else if(c5) printf(tttenter your choice(15):); else break; getchar();switch (c) case 1: head=creat(); if(head=null) printf(empty record!nnenter any key to continue.n); getch(); break; set_up_cipher(); printf(enter any key to edit menu.); getch(); edit
8、(head);break; case 2: head=load(); if(head=null) printf(nenter any key to continue.); getch();break; printf(enter any key to edit menu.); getch(); edit(head); break; case 3:edit(head);break; case 4:about();break; case 5:exit(0); void edit(student *head)/*編輯菜單*/char c,m;int i,f=0;for(;)system(cls);pr
9、intf(*edit*menu*n);printf(ttt1.save the record.n);printf(ttt2.insert a record.n);printf(ttt3.delete a record.n);printf(ttt4.recover the record.n);printf(ttt5.revise the record.n);printf(ttt6.search records.n);printf(ttt7.sort the records.n);printf(ttt8.tongji the records.n);printf(ttt9.change the pa
10、ssword.n);printf(ttt0.return to main menu.n);printf(*n);printf(tttenter your choice(09):);for(;) c=getchar(); if(c=n) continue; else if(c9) printf(tttenter your choice(09):); else break; switch (c) case 1:save(head);f=0;break; case 2: printf(please enter the right password:n); if(cipher_check()=0) p
11、rintf(wrong password!n); break; head=insert(head);f=1;break; case 3: printf(please enter the right password:n); if(cipher_check()=0) printf(wrong password!n); break; head=delete(head);f=1;break; case 4: printf(please enter the right password:n); if(cipher_check()=0) printf(wrong password!n); break;
12、recover(head);f=1;break; case 5: printf(please enter the right password:n); if(cipher_check()=0) printf(wrong password!n); break; revise(head);f=1;break; case 6: search(head);break; case 7: printf(sort on which subject?n); printf(score1(1)/score2(2)/score3(3)/sum(4)n); for(;) scanf(%c,&m); if(m=n) ;
13、 else if(m=1&mnum);head=null;while(p1-num!=0) n+; enter_record(p1); if(n=1) head=p1; else p2-next=p1; p2=p1; p1=(student *)malloc(len); printf(please enter next number(0 to end):n); scanf(%ld,&p1-num); if(n!=0) p2-next=null;free(p1);return head;student * insert(student *head) /*插入結(jié)點(diǎn)*/student *p1,*p2
14、,*new_node;for(;) new_node=(student *)malloc(len); if(new_node=null) printf(database is full,cant add more record.n); return null; printf(nplease enter the number you want to insertn(enter 0 to end):); scanf(%ld,&new_node-num); if(new_node-num=0) break; for(p1=head,p2=null; p1!=null&(new_node-num)(p
15、1-num); p2=p1,p1=p1-next) ; if(p1!=null&(p1-num)=(new_node-num)&p1-flag=1) char c; printf(this number already exists:n); print_title(); print(p1); printf(cover or not?(y/n)?); for(;) c=getchar(); if(c=n|c=n) free(new_node);break; else if(c=y|c=y) free(new_node);enter_record(p1);break; else if(c!=n)
16、printf(error!enter again:); else continue; else if(p1!=null&(p1-num)=(new_node-num) n+; free(new_node); enter_record(p1); else n+; enter_record(new_node); new_node-next=p1; if(p2=null) head=new_node; else p2-next=new_node; return head;student *delete(student *head) /*刪除結(jié)點(diǎn)*/long number;char c;student
17、 *p1,*p2;for(;) printf(please enter the number you want to delete(enter 0 to end):n); scanf(%ld,&number); if(!number) break; for(p1=head,p2=null; p1!=null&p1-num!=number; p2=p1,p1=p1-next) ; if(p1=null|p1-flag=0) printf(this number doesnt exist.n); else print_title(); print(p1); printf(delete this r
18、ecord?n); printf(sure(s)/cancle(c)/delete thoroughly(t)n); for(;) c=getchar(); if(c=c|c=c) break; else if(c=s|c=s|c=t|c=t) n-; if(c=s|c=s) p1-flag=0; else if(p2=null) head=p1-next; else p2-next=p1-next; free(p1); break; else if(c!=n) printf(error!enter again:); return head;void recover(student *head
19、) /*恢復(fù)刪除*/student *p;long number;printf(recover which number?n);scanf(%ld,&number);if(number=0) return;p=search_number(head,number);if(p=null) printf(cant recover this number!n);else if(p-flag=1) printf(this number has not been deleted.n);else n+;p-flag=1;printf(recover success!n);void revise(studen
20、t *head) /*修改記錄*/char c;long number;student *p1;for(;) printf(which number do you want to revise?n(enter 0 to end):); scanf(%ld,&number); if(number=0) return; p1=search_number(head,number); if(p1=null|p1-flag=0) printf(this number doesnt exist.n);continue; print_title(); print(p1); printf(do you wan
21、t to revise the record?(y/n)n); for(;) c=getchar(); if(c=n) continue; else if(c=n|c=n) break; else if(c=y|c=y) printf(please enter new record:n); enter_record(p1); printf(the new record is:n); print_title(); print(p1); break; else printf(error,enter again:); void search(student *head) /*查找函數(shù)*/char c
22、;int i,min,max;long number;student *p;printf(please enter search conditions:n);printf(all(a)/number(n)/name(m)/score(s)/return(r)n);for(;) c=getchar(); if(c=n) continue; else if(c=s) printf(which couse do you want to search?n); printf(score1(1)/score2(2)/score3(3)/total(4)/average(5); for(;) c=getch
23、ar(); if(c=n) continue; else if(c0&cnext,min,max,i) print(p); else switch(c) case a: print_title(); for(p=head;p!=null;p=p-next) if(p-flag=1) print(p); break; case n: printf(what number do you want to search?n); scanf(%ld,&number); p=search_number(head,number); if(p=null|p-flag=0) printf(this number
24、 doesnt exist!n); else print_title(); print(p); break; case m: search_name(head);break; case r: return; default :printf(this condition doesnt exist,pleaseenter again:n); printf(all(a)/number(n)/name(m)/score(s)/return(r)n); continue; printf(please enter search conditions:n); printf(all(a)/number(n)/
25、name(m)/score(s)/return(r)n); student *search_number(student *head,long number) /*按學(xué)號(hào)查找*/student * p;for(p=head;p!=null&p-num!=number;p=p-next);return p;void search_name(student *head) /*按姓名查找*/student *p1;char *p,str10;p=str;printf(please enter the name you want to search:n);scanf(%s,p);for(p1=head
26、;p1!=null;p1=p1-next) if(p1-flag=0) continue; if(strcmp(p,p1-name)=0) break; if(p1=null) printf(this people doesnt exist.n);else print_title(); for(;p1!=null;p1=p1-next) if(strcmp(p,p1-name)=0&p1-flag=1) print(p1); student *search_score(student *head,int min,int max,int i) /*按成績查找*/student *p1;for(p
27、1=head;p1!=null;p1=p1-next) if(p1-flag=1&p1-scorei=min&p1-scoreinext) if(p-flag=0) continue; numberi=p-num; i+; for(i=0;iscorem; for(j=i+1;jscoremmax) max=p-scorem; k=j; if(k!=i) t=numberi; numberi=numberk; numberk=t; printf(*n);if(m=3) printf(sord by sum score:n);else printf(sord by score%d:n,m+1);
28、printf(mingci );printf(number name score1 score2 score3 total avern);for(i=0;in;i+) printf(%4d ,i+1); print(search_number(head,numberi);void tongji(student *head) /*統(tǒng)計(jì)*/int i,sum,s,j;student *p1;printf(*n);printf( sum averagen);for(i=0;inext) if(p1-flag=1) sum+=p1-scorei; printf( score%d:%6d%9.2fn,i
29、+1,sum,(float)sum/n); for(sum=0,p1=head;p1!=null;p1=p1-next) if(p1-flag=1) sum+=p1-scoren-2;printf( sum :%6d%9.2fn,sum,(float)sum/n);printf(average:%6.2f%9.2fn,(float)sum/(n-2),(float)sum/(n-2)/n);printf(*n);printf(ge fenshuduan renshu:n);printf( 100 90-99 80-89 70-79 60-69 failn);printf( score digi
30、t rate digit rate digit rate digit rate digit rate digit raten);for(i=0;i=60;s-=10) j=0; for(p1=search_score(head,s,s+9,i); p1!=null; p1=search_score(p1-next,s,s+9,i) j+; printf(%5d,%6.2f,j,(float)j/n); for(j=0,p1=search_score(head,0,59,i); p1!=null; p1=search_score(p1-next,0,59,i) j+; printf(%5d,%6
31、.2f,j,(float)j/n); printf(n); void about()/*關(guān)于設(shè)計(jì)*/clrscr();printf(nnnnnn);printf(ttb*about*n);printf(ttb*tthe student score manage systemtt*n);printf(ttb*tttttt*n);printf(ttb*ttb llrsnake ttt*n);printf(ttb*ttb 1000000001ttt*n);printf(ttb*n);printf(ntttpress any key to return.);getch();student *load(
32、)/*載入*/file *fp;student *head=null,*p1,*p2;char c10;printf(please enter the file name:n);scanf(%s,c);if(fp=fopen(c,rb)=null) printf(can not open the file %sn,c); return head; printf(loading.n);n=0;fgets(cipher,11,fp);p1=(student *)malloc(len);if(p1=null) printf(out of memory!n); return(head); head=p1;while(!feof(fp) if(fread(p1,len,1,fp)!=1) break; n+; p1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度2025年知識(shí)產(chǎn)權(quán)授權(quán)登記代理合同
- 2025年度綠色酒業(yè)合伙人合作協(xié)議書范本
- 2025年度物流貨物運(yùn)輸合同(冷鏈運(yùn)輸配送倉儲(chǔ)保險(xiǎn)安全責(zé)任信息化服務(wù)節(jié)能減排標(biāo)準(zhǔn)化綠色物流城市配送國際物流特種貨物運(yùn)輸)
- 二零二五年度子女對(duì)父母贍養(yǎng)責(zé)任履行合同
- 二零二五年度蔬菜大棚種植技術(shù)培訓(xùn)與推廣合同
- 二零二五年度電梯安全使用與緊急救援服務(wù)合同
- 二零二五年度2025年食堂食堂安全衛(wèi)生管理合同
- 2025年洗車店員工工作環(huán)境與職業(yè)安全合同
- 二零二五年度裝修合同欺詐責(zé)任認(rèn)定與消費(fèi)者權(quán)益保護(hù)
- 二零二五年度裝飾公司施工圖紙審核勞動(dòng)合同
- 寒潮雨雪應(yīng)急預(yù)案范文(2篇)
- 垃圾車駕駛員聘用合同
- 變壓器搬遷施工方案
- 單位轉(zhuǎn)賬個(gè)人合同模板
- 八年級(jí)語文下冊(cè) 成語故事 第十五課 諱疾忌醫(yī) 第六課時(shí) 口語交際教案 新教版(漢語)
- 2024年1月高考適應(yīng)性測試“九省聯(lián)考”數(shù)學(xué) 試題(學(xué)生版+解析版)
- EPC項(xiàng)目采購階段質(zhì)量保證措施
- T-NAHIEM 101-2023 急診科建設(shè)與設(shè)備配置標(biāo)準(zhǔn)
- 四川2024年專業(yè)技術(shù)人員公需科目“數(shù)字經(jīng)濟(jì)與驅(qū)動(dòng)發(fā)展”參考答案(通用版)
- 煤炭裝卸服務(wù)合同
- 廣東省佛山市順德區(qū)2023學(xué)年中考一模物理試題(含答案解析)
評(píng)論
0/150
提交評(píng)論