版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> C語言課程設(shè)計(jì)報(bào)告</b></p><p> 題 目:學(xué)生成績管理系統(tǒng)</p><p> 設(shè) 計(jì) 者:xxxxxxxx </p><p> 專業(yè)班級:xxxxxxxx</p><p> 學(xué) 號:xxxxxxxx</p><p> 指導(dǎo)教師:x
2、xxxxxxx</p><p><b> xxxxxxxx </b></p><p><b> xxxxxxxx</b></p><p><b> 目錄</b></p><p><b> 一、題目與要求1</b></p><p
3、><b> 1. 問題提出1</b></p><p> 2. 本系統(tǒng)涉及的知識點(diǎn)1</p><p><b> 3.功能要求1</b></p><p><b> 二、功能設(shè)計(jì)2</b></p><p> 1.程序主體結(jié)構(gòu)2</p><
4、p> 2.模塊流程圖及源代碼設(shè)計(jì)2</p><p> 2.1 分配內(nèi)存,主菜單2</p><p> 2.2 for循環(huán)語句輸入信息5</p><p> 2.3 for循環(huán)語句輸出信息7</p><p> 2.4按平均成績輸出7</p><p> 2.5 按學(xué)號查詢學(xué)生成績8</p&g
5、t;<p> 2.6 按學(xué)號查詢學(xué)生不及格科目10</p><p> 2.7 修改學(xué)生信息11</p><p> 2.8 注銷學(xué)生信息13</p><p> 2.9 保存與退出15</p><p> 3.C程序設(shè)計(jì)總結(jié)16</p><p><b> 三、參考文獻(xiàn)17<
6、;/b></p><p> 四、附錄:程序清單17</p><p><b> 一、題目與要求</b></p><p><b> 1. 問題提出</b></p><p> 本人計(jì)劃編寫一個(gè)學(xué)生成績管理系統(tǒng),主要用來管理學(xué)生基本信息及成績信息。要實(shí)現(xiàn)信息錄入,讀取,排序,查找,修改及刪除
7、信息,以及保存退出等功能。</p><p> 題目:學(xué)生成績管理系統(tǒng)</p><p><b> 主要功能:</b></p><p> ?。?)能完成對學(xué)生成績的錄入、修改</p><p> ?。?)能統(tǒng)計(jì)學(xué)生的成績,求學(xué)生的總分及平均分,并能根據(jù)學(xué)生的平均成績進(jìn)行排序</p><p> (3
8、)能查詢學(xué)生成績,不及格科目及學(xué)生名單</p><p> ?。?)能輸出學(xué)生的成績單</p><p> 學(xué)生屬性:學(xué)號,姓名,入學(xué)年月,有成績的學(xué)期數(shù),四門課的成績等9個(gè)成員,在編程中要求當(dāng)執(zhí)行狀態(tài)輸入i為輸入學(xué)生記錄,輸入D為刪除,輸入s為查詢(以學(xué)號為查詢條件),輸入p為將整個(gè)學(xué)生記錄輸出,使用結(jié)構(gòu)數(shù)組或結(jié)構(gòu)指針編程</p><p> 2. 本系統(tǒng)涉及的知識
9、點(diǎn)</p><p> 結(jié)構(gòu)、數(shù)組、循環(huán)、函數(shù)、分支、指針。</p><p><b> 3.功能要求</b></p><p> 本系統(tǒng)的主要功能分別通過主菜單中的以下各項(xiàng)來實(shí)現(xiàn):</p><p> ?通過系統(tǒng)實(shí)現(xiàn)用戶管理、用malloc函數(shù)向系統(tǒng)申請分配指定size個(gè)字節(jié)的內(nèi)存空間,數(shù)據(jù)存入、讀取數(shù)據(jù);</p
10、><p> ?錄入學(xué)生信息,每個(gè)學(xué)生的信息包括:姓名、學(xué)號、性別、入學(xué)年月、學(xué)期數(shù)、成績;</p><p> ?輸出學(xué)生的成績單;</p><p> ?求出每個(gè)學(xué)生的平均分,按平均成績排序;</p><p> ?按學(xué)號查詢學(xué)生成績;</p><p> ?按學(xué)號查詢學(xué)生不及格科目;</p><p
11、><b> ?修改學(xué)生信息;</b></p><p><b> ?刪除學(xué)生信息;</b></p><p><b> ?保存及退出;</b></p><p><b> 二、功能設(shè)計(jì)</b></p><p><b> 1.程序主體結(jié)構(gòu)
12、</b></p><p><b> 程序主體結(jié)構(gòu)設(shè)計(jì):</b></p><p> 2.模塊流程圖及源代碼設(shè)計(jì)</p><p> 2.1 分配內(nèi)存,主菜單</p><p> 利用malloc函數(shù)向系統(tǒng)申請分配指定size個(gè)字節(jié)的內(nèi)存空間,輸入需存的人數(shù),并用system("cls")
13、;清除屏幕。</p><p><b> 圖1</b></p><p> 利用switch語句設(shè)計(jì)主菜單。</p><p><b> 菜單</b></p><p> 1)函數(shù)原形:void menu(struct student *p,int len),int main(void)</p
14、><p> 2)功 能:利用while循環(huán)語句和scanf、getchar函數(shù)完成輸入,利用malloc函數(shù)向系統(tǒng)申請分配指定size個(gè)字節(jié)的內(nèi)存空間,利用switch語句。</p><p><b> 3)變量及類型:</b></p><p> int len;:整型變量,接收輸入的人數(shù)。</p><p> char
15、 ch:字符變量。</p><p> struct student *p:結(jié)構(gòu)體指針變量。</p><p> 4)說明:輸入需存入的人數(shù),系統(tǒng)分配內(nèi)存空間,按回車鍵,顯示菜單,出入選項(xiàng)前的字母i、p等可進(jìn)入對應(yīng)選項(xiàng)。</p><p><b> 代碼如下:</b></p><p> void menu(struct
16、 student *p,int len)</p><p> {printf("\t\t||=========================================||\n");</p><p> printf("\t\t||-----------------------------------------||\n");</p&g
17、t;<p> printf("\t\t||-----------歡迎使用學(xué)生管理系統(tǒng)----------||\n");</p><p> printf("\t\t||-----------------------------------------||\n");</p><p> printf("\t\t||======
18、===================================||\n");</p><p> getchar();</p><p> getchar();</p><p> system("cls");</p><p><b> return;</b></p>
19、<p><b> }</b></p><p> int main(void)</p><p><b> {</b></p><p> int len=0;</p><p><b> char ch; </b></p><p> s
20、truct student *p;</p><p> printf("請輸入需要存入的學(xué)生人數(shù):");</p><p> scanf("%d",&len);</p><p> p=(struct student *)malloc(sizeof(struct student)*len);</p>&
21、lt;p> menu(p,len);</p><p> printf("按回車鍵繼續(xù)\n");</p><p><b> while(1)</b></p><p><b> {</b></p><p> system("cls");<
22、/p><p> printf("\n\n\n\n");</p><p> printf("\t\t|************************************************|\n");</p><p> printf("\t\t|------------------ 學(xué)生管理系統(tǒng) -----
23、-----------|\n");</p><p> printf("\t\t|************************************************|\n");</p><p> printf("\t\t|-------------- (i)錄入學(xué)生信息 ------------|\n");<
24、/p><p> printf("\t\t|-------------- (p)輸出學(xué)生的成績單 ----------|\n");</p><p> printf("\t\t|-------------- (a)按平均成績排序 ----------|\n");</p><p> printf("\t\
25、t|-------------- (s)按學(xué)號查詢學(xué)生成績 ----------|\n");</p><p> printf("\t\t|-------------- (f)按學(xué)號查詢學(xué)生不及格科目------|\n");</p><p> printf("\t\t|-------------- (m)修改學(xué)生信息 -------
26、---|\n");</p><p> printf("\t\t|-------------- (D)注銷學(xué)生信息 ----------|\n");</p><p> printf("\t\t|-------------- (w)保存 ----------|\n");</p>&l
27、t;p> printf("\t\t|-------------- (e)退出 ----------|\n");</p><p> printf("\t\t|************************************************|\n");</p><p> printf("
28、\t\t\n");</p><p> ch=getch(); </p><p> switch(ch)</p><p><b> {</b></p><p> case 'i':input(p,len);break;</p><p> c
29、ase 'p':output(p,&len);break;</p><p> case 'a':average(p,len);break;</p><p> case 's':find(p,len);break;</p><p> case 'f':failure(p,len
30、);break;</p><p> case 'm':modify(p,len);break;</p><p> case 'D':delet(p,len);break;</p><p> case 'w':write(p,len);break;</p><p> case
31、'e':exit_1(p,len);break;</p><p> default :printf("\n\t輸入錯(cuò)誤!按回車鍵返回主菜單!"); break;</p><p><b> getch();</b></p><p><b> }</b></p>&
32、lt;p><b> }</b></p><p><b> free(p);</b></p><p> return 0 ;</p><p><b> }</b></p><p> 2.2 for循環(huán)語句輸入信息</p><p><b
33、> 圖3</b></p><p> for循環(huán)語句輸入信息,如圖3。</p><p><b> 輸入模塊</b></p><p> 1)函數(shù)原形:void input(struct student *p,int len)</p><p> 2)功 能:利用for循環(huán)語句和scanf函數(shù)完成輸入
34、,輸入學(xué)生的信息(學(xué)號、姓名、性別、入學(xué)年月,學(xué)期數(shù),4門成績)。</p><p><b> 3)變量及類型:</b></p><p> int i :循環(huán)控制變量。</p><p><b> 代碼如下:</b></p><p> void input(struct student *p,i
35、nt len)</p><p><b> {</b></p><p><b> int i;</b></p><p> for(i=0;i<len;i++)</p><p><b> {</b></p><p> printf(&q
36、uot;請輸入第%d個(gè)學(xué)生信息:\n",i+1);</p><p> printf("姓名:");</p><p> scanf("%s",p[i].name);//name是數(shù)組名 本身就是地址</p><p> printf("學(xué)號:");</p><p> s
37、canf("%d",&p[i].number);</p><p> printf("性別:");</p><p> scanf("%s",p[i].sex);</p><p> printf("入學(xué)年月:");</p><p> scanf(&qu
38、ot;%s",p[i].time);//入學(xué)年月</p><p> printf("學(xué)期數(shù):");</p><p> scanf("%d",&p[i].term);//有成績的學(xué)期數(shù)</p><p> printf("成績1:");</p><p> s
39、canf("%f",&p[i].score[0]);</p><p> printf("成績2:");</p><p> scanf("%f",&p[i].score[1]);</p><p> printf("成績3:");</p><p>
40、; scanf("%f",&p[i].score[2]);</p><p> printf("成績4:");</p><p> scanf("%f",&p[i].score[3]);</p><p> p[i].average=(p[i].score[0]+p[i].score[1]
41、+p[i].score[2]+p[i].score[3])/4;</p><p> p[i].sum=p[i].score[0]+p[i].score[1]+p[i].score[2]+p[i].score[3];</p><p><b> }</b></p><p> printf("\n");</p>
42、<p><b> return;</b></p><p><b> }</b></p><p> 2.3 for循環(huán)語句輸出信息</p><p><b> 圖4</b></p><p> for循環(huán)語句輸出信息,如圖4</p><p&
43、gt;<b> 輸出模塊</b></p><p> 1)函數(shù)原形:void output(struct student *p,int *len)</p><p> 2)功 能:利用for循環(huán)語句和printf函數(shù)完成輸出,輸出學(xué)生的信息</p><p><b> 3)變量及類型:</b></p>&l
44、t;p> int i :循環(huán)控制變量。</p><p><b> 代碼如下:</b></p><p> void output(struct student *p,int *len)</p><p><b> {</b></p><p><b> int i;</b
45、></p><p> for(i=0;i<*len;i++)</p><p> printf("姓名:%s 學(xué)號:%d 性別:%s 入學(xué)年月:%s 學(xué)期數(shù):%d 成績1:%.2f 成績2:%.2f 成績3:%.2f 成績4:%.2f 總分:%.2f 平均成績:%.2f\n",p[i].name,p[i].number,p[i].sex
46、,p[i].time,p[i].term,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3],p[i].sum,p[i].average);</p><p> printf("\n");</p><p> getchar();</p><p> getchar();</p&g
47、t;<p><b> return;</b></p><p><b> }</b></p><p> 2.4按平均成績輸出</p><p><b> 圖5</b></p><p> 按平均成績輸出,如圖5。</p><p><
48、;b> 按平均成績輸出模塊</b></p><p> 1)函數(shù)原形:void average(struct student *p,int len)</p><p> 2)功 能:利用for循環(huán)語句和printf函數(shù)完成輸出,輸出學(xué)生的信息</p><p><b> 3)變量及類型:</b></p><
49、;p> int i,j :循環(huán)控制變量。</p><p><b> 代碼如下:</b></p><p> void average(struct student *p,int len)</p><p> {int i,j;</p><p> struct student t;</p>&l
50、t;p> for(i=0;i<len-1;i++)</p><p><b> {</b></p><p> for(j=0;j<len;j++)</p><p> if( p[j+1].average>p[j].average)</p><p><b> {</b&
51、gt;</p><p><b> t=p[j+1];</b></p><p> p[j+1]=p[j];</p><p><b> p[j]=t;</b></p><p><b> }</b></p><p><b> }</
52、b></p><p> output(p,&len);</p><p><b> return;</b></p><p><b> }</b></p><p> 2.5 按學(xué)號查詢學(xué)生成績</p><p><b> 圖6</b>&
53、lt;/p><p> 按學(xué)號查詢學(xué)生成績,如圖6。</p><p> 按學(xué)號查詢學(xué)生成績模塊</p><p> 1)函數(shù)原形:void find(struct student *p,int len)</p><p> 2)功 能:利用for循環(huán)語句和printf函數(shù)完成查找和輸出,輸出學(xué)生的信息</p><p>&
54、lt;b> 3)變量及類型:</b></p><p> int i :循環(huán)控制變量。</p><p> int number :整型變量,記錄學(xué)號。</p><p><b> 代碼如下:</b></p><p> void find(struct student *p,int len)<
55、/p><p><b> {</b></p><p><b> =0; </b></p><p><b> int i;</b></p><p> printf("請您輸入需要查找的學(xué)號:");</p><p> scanf(&
56、quot;%d",&number);</p><p> for(i=0;i<len;i++)</p><p><b> {</b></p><p> if(number==p[i].number)</p><p><b> {</b></p><p
57、> printf("姓名:%s 學(xué)號:%d 性別:%s 入學(xué)年月:%s 學(xué)期數(shù):%d 成績1:%.2f 成績2:%.2f 成績3:%.2f 成績4:%.2f 總分:%.2f 平均成績:%.2f\n",p[i].name,p[i].number,p[i].sex,p[i].time,p[i].term,p[i].score[0],p[i].score[1],p[i].score[2],p[i
58、].score[3],p[i].sum,p[i].average);</p><p><b> }</b></p><p><b> }</b></p><p><b> getch();</b></p><p><b> return;</b>&
59、lt;/p><p><b> }</b></p><p> 2.6 按學(xué)號查詢學(xué)生不及格科目</p><p><b> 圖7</b></p><p> 按學(xué)號查詢學(xué)生不及格科目,如圖7。</p><p> 按學(xué)號查詢學(xué)生不及格科目模塊</p><p&
60、gt; 1)函數(shù)原形:void find(struct student *p,int len)</p><p> 2)功 能:利用for循環(huán)語句和printf函數(shù)完成查找和輸出,輸出學(xué)生的信息</p><p><b> 3)變量及類型:</b></p><p> int i :循環(huán)控制變量。</p><p>
61、int number :整型變量,記錄學(xué)號。</p><p><b> 代碼如下:</b></p><p> void failure(struct student *p,int len)</p><p><b> {</b></p><p> int number=0; </p&g
62、t;<p><b> int i;</b></p><p> printf("請您輸入需要查找的學(xué)號:");</p><p> scanf("%d",&number);</p><p> for(i=0;i<len;i++)</p><p>&l
63、t;b> {</b></p><p> if(number==p[i].number)</p><p><b> {</b></p><p> printf("姓名:%s 學(xué)號:%d\n",p[i].name,p[i].number);</p><p> if(p[i].
64、score[0]<60||p[i].score[1]<60||p[i].score[2]<60||p[i].score[3]<60)</p><p> printf("不及格科目:\n");</p><p> else printf("無不及格科目\n");</p><p> if(p[i].s
65、core[0]<60)</p><p> printf("成績1:%.2f\n",p[i].score[0]);</p><p> if(p[i].score[1]<60)</p><p> printf("成績2:%.2f\n",p[i].score[1]);</p><p> i
66、f(p[i].score[2]<60)</p><p> printf("成績3:%.2f\n",p[i].score[2]);</p><p> if(p[i].score[3]<60)</p><p> printf("成績4:%.2f\n",p[i].score[3]);</p><
67、p><b> }</b></p><p><b> }</b></p><p><b> getch();</b></p><p><b> return;</b></p><p><b> }</b></p&g
68、t;<p> 2.7 修改學(xué)生信息</p><p><b> 圖8</b></p><p> 修改學(xué)生信息,如圖8。</p><p><b> 修改學(xué)生信息模塊</b></p><p> 1)函數(shù)原形:void modify(struct student *p,int len
69、)</p><p> 2)功 能:利用for循環(huán)語句和printf函數(shù)完成查找和輸出,if語句內(nèi)進(jìn)行修改。</p><p><b> 3)變量及類型:</b></p><p> int i :循環(huán)控制變量。</p><p> int number :整型變量,記錄學(xué)號。</p><p>
70、 char ch:字符變量。</p><p><b> 代碼如下:</b></p><p> void modify(struct student *p,int len)</p><p><b> {</b></p><p> int number=0;</p><p&g
71、t;<b> char ch;</b></p><p><b> int i;</b></p><p> printf("請您輸入要修改的學(xué)生的學(xué)號:");</p><p> scanf("%d",&number);</p><p> for
72、(i=0;i<len;i++)</p><p><b> {</b></p><p> if(number==p[i].number)</p><p><b> {</b></p><p> printf("姓名:%s 學(xué)號:%d 性別:%s 入學(xué)年月:%s 學(xué)期數(shù):
73、%d 成績1:%.2f 成績2:%.2f 成績3:%.2f 成績4:%.2f 總分:%.2f 平均成績:%.2f\n",p[i].name,p[i].number,p[i].sex,p[i].time,p[i].term,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3],p[i].sum,p[i].average);</p><p&g
74、t; printf("您確定要修改該學(xué)生信息(y/n):\n");</p><p> ch=getch();</p><p> if(ch=='y')</p><p><b> {</b></p><p> printf("姓名:");</p>
75、<p> scanf("%s",p[i].name);</p><p> printf("學(xué)號:");</p><p> scanf("%d",&p[i].number);</p><p> printf("性別:");</p><p&g
76、t; scanf("%s",p[i].sex);</p><p> printf("入學(xué)年月:");</p><p> scanf("%s",p[i].time);//入學(xué)年月</p><p> printf("學(xué)期數(shù):");</p><p> sca
77、nf("%d",&p[i].term);//有成績的學(xué)期數(shù)</p><p> printf("成績1:");</p><p> scanf("%f",&p[i].score[0]);</p><p> printf("成績2:");</p><
78、p> scanf("%f",&p[i].score[1]);</p><p> printf("成績3:");</p><p> scanf("%f",&p[i].score[2]);</p><p> printf("成績4:");</p>
79、<p> scanf("%f",&p[i].score[3]);</p><p> p[i].average=(p[i].score[0]+p[i].score[1]+p[i].score[2]+p[i].score[3])/4;</p><p> p[i].sum=p[i].score[0]+p[i].score[1]+p[i].sco
80、re[2]+p[i].score[3];</p><p> printf("姓名:%s 學(xué)號:%d 性別:%s 入學(xué)年月:%s 學(xué)期數(shù):%d 成績1:%.2f 成績2:%.2f 成績3:%.2f 成績4:%.2f 總分:%.2f 平均成績:%.2f\n",p[i].name,p[i].number,p[i].sex,p[i].time,p[i].term,p[i].sco
81、re[0],p[i].score[1],p[i].score[2],p[i].score[3],p[i].sum,p[i].average);</p><p> printf("修改成功!");</p><p><b> getch();</b></p><p><b> }</b></p
82、><p><b> }</b></p><p><b> }</b></p><p><b> return;</b></p><p><b> }</b></p><p> 2.8 注銷學(xué)生信息</p><
83、;p><b> 圖9</b></p><p> 注銷學(xué)生信息,如圖9。</p><p><b> 注銷學(xué)生信息模塊</b></p><p> 1)函數(shù)原形:void delet(struct student *p,int len)</p><p> 2)功 能:利用for循環(huán)語句和p
84、rintf函數(shù)完成查找和輸出,通過for語句進(jìn)行數(shù)據(jù)覆蓋實(shí)現(xiàn)刪除學(xué)生數(shù)據(jù)。</p><p><b> 3)變量及類型:</b></p><p> int i :循環(huán)控制變量。</p><p> int j :整型變量,記錄要?jiǎng)h除的學(xué)生。</p><p> int number :整型變量,記錄學(xué)號。</p&
85、gt;<p> char ch:字符變量。</p><p><b> 代碼如下:</b></p><p> void delet(struct student *p,int len)</p><p><b> {</b></p><p> int number=0;</
86、p><p><b> char ch;</b></p><p><b> int i,j;</b></p><p> printf("輸入要?jiǎng)h除的學(xué)生的學(xué)號:\n");</p><p> scanf("%d",&number);</p>
87、<p> for(i=0;i<len;i++)</p><p><b> {</b></p><p> if(number==p[i].number)</p><p><b> {</b></p><p> printf("姓名:%s 學(xué)號:%d 性別:%
88、s 入學(xué)年月:%s 學(xué)期數(shù):%d 成績1:%.2f 成績2:%.2f 成績3:%.2f 成績4:%.2f 總分:%.2f 平均成績:%.2f\n",p[i].name,p[i].number,p[i].sex,p[i].time,p[i].term,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3],p[i].sum,p[i].average);<
89、;/p><p><b> j=i;</b></p><p><b> }</b></p><p><b> }</b></p><p> printf("您確定要注銷該學(xué)生嗎?(y/n):\n");</p><p> ch=ge
90、tch();</p><p> if((ch=='Y')||(ch=='y'))</p><p><b> {</b></p><p> for(j;j<len;j++) //通過for語句進(jìn)行數(shù)據(jù)覆蓋實(shí)現(xiàn)刪除學(xué)生數(shù)據(jù)</p><p><b> {
91、</b></p><p> p[j]=p[j+1];</p><p><b> }</b></p><p><b> }</b></p><p><b> return;</b></p><p><b> }</b&
92、gt;</p><p><b> 2.9 保存與退出</b></p><p><b> 圖10</b></p><p><b> 圖11</b></p><p> 保存與退出,如圖10,11。</p><p><b> 保存模塊<
93、;/b></p><p> 1)函數(shù)原形:void write(struct student *p,int len)</p><p> 2)功 能:利用for循環(huán)語句將數(shù)據(jù)依次寫入文件。</p><p><b> 3)變量及類型:</b></p><p> int i :循環(huán)控制變量。</p>
94、<p><b> 代碼如下:</b></p><p> void write(struct student *p,int len)</p><p><b> {</b></p><p> int i;//控制循環(huán)</p><p> FILE *fp=NULL;//定義文件指針
95、</p><p> fp=fopen("D:\\student.txt","w");//打開文件并使文件指針指向它,以寫的方式</p><p> if(fp==NULL)//如果文件沒有打開,提示錯(cuò)誤并退出</p><p><b> {</b></p><p> pri
96、ntf("\n\t文件沒有打開!程序結(jié)束!");</p><p> getchar();//等待用戶觀察</p><p> exit(0);//結(jié)束整個(gè)程序</p><p><b> }</b></p><p><b> else</b></p><
97、;p><b> {</b></p><p> for(i=0;i<len;i++)//將數(shù)據(jù)依次寫入文件</p><p><b> {</b></p><p> fprintf(fp,"姓名:%s 學(xué)號:%d 性別:%s 入學(xué)年月:%s 學(xué)期數(shù):%d 成績1:%.2f 成績2:
98、%.2f 成績3:%.2f 成績4:%.2f 總分:%.2f 平均成績:%.2f\n",p[i].name,p[i].number,p[i].sex,p[i].time,p[i].term,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3],p[i].sum,p[i].average);</p><p><b> }<
99、;/b></p><p><b> }</b></p><p> printf("已將學(xué)生信息保存在了D盤根目錄下的student.txt文件中。\n");</p><p><b> getch();</b></p><p> fclose(fp);</p&
100、gt;<p><b> return;</b></p><p><b> }</b></p><p><b> 退出模塊</b></p><p> 1)函數(shù)原形:void exit_1(struct student *p,int len)</p><p>
101、 2)功 能:利用do while循環(huán)語句和printf函數(shù),完成退出。</p><p><b> 3)變量及類型:</b></p><p> char ch:字符變量。</p><p><b> 代碼如下:</b></p><p> void exit_1(struct student
102、*p,int len)</p><p><b> {</b></p><p> char ch='\0';</p><p><b> do</b></p><p><b> {</b></p><p> printf("
103、;您確定要退出?。▂/n):");</p><p> scanf("%c",&ch);</p><p> }while((ch!='Y')&&(ch!='y')&&(ch!='N')&&(ch!='n'));</p><
104、;p> if((ch=='Y')||(ch=='y'))</p><p><b> {</b></p><p><b> exit(0);</b></p><p><b> }</b></p><p><b> retu
105、rn;</b></p><p><b> }</b></p><p><b> 3.C程序設(shè)計(jì)總結(jié)</b></p><p> 程序調(diào)試前幾次有出現(xiàn)問題,其中一個(gè)是退出模塊,一開始是定義的:</p><p> void exit (struct student *p,int len
106、)</p><p> 結(jié)果無法運(yùn)行,查詢是因?yàn)楹拖到y(tǒng)函數(shù)重名,即exit(0);后修改為:</p><p> void exit_1(struct student *p,int len)</p><p> 然后調(diào)試結(jié)果無誤。而其他的是由于馬虎出的問題。因知識點(diǎn)欠缺,編寫的程序的注銷學(xué)生信息一部分問題無法解決,即一開始利用malloc函數(shù)向系統(tǒng)申請分配指定的內(nèi)存
107、空間,輸入三位學(xué)生成績,結(jié)果注銷第二位學(xué)生成績(利用for語句進(jìn)行數(shù)據(jù)覆蓋實(shí)現(xiàn)刪除學(xué)生數(shù)據(jù))后,再次輸出,前兩位正常,最后多出了一個(gè)亂碼。不知道怎樣解決。</p><p> 通過C程序設(shè)計(jì)這次的實(shí)踐,鍛煉了我的編程能力,同時(shí)也使我認(rèn)識到了自己知識的欠缺,相信自己以后會(huì)更努力的學(xué)好c語言,學(xué)好編程。</p><p><b> 三、參考文獻(xiàn)</b></p>
108、<p> [1] 賈宗璞、許合利,C語言程序設(shè)計(jì),人民郵電出版社,2012.1 </p><p><b> 四、附錄:程序清單</b></p><p> #include <stdio.h></p><p> #include <string.h></p><p> #in
109、clude <malloc.h></p><p> #include <stdlib.h></p><p> #include<conio.h></p><p> void menu(struct student *p,int len);//菜單</p><p> void average(stru
110、ct student *p,int len);//實(shí)現(xiàn)按平均成績排序</p><p> void output(struct student *p,int *len);//打印信息</p><p> void input(struct student *p,int len);//輸入數(shù)據(jù)</p><p> void write(struct student *
111、p,int len);//將數(shù)據(jù)寫入文件</p><p> void read(struct student *p,int len);//讀取文件數(shù)據(jù)</p><p> void find(struct student *p,int len);//按學(xué)號找學(xué)生信息</p><p> void delet(struct student *p,int len);/
112、/刪除學(xué)生信息</p><p> void exit_1(struct student *p,int len);//結(jié)束整個(gè)程序</p><p> void modify(struct student *p,int len);//修改學(xué)生信息</p><p> void failure(struct student*p,int len);//不及格成績<
113、/p><p> struct student</p><p><b> {</b></p><p> char name[30];//姓名</p><p> int number;//學(xué)號</p><p> char sex[3];//性別</p><p>
114、 char time[11];//入學(xué)年月</p><p> int term;//有成績的學(xué)期數(shù)</p><p> float score[4];</p><p> float average;//平均成績</p><p> float sum;</p><p><b> };<
115、/b></p><p> int main(void)</p><p><b> {</b></p><p> int len=0;</p><p><b> char ch; </b></p><p> struct student *p;</p>
116、;<p> printf("請輸入需要存入的學(xué)生人數(shù):");</p><p> scanf("%d",&len);</p><p> p=(struct student *)malloc(sizeof(struct student)*len);</p><p> menu(p,len);<
117、/p><p> printf("按回車鍵繼續(xù)\n");</p><p><b> while(1)</b></p><p><b> {</b></p><p> system("cls");</p><p> printf(
118、"\n\n\n\n");</p><p> printf("\t\t|************************************************|\n");</p><p> printf("\t\t|------------------ 學(xué)生管理系統(tǒng) ----------------|\n");<
119、/p><p> printf("\t\t|************************************************|\n");</p><p> printf("\t\t|-------------- (i)錄入學(xué)生信息 ------------|\n");</p><p> printf(
120、"\t\t|-------------- (p)輸出學(xué)生的成績單 ----------|\n");</p><p> printf("\t\t|-------------- (a)按平均成績排序 ----------|\n");</p><p> printf("\t\t|-------------- (s)按學(xué)號查詢學(xué)
121、生成績 ----------|\n");</p><p> printf("\t\t|-------------- (f)按學(xué)號查詢學(xué)生不及格科目------|\n");</p><p> printf("\t\t|-------------- (m)修改學(xué)生信息 ----------|\n");</p>
122、<p> printf("\t\t|-------------- (D)注銷學(xué)生信息 ----------|\n");</p><p> printf("\t\t|-------------- (w)保存 ----------|\n");</p><p> printf("\t\t
123、|-------------- (e)退出 ----------|\n");</p><p> printf("\t\t|************************************************|\n");</p><p> printf("\t\t\n");</p>
124、<p> ch=getch(); </p><p> switch(ch)</p><p><b> {</b></p><p> case 'i':input(p,len);break;</p><p> case 'p':output(p,
125、&len);break;</p><p> case 'a':average(p,len);break;</p><p> case 's':find(p,len);break;</p><p> case 'f':failure(p,len);break;</p><p
126、> case 'm':modify(p,len);break;</p><p> case 'D':delet(p,len);break;</p><p> case 'w':write(p,len);break;</p><p> case 'e':exit_1(p,len)
127、;break;</p><p> default :printf("\n\t輸入錯(cuò)誤!按回車鍵返回主菜單!"); break;</p><p><b> getch();</b></p><p><b> }</b></p><p><b> }</b
128、></p><p><b> free(p);</b></p><p> return 0 ;</p><p><b> }</b></p><p><b> //菜單</b></p><p> void menu(struct stud
129、ent *p,int len)</p><p> {printf("\t\t||=========================================||\n");</p><p> printf("\t\t||-----------------------------------------||\n");</p>&
130、lt;p> printf("\t\t||-----------歡迎使用學(xué)生管理系統(tǒng)----------||\n");</p><p> printf("\t\t||-----------------------------------------||\n");</p><p> printf("\t\t||===========
131、==============================||\n");</p><p> getchar();</p><p> getchar();</p><p> system("cls");</p><p><b> return;</b></p><
132、p><b> }</b></p><p> //函數(shù)功能:實(shí)現(xiàn)按平均成績排序</p><p> void average(struct student *p,int len)</p><p> {int i,j;</p><p> struct student t;</p><p&g
133、t; for(i=0;i<len-1;i++)</p><p><b> {</b></p><p> for(j=0;j<len;j++)</p><p> if( p[j+1].average>p[j].average)</p><p><b> {</b>&l
134、t;/p><p><b> t=p[j+1];</b></p><p> p[j+1]=p[j];</p><p><b> p[j]=t;</b></p><p><b> }</b></p><p><b> }</b>
135、</p><p> output(p,&len);</p><p><b> return;</b></p><p><b> }</b></p><p> //函數(shù)功能:打印信息</p><p> void output(struct student *p
136、,int *len)</p><p><b> {</b></p><p><b> int i;</b></p><p> for(i=0;i<*len;i++)</p><p> printf("姓名:%s 學(xué)號:%d 性別:%s 入學(xué)年月:%s 學(xué)期數(shù):%d
137、 成績1:%.2f 成績2:%.2f 成績3:%.2f 成績4:%.2f 總分:%.2f 平均成績:%.2f\n",p[i].name,p[i].number,p[i].sex,p[i].time,p[i].term,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3],p[i].sum,p[i].average);</p><p>
138、 printf("\n");</p><p> getchar();</p><p> getchar();</p><p><b> return;</b></p><p><b> }</b></p><p> //函數(shù)功能:輸入數(shù)據(jù)<
139、/p><p> void input(struct student *p,int len)</p><p><b> {</b></p><p><b> int i;</b></p><p> for(i=0;i<len;i++)</p><p><b&g
140、t; {</b></p><p> printf("請輸入第%d個(gè)學(xué)生信息:\n",i+1);</p><p> printf("姓名:");</p><p> scanf("%s",p[i].name);//name是數(shù)組名 本身就是地址</p><p>
141、 printf("學(xué)號:");</p><p> scanf("%d",&p[i].number);</p><p> printf("性別:");</p><p> scanf("%s",p[i].sex);</p><p> printf(&q
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計(jì)---學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)----學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)--c語言課程設(shè)計(jì)
- c語言課程設(shè)計(jì)--學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)--學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)---學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)———學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)---學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)_學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計(jì)學(xué)生成績管理系統(tǒng)設(shè)計(jì)
- c語言課程設(shè)計(jì)--學(xué)生成績管理
- c語言課程設(shè)計(jì)--- 學(xué)生成績管理
評論
0/150
提交評論