




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、武漢工業(yè)學(xué)院語(yǔ)言學(xué) 院電氣與電子工程學(xué)院班 級(jí)英才班1101學(xué) 號(hào)111204525姓 名劉興目錄摘要3第一章綜合設(shè)計(jì)概述31.1綜合設(shè)計(jì)名稱31.2任務(wù)要求31.3開發(fā)環(huán)境41.4應(yīng)用平臺(tái)4第二章總體設(shè)計(jì)42.1系統(tǒng)功能需求分析42.2系統(tǒng)總體設(shè)計(jì)框架42.3系統(tǒng)功能模塊圖及各功能模塊的目的與意義6第三章詳細(xì)設(shè)計(jì)73.1N-S流程圖7主函數(shù)main( )7錄入學(xué)生基本信息函數(shù)student_new( )8修改學(xué)生檔案函數(shù)student_edit ( )8注銷學(xué)生基本信息函數(shù)student_del( )8查找學(xué)生基本信息函數(shù)search_num ( )9錄入成績(jī)函數(shù)score_input( )
2、9修改成績(jī)函數(shù)score_edit( )9瀏覽學(xué)生成績(jī)函數(shù)browser( )103.1.9學(xué)生成績(jī)排序函數(shù)sort_it( )10第四章調(diào)試分析過(guò)程描述114.1調(diào)試過(guò)程114.2調(diào)試發(fā)現(xiàn)的問題與解決15第五章源程序代碼21參考文獻(xiàn)30摘要大作業(yè)為程序設(shè)計(jì)的第六題 “學(xué)生信息管理系統(tǒng)的設(shè)計(jì)”。在設(shè)計(jì)中用到了一個(gè)主函數(shù)和12個(gè)自定義函數(shù)。主函數(shù)實(shí)現(xiàn)了菜單操作,可根據(jù)數(shù)據(jù)的輸入,控制操作選項(xiàng)。自定義函數(shù)則完成了對(duì)數(shù)據(jù)的處理和學(xué)生管理的各種功能。如學(xué)生信息的錄入,查找,修改,成績(jī)的錄入,修改和排序,在程序設(shè)計(jì)中盡量使用模塊化,結(jié)構(gòu)化設(shè)計(jì),追求功能齊全,界面完整,簡(jiǎn)潔易讀的設(shè)計(jì)理念。但是,限于內(nèi)存局
3、限與設(shè)計(jì)時(shí)間限制,本程序的學(xué)生人數(shù)設(shè)計(jì)最大為32人,而且不具備讀取上次已錄入學(xué)生信息檔案功能。但總體來(lái)說(shuō),該程序已能滿足要求的功能需求。因?yàn)楸救藢W(xué)識(shí)有限,若有未發(fā)現(xiàn)的缺陷,敬請(qǐng)諒解第一章 綜合設(shè)計(jì)概述1.1 綜合設(shè)計(jì)名稱學(xué)生信息管理系統(tǒng)的設(shè)計(jì)1.2 任務(wù)要求學(xué)生信息包括學(xué)號(hào)、姓名、年齡、性別、電話等。試設(shè)計(jì)一學(xué)生的信息管理系統(tǒng),使之能提供以下功能:(1) 系統(tǒng)以菜單方式工作。(2) 學(xué)生信息錄入功能(學(xué)生信息用文件保存)-輸入。(3) 學(xué)生信息瀏覽功能-輸出。(4) 查詢排序功能:n 按學(xué)號(hào)查詢。n 按學(xué)號(hào)排序。n 按成績(jī)與總分排序。(5) 學(xué)生信息的刪除與修改(可選項(xiàng))。1.3 開發(fā)環(huán)境開發(fā)
4、工具為Microsoft Visual C+ 應(yīng)用平臺(tái)Windows XP32位。第二章 總體設(shè)計(jì)2.1 系統(tǒng)功能需求分析(1)建立學(xué)生信息,每個(gè)學(xué)生的信息包括:學(xué)號(hào)、姓名、年齡、性別、電話等。(2)求出每個(gè)學(xué)生的總分和平均分。(3)查找:根據(jù)學(xué)號(hào)、姓名中任一項(xiàng)查詢?cè)撋幕拘畔?。?)排序:根據(jù)學(xué)號(hào)、各科分?jǐn)?shù)或總分將學(xué)生的信息按照一定的順序進(jìn)行排序。(5)根據(jù)需要修改學(xué)生的基本信息。(6)根據(jù)實(shí)際情況注銷某生的信息。(7)根據(jù)實(shí)際情況插入某生的信息。(8)將學(xué)生信息輸出至文本文件中。2.2 系統(tǒng)總體設(shè)計(jì)框架(1)利用switch語(yǔ)句設(shè)計(jì)如圖所示的主菜單。主選單選項(xiàng)編號(hào)1輸入學(xué)
5、生信息2修改學(xué)生信息3注銷學(xué)生信息4查詢學(xué)生信息5錄入成績(jī)6修改成績(jī)7瀏覽8輸出0退出圖1 學(xué)生信息管理系統(tǒng)主菜單(2)選擇1后,調(diào)用錄入函數(shù)student_new,進(jìn)入錄入函數(shù)后利用輸入學(xué)生基本信息。(3)選項(xiàng)2后,調(diào)用修改信息函數(shù)student_edit,先進(jìn)入查找函數(shù)后查找到學(xué)生信息并進(jìn)行修改。(4)選擇3后,調(diào)用查找函數(shù)student_del,查找某個(gè)學(xué)生的信息。(5)選擇4后,調(diào)用刪除函數(shù)search_num,根據(jù)需要?jiǎng)h除某個(gè)學(xué)生的信息。(6)選擇5后,調(diào)用瀏覽函數(shù)score_input,瀏覽所有學(xué)生的信息。(7)選擇6后,調(diào)用修改成績(jī)函數(shù)score_edit,將每個(gè)學(xué)生的信息排序并
6、全部輸出。(6)選擇7后,調(diào)用瀏覽函數(shù)student_browser,瀏覽所有學(xué)生的信息。(7)選擇8后,調(diào)用輸出函數(shù)save,將每個(gè)學(xué)生的信息全部輸出。(8)選擇0后,退出學(xué)生信息管理系統(tǒng)。(9)根據(jù)所選菜單編號(hào)編寫相應(yīng)代碼。排序菜單輸入選項(xiàng)編號(hào)1按學(xué)號(hào)排序2按語(yǔ)文分?jǐn)?shù)查找3按高數(shù)分?jǐn)?shù)查找4按外語(yǔ)分?jǐn)?shù)查找5按總分查找6按平均分查找0退出圖2排序子菜單2.3 系統(tǒng)功能模塊圖及各功能模塊的目的與意義錄入學(xué)生信 息修改學(xué)生信息查 找學(xué)生信息錄入學(xué)生成績(jī)刪除學(xué)生信 息瀏覽學(xué)生成績(jī)修改學(xué)生成績(jī)主模塊修改學(xué)生信息刪除學(xué)生信 息修改學(xué)生成績(jī)按學(xué)號(hào)排序按語(yǔ)文排序按數(shù)學(xué)排序按外語(yǔ)排序按總分排序按平均分排序找
7、按學(xué)號(hào)查詢輸出至文件退出第三章詳細(xì)設(shè)計(jì)3.1 N-S流程圖3.1.1 主函數(shù)main( )主函數(shù)主要通過(guò)switch()循環(huán)語(yǔ)句,實(shí)現(xiàn)菜單界面的操作控制,并且發(fā)揮了界面友好,模塊化等特點(diǎn),追求語(yǔ)句簡(jiǎn)潔,調(diào)用簡(jiǎn)單函數(shù),通俗易懂。但是,由于switch語(yǔ)句的局限性,因而在菜單操作過(guò)程中使用了goto語(yǔ)句,這與結(jié)構(gòu)化程序設(shè)計(jì)理念相悖,也是主函數(shù)中的最大缺陷。主函數(shù)的N-S流程圖如下:3.1.2 錄入學(xué)生基本信息函數(shù)student_new( )在編寫student_new( )函數(shù)時(shí),主要設(shè)計(jì)思路就是通過(guò)判斷語(yǔ)句進(jìn)行遞歸嵌套,以此達(dá)到循環(huán)連續(xù)輸入的效果,減少了操作復(fù)雜性。錄入學(xué)生基本信息函數(shù)N-S流程
8、圖如下:當(dāng)N輸入錯(cuò)誤!);return_confirm();修改后代碼:scanf(%d,&s0);if (s0=1)student_add();else if(s0=0) return_confirm(); else printf(nntt 輸入錯(cuò)誤!);return_confirm();(2) 修改學(xué)生成績(jī)score_edit函數(shù),在執(zhí)行時(shí)學(xué)號(hào)不存在時(shí)仍然修改問題原代碼:if(n=student_search()!=-1) printf(tt 語(yǔ)文:%d 數(shù)學(xué):%d 英語(yǔ):%dn,studentsn.chinese,studentsn.math,studentsn.english);pri
9、ntf(tt 請(qǐng)重新輸入成績(jī):nntt 語(yǔ)文:);scanf(%d,&studentsn.chinese);printf(tt 數(shù)學(xué):);scanf(%s,&studentsn.math);printf(tt 英語(yǔ):);scanf(%d,&studentsn.english);return_confirm(); 修改后代碼:if(n=student_search()!=-1&n!=33) printf(tt 語(yǔ)文:%d 數(shù)學(xué):%d 英語(yǔ):%dn,studentsn.chinese,studentsn.math,studentsn.english);printf(tt 請(qǐng)重新輸入成績(jī):nntt
10、語(yǔ)文:);scanf(%d,&studentsn.chinese);printf(tt 數(shù)學(xué):);scanf(%s,&studentsn.math);printf(tt 英語(yǔ):);scanf(%d,&studentsn.english);return_confirm();if(n=33)return_confirm();(3) 瀏覽函數(shù)中由于學(xué)號(hào)太長(zhǎng)而引起的打印不齊問題原代碼:sort_it(1); while(1)page_title(tt - *瀏覽*);printf(按數(shù)字鍵選擇排序方式或按 0 返回n);printf(學(xué)號(hào)-1tt姓名tt年齡t語(yǔ)文-2t數(shù)學(xué)-3t英語(yǔ)-4t總分-5n)
11、;for(n=0;n32;n+)if(INDEXn!=-1)x=INDEXn;printf(%dtt%stt,studentsx.num,);printf(%dt%dt,studentsx.age,studentsx.chinese);printf(%dt%dt,studentsx.math,studentsx.english);printf(%dn,studentsx.chinese+studentsx.math+studentsx.english);修改后代碼:sort_it(1);while(1)page_title(tt - *瀏覽* -);printf(按
12、數(shù)字鍵選擇排序方式或按 0 返回n);printf(t學(xué)號(hào)-1| 姓名| 年齡| 語(yǔ)文-2| 數(shù)學(xué)-3| 英語(yǔ)-4| 總分-5| 平均分-6|n);for(n=0;n請(qǐng)用數(shù)字鍵選擇科目nntt 1-語(yǔ)文 2-數(shù)學(xué) 3-英語(yǔ)nnntt );scanf(%d,&s);for(n=0;n輸入錯(cuò)誤!tt nn);break;if(studentsn.num!=0) printf(tt 學(xué)號(hào):%dntt 姓名:%sntt 成績(jī):,studentsn.num,);scanf(%d,&t);printf(n);switch(s)case 1 : studentsn.chinese
13、=t;break;case 2 : studentsn.math=t;break;case 3 : studentsn.english=t;break; printf(tt 若需繼續(xù)錄入,請(qǐng)按1,退出錄入請(qǐng)按0.nnntt );scanf(%d,&s1);if (s1=1)score_input();else if(s1=0) return_confirm(); else printf(nntt 輸入錯(cuò)誤!);return_confirm();修改后代碼:printf(ntt 請(qǐng)用數(shù)字鍵選擇科目nntt 1-語(yǔ)文 2-數(shù)學(xué) 3-英語(yǔ)nnntt );scanf(%d,&s);for(n=0;n輸
14、入錯(cuò)誤!tt nn);break;if(studentsn.num!=0) printf(tt 學(xué)號(hào):%dntt 姓名:%sntt 成績(jī):,studentsn.num,);scanf(%d,&t);printf(n);switch(s)case 1 : studentsn.chinese=t;break;case 2 : studentsn.math=t;break;case 3 : studentsn.english=t;break; printf(tt 若需繼續(xù)錄入,請(qǐng)按1,退出錄入請(qǐng)按0.nnntt );scanf(%d,&s1);if (s1=1)score
15、_input();else if(s1=0) return_confirm(); else printf(nntt 輸入錯(cuò)誤!);return_confirm();第五章源程序代碼/*學(xué)生成績(jī)管理系統(tǒng) 劉興*/*microsoft visual C+ 6.0 下編譯通過(guò)*/#include #include #include /用于動(dòng)態(tài)單元分配,如malloc(),calloc(),rand()等#include /字符串輸入輸出,如出現(xiàn)getch(),clrscr()等#define N 32;int INDEX32;/定義學(xué)生信息數(shù)組,學(xué)生數(shù)目最大為32/*定義學(xué)生信息結(jié)構(gòu)體*/struc
16、t STUDENT int num,age,chinese,math,english; char name21,sex16,tele20;students32;/結(jié)構(gòu)體變量為數(shù)組students,數(shù)目為32/*打印標(biāo)題函數(shù)*/void page_title(char *menu_item) system(cls);/清屏,包含于conio,h函數(shù)中 printf(* 歡迎進(jìn)入學(xué)生信息管理系統(tǒng) 按任意鍵返回nn);getch(); /*操作完成后的返回函數(shù)*/void return_con(void) printf(ntt 按回車進(jìn)行下步 nn);getch(); /*錄入學(xué)生基本信息函數(shù)*/v
17、oid student_add(void) int s0; int n; page_title(tt - *錄入學(xué)生基本信息* -); for(n=0;n學(xué)號(hào):); scanf(%d,&studentsn.num); printf(tt 姓名:); scanf(%s,&);printf(tt 年齡:); scanf(%d,&studentsn.age);printf(tt 性別:); scanf(%s,&studentsn.sex);printf(tt 電話:); scanf(%s,&studentsn.tele);break;printf(nntt 如需繼續(xù)請(qǐng)按1
18、,返回請(qǐng)按0.nnnntt );/次步驟方便了學(xué)生信息的連續(xù)錄入scanf(%d,&s0); if (s0=1)student_add(); else if(s0=0) return_confirm(); else printf(nntt 輸入錯(cuò)誤!);return_confirm();/*查找學(xué)生檔案函數(shù)*/int student_search(void) int n,i;printf(tt - *請(qǐng)輸入學(xué)生學(xué)號(hào)* -nnntt 學(xué)號(hào):);scanf(%d,&i);for(n=0;n姓名:%sn,);printf(tt 年齡:%dn,studentsn.age);
19、printf(tt 性別:%sn,studentsn.sex);printf(tt 電話:%sn,studentsn.tele); if (studentsn.chinese=0) printf(tt 語(yǔ)文:%sn,尚未錄入);else printf(tt 語(yǔ)文:%dn,studentsn.chinese);if (studentsn.math=0) printf(tt 數(shù)學(xué):%sn,尚未錄入);else printf(tt 數(shù)學(xué):%dn,studentsn.math);if (studentsn.english=0) printf(tt 英語(yǔ):%sn,尚未錄入);else printf(tt
20、 英語(yǔ):%dn,studentsn.english);return_con();return n;printf(ntt 輸入錯(cuò)誤或?qū)W號(hào)不存在.n);return_con();return 33; /*注銷學(xué)生基本信息函數(shù)*/void student_delete(void) int n;page_title(tt - *注銷學(xué)生基本信息* -);if(n=student_search()!=-1) studentsn.num=0;printf(ntt 該學(xué)生已注銷.n);return_confirm(); /*修改學(xué)生基本信息函數(shù)*/void student_edit(void) int n;
21、page_title(tt - *查找學(xué)生基本信息* -);n=student_search();if(n!=33)printf(ntt 請(qǐng)重新輸入新信息:ntt 學(xué)號(hào):);scanf(%d,&studentsn.num);printf(tt 姓名:);scanf(%s,&);printf(tt 年齡:);scanf(%d,&studentsn.age); printf(tt 性別:);scanf(%s,&studentsn.sex);printf(tt 電話:);scanf(%s,&studentsn.tele);return_confirm(); /錄入成績(jī)函數(shù)
22、void score_input(void) int s1;int s,n,t;page_title(tt - *錄入成績(jī)* -);printf(ntt 請(qǐng)用數(shù)字鍵選擇科目nntt 1-語(yǔ)文 2-數(shù)學(xué) 3-英語(yǔ)nnntt );scanf(%d,&s);for(n=0;n輸入錯(cuò)誤!tt nn);break;if(studentsn.num!=0) printf(tt 學(xué)號(hào):%dntt 姓名:%sntt 成績(jī):,studentsn.num,);scanf(%d,&t);printf(n);switch(s)case 1 : studentsn.chinese=t;bre
23、ak;case 2 : studentsn.math=t;break;case 3 : studentsn.english=t;break; printf(tt 若需繼續(xù)錄入,請(qǐng)按1,退出錄入請(qǐng)按0.nnntt );scanf(%d,&s1);if (s1=1)score_input();else if(s1=0) return_confirm(); else printf(nntt 輸入錯(cuò)誤!);return_confirm(); /*修改成績(jī)函數(shù)*/void score_edit(void) int n;page_title(tt - *修改成績(jī)* -);if(n=student_sear
24、ch()!=-1&n!=33) printf(tt 語(yǔ)文:%d 數(shù)學(xué):%d 英語(yǔ):%dn,studentsn.chinese,studentsn.math,studentsn.english);printf(tt 請(qǐng)重新輸入成績(jī):nntt 語(yǔ)文:);scanf(%d,&studentsn.chinese);printf(tt 數(shù)學(xué):);scanf(%s,&studentsn.math);printf(tt 英語(yǔ):);scanf(%d,&studentsn.english);/return_confirm();if(n=33)return_confirm(); /*學(xué)生成績(jī)排序函數(shù)*/void
25、sort_it(char nn) int n,m,p,x,t32;for(n=0;n32;n+)switch(nn)/不同排序方式的選擇結(jié)構(gòu)case 1 : tn=studentsn.num;break;case 2 : tn=studentsn.chinese;break;case 3 : tn=studentsn.math;break;case 4 : tn=studentsn.english;break;case 5 : tn=studentsn.chinese+studentsn.math+studentsn.english;break;case 6 : tn=(studentsn.c
26、hinese+studentsn.math+studentsn.english)/5;break;for(n=0;n32;n+)/對(duì)結(jié)構(gòu)體的序號(hào)數(shù)進(jìn)行排序x=0;p=-1;for(m=0;mx)x=tm;p=m;tp=-1;INDEXn=p; /*瀏覽學(xué)生成績(jī)*/void score_browser(void) int n,x;char k;sort_it(1);/初始時(shí)按學(xué)號(hào)降序排序while(1)page_title(tt - *瀏覽* -);printf(按數(shù)字鍵選擇排序方式或按 0 返回n);printf(t學(xué)號(hào)-1| 姓名| 年齡| 語(yǔ)文-2| 數(shù)學(xué)-3| 英語(yǔ)-4| 總分-5| 平
27、均分-6|n);/提醒排序輸入的命令for(n=0;n32;n+)/循環(huán)打印學(xué)生成績(jī)if(INDEXn!=-1)x=INDEXn;printf(%14d|%10s|,studentsx.num,);printf(%5d|%7d|,studentsx.age,studentsx.chinese);printf(%7d|%7d|,studentsx.math,studentsx.english);printf(%7d|,studentsx.chinese+studentsx.math+studentsx.english);printf(%9d|n,(studentsx.chinese+studentsx.math+studentsx.english)/5);
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)包裝食品供貨合同協(xié)議
- 2025聘請(qǐng)咨詢合同范文
- 2025設(shè)備采購(gòu)租賃合同格式
- 2025居間合同有償服務(wù)的支付
- 2025租房合同備案程序及關(guān)鍵事項(xiàng)詳解
- 2025租房合同簡(jiǎn)單模板
- 工程計(jì)量與計(jì)價(jià)試題及答案
- 家具行業(yè)設(shè)計(jì)中的市場(chǎng)細(xì)分與消費(fèi)者畫像分析試題及答案
- 電商化的農(nóng)業(yè)生產(chǎn)考題及答案
- 白盒測(cè)試題及答案
- 中醫(yī)培訓(xùn)課件:《中藥熱奄包技術(shù)》
- 五年級(jí)語(yǔ)文下冊(cè)第八單元【教材解讀】
- 數(shù)字貿(mào)易學(xué) 課件 第3章 消費(fèi)互聯(lián)網(wǎng)、產(chǎn)業(yè)互聯(lián)網(wǎng)與工業(yè)互聯(lián)網(wǎng)
- 第11課+宋元時(shí)期的經(jīng)濟(jì)、科技與文化【中職專用】《中國(guó)歷史》(高教版2023基礎(chǔ)模塊)
- JTG D60-2015 公路橋涵設(shè)計(jì)通用規(guī)范
- 籃球競(jìng)賽組織編排
- 扁桃體切除術(shù)后出血原因及預(yù)防處理
- 2024年重慶江北國(guó)際機(jī)場(chǎng)有限公司招聘筆試參考題庫(kù)含答案解析
- 兒童超聲心動(dòng)圖操作指南與標(biāo)準(zhǔn)課件
- 刑事案件模擬法庭劇本完整版五篇
- 2022年高考全國(guó)I卷數(shù)學(xué)高考真題(原卷版)
評(píng)論
0/150
提交評(píng)論