版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、內(nèi)蒙古科技大學(xué)課程設(shè)計論文內(nèi)蒙古科技大學(xué)本科生課程設(shè)計論文 題 目:學(xué)生成績管理系統(tǒng)學(xué)生姓名:胡書培學(xué) 號:1067111106專 業(yè):計算機科學(xué)與技術(shù)班 級:10級計算機1班指導(dǎo)教師:周李涌 2010年 12 月 30 日目錄內(nèi)蒙古科技大學(xué)課程設(shè)計任務(wù)書3學(xué)生成績管理系統(tǒng)4【摘要】41論文題目:學(xué)生成績管理系統(tǒng)42技術(shù)參數(shù)、設(shè)計步驟:43設(shè)計理論分析方法:54.設(shè)計結(jié)論及分析:54.1 各個函數(shù)功能簡單分析:54.1.1主菜單函數(shù)(main):54.1.2輸入函數(shù)(input):54.1.3輸出函數(shù)(display):64.1.4查找(find):64.1.5修改(change):64.1.
2、6刪除(del):64.1.7添加(add):64.1.8讀入(read):64.1.9保存(save):64.1.10排序(sort):64.1.11學(xué)號排序(sortx):74.1.12不及格輸出(no_pass):74.1.13輸出(shuchu):75參考文獻:76. 附錄:86.1 程序部分:8內(nèi)蒙古科技大學(xué)課程設(shè)計任務(wù)書課程名稱C語言課程設(shè)計設(shè)計題目學(xué)生成績管理系統(tǒng)指導(dǎo)教師周李涌時間2010.12.272010.12.31一、教學(xué)要求1. 鞏固和加深學(xué)生對C語言課程的基本知識的理解和掌握2. 掌握C語言編程和程序調(diào)試的基本技能3. 利用C語言進行基本的軟件設(shè)計4. 掌握書寫程序設(shè)計
3、說明文檔的能力5. 提高運用C語言解決實際問題的能力二、設(shè)計資料及參數(shù)每個學(xué)生在教師提供的課程設(shè)計題目中任意選擇一題,獨立完成,題目選定后不可更換。某班學(xué)生成績管理,包括以下功能:v 從鍵盤輸入包括學(xué)號、姓名、各門課程成績(不少于2門),并將其保存在磁盤文件student里v 打開文件后,計算每個人的總分和平均分,排序并保存v 具有在文件中進行單項查詢或多項查詢的功能(即能夠按照給定的關(guān)鍵字,如姓名等找出滿足條件的紀錄)v 具有輸出文件數(shù)據(jù)信息的功能三、設(shè)計要求及成果1. 分析課程設(shè)計題目的要求2. 寫出詳細設(shè)計說明3. 編寫程序代碼,調(diào)試程序使其能正確運行4. 設(shè)計完成的軟件要便于操作和使用
4、4. 設(shè)計完成后提交課程設(shè)計報告四、進度安排第一天 選擇課程設(shè)計題目,分析課題的要求第二天 編程第三天 編程及調(diào)試第四天 寫課程設(shè)計報告第五天 提交課程設(shè)計報告(打印稿及電子稿)五、評分標準1. 根據(jù)平時上機考勤、表現(xiàn)和進度,教師將每天點名和檢查2. 根據(jù)課程設(shè)計完成情況,必須有可運行的軟件。3. 根據(jù)課程設(shè)計報告的質(zhì)量,如有雷同,則所有雷同的所有人均判為不及格。六、建議參考資料1C語言程序設(shè)計,譚浩強,清華大學(xué)出版社2C語言程序設(shè)計課程設(shè)計,劉振安,機械工業(yè)出版社學(xué)生成績管理系統(tǒng)【摘要】通過課程設(shè)計,讓我對C語言有了更深的理解,讓我
5、們把學(xué)到的理論應(yīng)用于具體實踐中,鍛煉了我們各方面的能力,從而讓我們更快提高。通過一些簡單函數(shù)的疊加構(gòu)成了功能比較完備的學(xué)生成績管理系統(tǒng),從輸入到處理再到輸出,你將體會到完美的真正含義。學(xué)生成績管理系統(tǒng)具有以下簡單功能:1.從鍵盤輸入包括學(xué)號、姓名、各門課程成績(不少于2門),并將其保存在磁盤文件里2.打開文件后,計算每個人的總分,排序并保存3.具有在文件中進行單項查詢或多項查詢的功能(即能夠按照給定的關(guān)鍵字,如姓名等找出滿足條件的紀錄)4.具有輸出文件數(shù)據(jù)信息的功能1論文題目:學(xué)生成績管理系統(tǒng)2技術(shù)參數(shù)、設(shè)計步驟:本程序包含輸入(input)、輸出(display)、查找(find)、修改(c
6、hange)、刪除(del)、添加(add)、讀入(read)、保存(save)等基本功能。先分別定義各種全局函數(shù)和全局變量now,同時定義結(jié)構(gòu)體及結(jié)構(gòu)體數(shù)組(本程序為實現(xiàn)簡單操作暫定義長度為3)。其中now作為現(xiàn)有學(xué)生信息的一個標記作用尤為重要。每次執(zhí)行完函數(shù)就返回主菜單。共含有四個開關(guān)語句,依次在main,display,find,change中,使界面更友好,用戶操作更簡單。設(shè)計共分四步完成,依次為簡單設(shè)計,添加細節(jié),上機調(diào)試,先改錯再修改。遇到的問題可以查資料或向老師提問。 3設(shè)計理論分析方法:應(yīng)有全局的概念,拿到題目首先進行總體功能分析,只有對整體功能有了全局把握才能去里自己用那部分
7、知識進行編寫。這個階段好比蓋房子,如果這個階段做好了,說明房子已改好了。剩下任務(wù)就是怎么去裝修了。確定了大體方向接下來就是功能實現(xiàn)階段了,即所謂裝修階段。同樣需要逐一地先寫出能實現(xiàn)此功能的簡單程序。比如學(xué)生成績管理系統(tǒng),先寫出最簡單的輸入、輸出、排序等功能函數(shù)。然后通過簡單函數(shù)的互相調(diào)用、嵌套構(gòu)成一個新功能的復(fù)雜函數(shù)。淡然這中間要加很多其他東西,這就需要我們多看書,多問老師同學(xué)啦。等到所有功能都能“正常”(按提示正確輸入)實現(xiàn),再考慮一些細節(jié)問題,例如:如果所有都能簡單運行,可是有些時候有些輸入錯誤或正確它都運行,這就需要我們通過改寫程序使之在正確輸入時運行,在錯誤輸入時給出出錯提示。就像性別
8、問題,輸入M/W時運行,輸入其他就不讓它運行,同時給出正確輸入的提示。這樣就好很多了。后面的一一修改就可以了。同時還要考慮到見名知意,如: 輸入(input)、輸出(display)、查找(find)、修改(change)、刪除(del)、添加(add)、讀入(read)、保存(save)、排序(sort)、按學(xué)號排序(sortx)、不及格(no_pass)、輸出(shuchu)。當然還有其他問題需要注意,在這里不一一細說。4.設(shè)計結(jié)論及分析:4.1 各個函數(shù)功能簡單分析:4.1.1主菜單函數(shù)(main):主函數(shù)為一個死循環(huán),前幾個是功能實現(xiàn)函數(shù),只有9是退出。也就是說每執(zhí)行完一個函數(shù),他就自
9、動返回主菜單。只有選擇9(退出)時才跳出循環(huán)。當然每選擇一次它就自動清空屏幕,所以運行結(jié)果更直觀。4.1.2輸入函數(shù)(input):先輸入要添加的學(xué)生數(shù)量n,同時now標記現(xiàn)有學(xué)生的數(shù)量。執(zhí)行n次循環(huán),輸入n個學(xué)生的信息;其中輸入性別時只有為M/W(M為男,W為女,均大寫)時才跳出循環(huán)。如果出錯,有提示信息。最后自動求和并保存。4.1.3輸出函數(shù)(display): 三部分1.按總分名次輸出2.按學(xué)號順序輸出3.輸出有不及格課程的學(xué)生4.1.4查找(find):查找分為按學(xué)號查找和按姓名查找,查找成功就輸出,查找失敗就返回,輸出提示信息繼續(xù)輸入。4.1.5修改(change):輸入學(xué)號,然后選
10、擇修改項,修改完后,提示用戶“是否繼續(xù)修改”,只有輸入N/n時退出,輸入其它字符都是繼續(xù)。4.1.6刪除(del):輸入要刪除學(xué)生的學(xué)號,如果找到就刪除其信息,并提示用戶刪除成功,如果沒找到就提示用戶刪除失敗。4.1.7添加(add):根據(jù)信息總?cè)萘?結(jié)構(gòu)體數(shù)組的長度)和第一次輸入的信息量判斷是否能繼續(xù)添加。如果添加后信息已滿,則提示用戶不能繼續(xù)添加,同時屏蔽了添加選項。4.1.8讀入(read):從文件讀入,避免了用戶多次大量輸入數(shù)據(jù)。4.1.9保存(save):每次執(zhí)行完修改信息包括添加、錄入、修改、刪除等都需要保存信息。當然在每個修改函數(shù)最后都需要調(diào)用一下保存函數(shù)。4.1.10排序(so
11、rt):按總成績名次排序(冒泡法排序)。n為要排序的學(xué)生數(shù)量,為形參。4.1.11學(xué)號排序(sortx):按學(xué)號先后順序進行排序(冒泡法排序)。n為要排序的學(xué)生數(shù)量,為形參。4.1.12不及格輸出(no_pass):輸出不及格的學(xué)生信息。4.1.13輸出(shuchu):輸出第n個學(xué)生信息。5參考文獻:(1)C語言程序設(shè)計,譚浩強,清華大學(xué)出版社(2)C語言程序設(shè)計課程設(shè)計,劉振安,機械工業(yè)出版社6. 附錄:6.1 程序部分:#include<stdio.h>#include<conio.h>#include<string.h>#include<std
12、lib.h>#define max 3void input();void display();void find();void change();void del();void read();void save();void add();void sort(int n);void sortx(int n);void shuchu(int n);void no_pass();int now=0;/*標記位*/struct studentint num;char name20;char sex;int NO;float score1;float score2;float sum;struct
13、 student stumax+1;void main()/*主函數(shù)(菜單)*/int as;doprintf("nttt歡迎使用學(xué)生成績管理系統(tǒng)nn");printf("ntttt1.錄入學(xué)員信息ntttt2.顯示學(xué)員信息ntttt3.查找學(xué)員信息ntttt4.修改學(xué)員信息ntttt5.刪除學(xué)員信息ntttt6.添加學(xué)員信息ntttt7.讀入學(xué)員信息ntttt8.保存學(xué)員信息ntttt9.退出");printf("nnntttt請選擇");scanf("%d",&as);switch(as)case 1:
14、system("cls");input();break;case 2:system("cls");display();break;case 3:system("cls");find();break;case 4:system("cls");change();break;case 5:system("cls");del();break;case 6:system("cls");add();break;case 7:system("cls");read();b
15、reak;case 8:system("cls");save();break;case 9:system("cls");exit(0);while(1);void input()/*輸入函數(shù)*/int i,n,j; for(i=0;i+) printf("n請輸入添加的學(xué)生數(shù)量(在%d以內(nèi)):",max-now); scanf("%d",&n); if(n>max)printf("n請確保添加的數(shù)量在%d以內(nèi)t!",max); if(n<=max)break; now=n;f
16、or(i=0;i<n;i+)printf("ntttt輸入第%d個學(xué)生的信息n",i+1);printf("n輸入學(xué)生的學(xué)號:");scanf("%d",&stui.num);getchar();printf("n輸入學(xué)生的姓名:");gets();printf("n請輸入學(xué)生的性別(M/W):");for(j=0;j+)stui.sex=getchar();if(stui.sex='M'|stui.sex='W')break;el
17、se printf("nttt請確保輸入性別的正確性(區(qū)分大小寫)!");getchar();printf("n請輸入學(xué)生成績1:");scanf("%f",&stui.score1);printf("n請輸入學(xué)生成績2:");scanf("%f",&stui.score2);stui.sum=stui.score1+stui.score2;sort(n);save(); system("cls");void display()/*整體輸出函數(shù)*/int as
18、,i;printf("nttt班級學(xué)生成績列表nnn");printf("ntttt請選擇nnttt1.按名次輸出nttt2.按學(xué)號輸出nttt3.不及格的學(xué)生信息nttt");scanf("%d",&as);switch(as) case 1:sort(now);for(i=0;i<now;i+)shuchu(i);break; case 2:sort(now);sortx(now);for(i=0;i<now;i+)shuchu(i);break;case 3:no_pass();break;void find
19、()/*查詢函數(shù)*/int num,as,i;char name20;printf("nttt請選擇nnn");printf("nttt1.按學(xué)號查找nttt2.按姓名查找nttt"); scanf("%d",&as);switch(as) case 1:system("cls");printf("請輸入要查找的學(xué)號:"); doscanf("%d",&num); for(i=0;i<now;i+) if(num=stui.num) shuchu(i);
20、break; if(i>=now) printf("ntt該生信息不存在!請重新輸入學(xué)號:");while(i>=now);break; case 2:system("cls");getchar();printf("請輸入要查找的學(xué)生姓名:"); do gets(name); for(i=0;i<now;i+) if(strcmp(name,)=0) shuchu(i);break; if(i>=now) printf("nnttt該生信息不存在!請重新輸入姓名:"); w
21、hile(i>=now);break;void change()/*修改函數(shù)*/int num,as,j,i,m;char a; printf("nttt請輸入要修改的學(xué)生的學(xué)號:");scanf("%d",&num);for(i=0;i<now;i+)if(stui.num=num)for(j=0;j<6;j+)printf("nttt請選擇nnn"); printf("nttt1.修改學(xué)號nttt2.修改姓名nttt3.修改性別(M/W)nttt4.修改成績1nttt5.修改成績2nttt&qu
22、ot;);scanf("%d",&as);switch(as)case 1:printf("請輸入新的學(xué)號:");scanf("%d",&stui.num);break;case 2:printf("請輸入新的姓名:");getchar();gets();break;case 3:printf("請輸入新的性別:");getchar(); for(m=0;m+) stui.sex=getchar(); if(stui.sex='M'|stui.s
23、ex='W')break; else printf("nttt請確保輸入性別的正確性(區(qū)分大小寫)!"); getchar(); break;case 4:printf("請輸入新成績1:");scanf("%f",&stui.score1);break;case 5:printf("請輸入新成績2:");scanf("%f",&stui.score2);break;stui.sum=stui.score1+stui.score2;printf("n是否
24、繼續(xù)修改該生信息?(Y/N)"); getchar();a=getchar();if(a='N'|a='n')break; sort(now); save();break;if(i>=now)printf("nntttt學(xué)號輸入有誤!nn");void del()/*刪除函數(shù)*/int num,i;printf("nttt輸入要刪除的學(xué)生學(xué)號");scanf("%d",&num);for(i=0;i<=now;i+)if(i>=now)printf("nnn
25、ttt學(xué)號輸入有誤!刪除失敗!nn");break;if(stui.num=num)if(i=now-1)now-=1;else stui=stunow-1; now-=1; printf("nnttt刪除成功!nn"); sort(now);break;save();void add()/*添加函數(shù)*/char ch;int j;printf("ntttt還能添加%d個學(xué)生信息!nn",max-now);if(now<max) do printf("ntttt輸入新插入學(xué)生的信息n"); printf("n
26、輸入學(xué)生的學(xué)號:"); scanf("%d",&stunow.num); getchar(); printf("n輸入學(xué)生的姓名:"); gets(); printf("n輸入學(xué)生的性別(M/W):"); for(j=0;j+) stunow.sex=getchar();if(stunow.sex='M'|stunow.sex='W')break;else printf("nttt請確保輸入性別的正確性(區(qū)分大小寫)!");getchar();
27、 printf("n輸入學(xué)生的成績1:"); scanf("%f",&stunow.score1); printf("n輸入學(xué)生的成績2:"); scanf("%f",&stunow.score2); stunow.sum=stunow.score1+stunow.score2; now=now+1; sort(now); if(now>=max) printf("nnntt存儲空間已滿無法繼續(xù)添加!nn");break; printf("nttt是否繼續(xù)添加?(Y/N)"); getchar(); ch=getchar(); while(ch!='n'|ch!='n');void save()/*文件保存函數(shù)*/FILE *fp;/*fp為文件指針*/int i;if(fp=fopen("stu_infer","wb")=NULL)printf("nnttt文件打開失敗!");return;for(i=0;i<max+1;i+)if(fwrite(&stui,sizeof(struct student),1,f
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個人房產(chǎn)抵押權(quán)抵押權(quán)轉(zhuǎn)讓合同范本8篇
- 石排弱電施工方案
- 二零二五年度棉紗產(chǎn)業(yè)技術(shù)創(chuàng)新與應(yīng)用合同4篇
- 2025個人股權(quán)轉(zhuǎn)讓與債務(wù)剝離合同范本3篇
- 2025年度個人信息技術(shù)咨詢與實施合同范本3篇
- 二零二五年度新型商業(yè)空間租賃服務(wù)合同4篇
- 閱讀短文作文課程設(shè)計
- 職校烹飪專業(yè)課程設(shè)計
- 生產(chǎn)管理課程設(shè)計文獻
- 地坪修補施工方案模板
- 第二章 運營管理戰(zhàn)略
- 《三本白皮書》全文內(nèi)容及應(yīng)知應(yīng)會知識點
- 專題14 思想方法專題:線段與角計算中的思想方法壓軸題四種模型全攻略(解析版)
- 醫(yī)院外來器械及植入物管理制度(4篇)
- 圖像識別領(lǐng)域自適應(yīng)技術(shù)-洞察分析
- 港口與港口工程概論
- 《念珠菌感染的治療》課件
- 個體戶店鋪租賃合同
- 門店裝修設(shè)計手冊
- 考研計算機學(xué)科專業(yè)基礎(chǔ)(408)研究生考試試卷與參考答案(2025年)
- 新概念英語第二冊考評試卷含答案(第49-56課)
評論
0/150
提交評論