版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、中國地質(zhì)大學本科生課程論文封面課程名稱C語言課程設(shè)計教師姓名_本科 生姓名 _木科生學號 _本科生專業(yè) _所在院系 _類別:_FI期:2013 年 12 月 31 R2課程設(shè)計評語對課程論文的評語:平時成績:課程論文成績:總成績:評閱人簽名:注:1、無評閱人簽名成績無效;2、 必須用鋼筆或圓珠筆批閱,用鉛筆閱卷無效:3、 如有平時成績,必須在上面評分表中標出,并計算入總成績。3四、數(shù)據(jù)結(jié)構(gòu)設(shè)讓課程設(shè)計評語.2目錄.364-、課程論文題目:學生成績管理系統(tǒng)1:題口要求請設(shè)計學生成績管理系統(tǒng),實現(xiàn)學生信息的錄入,顯示,查找,添加,保 存,刪除,插入等功能模塊。要求功能選擇用菜單實現(xiàn),數(shù)據(jù)輸入和結(jié)果
2、輸出要 求有文件存放。原始數(shù)據(jù)文件格式:學號姓名英語C語言高等數(shù)學平均成績01張三7585808002李四2:需求分析根據(jù)題要求,由于學生信息總是存放在文件中,所以應提供文件的輸入, 輸出等操作;在程序中需要瀏覽學生的信息,應提供顯示,查找,排序等操作; 另外還應提供鍵盤式選擇菜單實現(xiàn)功能選擇。3:總體設(shè)計根據(jù)上面的需求分析,可以將這個系統(tǒng)的設(shè)計分為:數(shù)據(jù)輸入模塊、數(shù)據(jù)顯 示模塊、數(shù)據(jù)查找模塊、數(shù)據(jù)插入模塊、成績排序模塊和成績保存模塊等。二、程序設(shè)計思路這次是初次要自主設(shè)汁一個程序系統(tǒng)。系統(tǒng)要求實現(xiàn)學生信息的錄入.顯示、查找、添加以及成績排序等功能。對 于兒個功能,可分別設(shè)置7個部分。根據(jù)需求
3、分析,可以將這個系統(tǒng)分為以下模塊: 輸入模塊,錄入模塊,修改模塊,保存模塊,查詢功能模塊,刪除功能模塊,以及排 序模塊.1、用戶輸入模塊在此模塊中用戶根據(jù)自己的需求輸入數(shù)字r?中的任意一個數(shù)字,實現(xiàn)5相應的功能。2、 信息錄入功能模塊此模塊可以讓用戶輸入每個學生的信息:學號、姓名、英語成績、C語言 成績、高等數(shù)學成績、平均成績。用戶可以連續(xù)輸入學生的信息,或者刪除或 者查詢,也可以保存當前已錄入的信息。3、 修改學生成績模塊用戶可以根據(jù)實際情況的變化修改已錄入的學生成績的信息,跟實際同 步。4、 文件保存模塊用戶可以在確定已錄入的信息無誤之后將學生的信息存為一個數(shù)據(jù)文件。 已保存的信息可以再文
4、件中查看也可以在程序中進行查看。用戶輸入的學生信 息可以隨時保存。5、 查詢功能模塊在此模塊里,用戶可以根據(jù)提示輸入所想要查詢的學生的學號以查詢學生 的信息。6、 刪除功能模塊、在此模塊里,用戶可以根據(jù)自己的需求選擇想要刪除的學生信息,選擇之 后程序會再次確認,以防誤刪。7、排序功能模塊在此模塊中,程序會將用戶已錄入的信息按平均成績由低到高進行排 序。三、功能模塊圖:6struct xueshengchengji/*聲明學生成績數(shù)據(jù)結(jié)構(gòu)體*/char xuehaoElO; char name10.; float cyuyan; float math;float english; float a
5、verage;;/*學生學號*/*學生姓名*/*c語言成績*/*髙數(shù)成績*/*英語成績*/*平均成績*/struct xueshengchengji chengji 100, *p=chengji;/*聲明記錄學生成績情況的 100個元素的結(jié)構(gòu)體數(shù)組*/7void modify ()char xuehao10; int i;辻(n=-l)五、算法設(shè)計1、添加模塊void add()printf (t請輸入學生學號:”);f flush (stdin) ;/*淸除鍵盤緩沖區(qū)*/gets (chengji+n xuehao);printf (/ztttt請輸入學生姓名:);gets(chengji
6、.n name);printf (tttt請輸入該學生的英語成績:”); scanf &chengji n cyuyan);printfCtttt請輸入該學生的C語言成績:”); scanf &chengji n math);printf (?,tttt請輸入該學生的高等數(shù)學成績:”); scanf (/z%fz,, &chengji n english);/*計算總成績*/chengji En average=(chengjin cyuyan+chengji.nmath+chengji.n english)/3; /*輸出內(nèi)容*/printf (?/ntttt 該學生成績?yōu)?f, cheng
7、ji nJ. average);printf (wnntttt 按任意鍵返回.”);getchO ;2、修改模塊/*接收學生學號字符數(shù)組權(quán)/*循環(huán)變量*/*人數(shù)為0說明成績記錄尚未添加權(quán)printf(nntt當前還沒有學生成績記錄,按任意鍵返回主菜單.、getch();return;printf (?,t請輸入學生學號:);/*提示信息*/8/*比較并找到*/gets (xuehao) ;/*從鍵盤讀取字符串*/for (i=0;i=n;i+)/*在學生總數(shù)范圍內(nèi)循環(huán)查找杉if (strcmp (chengji .i xuehao, xuehao) =0)9/*顯示該學生成績情況*/print
8、f(nttt該學生成績情況如下:”);printf (nttt=二二二=二二二二=nn);printf (學號姓名平均成績);printf (“英語C語言 高等數(shù)學);printf(玄-6s%-6s, chengjii. xuehao, chengjii:. name);printf (,z%9. 2f%9. 2f%9. 2f%9. 2f, chengji i. cyuyan, chengji i:. math, chengji lij. engli sh, chengji Ei. average);/*接受該學生新的成績情況*/printf(ntt請輸入該學生新的英語成績:”);scanf&
9、chengji li. cyuyan);printf (z,ntt請輸入該學生新的C語言成績:”);scanf (玄f, &chengji Zi. math);printf Cntt請輸入該學生新的髙等數(shù)學成績:);scanf&chengjii. english);3、查詢模塊/*查詢學生成績(依據(jù)學號)*/void findOchar xuehaotlOl;/*接收學生學號字符數(shù)組*/int i;/*循環(huán)變量*/if(n1)/*人數(shù)為0說明成績記錄尚未添加*/printf (nntt當前還沒有學生成績,按任意鍵返回主菜單.);getchO ;return;printf (?,t請輸入學生學號
10、:);/*提示信息*/gets(xuehao) ;/*從鍵盤讀取字符串*/for (i=0; i=n;i+)/*在職工總數(shù)范用內(nèi)循環(huán)查找*/if (strcmp (chengji li. xuehao, xuehao) =0)/*比較并找到*/printf(z/n該學生成績情況如下:);printf (n二二二=二二二=二二二nn);printf (?,學號 姓名);10printf(/z英語C語言 髙等數(shù)學平均成績);printf (?z%-6s%-6s%?/, chengji i xuehao, chengji i name);printf (?z%9 2f%9 2f%9 2f%9 2f,
11、 chengji .i cyuyan, chengji i math, chengji i e nglish, chengjii average);printf(n按任意鍵返回主菜單 .”);getch0;break;if(i=n+l)printf (ntt您所輸入的學生學號有誤或不存在!);printf (按任意鍵返回主菜單.”);getch0 ;return;4、刪除模塊void del 0char xuehaotlO;int i, j;char d;printf(t請輸入待刪除學生學號:”); gets(xuehao);for(i=0;i=n;i+)if(strcmp(chengji L
12、i xuehao, xuehao)= 二 0)printf (ntt你確認要刪除s號學生成 績信息么(y/n)?,z, chengjii. xuehao ); d=getche();if (d二二y,d二二Y)if(i=n)n_;else11for(j=i;j=n;j+)strcpy(chengjij xuehao, chengjij+1. xuehao); strcpy(chengjij name, chengjij+1 namE); chengjij english=chengji Ej+1 english;chengjij math=chengji Lj+1. math;chengjij
13、 cyuyan二chengji.j+1 cyuyan;printf (nntt該學生記錄成功刪除,按任意鍵返回主菜單.”);getchO ;break;elseprintf (nntt你選擇了不刪除該學生記錄,按任意鍵返回主菜單.);getchO ;return;if (i = n+1)printf(ntt本班級無此學號,按任意鍵返回主菜單 getchO ;5、排序模塊void rankOint i, j; printf (t按平均成績排序如下n);for (i=0;in;i+)for(j=i+l;jchengji j average) *p=chengjij;chengj ij=chengj
14、 ii;chengjii=*p; printf (/z%-6s%-6s/z,少學號姓名);printf (,%-125%-65%125%-93,英語,C 語言,高等數(shù)學,平均成績3;12for(i=0;i=n;i+)13void modify();/*修改學生成績數(shù)據(jù)記錄*/void add();/*向?qū)W生成績數(shù)據(jù)文件中增加記錄*/void del ();/*從學生成績數(shù)據(jù)文件中刪除記錄權(quán)void rankO ;/*排列學生成績材printf (?z%-6s%-6s/z, chengji i xuehao, chengji i name);printf (,?%9 2f%9 2f%9 2f%9
15、 2fn, chengji i cyuyan, chengji _i math, chengji -i eng lish, chengjii average);printf Cnntttt 按任意鍵返回 .”);getchO ;六、程序代碼nclude /*基本的輸入輸出函數(shù)*/Sinclude /*getch0及 getche()函數(shù)包含在此*/include /巖字符串相關(guān)函數(shù)*/#include define TRUE 1/*以下函數(shù)為自泄義函數(shù)聲明語句*/void readO ;/*從數(shù)據(jù)文件中讀取學生成績數(shù)據(jù)*/void write ();/*從學生成績數(shù)據(jù)文件寫入記錄*/void
16、findO ;/*査詢學生成績數(shù)據(jù)記錄*/struct xueshengchengji /*聲明學生成績數(shù)據(jù)結(jié)構(gòu)體*/char xuehaollO ; /*學生學號*/char name 10; /*學生姓名*/ float cyuyan; /*c 語言成績*/ float math; /*高數(shù)成績*/ float english; /*英語成績*/ float average; /*平均成績*/ ;struct xueshengchengji chengji 100, *p=chengji ; /*聲明記錄學生成績情況的 100 個元素的結(jié)構(gòu)體數(shù)組*/14=n3 ;int n = -1; /
17、*聲明統(tǒng)計學生人數(shù)的變量*/ void mainO char ch;readO ; /*從數(shù)據(jù)文件中讀取學生成績數(shù)據(jù)并初始化學生成績結(jié)構(gòu)體數(shù)組*/ while(TRUE) system(,/cls/,) ; /*淸屏命令*/printf (*tt 請選擇(1-7) : n);printf(tt=n);printf (z/ttt 1.查詢學生成績記錄n);printf (ttt 2修改學生成績記錄n); printf(ttt 3.添加學生成績記錄n);printf(ttt 4.刪除學生成績記錄n); printf (ttt 5.保存學生成績記錄n); printf (,?ttt 6成績排序n);
18、printf(,?ttt 7退出rT);printf (,?t t=printf(ntt); ch=getch();switch(ch) case 1:findO;break; /*査詢*/case 2 :modify ();break; /*修改*/ case 3 :add();break; /*添加*/case 4 :del 0 ;break; /*刪除*/case 5 :write ();break; /*保存*/case 6:rank 0 ;break; /*排序*/ case T :return; /*退出*/ default:printf(wtt n); getch ();retu
19、rn;/*從數(shù)據(jù)文件cj. dat中讀取學生成績數(shù)據(jù)到數(shù)據(jù)組chengji中*/ void readO15FILE * file; /*聲明文件指針*/辻(file二fopen(cj. dat, rb)二二NULL)/*以二進制方式打開學生成績數(shù)據(jù)文件,并判斷是否失敗*/ printf(nnt學生成績數(shù)據(jù)文件無法打開,或為空! ”); printf(nnt按任意鍵進入主菜單.”);getch ();return;else /*文件打開成功時*/n+; /*計算結(jié)構(gòu)體數(shù)組下標*/while(fread(&chengjin, sizeof(chengj遼n), 1, file) = 1) n+;f
20、close(file); /*關(guān)閉文件指針*/printf (nnt學生成績數(shù)據(jù)讀取完畢n, n);n-; /*計算學生記錄總數(shù)*/*向?qū)W生成績數(shù)據(jù)文件中寫入記錄*/void write()FILE * file; /*聲明文件指針*/辻(n二二-1) /*學生人數(shù)為0時*/printf (”沒有數(shù)據(jù)可存!按任意鍵返回主菜單n)n); ; getch ();return;辻(file二fopen(cj. dat, wb)!=NULL)/*以二進制方式打開學生成績數(shù)據(jù)文件,并判斷是否失敗*/ if(i=n+l)16fwrite(&chengji 0, sizeof (chengji 0), n+
21、1, file) ; /*所有記錄一次寫入文件*/ fclose(file); /*關(guān)閉文件指針*/printf (/znntt%d 條學生記錄保存完畢! n, n+1);else /*文件打開不成功時*/printfCtt無法打開學生成績數(shù)據(jù)文件! ); printf (ntt按任意鍵返回主菜單.”);getch ();/*查詢學生成績(依據(jù)學號)*/void findOchar xuehao101; /*接收學生學號字符數(shù)組*/int i; /*循環(huán)變量*/if(n=-l) /*人數(shù)為0說明成績記錄尚未添加*/printf (nntt當前還沒有學生成績,按任總鍵返回主菜單.”);getch
22、 ();return;printf (t請輸入學生學號:);/*提示信息*/ gets(xuehao); /*從鍵盤讀取字符串*/for G二0; i=n;i+) /*在學生總數(shù)范用內(nèi)循環(huán)查找*/if (strcmp(chengji Li, xuehao, xuehao) =0) /*比較并找到*/printf (?/n該學生成績情況如下:);printf (n二=二二二nn);printf C 學號姓名);printf C 英語C語言高等數(shù)學平均成績n);printf (/z%6s%6s,z, chengji _i. xuehao, chengjiEi. name);printf Cz%9.
23、 2f%9. 2f%9. 2f%9. 2f, chengji i. cyuyan, chengji i, math, chengji i. e nglish, chengjii. average);printf (n按任意鍵返回主菜單 .);getch (); break;printf (ntt您所輸入的學生學號有誤或不存在廣);printf (”按任意鍵返回主菜單.”);getchO ;17return;void list()int i;system(cis);printf (?,nnttt全體學生成績情況如下n);printf (”ttt=二二二=二二二=二二二二二二二nn”);print
24、f(學號 姓名”);printf (英語 C語言 高等數(shù)學平均成績);for (i=0;i=n;i+)printf (/%6s%6s%9s,/, chengji i. xuehao, chengji Lil. name, chengji Li. average);printf (%9. 2f%9. 2f%9. 2f, chengji i. english, chengji i. math); void modify ()char xuehaoElO; /*接收學生學號字符數(shù)組*/int i; /*循環(huán)變量*/辻(n1) /*人數(shù)為0說明成績記錄尚未添加*/printf (nntt當前還沒有學生
25、成績記錄,按任意鍵返回主菜單.”);getch();return;printf (?,t請輸入學生學號:);/*提示信息*/gets(xuehao); /*從鍵盤讀取字符串*/for (i=0;i=n;i+) /*在學生總數(shù)范圍內(nèi)循環(huán)査找*/if (strcmp (chengji li. xuehao, xuehao) =0) /*比較并找到*/*顯示該學生成績情況*/printf (?/nttt該學生成績情況如下:);printf (nttt=二二二=二=二二二二二=nn);printfC 學號姓名0;printfC英語C語言髙等數(shù)學平均成績);18printf (,%6s%6s/,, ch
26、engji _i. xuehao, chengjiEi. name);printf C%9. 2f%9. 2f%9. 2f%9. 2f, chengji Li. cyuyan, chengji i, math, chengji i. e nglish, chengjii. average);/*接受該學生新的成績情況*/printf (ntt請輸入該學生新的英語成績:”); scanf (%f, &chengjii. cyuyan);printf (ntt請輸入該學生新的C語言成績:”);scanf&chengjiEil. math);printf(?,ntt請輸入該學生新的髙等數(shù)學成績:”)
27、; scanf&chengji li. english);/*計算總成績*/ch亡ngjii. average=(chengjii. cyuyan+chengjii. math+chengji _i. english)/3;/*同屏顯示計算結(jié)果*/printf (/znttt 該學生成績是:%f*, chengji i. average);printfCnntt該學生成績數(shù)據(jù)修改成功!按任意鍵返回主菜單.”);getchO ;return ;printf (?,ntt您所輸入的學生學號有誤或不存在! ”);printfC按任意鍵返回主菜單 .”);getchO ;return;/*向?qū)W生管理系
28、統(tǒng)中則增加記錄*/void add()printf (、請輸入學生學號:”);f flush (stdin); /*淸除鍵盤緩沖區(qū)*/gets(chengji+n. xuehao);printf (wtttt請輸入學生姓名:);gets(chengji _n. name);printf (tttt請輸入該學生的英語成績:”);scanf(”%f: &chengjin. cyuyan);printf (tttt請輸入該學生的C語言成績:”);scanf&chengjin. math);19printf (tttt請輸入該學生的髙等數(shù)學成績:”); scanf(Wf, &chengjin. eng
29、lish);/*計算總成績*/chengjin. average二(chengjin. cyuyan+chengjiLn. math+chengji_n. english)/3; /*輸出內(nèi)容*/printf (wntttt 該學生成績?yōu)?f, chengji nL average);printf (wnntttt 按任意鍵返回.”);getchO ;/*從學生成績數(shù)據(jù)文件中刪除記錄*/void del ()char xuehaoElO; /*接收學生學號字符數(shù)組*/int i,j; /*循環(huán)變量*/char d; /*接收確認刪除字符:y/n*/printfCt請輸入待刪除學生學號:”);g
30、ets(xuehao);for(i=0;i=n;i+) /*在學生總數(shù)范圍內(nèi)循環(huán)査找*/ if (strcmp (chengji Li. xuehao, xuehao) =0) /*比較并找到*/printf(ntt 你確認要刪除恤號學生成績信息么 (y/n)?, chengjii. xuehao );d二getcheO ;if (d二二y yd二二Y) /*確認刪除*/辻(匸二n) /*如果是最后一條記錄*/n;else /*不是最后一條記錄*/for (j=i; j=n;j+) /*從該記錄開始后續(xù)記錄更新前一條記錄*/ strcpy(chengjij. xuehao, chengjij+
31、1. xuehao);strcpy(chengjij. name, chengjij+1. name);chengjij. english二chengjij+1. english;chengjij. math二chengjiLj+1 math;chengjij. cyuyan二chengji _j+l. cyuyan;n;printf(nntt該學生記錄成功刪除,按任意鍵返回主菜單.”);getchO ;break;20else /*未確認刪除記錄*/printf(nntt你選擇了不刪除該學生記錄,按任意鍵返回主菜單 .”);getchO ;return;if(i = n+1) /*未找到指定
32、學號或未刪除記錄權(quán)printf (ntt本班級無此學號,按任意鍵返回主菜單 .”);getchO ;/*排列學生的成績*/void rank ()int i,j; /*循環(huán)變量*/printf (t按平均成績排序如下n);for (i=0;in;i+)for(j=i+l;jchengji j average)*p=chengjij;chengji Lj=chengjii;chengji i=*p;printf(,%-6s%-6s/,,學號,姓名);printf(,%-12s%-6s%12s%-9sn, ” 英語,” C 語言,高等數(shù)學,平均成 績);for(i=0;i=n;i+)printf (%-6s$-6s,chengji.i xuehao, chengjii name);printf (?,%9 2f%9 2f%9
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【2021屆備考】2021屆全國名校數(shù)學試題分類解析匯編(12月第三期):M單元-推理與證明
- 音樂教師培訓總結(jié)5篇
- 【紅對勾】2021-2022學年人教版高中政治必修一習題-第一單元-生活與消費-課時作業(yè)6
- 【每日一練】《晨讀晚練》英語高三年級上學期第五周參考答案及解析5
- 【全程復習方略】2022屆高考數(shù)學(文科人教A版)大一輪專項強化訓練(五)圓錐曲線的綜合問題-
- 2025年七年級統(tǒng)編版語文寒假預習 第01講 孫權(quán)勸學
- 【全程復習方略】2020年高考化學單元評估檢測(四)(魯科版-福建專供)
- 浙江省溫州蒼南2023-2024學年第二學期期末檢測卷 六年級下冊科學
- 【全程復習方略】2022屆高考數(shù)學(文科人教A版)大一輪課時作業(yè):10.3-幾何概型-
- 【全程復習方略】2022屆高考數(shù)學(文科人教A版)大一輪課時作業(yè):2.3-函數(shù)的奇偶性與周期性-
- QCT1067.4-2023汽車電線束和電器設(shè)備用連接器第4部分:設(shè)備連接器(插座)的型式和尺寸
- 2019電子保單業(yè)務規(guī)范
- 學堂樂歌 說課課件-2023-2024學年高中音樂人音版(2019) 必修 音樂鑒賞
- 幕墻工程材料組織、運輸裝卸和垂直運輸方案
- 灌溉用水循環(huán)利用技術(shù)
- 泌尿科一科一品匯報課件
- 2024年江西省三校生高職英語高考試卷
- 中國古代文學智慧樹知到期末考試答案章節(jié)答案2024年廣州大學
- 重慶市南岸區(qū)2022-2023學年五年級上學期期末語文試卷
- 現(xiàn)澆鋼筋混凝土整體式肋梁樓蓋結(jié)構(gòu)-課程設(shè)計
- 錦綸纖維研究報告-中國錦綸纖維行業(yè)競爭格局分析及發(fā)展前景研究報告2020-2023年
評論
0/150
提交評論