版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 本科生課程論文封面</b></p><p> 課程名稱 C語(yǔ)言課程設(shè)計(jì) </p><p> 教師姓名 </p><p> 本科生姓名 </p><p> 本科生學(xué)號(hào) </p><
2、;p> 本科生專業(yè) </p><p> 所在院系 </p><p> 類別: </p><p> 日期: 2013年12月31日 </p><p><b> 課程設(shè)計(jì)評(píng)語(yǔ)</b></p&g
3、t;<p> 注:1、無(wú)評(píng)閱人簽名成績(jī)無(wú)效;</p><p> 2、必須用鋼筆或圓珠筆批閱,用鉛筆閱卷無(wú)效;</p><p> 3、如有平時(shí)成績(jī),必須在上面評(píng)分表中標(biāo)出,并計(jì)算入總成績(jī)。</p><p><b> 目 錄</b></p><p><b> 課程設(shè)計(jì)評(píng)語(yǔ)2</b&g
4、t;</p><p><b> 目 錄3</b></p><p> 1.課程論文題目4</p><p> 2.程序設(shè)計(jì)思路4</p><p><b> 3.功能模塊圖5</b></p><p> 4.?dāng)?shù)據(jù)結(jié)構(gòu)設(shè)計(jì)5</p><p>
5、<b> 5.算法設(shè)計(jì)6</b></p><p><b> 6.程序代碼10</b></p><p> 7.程序運(yùn)行結(jié)果18</p><p> 8.編程中遇到的困難及解決方法22</p><p> 9.總結(jié)心得及良好建議22</p><p><b&g
6、t; 10.致謝23</b></p><p> 一、課程論文題目:學(xué)生成績(jī)管理系統(tǒng)1:題目要求</p><p> 請(qǐng)?jiān)O(shè)計(jì)《學(xué)生成績(jī)管理系統(tǒng)》,實(shí)現(xiàn)學(xué)生信息的錄入,顯示,查找,添加,保存,刪除,插入等功能模塊。要求功能選擇用菜單實(shí)現(xiàn),數(shù)據(jù)輸入和結(jié)果輸出要求有文件存放。</p><p><b> 原始數(shù)據(jù)文件格式:</b>&
7、lt;/p><p> 學(xué)號(hào) 姓名 英語(yǔ) C語(yǔ)言 高等數(shù)學(xué) 平均成績(jī)</p><p> 01 張三 75 85 80 80</p><p> 02 李四 … … … …</p><p><b> 2:需求分析</b></p&
8、gt;<p> 根據(jù)題目要求,由于學(xué)生信息總是存放在文件中,所以應(yīng)提供文件的輸入,輸出等操作;在程序中需要瀏覽學(xué)生的信息,應(yīng)提供顯示,查找,排序等操作;另外還應(yīng)提供鍵盤式選擇菜單實(shí)現(xiàn)功能選擇。</p><p><b> 3:總體設(shè)計(jì)</b></p><p> 根據(jù)上面的需求分析,可以將這個(gè)系統(tǒng)的設(shè)計(jì)分為:數(shù)據(jù)輸入模塊、數(shù)據(jù)顯示模塊、數(shù)據(jù)查找模塊、數(shù)
9、據(jù)插入模塊、成績(jī)排序模塊和成績(jī)保存模塊等。</p><p><b> 二、程序設(shè)計(jì)思路</b></p><p> 這次是初次要自主設(shè)計(jì)一個(gè)程序系統(tǒng)。</p><p> 系統(tǒng)要求實(shí)現(xiàn)學(xué)生信息的錄入、顯示、查找、添加以及成績(jī)排序等功能。對(duì)于幾個(gè)功能,可分別設(shè)置7個(gè)部分。根據(jù)需求分析,可以將這個(gè)系統(tǒng)分為以下模塊:輸入模塊,錄入模塊,修改模塊,保
10、存模塊,查詢功能模塊,刪除功能模塊,以及排序模塊.</p><p><b> 用戶輸入模塊</b></p><p> 在此模塊中用戶根據(jù)自己的需求輸入數(shù)字1~7中的任意一個(gè)數(shù)字,實(shí)現(xiàn)相應(yīng)的功能。</p><p><b> 信息錄入功能模塊</b></p><p> 此模塊可以讓用戶輸入每個(gè)學(xué)
11、生的信息:學(xué)號(hào)、姓名、英語(yǔ)成績(jī)、C語(yǔ)言成績(jī)、高等數(shù)學(xué)成績(jī)、平均成績(jī)。用戶可以連續(xù)輸入學(xué)生的信息,或者刪除或者查詢,也可以保存當(dāng)前已錄入的信息。</p><p><b> 修改學(xué)生成績(jī)模塊</b></p><p> 用戶可以根據(jù)實(shí)際情況的變化修改已錄入的學(xué)生成績(jī)的信息,跟實(shí)際同步。</p><p><b> 文件保存模塊</
12、b></p><p> 用戶可以在確定已錄入的信息無(wú)誤之后將學(xué)生的信息存為一個(gè)數(shù)據(jù)文件。已保存的信息可以再文件中查看也可以在程序中進(jìn)行查看。用戶輸入的學(xué)生信息可以隨時(shí)保存。</p><p><b> 查詢功能模塊</b></p><p> 在此模塊里,用戶可以根據(jù)提示輸入所想要查詢的學(xué)生的學(xué)號(hào)以查詢學(xué)生的信息。</p>
13、<p><b> 刪除功能模塊、</b></p><p> 在此模塊里,用戶可以根據(jù)自己的需求選擇想要?jiǎng)h除的學(xué)生信息,選擇之后程序會(huì)再次確認(rèn),以防誤刪。 </p><p><b> 7、排序功能模塊</b></p><p> 在此模塊中,程序會(huì)將用戶已錄入的信息按平均成績(jī)由低到高進(jìn)行排序。</p&
14、gt;<p><b> 三、功能模塊圖:</b></p><p><b> 四、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)</b></p><p> struct xueshengchengji /*聲明學(xué)生成績(jī)數(shù)據(jù)結(jié)構(gòu)體*/</p><p><b> {</b></p><
15、;p> char xuehao[10]; /*學(xué)生學(xué)號(hào)*/</p><p> char name[10]; /*學(xué)生姓名*/</p><p> float cyuyan; /*c語(yǔ)言成績(jī)*/</p><p> float math; /*高數(shù)成績(jī)*/</p>
16、;<p> float english; /*英語(yǔ)成績(jī)*/</p><p> float average; /*平均成績(jī)*/</p><p><b> };</b></p><p> struct xueshengchengji chengji[100],*p=chengji;
17、 /*聲明記錄學(xué)生成績(jī)情況的100個(gè)元素的結(jié)構(gòu)體數(shù)組*/</p><p><b> 五、算法設(shè)計(jì)</b></p><p><b> 1、添加模塊</b></p><p> void add() </p><p&g
18、t;<b> {</b></p><p> printf ("\t請(qǐng)輸入學(xué)生學(xué)號(hào):");</p><p> fflush(stdin); /*清除鍵盤緩沖區(qū)*/</p><p> gets(chengji[++n].xuehao);</p><p> printf("
19、;\t\t\t\t請(qǐng)輸入學(xué)生姓名:");</p><p> gets(chengji[n].name);</p><p> printf("\t\t\t\t請(qǐng)輸入該學(xué)生的英語(yǔ)成績(jī):");</p><p> scanf("%f",&chengji[n].cyuyan);</p><p&
20、gt; printf("\t\t\t\t請(qǐng)輸入該學(xué)生的C語(yǔ)言成績(jī):");</p><p> scanf("%f",&chengji[n].math);</p><p> printf("\t\t\t\t請(qǐng)輸入該學(xué)生的高等數(shù)學(xué)成績(jī):");</p><p> scanf("%f&quo
21、t;,&chengji[n].english);</p><p><b> /*計(jì)算總成績(jī)*/</b></p><p> chengji[n].average=(chengji[n].cyuyan+chengji[n].math+chengji[n].english)/3;</p><p><b> /*輸出內(nèi)容*/&l
22、t;/b></p><p> printf("\n\t\t\t\t該學(xué)生成績(jī)?yōu)?%f",chengji[n].average);</p><p> printf("\n\n\t\t\t\t按任意鍵返回......");</p><p><b> getch();</b></p>
23、<p><b> }</b></p><p><b> 2、修改模塊</b></p><p> void modify ( )</p><p><b> {</b></p><p> char xuehao[10]; /*接收學(xué)生學(xué)號(hào)字符數(shù)組*/<
24、;/p><p> int i; /*循環(huán)變量*/</p><p> if (n==-1) /*人數(shù)為0說(shuō)明成績(jī)記錄尚未添加*/</p><p><b> {</b></p><p> printf("\n\n\t\t當(dāng)前還沒(méi)有學(xué)生成績(jī)記錄,按任意鍵返回主菜單...
25、...");</p><p><b> getch( );</b></p><p><b> return;</b></p><p><b> }</b></p><p> printf("\t請(qǐng)輸入學(xué)生學(xué)號(hào):"); /*提示信息*/&
26、lt;/p><p> gets(xuehao); /*從鍵盤讀取字符串*/</p><p> for (i=0;i<=n;i++) /*在學(xué)生總數(shù)范圍內(nèi)循環(huán)查找*/</p><p><b> {</b></p><p> if(strcmp(chengj
27、i[i].xuehao,xuehao)==0) /*比較并找到*/</p><p><b> {</b></p><p> /*顯示該學(xué)生成績(jī)情況*/</p><p> printf("\n\t\t\t 該學(xué)生成績(jī)情況如下: ");</p><p> printf("\
28、n\t\t\t===================\n\n");</p><p> printf("學(xué)號(hào) 姓名 平均成績(jī)");</p><p> printf("英語(yǔ) C語(yǔ)言 高等數(shù)學(xué)");</p><p> printf("%-6s%-6s",chengji[i].xuehao,c
29、hengji[i].name);</p><p> printf("%9.2f%9.2f%9.2f%9.2f",chengji[i].cyuyan,chengji[i].math,chengji[i].english,chengji[i].average);</p><p> /*接受該學(xué)生新的成績(jī)情況*/</p><p> printf(
30、"\n\t\t 請(qǐng)輸入該學(xué)生新的英語(yǔ)成績(jī): ");</p><p> scanf ("%f",&chengji[i].cyuyan);</p><p> printf("\n\t\t 請(qǐng)輸入該學(xué)生新的C語(yǔ)言成績(jī): ");</p><p> scanf ("%f",&
31、chengji[i].math);</p><p> printf("\n\t\t 請(qǐng)輸入該學(xué)生新的高等數(shù)學(xué)成績(jī): ");</p><p> scanf ("%f",&chengji[i].english);</p><p><b> 3、查詢模塊</b></p><p&
32、gt; /*查詢學(xué)生成績(jī)(依據(jù)學(xué)號(hào))*/</p><p> void find()</p><p><b> {</b></p><p> char xuehao[10]; /*接收學(xué)生學(xué)號(hào)字符數(shù)組*/</p><p> int i; /*循環(huán)變量*/</p><p>
33、 if(n==-1) /*人數(shù)為0說(shuō)明成績(jī)記錄尚未添加*/</p><p><b> {</b></p><p> printf("\n\n\t\t當(dāng)前還沒(méi)有學(xué)生成績(jī),按任意鍵返回主菜單......");</p><p><b> getch();</b></p><p
34、><b> return;</b></p><p><b> }</b></p><p> printf("\t請(qǐng)輸入學(xué)生學(xué)號(hào):"); /*提示信息*/</p><p> gets(xuehao); /*從鍵盤讀取字符串*/</p><p> fo
35、r(i=0;i<=n;i++) /*在職工總數(shù)范圍內(nèi)循環(huán)查找*/</p><p><b> {</b></p><p> if(strcmp(chengji[i].xuehao,xuehao)==0) /*比較并找到*/</p><p><b> {</b></p><p&g
36、t; printf("\n 該學(xué)生成績(jī)情況如下:"); </p><p> printf("\n===================\n\n");</p><p> printf("學(xué)號(hào) 姓名");</p><p> printf("英語(yǔ) C語(yǔ)言 高等數(shù)學(xué) 平均成績(jī)&quo
37、t;);</p><p> printf("%-6s%-6s%",chengji[i].xuehao,chengji[i].name);</p><p> printf("%9.2f%9.2f%9.2f%9.2f",chengji[i].cyuyan,chengji[i].math,chengji[i].english,chengji[i].av
38、erage);</p><p> printf("\n 按任意鍵返回主菜單......");</p><p><b> getch();</b></p><p><b> break;</b></p><p><b> }</b></p>
39、<p><b> }</b></p><p> if(i==n+1)</p><p><b> {</b></p><p> printf("\n\t\t您所輸入的學(xué)生學(xué)號(hào)有誤或不存在!");</p><p> printf("按任意鍵返回主菜單
40、......");</p><p><b> getch();</b></p><p><b> return;</b></p><p><b> }</b></p><p><b> }</b></p><p>
41、<b> 4、刪除模塊</b></p><p> void del()</p><p><b> {</b></p><p> char xuehao[10]; </p><p> int i,j;
42、 </p><p> char d; </p><p> printf("\t請(qǐng)輸入待刪除學(xué)生學(xué)號(hào):");</p><p> gets(xuehao);</p><p> for(i=0;i<=n;i++)
43、 {</p><p> if(strcmp(chengji[i].xuehao,xuehao)==0){</p><p> printf("\n\t\t你確認(rèn)要?jiǎng)h除%s號(hào)學(xué)生成績(jī)信息么(y/n)?",chengji[i].xuehao );</p><p> d=getche();</p>
44、<p> if(d=='y'||d=='Y') </p><p><b> {</b></p><p> if(i==n) </p><p><b> n--;</b></p><
45、;p> else </p><p><b> {</b></p><p> for(j=i;j<=n;j++) </p><p><b> {</b></p><p> strcpy(chengji[
46、j].xuehao,chengji[j+1].xuehao);</p><p> strcpy(chengji[j].name,chengji[j+1].name);</p><p> chengji[j].english=chengji[j+1].english;</p><p> chengji[j].math=chengji[j+1].math;<
47、/p><p> chengji[j].cyuyan=chengji[j+1].cyuyan;</p><p><b> }</b></p><p><b> n--;</b></p><p><b> }</b></p><p> printf(&
48、quot;\n\n\t\t該學(xué)生記錄成功刪除,按任意鍵返回主菜單......");</p><p><b> getch();</b></p><p><b> break;</b></p><p><b> }</b></p><p> else
49、 {</p><p> printf("\n\n\t\t你選擇了不刪除該學(xué)生記錄,按任意鍵返回主菜單......");</p><p><b> getch();</b></p><p><b> return;</b></p>&l
50、t;p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(i == n+1) {</p><p> printf("\
51、n\t\t本班級(jí)無(wú)此學(xué)號(hào),按任意鍵返回主菜單......");</p><p><b> getch();</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 5、排序模塊</b>
52、</p><p> void rank()</p><p><b> {</b></p><p> int i,j; </p><p> printf("\t按平均成績(jī)排序如下\n");</p><p> for (i
53、=0;i<n;i++)</p><p> for(j=i+1;j<n;j++)</p><p> if (chengji[i].average>chengji [j].average)</p><p> {*p=chengji[j];chengji[j]=chengji[i];chengji[i]=*p;}</p><p&
54、gt; printf("%-6s%-6s","學(xué)號(hào)","姓名");</p><p> printf("%-12s%-6s%12s%-9s\n","英語(yǔ)","C語(yǔ)言","高等數(shù)學(xué)","平均成績(jī)");</p><p> for(i
55、=0;i<=n;i++)</p><p><b> { </b></p><p> printf("%-6s%-6s",chengji[i].xuehao,chengji[i].name);</p><p> printf("%9.2f%9.2f%9.2f%9.2f\n",chengji[i]
56、.cyuyan,chengji[i].math,chengji[i].english,chengji[i].average);</p><p><b> }</b></p><p> printf("\n\n\t\t\t\t按任意鍵返回......");</p><p><b> getch();</b
57、></p><p><b> }</b></p><p><b> 六、程序代碼</b></p><p> nclude <stdio.h> /*基本的輸入輸出函數(shù)*/</p><p> #include <conio.h> /*getch()及getche()
58、函數(shù)包含在此*/</p><p> #include <string.h> /*字符串相關(guān)函數(shù)*/</p><p> #include <windows.h> </p><p> #define TRUE 1</p><p> /*以下函數(shù)為自定義函數(shù)聲明語(yǔ)句*/</p><p> v
59、oid read(); /*從數(shù)據(jù)文件中讀取學(xué)生成績(jī)數(shù)據(jù)*/</p><p> void write(); /*從學(xué)生成績(jī)數(shù)據(jù)文件寫入記錄*/</p><p> void find(); /*查詢學(xué)生成績(jī)數(shù)據(jù)記錄*/</p><p> void modify(); /*修改學(xué)生成績(jī)數(shù)據(jù)記錄*/</p><p
60、> void add(); /*向?qū)W生成績(jī)數(shù)據(jù)文件中增加記錄*/</p><p> void del(); /*從學(xué)生成績(jī)數(shù)據(jù)文件中刪除記錄*/</p><p> void rank(); /*排列學(xué)生成績(jī)*/</p><p> struct xueshengchengji /*聲明學(xué)生成績(jī)數(shù)據(jù)結(jié)構(gòu)體*/&
61、lt;/p><p><b> {</b></p><p> char xuehao[10]; /*學(xué)生學(xué)號(hào)*/</p><p> char name[10]; /*學(xué)生姓名*/</p><p> float cyuyan; /*c語(yǔ)言成績(jī)*/</p><p> float math; /*高
62、數(shù)成績(jī)*/</p><p> float english; /*英語(yǔ)成績(jī)*/</p><p> float average; /*平均成績(jī)*/</p><p><b> };</b></p><p> struct xueshengchengji chengji[100],*p=chengji; /*聲明記錄學(xué)生
63、成績(jī)情況的100個(gè)元素的結(jié)構(gòu)體數(shù)組*/</p><p> int n = -1; /*聲明統(tǒng)計(jì)學(xué)生人數(shù)的變量*/</p><p> void main() {</p><p><b> char ch;</b></p><p> read(); /*從數(shù)據(jù)文件中讀取學(xué)生成績(jī)數(shù)據(jù)并初始化學(xué)生成績(jī)結(jié)構(gòu)體數(shù)組*/<
64、;/p><p> while(TRUE) {</p><p> system("cls"); /*清屏命令*/</p><p> printf("\t\t請(qǐng)選擇(1-7):\n");</p><p> printf("\t\t================================
65、======================\n"); printf("\t\t\t 1.查詢學(xué)生成績(jī)記錄\n");</p><p> printf("\t\t\t 2.修改學(xué)生成績(jī)記錄\n");</p><p> printf("\t\t\t 3.添加學(xué)生成績(jī)記錄\n");</p><p>
66、 printf("\t\t\t 4.刪除學(xué)生成績(jī)記錄\n");</p><p> printf("\t\t\t 5.保存學(xué)生成績(jī)記錄\n");</p><p> printf("\t\t\t 6.成績(jī)排序\n");</p><p> printf("\t\t\t 7.退出\n")
67、;</p><p> printf("\t\t======================================================\n"); printf("\n\t\t");</p><p> ch=getch();</p><p> switch(ch) {</p><p&
68、gt;<b> case '1':</b></p><p><b> find();</b></p><p> break; /*查詢*/</p><p><b> case '2':</b></p><p><b> mod
69、ify();</b></p><p> break; /*修改*/</p><p><b> case '3':</b></p><p><b> add();</b></p><p> break; /*添加*/</p><p><
70、b> case '4':</b></p><p><b> del();</b></p><p> break; /*刪除*/</p><p><b> case '5':</b></p><p><b> write();<
71、;/b></p><p> break; /*保存*/</p><p><b> case '6':</b></p><p><b> rank();</b></p><p> break; /*排序*/</p><p><b> c
72、ase '7':</b></p><p> return; /*退出*/</p><p><b> default:</b></p><p> printf("\t\t \n");</p><p><b> getch();</b></p
73、><p><b> }</b></p><p><b> }</b></p><p><b> return;</b></p><p><b> }</b></p><p> /*從數(shù)據(jù)文件cj.dat中讀取學(xué)生成績(jī)數(shù)據(jù)到數(shù)據(jù)
74、組chengji中*/</p><p> void read()</p><p><b> {</b></p><p> FILE * file; /*聲明文件指針*/</p><p> if((file=fopen("cj.dat","rb"))==NULL)</p
75、><p> /*以二進(jìn)制方式打開學(xué)生成績(jī)數(shù)據(jù)文件,并判斷是否失敗*/ {</p><p> printf("\n\n\t 學(xué)生成績(jī)數(shù)據(jù)文件無(wú)法打開,或?yàn)榭眨?quot;);</p><p> printf("\n\n\t 按任意鍵進(jìn)入主菜單.......");</p><p><b> getch(
76、);</b></p><p><b> return;</b></p><p><b> }</b></p><p> else /*文件打開成功時(shí)*/</p><p><b> {</b></p><p> n++; /*計(jì)算結(jié)構(gòu)
77、體數(shù)組下標(biāo)*/</p><p> while(fread(&chengji[n],sizeof(chengji[n]),1,file) == 1)</p><p><b> n++;</b></p><p> fclose(file); /*關(guān)閉文件指針*/</p><p> printf("\
78、n\n\t學(xué)生成績(jī)數(shù)據(jù)讀取完畢\n",n);</p><p> n--; /*計(jì)算學(xué)生記錄總數(shù)*/</p><p><b> }</b></p><p><b> }</b></p><p> /*向?qū)W生成績(jī)數(shù)據(jù)文件中寫入記錄*/</p><p> voi
79、d write()</p><p><b> {</b></p><p> FILE *file; /*聲明文件指針*/</p><p> if(n == -1) /*學(xué)生人數(shù)為 0 時(shí)*/</p><p><b> {</b></p><p> printf(&q
80、uot; 沒(méi)有數(shù)據(jù)可存!按任意鍵返回主菜單 \n");</p><p><b> getch();</b></p><p><b> return;</b></p><p><b> }</b></p><p> if((file=fopen("cj
81、.dat","wb"))!=NULL)</p><p> /*以二進(jìn)制方式打開學(xué)生成績(jī)數(shù)據(jù)文件,并判斷是否失敗*/</p><p><b> {</b></p><p> fwrite(&chengji[0],sizeof(chengji[0]),n+1,file); /*所有記錄一次寫入文件*/&l
82、t;/p><p> fclose(file); /*關(guān)閉文件指針*/</p><p> printf("\n\n\t\t%d條學(xué)生記錄保存完畢!\n",n+1);</p><p><b> }</b></p><p> else /*文件打開不成功時(shí)*/</p><p>
83、 printf("\t\t無(wú)法打開學(xué)生成績(jī)數(shù)據(jù)文件!\n");</p><p> printf("\n\t\t按任意鍵返回主菜單...... ");</p><p><b> getch();</b></p><p><b> }</b></p><p>
84、; /*查詢學(xué)生成績(jī)(依據(jù)學(xué)號(hào))*/</p><p> void find()</p><p><b> {</b></p><p> char xuehao[10]; /*接收學(xué)生學(xué)號(hào)字符數(shù)組*/</p><p> int i; /*循環(huán)變量*/</p><p> if(n==-1)
85、 /*人數(shù)為0說(shuō)明成績(jī)記錄尚未添加*/</p><p><b> {</b></p><p> printf("\n\n\t\t當(dāng)前還沒(méi)有學(xué)生成績(jī),按任意鍵返回主菜單......");</p><p><b> getch();</b></p><p><b>
86、 return;</b></p><p><b> }</b></p><p> printf("\t請(qǐng)輸入學(xué)生學(xué)號(hào):"); /*提示信息*/</p><p> gets(xuehao); /*從鍵盤讀取字符串*/</p><p> for(i=0;i<=n;i++) /*在
87、學(xué)生總數(shù)范圍內(nèi)循環(huán)查找*/</p><p><b> {</b></p><p> if(strcmp(chengji[i].xuehao,xuehao)==0) /*比較并找到*/</p><p><b> {</b></p><p> printf("\n 該學(xué)生成績(jī)情況如下:
88、");</p><p> printf("\n===================\n\n");</p><p> printf(" 學(xué)號(hào) 姓名");</p><p> printf(" 英語(yǔ) C語(yǔ)言 高等數(shù)學(xué) 平均成績(jī)\n"); printf("%6s%
89、6s",chengji[i].xuehao,chengji[i].name);</p><p> printf("%9.2f%9.2f%9.2f%9.2f",chengji[i].cyuyan,chengji[i].math,chengji[i].english,chengji[i].average);</p><p> printf("\n 按
90、任意鍵返回主菜單......");</p><p><b> getch();</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p>&l
91、t;p> if(i==n+1)</p><p><b> {</b></p><p> printf("\n\t\t您所輸入的學(xué)生學(xué)號(hào)有誤或不存在!");</p><p> printf("按任意鍵返回主菜單......");</p><p><b> g
92、etch();</b></p><p><b> return;</b></p><p><b> }</b></p><p><b> }</b></p><p> void list()</p><p><b> {&
93、lt;/b></p><p><b> int i;</b></p><p> system("cls");</p><p> printf("\n\n\t\t\t 全體學(xué)生成績(jī)情況如下\n");</p><p> printf("\t\t\t=======
94、====================\n\n");</p><p> printf("學(xué)號(hào) 姓名 ");</p><p> printf("英語(yǔ) C語(yǔ)言 高等數(shù)學(xué) 平均成績(jī)");</p><p> for(i=0;i<=n;i++)</p><p><b
95、> {</b></p><p> printf("%6s%6s%9s",chengji[i].xuehao,chengji[i].name,chengji[i].average);</p><p> printf("%9.2f%9.2f%9.2f",chengji[i].english,chengji[i].math); }&
96、lt;/p><p><b> }</b></p><p> void modify ( )</p><p><b> {</b></p><p> char xuehao[10]; /*接收學(xué)生學(xué)號(hào)字符數(shù)組*/</p><p> int i; /*循環(huán)變量*/</
97、p><p> if (n==-1) /*人數(shù)為0說(shuō)明成績(jī)記錄尚未添加*/</p><p><b> {</b></p><p> printf("\n\n\t\t當(dāng)前還沒(méi)有學(xué)生成績(jī)記錄,按任意鍵返回主菜單......");</p><p><b> getch( );</b>
98、</p><p><b> return;</b></p><p><b> }</b></p><p> printf("\t請(qǐng)輸入學(xué)生學(xué)號(hào):"); /*提示信息*/</p><p> gets(xuehao); /*從鍵盤讀取字符串*/</p><
99、p> for (i=0;i<=n;i++) /*在學(xué)生總數(shù)范圍內(nèi)循環(huán)查找*/</p><p><b> {</b></p><p> if(strcmp(chengji[i].xuehao,xuehao)==0) /*比較并找到*/</p><p><b> {</b></p><p
100、> /*顯示該學(xué)生成績(jī)情況*/</p><p> printf("\n\t\t\t 該學(xué)生成績(jī)情況如下: ");</p><p> printf("\n\t\t\t===================\n\n");</p><p> printf(" 學(xué)號(hào) 姓名");</p>
101、<p> printf(" 英語(yǔ) C語(yǔ)言 高等數(shù)學(xué) 平均成績(jī)\n"); printf("%6s%6s",chengji[i].xuehao,chengji[i].name);</p><p> printf("%9.2f%9.2f%9.2f%9.2f",chengji[i].cyuyan,chengji[i].mat
102、h,chengji[i].english,chengji[i].average);</p><p> /*接受該學(xué)生新的成績(jī)情況*/</p><p> printf("\n\t\t 請(qǐng)輸入該學(xué)生新的英語(yǔ)成績(jī): ");</p><p> scanf ("%f",&chengji[i].cyuyan);</p&
103、gt;<p> printf("\n\t\t 請(qǐng)輸入該學(xué)生新的C語(yǔ)言成績(jī): ");</p><p> scanf ("%f",&chengji[i].math);</p><p> printf("\n\t\t 請(qǐng)輸入該學(xué)生新的高等數(shù)學(xué)成績(jī): ");</p><p> scan
104、f ("%f",&chengji[i].english);</p><p><b> /*計(jì)算總成績(jī)*/</b></p><p> chengji[i].average=(chengji[i].cyuyan+chengji[i].math+chengji[i].english)/3; /*同屏顯示計(jì)算結(jié)果*/</p>&l
105、t;p> printf("\n\t\t\t 該學(xué)生成績(jī)是: %f",chengji[i].average);</p><p> printf("\n\n\t\t 該學(xué)生成績(jī)數(shù)據(jù)修改成功! 按任意鍵返回主菜單......");</p><p><b> getch();</b></p><p>
106、<b> return ;</b></p><p><b> }</b></p><p><b> }</b></p><p> printf("\n\t\t 您所輸入的學(xué)生學(xué)號(hào)有誤或不存在! ");</p><p> printf("按
107、任意鍵返回主菜單......");</p><p><b> getch();</b></p><p><b> return;</b></p><p><b> }</b></p><p> /*向?qū)W生管理系統(tǒng)中則增加記錄*/</p><
108、p> void add()</p><p><b> {</b></p><p> printf ("\t請(qǐng)輸入學(xué)生學(xué)號(hào):");</p><p> fflush(stdin); /*清除鍵盤緩沖區(qū)*/</p><p> gets(chengji[++n].xuehao);</p&
109、gt;<p> printf("\t\t\t\t請(qǐng)輸入學(xué)生姓名:");</p><p> gets(chengji[n].name);</p><p> printf("\t\t\t\t請(qǐng)輸入該學(xué)生的英語(yǔ)成績(jī):");</p><p> scanf("%f",&chengji[n
110、].cyuyan);</p><p> printf("\t\t\t\t請(qǐng)輸入該學(xué)生的C語(yǔ)言成績(jī):");</p><p> scanf("%f",&chengji[n].math);</p><p> printf("\t\t\t\t請(qǐng)輸入該學(xué)生的高等數(shù)學(xué)成績(jī):");</p>&
111、lt;p> scanf("%f",&chengji[n].english);</p><p><b> /*計(jì)算總成績(jī)*/</b></p><p> chengji[n].average=(chengji[n].cyuyan+chengji[n].math+chengji[n].english)/3; /*輸出內(nèi)容*/</
112、p><p> printf("\n\t\t\t\t該學(xué)生成績(jī)?yōu)?%f",chengji[n].average);</p><p> printf("\n\n\t\t\t\t按任意鍵返回......");</p><p><b> getch();</b></p><p><
113、b> }</b></p><p> /*從學(xué)生成績(jī)數(shù)據(jù)文件中刪除記錄*/</p><p> void del()</p><p><b> {</b></p><p> char xuehao[10]; /*接收學(xué)生學(xué)號(hào)字符數(shù)組*/</p><p> int i,j;
114、 /*循環(huán)變量*/</p><p> char d; /*接收確認(rèn)刪除字符:y/n*/</p><p> printf("\t請(qǐng)輸入待刪除學(xué)生學(xué)號(hào):");</p><p> gets(xuehao);</p><p> for(i=0;i<=n;i++) /*在學(xué)生總數(shù)范圍內(nèi)循環(huán)查找*/ {</p>
115、;<p> if(strcmp(chengji[i].xuehao,xuehao)==0) /*比較并找到*/</p><p><b> {</b></p><p> printf("\n\t\t你確認(rèn)要?jiǎng)h除%s號(hào)學(xué)生成績(jī)信息么(y/n)?",chengji[i].xuehao );</p><p>
116、d=getche();</p><p> if(d=='y'||d=='Y') /*確認(rèn)刪除*/</p><p><b> {</b></p><p> if(i==n) /*如果是最后一條記錄*/</p><p><b> n--;</b></p>
117、;<p> else /*不是最后一條記錄*/</p><p><b> {</b></p><p> for(j=i;j<=n;j++) /*從該記錄開始后續(xù)記錄更新前一條記錄*/</p><p><b> {</b></p><p> strcpy(chengji[
118、j].xuehao,chengji[j+1].xuehao); strcpy(chengji[j].name,chengji[j+1].name);</p><p> chengji[j].english=chengji[j+1].english;</p><p> chengji[j].math=chengji[j+1].math;</p><p> che
119、ngji[j].cyuyan=chengji[j+1].cyuyan;</p><p><b> }</b></p><p><b> n--;</b></p><p><b> }</b></p><p> printf("\n\n\t\t該學(xué)生記錄成功刪除
120、,按任意鍵返回主菜單......"); getch();</p><p><b> break;</b></p><p><b> }</b></p><p> else /*未確認(rèn)刪除記錄*/</p><p><b> {</b></p>&l
121、t;p> printf("\n\n\t\t你選擇了不刪除該學(xué)生記錄,按任意鍵返回主菜單......");</p><p><b> getch();</b></p><p><b> return;</b></p><p><b> }</b></p>
122、<p><b> }</b></p><p><b> }</b></p><p> if(i == n+1) /*未找到指定學(xué)號(hào)或未刪除記錄*/ {</p><p> printf("\n\t\t本班級(jí)無(wú)此學(xué)號(hào),按任意鍵返回主菜單......");</p><p&
123、gt;<b> getch();</b></p><p><b> }</b></p><p><b> }</b></p><p> /*排列學(xué)生的成績(jī)*/</p><p> void rank()</p><p><b> {&
124、lt;/b></p><p> int i,j; /*循環(huán)變量*/</p><p> printf("\t按平均成績(jī)排序如下\n");</p><p> for (i=0;i<n;i++)</p><p> for(j=i+1;j<n;j++)</p><p> if (
125、chengji[i].average>chengji [j].average)</p><p> {*p=chengji[j];chengji[j]=chengji[i];chengji[i]=*p;}</p><p> printf("%-6s%-6s","學(xué)號(hào)","姓名");</p><p>
126、 printf("%-12s%-6s%12s%-9s\n"," 英語(yǔ)"," C語(yǔ)言","高等數(shù)學(xué)","平均成績(jī)"); </p><p> for(i=0;i<=n;i++)</p><p><b> {</b></p><p>
127、 printf("%-6s%-6s",chengji[i].xuehao,chengji[i].name);</p><p> printf("%9.2f%9.2f%9.2f%9.2f\n",chengji[i].cyuyan,chengji[i].math,chengji[i].english,chengji[i].average);</p><p
128、><b> }</b></p><p> printf("\n\n\t\t\t\t按任意鍵返回......");</p><p><b> getch();</b></p><p><b> }</b></p><p><b> }
129、</b></p><p><b> 七、程序運(yùn)行結(jié)果</b></p><p><b> 1、主菜單</b></p><p> 2、修改學(xué)生成績(jī)記錄</p><p> 3、添加學(xué)生成績(jī)記錄</p><p> 4、刪除學(xué)生成績(jī)記錄</p>&l
130、t;p><b> 5、保存成績(jī)</b></p><p><b> 6、成績(jī)排序</b></p><p><b> 查詢學(xué)生成績(jī)記錄</b></p><p> 八、編程中遇到的困難及解決方法</p><p> 這一次的C語(yǔ)言課程設(shè)計(jì)報(bào)告是我第一次將C語(yǔ)言運(yùn)用于實(shí)際
131、,在這次的實(shí)習(xí)中,我遇到了很多問(wèn)題,但最終我都將這些問(wèn)題解決了,完成了這一次的C語(yǔ)言課程設(shè)計(jì)的實(shí)習(xí)。</p><p> 問(wèn)題1:題目所包含的程序功能太多,自己不能有一個(gè)整體的認(rèn)識(shí),不知道該從那里開始時(shí)這一次的程序設(shè)計(jì)。</p><p> 解決方法:老師給了我們一個(gè)程序的框架,并且告訴我們先確定主函數(shù),再編寫詳細(xì)的程序功能。</p><p> 問(wèn)題2:在這一次的
132、程序設(shè)計(jì)中,需要運(yùn)用到很多自己之前都不會(huì)的函數(shù)。</p><p> 解決方法:大致了解C語(yǔ)言中主要函數(shù)的用法,讓自己有印象,在需要用到相應(yīng)函數(shù)的時(shí)候再弄清楚使用方法。</p><p> 問(wèn)題3:在編寫程序的時(shí)候總是會(huì)出現(xiàn)很多錯(cuò)誤,每次在調(diào)試的時(shí)候總會(huì)顯示有錯(cuò),而且很多問(wèn)題自己找不出來(lái)也不會(huì)改正。</p><p> 解決方法:在和同學(xué)討論之后還是無(wú)法解決的話就會(huì)
133、向老師尋求幫助,問(wèn)老師的意見(jiàn),聽(tīng)了老師的講解之后,記住錯(cuò)誤的原因,避免再次犯錯(cuò)。</p><p> 九、總結(jié)心得及良好建議</p><p> 通過(guò)本次設(shè)計(jì)課學(xué)到了很多,相比之前的C語(yǔ)言實(shí)習(xí)課,難度有很大的提升,以前僅僅涉及變量,函數(shù)和條件語(yǔ)句,和循環(huán)語(yǔ)句等基本概念,而現(xiàn)在設(shè)計(jì)程序時(shí)要完全掌握程序的實(shí)際應(yīng)用。前兩次上課的時(shí)候,對(duì)于本次的題目“學(xué)生成績(jī)管理系統(tǒng)”感覺(jué)無(wú)從下手,在仔細(xì)地看書和
134、查找資料后,開始進(jìn)行設(shè)計(jì)。設(shè)計(jì)的過(guò)程中并沒(méi)有想象地順利,花了大量的時(shí)間和經(jīng)歷寫完的程序,一運(yùn)行卻發(fā)現(xiàn)很多錯(cuò)誤,又重新修改。按著分為添加,修改,刪除等不同板塊,一步步地堅(jiān)持了下來(lái)。最后摒棄了花哨的歡迎界面,采用簡(jiǎn)潔的界面,并經(jīng)考量后添加了sleep函數(shù),使得程序執(zhí)行掛起一段時(shí)間,做了最后的完善。</p><p> 建議學(xué)校以后能將C語(yǔ)言設(shè)計(jì)課的時(shí)間整體加長(zhǎng)到10次課,本次的程序設(shè)計(jì)課在課下也花了不少時(shí)間才最終完成
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語(yǔ)言課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)----學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)--c語(yǔ)言課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)———學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)_學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生成績(jī)管理
- c語(yǔ)言課程設(shè)計(jì)--- 學(xué)生成績(jī)管理
評(píng)論
0/150
提交評(píng)論