




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目錄1.課程設計目的和要求(一級標題)。.2.課程的主要內容。.3實踐要求:.4.課程設計題目描述和要求。.5.程序代碼。.(1) .文件頭部,對函數要調用到的系統函數的聲名。.(2) .定義無空函數。.(3) .主函數。.(4) .顯示菜單函數。.(5) .輸入函數,并把輸入的信息讀入文件。.(6) .顯示函數,對學生信息的顯示。.(7) .增加函數(增加學生的信息)。.(8) .刪除函數。.(9) .刪除函數(按學號查找刪除)。.(10) .刪除函數(按姓名查找到后刪除)。.(11) .修改(詳細對學生信息的修改)。.(12). 統計(將學生的信息全部顯示出來,并判斷哪個學生不極格和不極格
2、的總人數,并將它顯示出來)。.(13) . 對學生信息的查找。.(14)查找函數(用學號進行查找)。.(15) . 查找(用姓名查找)。.(16) .排序函數。.(17) .排序函數(按學號排序)。.(18).排序函數(按總分排序)。.(19). 學生信息的恢復(可恢復到當初輸入的狀態) 。 錯誤! 未定義書簽。(20) . 保存函數。.(21) . 退出函數。.6.總結.7.參考書目:.1.課程設計目的和要求 (一級標題)本課程設計是針對剛學完C語言的計算機類專業學生的課程設計教學。C語言是學 生的第一門計算機高級語言課程,課程結束后,學生已經對C語言程序設計有了較全面 的了解,但接觸的基本
3、上是為了闡述相關概念或知識點而列舉的示例,都是較小的程序, 程序功能單一,因此缺乏整體觀點和編寫一個具體實用的綜合程序的思想。本課程設計的目的是要培養學生初步具有系統分析思想, 并能利用開發工具開發一 個簡單實用的綜合程序。為學生提供了一個既動手又動腦,獨立實踐的機會,將課本上 的理論知識和實際有機的結合起來,鍛煉學生的分析解決實際問題的能力,提高學生適 應實際,實踐編程的能力。要求學生以TC或VC為開發工具,完成一個小型應用軟件的設計和開發。進一步提 高學生進行程序設計的能力。2. 課程的主要內容(1)選題(2)進行系統分析(3)程序設計實現(4)系統測試(5)編寫、上交課程設計報告3實踐要
4、求:(1)系統設計要實用。(2)對系統進行功能模塊分析、控制模塊分析正確,要畫出主要功能模塊的流程圖。(3)編程簡練,可用,界面友好,功能全面。(4)課程設計報告、流程圖要清楚。4課程設計題目描述和要求本課程設計選題為 “學生成績管理系統” 。系統主要功能是管理學生成績信息, 要求 能實現學生成績添加、刪除、修改、查找,總分、平均分計算、按成績排序等功能。經過分析,確定本系統結構圖如下圖所示:圖1系統結構圖5.程序代碼(1).文件頭部,對函數要調用到的系統函數的聲名#in clude /*將需要不得的函數包含在內*/#i nclude #in elude vconi o.h#i nclude
5、#defi ne N 20/*定義宏N為學生結構體的總數*/struct stude nt/*這義學生結構體*/long num;char n ame20;char sex4;int score3;void main()/*主函數*/int sum;int ave;struct student stuN;int t=1,pl=0;/*定義兩個全變量,學生總數變量和增加的學生變量*/(2).定義無空函數void s();/*以下為定義無參函數*/void input();/*輸入*/void show();/*顯示*/void increase();/*增項*/void delet();/*刪除
6、*/void amend();/*修改*/void preside();/*統計*/void fint();/*查找*/void arrange();/*排序*/void resume();/*恢復*/void save();/*保存*/void output();/*退出*/void deleta();/*學號查找后刪除*/void deletb();/*姓名查找后刪除*/void finta();/*學號查找*/void fintb();/*姓名查找*/void arranga();/*學號排序*/void arrangb();/*總分排序*/(3).主函數.int pasword; /*
7、這義密碼*/system(cls); printf(nnnnnnnnnttt請輸入密碼,密碼為:123456.n);scanf(%d,&pasword);/*輸入密碼*/if(pasword=123456)s();elseprintf(密碼有誤,請重新輸入.n);getch();main();(4).顯示菜單函數.void s() int select,w;char k; /*定義變量*/system(cls);printf( C語言課程設計.n); /*以下顯示主菜單*/ printf(1.錄入.n2.顯示.n3.增項.n4.刪項.n5.修改.n6.統計.n7.查找.n8.排序.n9
8、.恢復.n10.保存.n11.退出.n);printf(n選懌項目執行相應功能.); /*以下是顯示編;定人的姓名。*/ printf(nnttttt xxx xxxscanf(%d,&select);switch(select)case 1: input(); break; /*以下是選懌執行菜單上的哪個函數。*/ case 2: show(); break;case 3: increase();break; case 4: delet(); break;case 5: amend(); break;case 6: preside(); break;case 7: fint(); b
9、reak;case 8: arrange(); break;case 9: resume(); break;case 10: save(); break;case 11: output(); break; default: w=1;if(w=1)printf(輸入有誤,按任意鍵重新選懌.n); k=getchar();getch();s();(5).輸入函數,并把輸入的信息讀入文件.void input()/該函數為輸入函數,并把輸入的信息讀入文件,以便再恢復。 FILE *fp;int x,count=0,i; char w,r20,o; struct student *p; /*定義變量和
10、指向結構體的指針變量。*/system(cls);p=stu;printf(ttt學生信息的錄入.n);dopl+;printf(請輸入第%d個學生的信息.nn,t);/*逐個步驟的實現學生信息的輸入。*/printf(學號:n); scan f(%ld,&p-n um); prin tf(n);printf(姓名:n); scanf(%s,p-name);printf(n);printf(性別:n); gets(r); gets(p-sex); printf(n);printf(三門成績:1.高數.2.C語言.3.英語.n);for(i=0;iscorei);p-sum = p-sc
11、ore0 + p-score1 + p-score2;p-ave = p-sum/3;printf(nn是否要繼續輸入學生信息,如果是請按y ;不是請按n.n);o=getchar();/*接收回車鍵。*/w=getchar();if(w=y | w=Y)/*選懌是否輸入更多的學生*/t+;x=1;p+;elsex=0;while(x=1);if(w=n | w=N)if(fp=fopen(stu list,wb)=NULL)printf(can not open the filen); return;for(i=0;iN;i+)/*實現對學生信息讀入文件,以便恢復到輸入狀態*/if(fwri
12、te(&stui,sizeof(struct student),1,fp)!=1)printf(file write error.n);fclose(fp);printf(按任意鍵返回.n);getch();s();(6).顯示函數,對學生信息的顯示。void show() /顯示函數,對學生信息的顯示。int j,i;system(cls);printf(ttt學生成績顯示.nn); /*以下實現顯示。*/printf(%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn,學號,姓名,性別,高數,C語言,英語,平均分,總分);for(i=0;it;i+) printf
13、(%-8ld%-8s%-8s,stui.num, , stui.sex);for(j=0;jnum);printf(n);printf(姓名:n);scanf(%s,p-name);printf(n);printf(性別:n);scanf(%s,p-sex);printf(n);printf(三門成績:1.高數.2.C語言.3.英語.n);for(i=0;iscorei);for(i=0;isum = p-score0 + p-score1 + p-score2;p-ave = p-sum/3;a=getchar();printf(n是否要繼續輸入學生信息,如果是請按y ;不
14、是請按n.nn); w=getchar();p+;t+;/*判斷是否繼續對學生信息的增加。*/if(w=y|w=Y)x=1;if(w=n|w=N)x=0;break;while(x=1);if(x=0)printf(n);printf(按任意鍵返回.n);getch();s();(8).刪除函數。void delet() /刪除函數。 int i;system(cls);printf(ttt請選懌用哪種方式刪除學生信息.n);printf(1.學號.n2.姓名.n);scanf(%d,&i);/*選懌用哪種方式對學生信處進行刪除。*/switch(i)case 1:deleta();b
15、reak;case 2:deletb();break; default:printf(輸入有誤,請按任意鍵返回.n);getch();s();(9).刪除函數(按學號查找刪除)。void deleta() /刪除函數(按學號查找刪除) 。 long num_a;int z,j;char c,x,m,b,o; struct student *p; /*定義變量,接收字符。*/ system(cls);do printf(請輸入要刪除的學號.n);scanf(%ld,&num_a);/*輸入學號。*/for(p=stu;pnum=num_a)break;elseprintf(不存在該學生,
16、請按任意鍵返回.n);getch();s();printf(你要刪除的學生為:n); /*顯示要刪除的信息。*/printf(%-8ld%-8s%-8s,p-num,p-name,p-sex);for(j=0;jscorej);printf(%-8d,p-ave); printf(%-8df,p-sum);printf(你確定要刪除嗎?如是請輸入y;不是請輸入n.n);x=getchar(); /*接收回車鍵。*/c=getchar();if(c=y|c=Y) /*判斷是否要刪除該學生的信息。*/ for(;pstu+t;p+)*p=*(p+1); t-;if(c=n|N) z=0;print
17、f(是否要繼續刪除:是請按1.不是請按2.n); m=getchar();b=getchar();o=getchar();while(b=y|b=Y); /*是否繼續刪除學生信息*/ printf(系統已為你刪除信息,請按任意鍵返回.n); getch();s();(10).刪除函數(按姓名查找到后刪除)。void deletb()/刪除函數(按姓名查找到后刪除) 。*/ char name_b20,c,m,b,r,d; int j,z; struct student *p;system(cls);do printf(請輸入要刪除的姓名.n);gets(name_b);r=getchar();
18、 /*輸入姓名。*/ for(p=stu;pname,name_b)=0) /*判斷是否存在該學生。*/ break;elseprintf(不存在該學生,請按任意鍵返回.n);getch();s();printf(你要刪除的學生為:n); /*顯示要刪除的學生。*/printf(%-8ld%-8s%-8s,p-num,p-name,p-sex);for(j=0;jscorej);printf(%-8d,p-ave);printf(%-8d,p-sum);printf(你確定要刪除嗎?如是請輸入y;不是請輸入n.n); c=getchar();if(c=y|c=Y) /*判斷是否確定要刪除。*/
19、 for(;pstu+t;p+)*p=*(p+1);t-;if(c=n|N) z=0;printf(是否要繼續刪除:是請按y.不是請按n.n);d=getchar(); m=getchar(); b=getchar(); while(b=y|b=Y);printf(請按任意鍵返回.n);getch();s();(11).修改(詳細對學生信息的修改)。void amend() /修改(詳細對學生信息的修改) 。 long j; int i,z,r=t; char c,d,e,f,q,u,l,v,m,k; struct student *p; system(cls);printf(請輸入要修改學生
20、的學號:nn);scanf(%ld,&j); /*輸入要修改學生的學號。*/for(p=stu;pnum=j) /*判斷是否存在該學生。*/break;else r-;if(r=0) printf(你輸入的學生不存在,請按任意鍵返回.n); getch();s();printf(n你要修改的學生為:n);printf(%-8ld%-8s%-8s,p-num,p-name,p-sex); /*將要修改的學生信息的顯示。*/for(j=0;jscorej); printf(%-8d,p-ave);printf(%-8d,p-sum);printf(nn是否要修改學號:是請按y;不是請按n.
21、nn); l=getchar();c=getchar();if(c=y|c=Y)/*以下是判斷對學生的哪一個信息的修改,并選懌是否進行修改。*/printf(請輸入正確的學號:nn);scanf(%ld,&p-num);if(c=n|c=N)z=1;printf(是否要修改姓名:是請按y;不是請按n.nn); q=getchar();d=getchar();m=getchar();if(d=y|d=Y) printf(請輸入正確的姓名:n);scanf(%s,p-name);u=getchar();if(d=n|c=N)z+;printf(n是否要修改性別:是請按y;不是請按n.nn)
22、;e=getchar(); k=getchar();if(e=y|e=Y)printf(請輸入正確的性別:n);scanf(%s,p-sex);if(e=N|e=n)z+;printf(n是否要修改三門成績:是請按y;不是請按n.nn); f=getchar();if(f=y|f=Y)printf(請輸入正確的三門成績:);for(i=0;iscorei);p-sum = p-score0 + p-score1 + p-score2; p-ave = p-sum/3;v=getchar();if(f=n|f=N) printf(請按任意鍵返回.n); getch(); s();(12).統計(
23、將學生的信息全部顯示出來,并判斷哪個學生不極格和不極格的總人數,并將它顯示出 來)。void preside()/統計(將學生的信息全部顯示出來,并判斷哪個學生不極格和不極格的總人數,并將它顯示出來) 。 int i,j,o=0,b=10,r=60; struct student *p;system(cls);printf(ttt學生信息統計.nn);printf(%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn,學號,姓名,性別,高數,C語言,英語,平均分,總分);for(p=stu;pnum,p-name,p-sex); for(j=0;jscorej); printf
24、(%-8d,p-ave);printf(%-8d,p-sum);printf(nn);printf(nnn);printf(%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn,學號,姓名,性別,高數,C語言,英語,平均分,總分);for(p=stu;pstu+t;p+)for(i=0;iscoreinum,p-name,p-sex); /*以下是顯示不極格的學生。*/for(j=0;jscorej);printf(%-8d,p-ave);printf(%-8d,p-sum);printf(nn);break;if(b=10) printf(nn班上所有的人都通過考試.nn);
25、elseif(b10) printf(n以上為不極格的同學,全班不極格的人數為:d人.nn,o); /*顯示 不極格學生的總人數。*/printf(n);printf(統計完成,請按任意鍵返回.n);getch();s();(13).對學生信息的查找。void fint() /對學生信息的查找。 int i,m;char e;system(cls);printf(ttt請選擇用哪種方式進行查找.n);printf(1.學號.n2.姓名.n);scanf(%d,&i);/*輸入是用姓名查找還是用學號查找。*/switch(i) case 1: finta(); break;case 2:
26、 e=getchar();fintb(); break;default: m=1;if(m=1)printf(輸入有誤,請按任意鍵返回.n);getch();s();(14)查找函數(用學號進行查找)。void finta() /查找函數(用學號進行查找) 。 int i,j=t; long num_a;struct student *p; char a,b; system(cls);printf(ttt請輸入要查找的學生學號:n); scanf(%ld,&num_a); /*輸入要查找學生的學號。*/for(p=stu;pnum=num_a) break;/*判斷該學生是否存在。*/
27、if(j=0)printf(不存在該學生,請按任意鍵返回.nn); a=getchar();getch();s();printf(n你要查找的學生為:nn); /*以下對已查找出的學生的顯示。*/printf(%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn,學號,姓名,性別,高數,C語 言,英語,平均分,總分);printf(%-8ld%-8s%-8s,p-num,p-name,p-sex);for(i=0;iscorei);printf(%-8d,p-ave); printf(%-8d,p-sum);printf(nn查找完成,請按任意鍵返回.); b=getchar(
28、);getch();s();(15).查找(用姓名查找)。void fintb() /查找(用姓名查找) 。 char name_b20; int j=t,i; struct student *p; system(cls);printf(ttt請輸入要查找的學生姓名:nn); gets(name_b); /*輸入姓名。*/for(p=stu;pname,name_b)=0) break; /*判斷是否存在該學生。*/ if(j=0)printf(不存在該學生,請按任意鍵返回.n);getch();s();printf(n你要查找的學生為:nn); /*顯示已找出的學生。*/printf(%-8
29、s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn,學號,姓名,性別,高數,C語 言,英語,平均分,總分);printf(%-8ld%-8s%-8s,p-num,p-name,p-sex);for(i=0;iscorei);printf(%-8d,p-ave); printf(%-8d,p-sum);printf(nn查找完成,請按任意鍵返回.);getch();s();(16).排序函數。void arrange()/排序函數。 int i;system(cls);printf(ttt學生信息排序.nn);printf(請選懌用哪種方式排序:1學號;2總分.n);scanf(%d
30、,&i);/*輸入用哪種方式排序。*/switch(i)case 1: arranga(); break;case 2: arrangb(); break;default: printf(輸入有誤,請按任意鍵返回.n); getch(); s();(17).排序函數(按學號排序)。void arranga()/排序函數(按學號排序) 。 int i;struct student temp;struct student *p;system(cls);printf(ttt按學號排序.nn);/*以下是對學生信息按學號排序。*/for(i=1;it;i+)for(p=stu;pnumnum)
31、 temp=*p; *p=*(p+1); *(p+1)=temp;printf(%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn,學號,姓名,性別,高數,C語言,英語,平均分,總分);for(p=stu;pnum,p-name,p-sex); for(i=0;iscorei);printf(%-8d,p-ave); printf(%-8dnn,p-sum);printf(nn排序完成,請按任意鍵返回.n);getch();s();(18).排序函數(按總分排序)。void arrangb()/排序函數(按總分排序) 。 int i;struct student temp;s
32、truct student *p;system(cls);printf( ttt按總分排序.nn);for(i=1;it;i+)for(p=stu;psumsum) temp=*p;*p=*(p+1);*(p+1)=temp;printf(%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8sn,學號,姓名,性別,高數,C語言,英語,平均分,總分);for(p=stu;pnum,p-name,p-sex);for(i=0;iscorei);printf(%-8d,p-ave);printf(%-8d,p-sum);printf(n);printf(nn排序完成,請按任意鍵返回.n);
33、getch();s();(19).學生信息的恢復(可恢復到當初輸入的狀態)。void resume()/學生信息的恢復(可恢復到當初輸入的狀態) 。FILE *fp;int i,j;struct student *p;system(cls);if(fp=fopen(stu list,rb)=NULL) /*打開前面已保存的文件。*/printf(can not open the filen);return;for(i=0;ipl;i+)if(fread(&stui,sizeof(struct student),1,fp)!=1)/*將文件信息讀出。*/printf(file write error.n);fclose(fp);printf(%-8s%-8s%-8s%-8s%-8s%-8s%-8s%-8snn,學號,姓名,性別,高數,C語言,英語,平均分,總分);for(p=stu;pnum,p-name,p-sex);for(j=0;jscorej); printf(%-8d,p-ave);printf(%-8d,p-sum);printf(nn);printf(nn學生信息已恢復到你當初輸入的狀態,按任意鍵返回.n); getch();s();(20).保存函數v
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉庫走訪活動方案
- 【浦銀國際】2025年中期展望:滲透率保持快速上揚智能輔助駕駛勁草逢春
- 仙游水利局活動方案
- 代表活動小組活動方案
- 北京市豐臺區2023-2024學年五年級下學期數學期末試卷(含答案)
- 價值體現在崗位活動方案
- 企業元宵線上活動方案
- 改性無水磷石膏增強高密度聚乙烯(HDPE-PG)六棱結構壁管材編制說明
- 企業中層聚會活動方案
- 企業倡導節約活動方案
- 土木工程專業外文文獻及翻譯
- 2024年江蘇常州中考滿分作文《那么舊那樣新》8
- 不要慌太陽下山有月光二部合唱線譜
- 實習三方協議電子版(2025年版)
- 數智融合:媒體發展的未來之路
- 腎病綜合征病人的護理邵啟軒
- 2024年江蘇省鹽城市中考地理試卷(含答案)
- 《生物電化學》課件
- 《雞的常見品種》課件
- 第9課 近代西方的法律與教化 說課稿-2024-2025學年高二上學期歷史統編版(2019)選擇性必修1國家制度與社會治理
- 成人手術后疼痛評估與護理團體標準
評論
0/150
提交評論