版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 蘇州市職業(yè)大學(xué)繼續(xù)教育學(xué)院</p><p><b> 課程設(shè)計說明書</b></p><p> 名稱 C語言程序設(shè)計課程設(shè)計 </p><p> 2012年 10月 31 日至 2012年 11月 14 日共2 周</p><p> 院 系 計算機
2、工程系 </p><p> 班 級 10Z計算機網(wǎng)絡(luò) </p><p> 學(xué) 號 46 </p><p> 姓 名 錢俊琦 </p><p> 系 主 任 李金祥 </p><p> 指導(dǎo)教師 陸公正
3、 </p><p><b> 目 錄</b></p><p><b> 1 前言1</b></p><p><b> 2 需求分析1</b></p><p><b> 2.1要求1</b></p><p><b
4、> 2.2任務(wù)1</b></p><p><b> 2.3運行環(huán)境1</b></p><p><b> 2.4開發(fā)工具1</b></p><p> 3 概要設(shè)計與詳細設(shè)計2</p><p> 3.1系統(tǒng)流程圖2</p><p> 3.2
5、查詢函數(shù)流程圖3</p><p> 4 編碼與實現(xiàn)15</p><p><b> 4.1分析15</b></p><p> 4.2具體代碼實現(xiàn)16</p><p> 5 課程設(shè)計總結(jié)30</p><p><b> 參考文獻30</b></p>
6、<p><b> 致 謝30</b></p><p><b> 1 前言</b></p><p> 編寫一個學(xué)生成績管理系統(tǒng)。先建立一個有三個學(xué)生的鏈表,每個結(jié)點包含:學(xué)號、姓名、三門考試成績(英語、數(shù)學(xué)、計算機)。要求利用菜單的形式進行管理。</p><p><b> 2 需求分析&l
7、t;/b></p><p><b> 2.1要求</b></p><p> (1)用C語言實現(xiàn)程序設(shè)計;</p><p> (2)利用結(jié)構(gòu)體進行相關(guān)信息處理;</p><p> (3)畫出查詢模塊的流程圖;</p><p> ?。?)系統(tǒng)的各個功能模塊要求用函數(shù)的形式實現(xiàn);</
8、p><p> (5)界面友好(良好的人機互交),程序要有注釋。</p><p><b> 2.2任務(wù)</b></p><p> (1)先建立一個有三個學(xué)生的鏈表,每個結(jié)點包含:學(xué)號、姓名、3門考試成績;</p><p> (2)輸入姓名查詢該同學(xué)的信息,并顯示在屏幕上;</p><p> ?。?/p>
9、3)畫出所有模塊的流程圖;</p><p><b> ?。?)編寫代碼;</b></p><p> ?。?)程序分析與調(diào)試。</p><p><b> 2.3運行環(huán)境</b></p><p> ?。?)WINDOWS2000/XP系統(tǒng)</p><p> (2)TurboC
10、2.0編譯環(huán)境</p><p><b> 2.4開發(fā)工具</b></p><p><b> C語言</b></p><p> 3 概要設(shè)計與詳細設(shè)計</p><p><b> 3.1系統(tǒng)流程圖</b></p><p><b> 如圖3
11、.1所示。</b></p><p> 3.2查詢函數(shù)流程圖</p><p><b> 4 編碼與實現(xiàn)</b></p><p><b> 4.1分析</b></p><p> 在程序的開頭部分定義結(jié)構(gòu)體類型和全局的結(jié)構(gòu)體數(shù)組,用來存放和提取學(xué)生的信息。</p><
12、;p> struct student //學(xué)生數(shù)據(jù) </p><p> { int num;</p><p> struct score f[9];</p><p> char name[20]; </p><p> float ave; </p><p> float sum;
13、</p><p><b> }; </b></p><p> 用輸入函數(shù)scanf來輸入學(xué)生的信息放在程序中,在這個函數(shù)</p><p> 用void語句就能實現(xiàn)。</p><p> void luru(struct student a[] ); //錄入函數(shù) </p><p>
14、 void paixu(struct student a[]); //排序函數(shù) </p><p> void charu(struct student a[]); //插入函數(shù) </p><p> void del(struct student a[]); //刪除函數(shù) </p><p> void display(struct student a
15、[]);//顯示函數(shù) </p><p> void cprint(struct student a[],int m);//查詢輸出函數(shù) </p><p> void chaxun1(struct student a[]);//學(xué)號查詢函數(shù) </p><p> void chaxun2(struct student a[]);//姓名查詢函數(shù) </p&
16、gt;<p> void charu(struct student a[])paixu(struct student a[])調(diào)用paixu(struct student a[])</p><p> struct student a[];//存檔函數(shù) </p><p> 在main函數(shù)中用int函數(shù)定義,然后再運用printf()函數(shù)就可以提取學(xué)生的成績了。</
17、p><p> 而后可以根據(jù)不同的函數(shù)來刪除、修改學(xué)生的成績信息。</p><p> 最終程序結(jié)束,完成學(xué)生成績信息的錄入、修改、刪除以及查詢。</p><p><b> 4.2具體代碼實現(xiàn)</b></p><p> #include<stdio.h> </p><p> #i
18、nclude<stdlib.h> </p><p> #include<string.h> </p><p> struct score //各科成績 </p><p><b> { </b></p><p> float s; </p><p>&l
19、t;b> }; </b></p><p> struct student //學(xué)生數(shù)據(jù) </p><p><b> { </b></p><p> int num; </p><p> struct score f[9]; </p><p> ch
20、ar name[20]; </p><p> float ave; </p><p> float sum; </p><p><b> }; </b></p><p> int i=0;//統(tǒng)計個數(shù) </p><p> struct student stu[99];
21、 </p><p> void luru(struct student a[] ); //錄入函數(shù) </p><p> void paixu(struct student a[]); //排序函數(shù) </p><p> void charu(struct student a[]); //插入函數(shù) </p><p> vo
22、id del(struct student a[]); //刪除函數(shù) </p><p> void display(struct student a[]);//顯示函數(shù) </p><p> void cprint(struct student a[],int m);//查詢輸出函數(shù) </p><p> void chaxun1(struct stude
23、nt a[]);//學(xué)號查詢函數(shù) </p><p> void chaxun2(struct student a[]);//姓名查詢函數(shù) </p><p> void save(struct student a[]);//存檔函數(shù) </p><p> void main() //主函數(shù)開始 </p><p><b> {
24、 </b></p><p> int number; </p><p><b> int x,y; </b></p><p> for(y=0;y<99;y++) //將所有成績清空 </p><p><b> { </b></p><p>
25、 for(x=0;x<6;x++) </p><p><b> { </b></p><p> stu[y].f[x].s=NULL; </p><p><b> } </b></p><p><b> } </b></p><p>
26、printf("********************************************************************************\n"); </p><p> printf("\t\t\t 歡迎使用\n"); </p><p> printf("\n\t\t\t
27、 學(xué)生成績管理系統(tǒng)\n\n"); </p><p> printf("*************************************菜單***************************************\n"); </p><p> printf("請選擇功能:\n\n0.退出\n1.錄入新學(xué)生成績數(shù)據(jù)\n2.顯示學(xué)生成績
28、數(shù)據(jù)\n3.按總成績排序\n4.插入學(xué)生成績數(shù)據(jù)\n5.刪除學(xué)生成績數(shù)據(jù)\n6.按學(xué)生學(xué)號查詢\n7.按學(xué)生姓名查詢\n8.儲存為TXT文件\n\n"); </p><p> printf("\n********************************************************************************\n"); </p
29、><p><b> do </b></p><p><b> { </b></p><p> scanf("%d",&number); </p><p> printf("\n-----------------------------------
30、--------\n"); </p><p> switch (number) </p><p><b> { </b></p><p> case 0:break; //退出 </p><p> case 1:luru(stu);break; //錄入新學(xué)生成績數(shù)據(jù) </p>
31、;<p> case 2:display(stu);break; //顯示學(xué)生成績數(shù)據(jù) </p><p> case 3:paixu(stu);break; //按總成績排序 </p><p> case 4:charu(stu);break; //插入學(xué)生成績數(shù)據(jù) </p><p> case 5:del(stu);break; //刪
32、除學(xué)生成績數(shù)據(jù)\n </p><p> case 6:chaxun1(stu);break; //按學(xué)生學(xué)號查詢 </p><p> case 7:chaxun2(stu);break; //按學(xué)生姓名查詢 </p><p> case 8:save(stu);break; //儲存為TXT文件 </p><p><b>
33、} </b></p><p> }while(number!=0); </p><p> printf("謝謝使用!"); </p><p> printf("\n"); </p><p><b> } </b></p><
34、;p> void luru(struct student a[]) //錄入函數(shù) </p><p><b> { </b></p><p><b> int m; </b></p><p><b> int k; </b></p><p> ch
35、ar b; </p><p> float sum=0; </p><p> printf("請輸入科目數(shù)(最多6科):"); </p><p> scanf("%d",&m); </p><p> printf("請輸入學(xué)生信息\n"); <
36、;/p><p><b> do </b></p><p><b> { </b></p><p> printf("學(xué)號:"); </p><p> scanf("%d",&a[i].num); </p><p&
37、gt; printf("姓名:"); </p><p> scanf("%s",a[i].name); </p><p> for(k=0;k<m;k++) </p><p><b> { </b></p><p> printf("請輸入
38、第%d科目成績:",k+1); </p><p> float temp; </p><p> scanf("%f",&temp); </p><p> a[i].f[k].s = temp; </p><p><b> } </b></p>
39、<p><b> //計算總分 </b></p><p> a[i].sum=0; </p><p> for(k=0;k<m;k++) </p><p><b> { </b></p><p> a[i].sum=a[i].sum+a[i].f[k].s
40、; </p><p><b> } </b></p><p> //計算平均分 </p><p> a[i].ave=0; </p><p> a[i].ave=a[i].sum/m; </p><p><b> i++; </b></
41、p><p> printf("是否繼續(xù)錄入學(xué)生數(shù)據(jù)?\n(Y/N)"); </p><p> fflush(stdin);//刷新標準輸入緩沖區(qū) </p><p> scanf("%c",&b); </p><p> }while(b=='Y'||b=='
42、y'); </p><p> display(a); </p><p><b> } </b></p><p> void display(struct student a[]) //顯示函數(shù) </p><p><b> { </b></p><
43、;p> int k,m; </p><p> system("cls"); //清屏 </p><p> printf("學(xué)號\t姓名\t第1科\t第2科\t第3科\t第4科\t第5科\t第6科\t總分\t平均分\n"); </p><p> printf("\n----------------
44、--------------------------------------------------------------\n\n"); </p><p> for(k=0;k<i;k++) </p><p><b> { </b></p><p> printf("%d\t%s\t",a
45、[k].num,a[k].name); </p><p> for(m=0;m<6;m++) </p><p><b> { </b></p><p> printf("%.2f\t",a[k].f[m].s); </p><p><b> } </b>&l
46、t;/p><p> printf("%.2f\t%.2f\n",a[k].sum,a[k].ave); </p><p><b> } </b></p><p> printf("\n-------------------------------------------------------------
47、-----------------\n\n"); </p><p> printf("請選擇功能:\n0.退出\t1.錄入\t2.顯示\t3.排序\t4.插入\t5.刪除\t6.學(xué)號查詢 7.姓名查詢\t8.存檔\n\n"); </p><p><b> } </b></p><p> void
48、 paixu(struct student a[]) //排序函數(shù) </p><p><b> { </b></p><p> int j,k; </p><p> struct student temp; </p><p> for(k=0;k<i;k++) </p>&
49、lt;p><b> { </b></p><p> for(j=0;j<i-k;j++) </p><p><b> { </b></p><p> if(a[j].ave<a[j+1].ave) </p><p><b> { </b
50、></p><p> temp=a[j]; </p><p> a[j]=a[j+1]; </p><p> a[j+1]=temp; </p><p><b> } </b></p><p><b> } </b></p>
51、<p><b> } </b></p><p> printf("按總分排序后的學(xué)生數(shù)據(jù)如下\n"); </p><p> display(a); </p><p><b> } </b></p><p> void charu(struct
52、student a[]) //插入函數(shù) </p><p><b> { </b></p><p> int j,k,m,x; </p><p> struct student temp; </p><p> for(x=0;x<6;x++) </p><p><
53、b> { </b></p><p> temp.f[x].s=0; </p><p><b> } </b></p><p> //將temp中的所有成績清除 </p><p> printf("請輸入成績數(shù)目:"); </p><p> sc
54、anf("%d",&m); </p><p> printf("請輸入學(xué)生信息\n"); </p><p> printf("學(xué)號:"); </p><p> scanf("%d",&temp.num); </p><p>
55、 printf("姓名:"); </p><p> scanf("%s",temp.name); </p><p> for(k=0;k<m;k++) </p><p><b> { </b></p><p> printf("請輸入第%d科
56、目成績:",k+1); </p><p> float tt; </p><p> scanf("%f",&tt); </p><p> temp.f[k].s = tt; </p><p><b> } </b></p><p>&
57、lt;b> //計算總分 </b></p><p> temp.sum=0; </p><p> for(k=0;k<m;k++) </p><p><b> { </b></p><p> temp.sum=temp.sum+temp.f[k].s; </p&
58、gt;<p><b> } </b></p><p> //計算平均分 </p><p> temp.ave=temp.sum/m; </p><p> for(j=0;j<i;j++) </p><p> for(k=i;k>j;k--) </p>
59、<p><b> { </b></p><p> a[k]=a[k-1]; </p><p><b> } </b></p><p><b> i++; </b></p><p> a[j]=temp; </p><p
60、> display(a); </p><p><b> } </b></p><p> void del(struct student a[]) //刪除函數(shù) </p><p><b> { </b></p><p> int k,j; </p>&
61、lt;p> printf("請輸入要刪除的學(xué)生學(xué)號:"); </p><p> scanf("%d",&k); </p><p> for(j=0;j<i;j++) </p><p><b> { </b></p><p> if(k=
62、=a[j].num) //記錄要刪除的學(xué)生的位置 </p><p><b> { </b></p><p><b> break; </b></p><p><b> } </b></p><p><b> } </b></
63、p><p> if(j<i) </p><p><b> { </b></p><p> for(k=j;k<i-1;k++) </p><p><b> { </b></p><p> a[j]=a[j+1]; </p>
64、<p><b> } </b></p><p><b> i--; </b></p><p> printf("刪除后的學(xué)生數(shù)據(jù)\n"); </p><p> display(a); </p><p><b> } </b&
65、gt;</p><p><b> else </b></p><p><b> { </b></p><p> printf("\n\t\t沒有您要刪除的學(xué)生數(shù)據(jù)\n\n"-); </p><p> printf("\n請選擇功能:\n0.退出\t1
66、.錄入\t2.顯示\t3.排序\t4.插入\t5.刪除\t6.學(xué)號查詢 7.姓名查詢\t8.存檔\n\n"); </p><p><b> } </b></p><p><b> } </b></p><p> void cprint(struct student a[],int m)//查詢
67、輸出函數(shù) </p><p><b> { </b></p><p><b> int o; </b></p><p> system("cls"); //清屏 </p><p> printf("學(xué)號\t姓名\t第1科\t第2科\t第3科\t第4科\t第5科\t
68、第6科\t總分\t平均分\n"); </p><p> printf("\n------------------------------------------------------------------------------\n\n"); </p><p> printf("%d\t%s\t",a[m].num,a[m]
69、.name); </p><p> for(o=0;o<6;o++) </p><p><b> { </b></p><p> printf("%.2f\t",a[m].f[o].s); </p><p><b> } </b></p>&l
70、t;p> printf("%.2f\t%.2f\n",a[m].sum,a[m].ave); </p><p> printf("\n------------------------------------------------------------------------------\n\n"); </p><p> pri
71、ntf("\n請選擇功能:\n0.退出\t1.錄入\t2.顯示\t3.排序\t4.插入\t5.刪除\t6.學(xué)號查詢 7.姓名查詢\t8.存檔\n\n"); </p><p><b> } </b></p><p> void chaxun1(struct student a[])//學(xué)號查詢函數(shù) </p><p>
72、<b> { </b></p><p><b> int m,t; </b></p><p> printf("請輸入要查詢的學(xué)號:"); </p><p> scanf("%d",&t); </p><p> for(m=0;m<=i
73、;m++) </p><p><b> { </b></p><p> if(a[m].num==t) </p><p><b> { </b></p><p> cprint(a,m); </p><p><b> break; </b>&
74、lt;/p><p><b> } </b></p><p> if(m==i&&a[m].num!=t) </p><p><b> { </b></p><p> system("cls"); //清屏 </p><p> pri
75、ntf("\n\t\t沒有查到您要找的學(xué)生資料\n"); </p><p> printf("\n--------------------------------------------------------------------------------\n"); </p><p> printf("\n請選擇功能:\n0.退出
76、\t1.錄入\t2.顯示\t3.排序\t4.插入\t5.刪除\t6.學(xué)號查詢 7.姓名查詢\t8.存檔\n\n"); </p><p><b> } </b></p><p><b> } </b></p><p><b> } </b></p><p>
77、 void chaxun2(struct student a[])//姓名查詢函數(shù) </p><p><b> { </b></p><p><b> int m; </b></p><p> char t[20]; </p><p> printf("請輸入要查詢的姓名:&qu
78、ot;); </p><p> scanf("%s",t); </p><p> for(m=0;m<=i;m++) </p><p><b> { </b></p><p> if(strcmp(a[m].name,t)==0) </p><p><b&
79、gt; { </b></p><p> cprint(a,m); </p><p><b> break; </b></p><p><b> } </b></p><p> if(m==i&&(strcmp(a[m].name,t)!=0)) </p&
80、gt;<p><b> { </b></p><p> system("cls"); //清屏 </p><p> printf("\n\t\t沒有查到您要找的學(xué)生資料\n"); </p><p> printf("\n---------------------------
81、-----------------------------------------------------\n"); </p><p> printf("\n請選擇功能:\n0.退出\t1.錄入\t2.顯示\t3.排序\t4.插入\t5.刪除\t6.學(xué)號查詢 7.姓名查詢\t8.存檔\n\n"); </p><p><b> } <
82、;/b></p><p><b> } </b></p><p><b> } </b></p><p> void save(struct student a[])//存檔函數(shù) </p><p><b> { </b></p><p>
83、; int k,m; </p><p> FILE * fpFile; </p><p> fpFile = fopen("student.txt", "w"); </p><p> fprintf(fpFile,"學(xué)號\t姓名\t第1科\t第2科\t第3科\t第4科\t第5科\t第6科\t總分\
84、t平均分\n"); </p><p> fprintf(fpFile,"\n---------------------------------------------------------------------------------\n\n"); </p><p> for(k=0;k<i;k++) </p><
85、p><b> { </b></p><p> fprintf(fpFile,"%d\t%s\t",a[k].num,a[k].name); </p><p> for(m=0;m<6;m++) </p><p><b> { </b></p><p>
86、 fprintf(fpFile,"%.2f\t",a[k].f[m].s); </p><p><b> } </b></p><p> fprintf(fpFile,"%.2f\t%.2f\n",a[k].sum,a[k].ave); </p><p><b> } <
87、;/b></p><p> fprintf(fpFile,"\n---------------------------------------------------------------------------------\n\n"); </p><p> fclose(fpFile); </p><p> printf(&
88、quot;已存到根目錄student.txt文件"); </p><p> printf("\n-------------------------------------------\n"); </p><p> printf("\n請選擇功能:\n0.退出\t1.錄入\t2.顯示\t3.排序\t4.插入\t5.刪除\t6.學(xué)號查詢 7
89、.姓名查詢\t8.存檔\n\n"); </p><p><b> } </b></p><p><b> 結(jié)果如圖所示</b></p><p><b> 5 課程設(shè)計總結(jié)</b></p><p> 通過這次課程設(shè)計我對C語言的神奇功能更加佩服,我默默在心
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計---學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計-學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計----學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計-學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計-學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)--c語言課程設(shè)計
- c語言課程設(shè)計--學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計--學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計---學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計-學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計———學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計---學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計_學(xué)生成績管理系統(tǒng)
- c語言課程設(shè)計學(xué)生成績管理系統(tǒng)設(shè)計
- c語言課程設(shè)計--學(xué)生成績管理
- c語言課程設(shè)計--- 學(xué)生成績管理
評論
0/150
提交評論