C語言課程設(shè)計(jì)方案學(xué)生成績管理系統(tǒng)88_第1頁
C語言課程設(shè)計(jì)方案學(xué)生成績管理系統(tǒng)88_第2頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、蘇州市職業(yè)大學(xué)繼續(xù)教育學(xué)院課程設(shè)計(jì)說明書名稱 C 語言程序設(shè)計(jì)課程設(shè)計(jì)2012 年 10 月 31 日至 2012 年 11 月 14 日共 2 周院系計(jì)算機(jī)工程系班級 10Z 計(jì)算機(jī)網(wǎng)絡(luò)學(xué)號 46姓名錢俊琦系主任李金祥指導(dǎo)教師陸公正目錄1 前言 12 需求分析 12.1 要求 12.2 任務(wù) 12.3 運(yùn)行環(huán)境 12.4 開發(fā)工具 13 概要設(shè)計(jì)與詳細(xì)設(shè)計(jì) 23.1 系統(tǒng)流程圖 23.2 杳詢函數(shù)流程圖 34 編碼與實(shí)現(xiàn) 154.1 分析 154.2 具體代碼實(shí)現(xiàn) 165 課程設(shè)計(jì)總結(jié) 30參考文獻(xiàn) 30致謝 301 刖言編寫一個學(xué)生成績管理系統(tǒng)。先建立一個有三個學(xué)生的鏈表,每個結(jié)點(diǎn)包 含:

2、學(xué)號、姓名、三門考試成績(英語、數(shù)學(xué)、計(jì)算機(jī))。要求利用菜單的形 式進(jìn)行管理。2 需求分析2.1 要求(1 1) 用C語言實(shí)現(xiàn)程序設(shè)計(jì);(2 2) 利用結(jié)構(gòu)體進(jìn)行相關(guān)信息處理;(3 3) 畫出查詢模塊的流程圖;(4 4) 系統(tǒng)的各個功能模塊要求用函數(shù)的形式實(shí)現(xiàn);(5 5) 界面友好(良好的人機(jī)互交),程序要有注釋。2.2 任務(wù)(1 1) 先建立一個有三個學(xué)生的鏈表,每個結(jié)點(diǎn)包含:學(xué)號、姓名、 3 3 門考 試成績;(2 2) 輸入姓名查詢該同學(xué)的信息,并顯示在屏幕上;(3 3) 畫出所有模塊的流程圖;(4 4) 編寫代碼;(5 5) 程序分析與調(diào)試。2.3 運(yùn)行環(huán)境(1)WINDOWS2000

3、/XP系統(tǒng)(2 2)TurboC2.0編譯環(huán)境2.4 開發(fā)工具C語言3 概要設(shè)計(jì)與詳細(xì)設(shè)計(jì)3.1 系統(tǒng)流程圖如圖3.1所示。3.2 查詢函數(shù)流程圖i 的1intm;k=OprintfCefrWi入卑之剛目威人o訂少um=O;k=Oo訂8um=oi8um oi fkt;k“oi c=O;m6m*Ik“printf*dt/Leknumek.pintfr%2ftek】 fm】 G;pintfr%2ftek】 fm】 G;printfC%2fA 2fn=kag.printfC%2fA 2fn=kag.IinEkj;1=0break;i”prirfrh6tfi有您腰JW除?4j=4ril;工k“1int

4、m;m=0cprint(a.m);m 4 編碼與實(shí)現(xiàn)4.1 分析在程序的開頭部分定義結(jié)構(gòu)體類型和全局的結(jié)構(gòu)體數(shù)組,用來存 放和提取學(xué)生的信息。struct student /學(xué)生數(shù)據(jù) int num 。struct score f9。char name20。float ave。float sum。用輸入函數(shù) seanf 來輸入學(xué)生的信息放在程序中,在這個函數(shù)用 void 語句就能實(shí)現(xiàn)。void luru(struet student a )。 /錄入函數(shù)void paixu(struet student a)。 /排序函數(shù)void eharu(struet student a)。 /插入函數(shù)v

5、oid del(struet student a)。 /刪除函數(shù)void display(struet student a)。 /顯示函數(shù)void eprint(struct student a,int m)。/查詢輸出函數(shù)void ehaxun1(struet student a)。 /學(xué)號查詢函數(shù)void ehaxun2(struet student a)。 /姓名查詢函數(shù)void eharu(struet student a)paixu(struct student a調(diào)用 paixu(struetstudent a) struet student a。 /存檔函數(shù)在 main 函數(shù)中用

6、 int 函數(shù)定義,然后再運(yùn)用 printf ()函數(shù)就可以提 取學(xué)生的成績了。而后可以根據(jù)不同的函數(shù)來刪除、修改學(xué)生的成績信息。 最終程序結(jié)束,完成學(xué)生成績信息的錄入、修改、刪除以及查詢。 4.2 具體代碼實(shí)現(xiàn)#include#include #include struct score /各科成績float s。struct student /學(xué)生數(shù)據(jù)int num。struct score f9。char name20。float ave。float i=0 。/統(tǒng)計(jì)個數(shù)struct student stu99。void luru(struct student a )。 /

7、錄入函數(shù)void paixu(struct student a)。 /排序函數(shù)void charu(struct student a)。 /插入函數(shù)void del(struct student a)。 /刪除函數(shù)void display(struct student a)。 /顯示函數(shù)void cprint(struct student a,int m)。/ 查詢輸出函數(shù) void chaxun1(structstudent a)。 /學(xué)號查詢函數(shù) void chaxun2(struct student a)。 /姓名查詢函數(shù) void save(struct student a)。 /存檔

8、函數(shù) void main() / 主函數(shù)開始int x,y 。for(y=0。y99。y+)/將所有成績清空for(x=0 。 x6。 x+)stuy.fx.s=NULLH*n) 。printf(ttt 歡迎使用 n)。 printf(nttt 學(xué)生成績管理系統(tǒng) nn)*n) 。printf(請選擇功能: nnO.退出n1.錄入新學(xué)生成績數(shù)據(jù)n2.顯示學(xué)生 成績數(shù)據(jù)n3.按總成績排序n4插入學(xué)生成績數(shù)據(jù)n5刪除學(xué)生成績數(shù) 據(jù)n6.按學(xué)生學(xué)號查詢n7.按學(xué)生姓名查詢n8.儲存為 TXT 文件nn)*doscanf(%d,&number)。printf(n-n)。sw

9、itch (number)case 0:break。 /退出case 1:luru(stu)b break。/錄入新學(xué)生成績數(shù)據(jù) case 2:display(stu。printf(printf(H*菜單printf(nn)break。顯示學(xué)生成績數(shù)據(jù) case 3:paixu(stu)。 break。 /按總成績排序case 4:charu(stu。) break。/插入學(xué)生成績數(shù)據(jù)case 5:del(stu)。break。/刪除學(xué)生成績數(shù)據(jù) n case 6:chaxun1(stu。 )break。 /按學(xué)生學(xué)號查詢 case 7:chaxun2(stu。) break。 /按學(xué)生姓名查

10、詢 case 8:save(stu。) break。 /儲存為 TXT 文件while(number!=0) 。 printf(謝謝使用!)。 printf(n) 。void luru(struct student a) /錄入函數(shù)int k。char b。float sum=0。printf( 請輸入科目數(shù) (最多 6 科):)。 scanf(%d,&m) 。printf( 請輸入學(xué)生信息 n)。doprintf( 學(xué)號:)。scanf(%d,&ai.num) 。 printf( 姓名:)。scanf(%s,)。for(k=0 。 km。 k+)pr

11、intf(請輸入第%d 科目成績:,k+1)。float temp。scanf(%f,&temp)。ai.fk.s = temp 。/計(jì)算總分ai.sum=0 。for(k=0 。 km。 k+)ai.sum=ai.sum+ai.fk.s 。/計(jì)算平均分ai.ave=0 。ai.ave=ai.sum/m。i+。printf( 是否繼續(xù)錄入學(xué)生數(shù)據(jù) ?n(Y/N) 。fflush(stdin) 。 /刷新標(biāo)準(zhǔn)輸入緩沖區(qū)scanf(%c,&b)。while(b=Y|b=y) 。display(a)。void display(struct student a) /顯示函數(shù)int k,

12、m。system(cls)。 /清屏printf(學(xué)號t 姓名t 第 1 科t 第 2 科t 第 3 科t 第 4 科t 第 5 科t 第 6 科t總分t 平均分n)。printf(n-nn)。for(k=0。ki。k+)printf(%dt%st,ak.num,) 。for(m=0。 m6。 m+)printf(%.2ft,ak.fm.s) 。printf(%.2ft%.2fn,ak.sum,ak.ave) 。printf(n-nn) 。printf(請選擇功能:nO.退出t1.錄入t2.顯示t3.排序t4.插入t5.刪除 t6.學(xué)號查詢 7.姓名查詢t8.存檔nn)。void

13、 paixu(struct student a) /排序函數(shù)int j,k 。struct student temp。for(k=0 。 ki 。 k+)for(j=0 。 ji-k 。 j+)if(aj.aveaj+1.ave)temp=aj 。aj=aj+1。aj+1=temp。printf( 按總分排序后的學(xué)生數(shù)據(jù)如下 n) display(a)。void charu(struct student a) /插入函數(shù)int j,k,m,x 。struct student temp。for(x=0。x6。x+)temp.fx.s=0 。/將 temp 中的所有成績清除 printf( 請輸入

14、成績數(shù)目 :)。 scanf(%d,&m) 。printf ( 請輸入學(xué)生信息 n) 。 printf ( 學(xué)號: ) 。 scanf (%d,&temp.num) 。printf( 姓名:)。 scanf(%s,)。for(k=0 。 km。 k+)printf(請輸入第%d 科目成績:,k+1)。 float tt。scanf(%f,&tt) 。 temp.fk.s = tt。/計(jì)算總分temp.sum=0。for(k=0。km。k+)temp.sum=temp.sum+temp.fk.s。/計(jì)算平均分 temp.ave=temp.sum/m。fo

15、r(j=0 。 jj 。 k-)ak=ak-1。i+。aj=temp。display(a)。void del(struct student a) /刪除函數(shù)int k,j 。printf( 請輸入要刪除的學(xué)生學(xué)號: )。 scanf(%d,&k) 。for(j=0 。 ji 。 j+)if(k=aj.num) / 記錄要刪除的學(xué)生的位置break。if(ji)for(k=j。ki-1。k+) aj=aj+1。i- 。printf( 刪除后的學(xué)生數(shù)據(jù) n)。display(a)。elseprintf(ntt 沒有您要刪除的學(xué)生數(shù)據(jù) nn-) 。printf(n 請選擇功能:nO.退出t1

16、.錄入t2.顯示t3.排序t4.插入t5.刪 除t6.學(xué)號查詢 7.姓名查詢t8.存檔nn)。void cpri nt(struct stude nt a,i nt m) 查詢輸出函數(shù)int o。system(cls)。 /清屏printf(學(xué)號t 姓名t 第 1 科t 第 2 科t 第 3 科t 第 4 科t 第 5 科t 第 6 科t 總分t 平均分n)。printf(n-nn) 。printf(%dt%st,am.num,) 。for(o=0。 o6。 o+)printf(%.2ft,am.fo.s) 。printf(%.2ft%.2fn,am.sum,am.ave) 。p

17、rintf(n-nn)。printf(n 請選擇功能:nO.退出t1.錄入t2.顯示t3.排序t4.插入t5.刪 除t6.學(xué)號查詢 7.姓名查詢t8.存檔nn)。void chaxu n1(struct stude nt a)/學(xué)號查詢函數(shù)int m,t。printf( 請輸入要查詢的學(xué)號 :)。scanf(%d,&t) 。for(m=0。 m=i。 m+)if(am.num=t)cprint(a,m)。break。if(m=i&am.num!=t)system(cls)。 /清屏printf(ntt 沒有查到您要找的學(xué)生資料 n)。printf(n-n) 。printf(n

18、請選擇功能:n0.退出t1.錄入t2.顯示t3.排序t4.插入t5.刪 除t6.學(xué)號查詢 7.姓名查詢t8.存檔nn)。void chaxu n2(struct stude nt a)/姓名查詢函數(shù)int m。char t20。printf( 請輸入要查詢的姓名 :)。scanf(%s,t)。for(m=0。m=i。m+)if(strcmp(,t)=0)cprint(a,m)。break。if(m=i&(strcmp(,t)!=0)system(cls)。 /清屏printf(ntt 沒有查到您要找的學(xué)生資料 n)。printf(n-n) 。printf(n

19、 請選擇功能:n0.退出t1.錄入t2.顯示t3.排序t4.插入t5.刪 除t6.學(xué)號查詢 7.姓名查詢t8.存檔nn)。void save(struct stude nt a)/存 檔函數(shù)int k,m。FILE * fpFile 。fpFile = fopen(student.txt, w) 。fprintf(fpFile,學(xué)號t 姓名t 第 1 科t 第 2 科t 第 3 科t 第 4 科t 第 5 科 t 第 6科t 總分t 平均分n)。fprintf(fpFile,n-nn) 。for(k=0 。 ki。 k+)fprintf(fpFile,%dt%st,ak.num,

20、) 。for(m=0 。 m6。 m+)fprintf(fpFile,%.2ft,ak.fm.s) 。fprintf(fpFile,%.2ft%.2fn,ak.sum,ak.ave) 。fprintf(fpFile,n-nn) 。fclose(fpFile)。printf(”已存到根目錄 student.txt 文件)。printf(n-n)。printf(n 請選擇功能:n0.退出t1.錄入t2.顯示t3.排序t4.插入t5.刪 除t6.學(xué)號查詢 7.姓名查詢t8.存檔nn)。結(jié)果如圖所示uments andSettingsAdministratorSDebugCpp 1 .exe* 口 X歡迎使用學(xué)生成績管理系統(tǒng)菜單”istr據(jù)數(shù)據(jù)YTHJHJ-*!/丄績數(shù)數(shù)數(shù)詢詢牛成績螯i躋先成幾成號名 E學(xué)專 1H 生學(xué)姓T

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論