




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、青島農(nóng)業(yè)大學課程設計報告 題 目: 學生成績管理系統(tǒng) 姓 名: 田世強 元成 張斌 學 院: 工程系 專 業(yè): 電子信息工程技術 班 級: 2班 學 號: 200806013 200806015 200806023 指導教師: 曹紅波 2010年9月16日 目 錄一 設計目的.1二 課程設計的內(nèi)容.2三 課程設計的要求與數(shù)據(jù).3四 課程設計應完成的工作.4五 總體設計(包含幾大功能模塊).5六 詳細設計(各功能模塊的具體實現(xiàn)算法流程圖).6七 調(diào)試分析(包含各模塊的測試用例,及測試結果).7八 總結.8十 參考資料.9一 設計目的進一步加深、鞏固所學專業(yè)課程(C語言程序設計)的基本理論知識,理
2、論聯(lián)系實際,進一步培養(yǎng)自己綜合分析問題和解決問題的能力。掌握運用C語言獨立地編寫、調(diào)試應用程序和進行其它相關設計的技能。二 課程設計的內(nèi)容對學生信息(包括學號、語文、數(shù)學、英語、平均分)進行管理,包括學生成績的信息輸入、輸出、查詢、刪除、排序、統(tǒng)計、退出.將學生的成績信息進行記錄,信息內(nèi)容包含:(1)學生的學號(2)學生的姓名(3)學生的成績。假設,現(xiàn)收集到了一個班學生的所有成績信息,要求用C語言編寫一個簡單的成績管理系統(tǒng),可進行錄入、查詢、修改和瀏覽等功能。學習相關開發(fā)工具和應用軟件,熟悉系統(tǒng)建設過程。三 課程設計的要求與數(shù)據(jù)1、用C語言實現(xiàn)系統(tǒng);2、對學生信息(包括學號、姓名、語文、數(shù)學、
3、英語、平均分)進行管理,包括學生成績的信息輸入、輸出、查詢、刪除、排序、統(tǒng)計、退出.3、學生信息包括:其內(nèi)容較多,為了簡化討論,要求設計的管理系統(tǒng)能夠完成以下功能:(1) 每一條記錄包括一個學生的學號、姓名、3門課成績(2)、成績信息錄入功能:(成績信息用文件保存,可以一次完成若干條記錄的輸入。)(3)、成績信息顯示瀏覽功能:完成全部學生記錄的顯示。(4)、查詢功能:完成按姓名查找學生記錄,并顯示。(5)成績信息的刪除:按學號進行刪除某學生的成績.(6)、排序功能:按學生平均成績進行排序。(7)、應提供一個界面來調(diào)用各個功能,調(diào)用界面和各個功能的操作界面應盡可能清晰美觀!四 課程設計應完成的工
4、作(1)編寫算法;(2)算法測試,并有具體的測試結果和結果分析;(3)撰寫課程設計報告。內(nèi)容包括:1) 封面扉頁2) 設計任務書3) 目錄4) 總體設計方案(包括流程圖)5) 使用說明及運行實例(包括界面)6) 成員設計內(nèi)容簡介7) 項目源程序代碼(注意注釋的使用)8) 指導教師評語五 總體設計(包含幾大功能模塊) 1、成績錄入功能2、成績輸出功能3、成績查詢功能4、刪除模塊 5、排序功能 6、統(tǒng)計功能 7、退出系統(tǒng)六 詳細設計(各功能模塊的具體實現(xiàn)算法流程圖)6.1各函數(shù)的功能和實現(xiàn)1、輸入初始的學生信息:輸入信息包括學生的姓名、學號以及學生的成績等相關信息;可用函數(shù)void input(S
5、TUDENT *data, int *len)來實現(xiàn)此操作。 2、成績輸出模塊:輸出學生的信息以及成績void output(STUDENT *data, int len):通過學生的姓名來查看學生的相關成績,同時也可以分別通過caverage()、maverage()、eaverage()和comaverage()來輸出成績的平均分數(shù)、最高和最低分數(shù)。3、成績查詢模塊:可用void find(STUDENT *data, int len)來實現(xiàn)。找到就輸出此學生全部信息。4、刪除模塊:用函數(shù)void delete_item(STUDENT *data, int *len)來實現(xiàn)5、排序模塊:
6、用函數(shù)void sort(STUDENT *data, int len)來實現(xiàn)6、統(tǒng)計功能能:用函數(shù)void stat(STUDENT *data, int len) 來實現(xiàn)7、退出系統(tǒng):可用一個函數(shù)exit()來實現(xiàn),首先將信息保存到文件中,釋放動態(tài)創(chuàng)建的內(nèi)存空間,再退出此程序。 如圖6.1結束開始輸出菜單根據(jù)菜單輸入n的值選擇程序輸入退出輸出保存查找排序統(tǒng)計插入刪除 圖 6.1七 調(diào)試分析(包含各模塊的測試用例,及測試結果) 7.1源程序#include #include #include #define MAXN 35#define MAX_NAME 256typedef struct
7、student /學生信息int no;char nameMAX_NAME;double Chinese;double math;double English;double mark_ave;double mark_tot; STUDENT;/*-輸入信息子程序-*/void input(STUDENT *data, int *len)int no;putchar(n);printf(%sn, 請輸入新的記錄,如果需要退出當前菜單請輸入-1.);printf(%sn, 格式:n學號n);printf(%sn, 姓名 語文 數(shù)學 英語);putchar(n);printf(如:n);printf
8、(1n);printf(楊江彬 93 95 89n);scanf(%d, &no);while(no != -1) data*len.no = no;scanf(%s %lf %lf %lf, data*, &data*len.Chinese, &data*len.math,&data*len.English);data*len.mark_ave=(data*len.Chinese+data*len.math+data*len.English)/3.0;data*len.mark_tot=data*len.Chinese+data*len.math+data*len.Engli
9、sh;(*len)+;scanf(%d, &no); /*-輸出信息子程序-*/void output(STUDENT *data, int len) int i;system(cls); printf(%8s, 學號); printf(%8s, 姓名); printf(%8s, 語文); printf(%8s, 數(shù)學); printf(%10s, 英語); printf(%12s, 平均分); printf(%10s, 總分); putchar(n); for (i =0; i 80; i+) putchar(=); putchar(n); for (i = 0; i len; i+) pr
10、intf(%8d, datai.no); printf(%8s, ); printf(%8.1lf, datai.Chinese); printf(%8.1lf, datai.math); printf(%10.1lf, datai.English); printf(%12.1lf, datai.mark_ave); printf(%10.1lf, datai.mark_tot); putchar(n); for (i =0; i 80; i+) putchar(=); putchar(n); printf(按回車鍵繼續(xù).); getchar(); getchar();/*
11、-排序子程序-*/void sort(STUDENT *data, int len) int i,j,k; STUDENT temp; for (i=0; ilen-1; i+) for (k=i, j=i+1; j dataj.mark_ave) k=j;if (k != i) temp = datai;datai = datak;datak = temp; /*-搜索子程序-*/void find(STUDENT *data, int len) int find_no, result ; int i;lab: result=0; printf(%sn, 請輸入需要查找的學生的學號,退出當前
12、菜單請輸入 -1.); scanf(%d, &find_no); if (find_no = -1) return; /*exit the fine sub program*/ while( dataresult.no != find_no & result = len ) printf(%sn, 未查詢到相關信息); goto lab; else system(cls); printf(%sn, 查詢信息如下:); for (i =0; i 80; i+) putchar(=); putchar(n); printf(%8s, 學號); printf(%8s, 姓名); printf(%8s
13、, 語文); printf(%8s, 數(shù)學); printf(%10s, 英語); printf(%12s, 平均分); printf(%10s, 總分); putchar(n); printf(%8d, dataresult.no); printf(%8s, ); printf(%8.1lf, dataresult.Chinese); printf(%8.1lf, dataresult.math); printf(%10.1lf, dataresult.English); printf(%12.1lf, dataresult.mark_ave); printf(
14、%10.1lf, dataresult.mark_tot); putchar(n);for (i =0; i 80; i+) putchar(=); putchar(n); goto lab; /*-插入子程序-*/void insert(STUDENT *data, int *len) int no, pos;double Chinese, math, English, mark_ave, mark_tot;int i; char nameMAX_NAME;lab: printf(%sn, 輸入新的記錄,退出當前菜單請輸入-1.); printf(%sn, 格式:學號); printf(%s
15、n, 姓名 語文 數(shù)學 英語); scanf(%d, &no); if (no = -1) return; data*len.no = no; scanf(%s %lf %lf %lf, name, &Chinese, &math, &English); mark_ave=(Chinese+math+English)/3.0; mark_tot=Chinese+math+English; pos = 0; while (datapos.mark_ave mark_ave) & (pos = pos; i-) datai+1 = datai; datapos.no = no; strcpy(da
16、, name); datapos.Chinese = Chinese; datapos.math = math; datapos.English = English; datapos.mark_ave = mark_ave; datapos.mark_tot = mark_tot; (*len)+; goto lab;/*-刪除子程序-*/void delete_item(STUDENT *data, int *len) int no, i, pos;lab: pos=0; printf(%sn, 輸入需要刪除的學生的學號,退出當前菜單請輸入-1.)scanf(%d, &n
17、o); if (no = -1) return; while( (datapos.no != no) & (pos = *len) printf(%sn, 未找到需要刪除的學生); goto lab; else for (i = pos+1;i *len; i+) datai-1 = datai; *len = *len -1; if (*len = 0) printf(%sn, 沒有任何記錄,請按回車鍵返回.); getchar(); getchar(); return; goto lab; /*-統(tǒng)計子程序-*/void stat(STUDENT *data, int len) int n
18、o_59=0, no_69=0, no_79=0, no_89=0, no_100=0; int i; for (i = 0;i len; i+) if (datai.mark_ave =59) no_59+; else if (datai.mark_ave =69) no_69+;else if (datai.mark_ave =79) no_79+;else if (datai.mark_ave = 89) no_89+;else no_100+; system(cls); for (i =0; i 80; i+) putchar(=);putchar(n); printf(%10s, 分
19、數(shù)); printf(%10s, 0-59); printf(%10s, 60-69); printf(%10s, 70-79); printf(%10s, 80-89); printf(%10s, 90-100);putchar(n); putchar(n); printf(%10s, 學生); printf(%10d, no_59); printf(%10d, no_69); printf(%10d, no_79); printf(%10d, no_89); printf(%10d, no_100); putchar(n); for (i =0; i 80; i+) putchar(=);
20、 putchar(n); printf(按回車鍵返回); getchar(); getchar();/*-顯示信息子程序-*/void paint() int i;system(cls); printf(%55sn, 海都學院學生成績管理系統(tǒng)n); printf( 制作者: n); for (i = 0; i 80; i+) putchar(=); putchar(n); printf( 1 輸入信息 2 輸出信息n); printf( 3 按平均分排序 4 按學號查找n); printf( 5 插入 6 按學號刪除n); printf( 7 按平均分輸出統(tǒng)計信息 8 保存到文件n); pri
21、ntf( 0 退出n);for (i = 0; i= 79; i+) putchar(=); putchar(n); printf(%sn, 請輸入各操作對應的序號:);void save(STUDENT *data, int len)/將數(shù)據(jù)保存到文件int i;FILE *fp;fp=fopen(成績統(tǒng)計表.txt,w);fprintf(fp,%8s, 學號); fprintf(fp,%8s, 姓名); fprintf(fp,%8s, 語文); fprintf(fp,%8s, 數(shù)學); fprintf(fp,%10s, 英語); fprintf(fp,%12s, 平均分); fprintf
22、(fp,%10sn, 總分); fprintf(fp,=n); putchar(n); for (i = 0; i len; i+) fprintf(fp,%8d, datai.no); fprintf(fp,%8s, ); fprintf(fp,%8.1lf, datai.Chinese); fprintf(fp,%8.1lf, datai.math); fprintf(fp,%10.1lf, datai.English); fprintf(fp,%12.1lf, datai.mark_ave); fprintf(fp,%10.1lfn, datai.mark_tot);
23、 fprintf(fp,=n);fclose(fp);printf(文件已保存到成績統(tǒng)計表.txt);getchar();getchar();/*-主程序-*/void main() STUDENT dataMAXN; int len = 0; char ctrl_ch; paint(); scanf(%c, &ctrl_ch); while (ctrl_ch != 0) ; case 1:input(data, &len);break;case 2:output(data, len);break;case 3:sort(data, len);break;case 4:find(data, l
24、en);break;case 5:insert(data, &len);break;case 6:delete_item(data, &len);break;case 7:stat(data, len);break;case 8:save(data, len);break;default:if (ctrl_ch != n) printf(%sn, 輸入錯誤!);break; if (ctrl_ch != n) paint(); scanf(%c, &ctrl_ch); 7.2調(diào)試與測試 7.2.1算法調(diào)試過程中出現(xiàn)的問題及解決方法(以下為其中一例)-Configuration: Cpp1 -
25、Win32 Debug-Compiling.Cpp1.cppC:Documents and SettingsAdministrator桌面Cpp1.cpp(9) : error C2065: MAX_MAME : undeclared identifierC:Documents and SettingsAdministrator桌面Cpp1.cpp(9) : error C2057: expected constant expressionC:Documents and SettingsAdministrator桌面Cpp1.cpp(10) : error C2229: struct stud
26、ent has an illegal zero-sized array執(zhí)行 cl.exe 時出錯.Cpp1.obj - 1 error(s), 0 warning(s)解決方法:把“MANE”改成“NAME”-拼寫錯誤。7.2.2主要程序運行結果運行開始(如圖7.1)圖7.1選擇1輸入成績(7.2) 圖7.2 選擇3按平均分排序 再按2輸出成績(如圖7.3) 圖7.3選擇4查找(輸入學號3)(如圖7.4) 圖7.4選擇5插入新數(shù)據(jù)(圖7.5) 圖7.5選擇6按學號刪除(輸入學號4)(圖7.6) 圖7.6選擇7按平均分輸出統(tǒng)計信息(圖7.7) 圖7.7選擇8保存(圖 ) 圖 圖選擇0退出(如圖7.9) 圖7.9八 總結 由于本課題中的許多知識點都沒有學過都要靠自己到課外的資料中去查找。在用的時候難免出現(xiàn)這樣那樣的錯誤。如開始設計出來的菜單不是預想的那樣,而是總個窗中出現(xiàn)混亂。解決的這個問題的辦法是調(diào)整。一個系統(tǒng)的菜單和提示信息非常重要。如果沒有這些用戶根本不知道怎么用你設計的這個系統(tǒng)。在設計的調(diào)試過程中也無法順利的完成調(diào)試工作。有了一個清晰簡單的菜單和一些提示信息這
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023國家能源投資集團有限責任公司第一批社會招聘筆試備考題庫附答案詳解(突破訓練)
- 2025福建晉園發(fā)展集團有限責任公司權屬子公司招聘7人筆試備考題庫及答案詳解(易錯題)
- 2025年河北省定州市輔警招聘考試試題題庫含答案詳解(基礎題)
- 2025年K12輔導行業(yè)品牌建設策略:雙減政策下的轉型路徑分析報告
- 初中生物八年級下冊統(tǒng)編教案
- 腎結石成分與代謝評估研究2025
- 2025屆高考物理大一輪復習課件 第七章 第35課時 專題強化:碰撞模型及拓展
- 建設工程履約擔保制度研究
- 項目投資筆試題及答案
- 江蘇省高品質(zhì)高中2025屆高三下學期5月調(diào)研測試生物試卷(有答案)
- 某附屬醫(yī)院圍手術期血糖規(guī)范管理成果申報
- 養(yǎng)殖場環(huán)境應急預案
- 數(shù)字人民幣專題分析
- RITTAL威圖空調(diào)中文說明書
- 馬工程教育學項賢明第九章-教師與學生
- 2023年上海市普通高中學業(yè)合格考試歷史試題
- 精選最近九年北京高考數(shù)學(理)壓軸題(含答案)
- 臨床路徑匯編(完整版)資料
- 2019山東高考文綜政治試題及答案
- XX市救護車管理辦法
- YY/T 0287-2003醫(yī)療器械 質(zhì)量管理體系 用于法規(guī)的要求
評論
0/150
提交評論