




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課程設計(大作業(yè))報告課程名稱: 程序設計基礎 設計題目: 學生成績記錄簿設計 院 系: 信息技術學院 班 級: xx設 計 者: xx 學 號: xx 指導教師: xx 設計時間: xx 信息技術學院昆明學院課程設計(大作業(yè))任務書姓 名:xx院(系):信息技術學院專 業(yè):計算機科學與技術學 號:xx任務起止日期:xx 課程設計題目:學生成績記錄簿課程設計要求:編制一個C語言成績記錄簿,每個學生信息包括:學號、姓名、C語言成績。具體功能:1 系統(tǒng)以菜單方式工作;2. 創(chuàng)建學生成績信息并以磁盤文件保存;3. 讀取磁盤文件并顯示輸出所有學生的成績;4. 查詢學生成績;(1)按學號查詢成績;(2)
2、學號姓名查詢成績;5修改指定姓名或學號的學生的成績并可存盤;6顯示輸出60分以下、6079、8089、90分以上各分數(shù)段的學生信息。工作計劃及安排:星期一:老師的大概講解及主函數(shù)、目錄函數(shù)的編寫和調試;星期二:創(chuàng)建學生信息、輸出學生信息和修改學生信息的函數(shù)編寫及調試;星期三:學生信息查詢、學生成績分段和學生成績排序的函數(shù)編寫及調試;星期四:整個函數(shù)的最終調試,課程設計(大作業(yè))報告的書寫;星期五:答辯。指導教師簽字 年 月 日 課程設計(大作業(yè))成績學號:xx 姓名:xx 指導教師:xx課程設計題目: 學生成績記錄簿設計總結: 通過這次的課程設計,增加了我對學習C語言學習的興趣,雖然還不是真正
3、的明白所有的C語言的子函數(shù)和里面的一些邏輯順序,但我從C語言這門課程開始,已經(jīng)發(fā)現(xiàn)程序設計的樂趣,在學習C語言的過程中也學到了許多計算機應用基礎知識,對計算機的運行也有一個大體的了解。這次課程設計經(jīng)過老師的講解,自己的查找,在網(wǎng)上的搜索,實現(xiàn)題目上的要求,先做出一些簡單的函數(shù)和程序,一步步的在做出其它的內容,不過在實際操作過程中犯得一些錯誤也還是會得到一些意外的收獲。在具體的操作中,對這學期的C語言的理論知識得到鞏固,在設計的過程中也發(fā)現(xiàn)自己的不足之處,在以后的學習和上機的操作中會更加注意,同時體會到C語言的簡潔和靈活。在上機操作中我們的任何不懂的問題都會暴露出來,對于我們來說是是件好事,在課
4、程設計的過程中特別是對數(shù)組和循環(huán)有了深刻的理解。通過實際的操作,學會C語言程序編程的基本步驟、基本方法,開發(fā)了自己的邏輯思維能力,培養(yǎng)了分析問題,解決問題的能力。指導教師評語:成績:填表時間:指導教師簽名: 目錄一問題的定義5二、需求分析5三、總體設計5四、詳細設計6五、調試與測試30六、結語30一問題的定義編制一個C語言成績記錄簿,每個學生信息包括:學號、姓名、C語言成績。要求:1.數(shù)據(jù)存儲采用文件形式。2.標準的C語言輸入輸出3.功能完善,適當注釋4.模塊化設計、結構化編程二、需求分析系統(tǒng)能實現(xiàn)以下主要功能:1系統(tǒng)以菜單方式工作2. 創(chuàng)建學生成績信息并以磁盤文件保存;3. 讀取磁盤文件并顯
5、示輸出所有學生的成績;4. 查詢學生成績(1)按學號查詢成績(2)學號姓名查詢成績4添加成績記錄;5修改指定姓名或學號的學生的成績并可存盤;6顯示輸出60分以下、6079、8089、90分以上各分數(shù)段的學生信息。三、總體設計根據(jù)系統(tǒng)的要求,系統(tǒng)總體設計如圖1所示。學生成績記錄簿創(chuàng)建學生信息學生成績排名退出成績記錄簿學生成績分段查詢學生信息修改學生成績輸出學生信息按學號修改按姓名修改按學號查詢按姓名查詢60分以下8089分90分以上6079分 圖1 系統(tǒng)總體結構四、詳細設計該部分主要包括:數(shù)據(jù)結構設計、函數(shù)設計(包括函數(shù)原型、算法思想、流程描述)、代碼設計及程序運行結果顯示。(一) 學生成績數(shù)據(jù)
6、結構設計#include<stdio.h>#include<stdlib.h>#include<string.h>int i,j,k,y;FILE *fp;Struct stuint no;char name30;float cscore;long a;struct stu s100;(二) 函數(shù)設計1. 主函數(shù)main()允許用戶通過菜單進行功能選擇,使用相應的功能代碼來調用對應的函數(shù)功能。2. 其他各功能函數(shù)(1) 學生成績信息錄入函數(shù)void input() 算法思想:依次錄入結構體數(shù)組中所包含的各個成員;直到輸入的結構體成員中信息全部為0,數(shù)據(jù)輸入結
7、束;返回實際錄入的學生成績信息數(shù)。(2) 將學生成績信息輸出為void output() 算法思想:定義結構體變量的指針變量;輸出所輸入的全部信息,若不能輸出信息給出提示信息;將文件中的信息依次讀出,最后結構體的指針為NULL。(3)從文件中修改學生成績信息void modify() 算法思想:定義指向結構體變量的指針和指向文件的指針;修改方式分為兩種(學號和姓名),選擇是給出相應的信息;將修改后的信息保存,并提示。3. 流程描述(1)菜單函數(shù)int fun()int n;system("cls");printf("nntttt 成績記錄薄");prin
8、tf("nnttt");for(i=0;i<33;i+)printf("*");printf("n"); printf("ttt *菜單*n");printf("ttt* 1、創(chuàng)建學生的信息! t*n");printf("ttt* 2、輸出所有學生的信息! t*n");printf("ttt* 3、修改成績! t*n");printf("ttt* 4、查詢! t*n");printf("ttt* 5、顯示成績分段的學生信
9、息!t*n");printf("ttt* 6、學生成績排名! t*n");printf("ttt* 7、退出成績記錄薄! t*n");printf("ttt");for(i=0;i<33;i+)printf("*");printf("nn");printf("nttt 請輸入選項:");scanf("%d",&n);return n;(2) 學生成績信息錄入函數(shù)void input()system("cls");
10、i=0;fp=fopen("out.dat","w");printf("請以0作為輸入學生學號信息的結束!n");do printf("輸入學生的學號:");scanf("%d",&si.no);printf("輸入學生的姓名:");scanf("%s",);printf("輸入學生的C語言成績:");scanf("%f",&si.cscore);printf("輸入添加成績的
11、時間:");scanf("%ld",&si.a);if(si.no!=0)fprintf(fp,"%d %-4s %.1f %ldn",si.no,,si.cscore,si.a);while(si.no!=0);fclose(fp);void output() /學生全部信息輸出if(fp=fopen("out.dat","r")=NULL)printf("Cannot open the file!n");printf("ttt全部的學生信息:n&qu
12、ot;); k=0;while(fscanf(fp,"%d%s%f%ld",&sk.no,,&sk.cscore,&sk.a)!=EOF)printf("ttt%dt%st%.1ft%ldn",sk.no,,sk.cscore,sk.a);k+;fclose(fp);(3)學生信息輸出函數(shù)void output()if(fp=fopen("out.dat","r")=NULL)printf("Cannot open the file!n");p
13、rintf("ttt全部的學生信息:n"); k=0;while(fscanf(fp,"%d%s%f%ld",&sk.no,,&sk.cscore,&sk.a)!=EOF)printf("ttt%dt%st%.1ft%ldn",sk.no,,sk.cscore,sk.a);k+;fclose(fp); (4)修改學生信息函數(shù)void modify()char st30;int x,num;float nu;long h;k=0;system("cls");if(f
14、p=fopen("out.dat","r")=NULL)printf("Cannot open the file!n");return;while(fscanf(fp,"%d%s%f%ld",&sk.no,,&sk.cscore,&sk.a)!=EOF)k+;fclose(fp);printf("輸入1表示用學號修改,輸入2表示用姓名修改!請選擇:n");scanf("%d",&x);if(x=1)printf("請輸入
15、修改成績人的學號:");scanf("%d",&num);for(i=0;i<k;i+)if(num=si.no)printf("請輸入修改的成績:n");scanf("%f",&nu);si.cscore=nu;printf("請輸入修改的時間:n");scanf("%ld",&h);si.a=h;fp=fopen("out.dat","w");for(i=0;i<k;i+)fprintf(fp,"
16、%d %s %.1f %ldn",si.no,,si.cscore,si.a);fclose(fp);printf("修改成功n");return;printf("沒有找到該生的信息!n");return;if(x=2)printf("請輸入修改成績人的姓名:");scanf("%s",st);for(i=0;i<k;i+)if(strcmp(,st)=0)printf("請輸入修改的成績:n");scanf("%f",&n
17、u);si.cscore=nu;printf("請輸入修改成績的時間:n");scanf("%ld",&h);si.a=h;fp=fopen("out.dat","w");for(i=0;i<k;i+)fprintf(fp,"%d %s %.1f %ldn",si.no,,si.cscore,si.a);fclose(fp);printf("修改成功n");return;printf("沒有找到該生的信息!n");return;
18、(5) 代碼設計和執(zhí)行結果1. 頭文件Struct stuint no;/*學號*/char name30; /*姓名*/ float cscore; /*成績*/long a; /*時間*/;struct stu s100;/*以下是函數(shù)原型*/ void input() /*輸入記錄*/void output()/*輸出記錄*/void modify()/*修改記錄*/2.源程序代碼與運行結果#include<stdio.h>#include<stdlib.h>#include<string.h>int i,j,k,y;FILE *fp;struct s
19、tu /結構體函數(shù)的定義int no;char name30;float cscore;long a;struct stu s100;int fun() /目錄函數(shù)int n;system("cls");printf("nntttt 成績記錄薄");printf("nnttt");for(i=0;i<33;i+)printf("*");printf("n"); printf("ttt *菜單*n");printf("ttt* 1、創(chuàng)建學生的信息! t*n&qu
20、ot;);printf("ttt* 2、輸出所有學生的信息! t*n");printf("ttt* 3、修改成績! t*n");printf("ttt* 4、查詢! t*n");printf("ttt* 5、顯示成績分段的學生信息!t*n");printf("ttt* 6、學生成績排名! t*n");printf("ttt* 7、退出成績記錄薄! t*n");printf("ttt");for(i=0;i<33;i+)printf("*&q
21、uot;);printf("nn");printf("nttt 請輸入選項:");scanf("%d",&n);return n;void input() /輸入學生的學號、姓名、成績信息system("cls");i=0;fp=fopen("out.dat","w");printf("請以0作為輸入學生學號信息的結束!n");do printf("輸入學生的學號:");scanf("%d",&si.
22、no);printf("輸入學生的姓名:");scanf("%s",);printf("輸入學生的C語言成績:");scanf("%f",&si.cscore);printf("輸入添加成績的時間:");scanf("%ld",&si.a);if(si.no!=0)fprintf(fp,"%d%-4s%.1f%ldn",si.no,,si.cscore,si.a);while(si.no!=0);fclose(f
23、p);void output() / /學生全部信息輸出if(fp=fopen("out.dat","r")=NULL)printf("Cannot open the file!n");printf("ttt全部的學生信息:n"); k=0;while(fscanf(fp,"%d%s%f%ld",&sk.no,,&sk.cscore,&sk.a)!=EOF)printf("ttt%dt%st%.1ft%ldn",sk.no,
24、,sk.cscore,sk.a);k+;fclose(fp);void modify() /修改學生信息char st30;int x,num;float nu;long h;k=0;system("cls");if(fp=fopen("out.dat","r")=NULL)printf("Cannot open the file!n");return;while(fscanf(fp,"%d%s%f%ld",&sk.no,,&sk.cscore,&sk.a)
25、!=EOF)k+;fclose(fp);printf("輸入1表示用學號修改,輸入2表示用姓名修改!請選擇:n");scanf("%d",&x);if(x=1)printf("請輸入修改成績人的學號:");scanf("%d",&num);for(i=0;i<k;i+)if(num=si.no)printf("請輸入修改的成績:n");scanf("%f",&nu);si.cscore=nu;printf("請輸入修改的時間:n&quo
26、t;);scanf("%ld",&h);si.a=h;fp=fopen("out.dat","w");for(i=0;i<k;i+)fprintf(fp,"%d%s%.1f%ldn",si.no,,si.cscore,si.a);fclose(fp);printf("修改成功n");return;printf("沒有找到該生的信息!n");return;if(x=2)printf("請輸入修改成績人的姓名:");scanf(&q
27、uot;%s",st);for(i=0;i<k;i+)if(strcmp(,st)=0)printf("請輸入修改的成績:n");scanf("%f",&nu);si.cscore=nu;printf("請輸入修改成績的時間:n");scanf("%ld",&h);si.a=h;fp=fopen("out.dat","w");for(i=0;i<k;i+)fprintf(fp,"%d %s %.1f %ldn&qu
28、ot;,si.no,,si.cscore,si.a);fclose(fp);printf("修改成功n");return;printf("沒有找到該生的信息!n");return;void lookat() /學生信息查詢char st30;int x,num;k=0;system("cls");if(fp=fopen("out.dat","r")=NULL)printf("Cannot open the file!n");return;while(fscanf
29、(fp,"%d%s%f%ld",&sk.no,,&sk.cscore,&sk.a)!=EOF)k+;printf("輸入1表示用學號查詢,輸入2表示用姓名查詢!請選擇:n");scanf("%d",&x);if(x=1)printf("請輸入查詢的學號:");scanf("%d",&num);for(i=0;i<k;i+)if(num=si.no)printf("%d%s%.1f%ldn",si.no,
30、,si.cscore,si.a);return;printf("對不起,找不到該生!n");return;if(x=2)printf("請輸入查詢的姓名:");scanf("%s",st);for(i=0;i<k;i+)if(strcmp(,st)=0)printf("%d%s%.1f%ldn",si.no,,si.cscore,si.a);return;printf("對不起,找不到該生!n");void subsection() /學生成績分段system(
31、"cls");k=0;if(fp=fopen("out.dat","r")=NULL)printf("Cannot open the file!n");while(fscanf(fp,"%d%s%f%ld",&sk.no,,&sk.cscore,&sk.a)!=EOF)k+;printf("ttt 90分以上學生的信息!n");for(i=0;i<k;i+)if(si.cscore>=90)printf("ttt%d
32、%s%.1f%ldn",si.no,,si.cscore,si.a);printf("nn");printf("ttt 80到89分學生的信息!n");for(i=0;i<k;i+)if(si.cscore<90&&si.cscore>=80)printf("ttt%d%s%.1f%ldn",si.no,,si.cscore,si.a);printf("nn");printf("ttt 60到79分學生的信息!n");for
33、(i=0;i<k;i+)if(si.cscore>=60&&si.cscore<80)printf("ttt%d%s%.1f%ldn",si.no,,si.cscore,si.a);printf("nn");printf("ttt 60分以下學生的信息!n");for(i=0;i<k;i+)if(si.cscore<60)printf("ttt%d%s%.1f%ldn",si.no,,si.cscore,si.a);printf("
34、nn");void rank() /成績的排序struct stu t;k=0;system("cls");if(fp=fopen("out.dat","r")=NULL)printf("Cannot open the file!n");while(fscanf(fp,"%d%s%f%ld",&sk.no,,&sk.cscore,&sk.a)!=EOF)k+;for(i=0;i<k;i+)for(j=i+1;j<k+1;j+)if(si
35、.cscore<sj.cscore)t=si;si=sj;sj=t;for(i=0;i<k;i+)printf("ttt第%d名%d %-4s %.1f %ldn",i+1,si.no,,si.cscore,si.a);void choose(int n) /目錄的選項system("cls");switch(n)case 1:input();printf("nnnnttt是否返回?輸入1表返回,輸入2表退出!n");scanf("%d",&y);if(y=1)choose(fun
36、();break;case 2:output();printf("nnnnttt是否返回?輸入1表返回,輸入2表退出!n");scanf("%d",&y);if(y=1)choose(fun();break;case 3:modify();printf("nnnnttt是否返回?輸入1表返回,輸入2表退出!n");scanf("%d",&y);if(y=1)choose(fun();break;case 4:lookat();printf("nnnnttt是否返回?輸入1表返回,輸入2表退出!n");scanf("%d",&y);if(y=1)choose(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙大寧波理工學院《籃球理論與實踐Ⅱ》2023-2024學年第二學期期末試卷
- 西北大學《GNSS原理與應用》2023-2024學年第二學期期末試卷
- 2024年混合式步進電機項目資金申請報告代可行性研究報告
- 2024年飛機維修船塢項目投資申請報告代可行性研究報告
- 車載式激光平整儀課件
- 2025年廣西柳州鹿寨縣華宇建筑工程有限責任公司招聘筆試參考題庫含答案解析
- 2021年全國中小學教師信息技術應用能力提升培訓測試題庫及答案(共六套)
- 暑假趣事作文輔導
- 土木工程畢設設計
- 建筑物抗風設計
- 預應力錨索基本試驗方案
- 三標體系培訓課件
- 舞蹈藝術與舞蹈編導技巧
- 切格瓦拉完整
- 六下古詩《江上漁者》課件
- 固定循環(huán)指令G71(G70)(課件)
- 國開電大學學前教育概論形考任務一二三四五答案
- DL/T 5182-2021 火力發(fā)電廠儀表與控制就地設備安裝、管路、電纜設計規(guī)程
- 麟龍量能飽和度圓圈指標
- 腹腔鏡盆底重建手術
- 失信被執(zhí)行人生活費申請書
評論
0/150
提交評論