




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Good is good, but better carries it.精益求精,善益求善。C語言大作業(yè)學(xué)生信息管理系統(tǒng)完稿武漢工業(yè)學(xué)院語言學(xué)院電氣與電子工程學(xué)院班級英才班1101學(xué)號111204525姓名劉興目錄TOCo1-3hzuHYPERLINKl_Toc322797995摘要PAGEREF_Toc322797995h3HYPERLINKl_Toc322797996第一章綜合設(shè)計(jì)概述PAGEREF_Toc322797996h3HYPERLINKl_Toc3227979971.1綜合設(shè)計(jì)名稱PAGEREF_Toc322797997h3HYPERLINKl_Toc3227979981.2任務(wù)
2、要求PAGEREF_Toc322797998h3HYPERLINKl_Toc3227979991.3開發(fā)環(huán)境PAGEREF_Toc322797999h4HYPERLINKl_Toc3227980001.4應(yīng)用平臺PAGEREF_Toc322798000h4HYPERLINKl_Toc322798001第二章總體設(shè)計(jì)PAGEREF_Toc322798001h4HYPERLINKl_Toc3227980022.1系統(tǒng)功能需求分析PAGEREF_Toc322798002h4HYPERLINKl_Toc3227980032.2系統(tǒng)總體設(shè)計(jì)框架PAGEREF_Toc322798003h4HYPERLIN
3、Kl_Toc3227980042.3系統(tǒng)功能模塊圖及各功能模塊的目的與意義PAGEREF_Toc322798004h6HYPERLINKl_Toc322798005第三章詳細(xì)設(shè)計(jì)PAGEREF_Toc322798005h7HYPERLINKl_Toc3227980063.1N-S流程圖PAGEREF_Toc322798006h7HYPERLINKl_Toc3227980073.1.1主函數(shù)main()PAGEREF_Toc322798007h7HYPERLINKl_Toc3227980093.1.2錄入學(xué)生基本信息函數(shù)student_new()PAGEREF_Toc322798009h8HYP
4、ERLINKl_Toc3227980103.1.3修改學(xué)生檔案函數(shù)student_edit()PAGEREF_Toc322798010h8HYPERLINKl_Toc3227980113.1.4注銷學(xué)生基本信息函數(shù)student_del()PAGEREF_Toc322798011h8HYPERLINKl_Toc3227980123.1.5查找學(xué)生基本信息函數(shù)search_num()PAGEREF_Toc322798012h9HYPERLINKl_Toc3227980133.1.6錄入成績函數(shù)score_input()PAGEREF_Toc322798013h9HYPERLINKl_Toc322
5、7980143.1.7修改成績函數(shù)score_edit()PAGEREF_Toc322798014h9HYPERLINKl_Toc3227980153.1.8瀏覽學(xué)生成績函數(shù)browser()PAGEREF_Toc322798015h10HYPERLINKl_Toc3227980163.1.9學(xué)生成績排序函數(shù)sort_it()PAGEREF_Toc322798016h10HYPERLINKl_Toc322798017第四章調(diào)試分析過程描述PAGEREF_Toc322798017h11HYPERLINKl_Toc3227980184.1調(diào)試過程PAGEREF_Toc322798018h11HYP
6、ERLINKl_Toc3227980194.2調(diào)試發(fā)現(xiàn)的問題與解決PAGEREF_Toc322798019h15HYPERLINKl_Toc322798020第五章源程序代碼PAGEREF_Toc322798020h21HYPERLINKl_Toc322798021參考文獻(xiàn)PAGEREF_Toc322798021h30摘要大作業(yè)為程序設(shè)計(jì)的第六題“學(xué)生信息管理系統(tǒng)的設(shè)計(jì)”。在設(shè)計(jì)中用到了一個主函數(shù)和12個自定義函數(shù)。主函數(shù)實(shí)現(xiàn)了菜單操作,可根據(jù)數(shù)據(jù)的輸入,控制操作選項(xiàng)。自定義函數(shù)則完成了對數(shù)據(jù)的處理和學(xué)生管理的各種功能。如學(xué)生信息的錄入,查找,修改,成績的錄入,修改和排序,在程序設(shè)計(jì)中盡量使用
7、模塊化,結(jié)構(gòu)化設(shè)計(jì),追求功能齊全,界面完整,簡潔易讀的設(shè)計(jì)理念。但是,限于內(nèi)存局限與設(shè)計(jì)時(shí)間限制,本程序的學(xué)生人數(shù)設(shè)計(jì)最大為32人,而且不具備讀取上次已錄入學(xué)生信息檔案功能。但總體來說,該程序已能滿足要求的功能需求。因?yàn)楸救藢W(xué)識有限,若有未發(fā)現(xiàn)的缺陷,敬請諒解第一章綜合設(shè)計(jì)概述綜合設(shè)計(jì)名稱學(xué)生信息管理系統(tǒng)的設(shè)計(jì)任務(wù)要求學(xué)生信息包括學(xué)號、姓名、年齡、性別、電話等。試設(shè)計(jì)一學(xué)生的信息管理系統(tǒng),使之能提供以下功能:系統(tǒng)以菜單方式工作。學(xué)生信息錄入功能(學(xué)生信息用文件保存)輸入。學(xué)生信息瀏覽功能輸出。查詢排序功能:按學(xué)號查詢。按學(xué)號排序。按成績與總分排序。學(xué)生信息的刪除與修改(可選項(xiàng))。開發(fā)環(huán)境開發(fā)工
8、具為MicrosoftVisualC+6.0.應(yīng)用平臺WindowsXP32位。第二章總體設(shè)計(jì)系統(tǒng)功能需求分析(1)建立學(xué)生信息,每個學(xué)生的信息包括:學(xué)號、姓名、年齡、性別、電話等。(2)求出每個學(xué)生的總分和平均分。(3)查找:根據(jù)學(xué)號、姓名中任一項(xiàng)查詢該生的基本信息。(4)排序:根據(jù)學(xué)號、各科分?jǐn)?shù)或總分將學(xué)生的信息按照一定的順序進(jìn)行排序。(5)根據(jù)需要修改學(xué)生的基本信息。(6)根據(jù)實(shí)際情況注銷某生的信息。(7)根據(jù)實(shí)際情況插入某生的信息。(8)將學(xué)生信息輸出至文本文件中。系統(tǒng)總體設(shè)計(jì)框架(1)利用switch語句設(shè)計(jì)如圖所示的主菜單。主選單選項(xiàng)編號1輸入學(xué)生信息2修改學(xué)生信息3注銷學(xué)生信息4
9、查詢學(xué)生信息5錄入成績6修改成績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,查找某個學(xué)生的信息。(5)選擇4后,調(diào)用刪除函數(shù)search_num,根據(jù)需要刪除某個學(xué)生的信息。(6)選擇5后,調(diào)用瀏覽函數(shù)score_input,瀏覽所有學(xué)生的信息。(7)選擇6后,調(diào)用修改成績函數(shù)score_edit,將每個學(xué)生的信息排序并全部輸出。(6)選擇7后,調(diào)用瀏覽函數(shù)
10、student_browser,瀏覽所有學(xué)生的信息。(7)選擇8后,調(diào)用輸出函數(shù)save,將每個學(xué)生的信息全部輸出。(8)選擇0后,退出學(xué)生信息管理系統(tǒng)。(9)根據(jù)所選菜單編號編寫相應(yīng)代碼。排序菜單輸入選項(xiàng)編號1按學(xué)號排序2按語文分?jǐn)?shù)查找3按高數(shù)分?jǐn)?shù)查找4按外語分?jǐn)?shù)查找5按總分查找6按平均分查找0退出圖2排序子菜單系統(tǒng)功能模塊圖及各功能模塊的目的與意義錄入學(xué)生信息修改學(xué)生信息查找學(xué)生信息錄入學(xué)生成績刪除學(xué)生信息瀏覽學(xué)生成績修改學(xué)生成績主模塊修改學(xué)生信息刪除學(xué)生信息修改學(xué)生成績按學(xué)號排序按語文排序按數(shù)學(xué)排序按外語排序按總分排序按平均分排序找按學(xué)號查詢輸出至文件退出第三章詳細(xì)設(shè)計(jì)N-S流程圖主函數(shù)
11、main()主函數(shù)主要通過switch()循環(huán)語句,實(shí)現(xiàn)菜單界面的操作控制,并且發(fā)揮了界面友好,模塊化等特點(diǎn),追求語句簡潔,調(diào)用簡單函數(shù),通俗易懂。但是,由于switch語句的局限性,因而在菜單操作過程中使用了goto語句,這與結(jié)構(gòu)化程序設(shè)計(jì)理念相悖,也是主函數(shù)中的最大缺陷。主函數(shù)的N-S流程圖如下:錄入學(xué)生基本信息函數(shù)student_new()在編寫student_new()函數(shù)時(shí),主要設(shè)計(jì)思路就是通過判斷語句進(jìn)行遞歸嵌套,以此達(dá)到循環(huán)連續(xù)輸入的效果,減少了操作復(fù)雜性。錄入學(xué)生基本信息函數(shù)N-S流程圖如下:當(dāng)N輸入錯誤!);return_confirm();修改后代碼:scanf(%d,&s
12、0);if(s0=1)student_add();elseif(s0=0)return_confirm();elseprintf(nntt輸入錯誤!);return_confirm();修改學(xué)生成績score_edit函數(shù),在執(zhí)行時(shí)學(xué)號不存在時(shí)仍然修改問題原代碼:if(n=student_search()!=-1)printf(tt語文:%d數(shù)學(xué):%d英語:%dn,studentsn.chinese,studentsn.math,studentsn.english);printf(tt請重新輸入成績:nntt語文:);scanf(%d,&studentsn.chinese);printf(tt
13、數(shù)學(xué):);scanf(%s,&studentsn.math);printf(tt英語:);scanf(%d,&studentsn.english);return_confirm();修改后代碼:if(n=student_search()!=-1&n!=33)printf(tt語文:%d數(shù)學(xué):%d英語:%dn,studentsn.chinese,studentsn.math,studentsn.english);printf(tt請重新輸入成績:nntt語文:);scanf(%d,&studentsn.chinese);printf(tt數(shù)學(xué):);scanf(%s,&studentsn.math
14、);printf(tt英語:);scanf(%d,&studentsn.english);return_confirm();if(n=33)return_confirm();瀏覽函數(shù)中由于學(xué)號太長而引起的打印不齊問題原代碼:sort_it(1);while(1)page_title(tt-*瀏覽*);printf(按數(shù)字鍵選擇排序方式或按0返回n);printf(學(xué)號-1tt姓名tt年齡t語文-2t數(shù)學(xué)-3t英語-4t總分-5n);for(n=0;n32;n+)if(INDEXn!=-1)x=INDEXn;printf(%dtt%stt,studentsx.num,
15、);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(按數(shù)字鍵選擇排序方式或按0返回n);printf(t學(xué)號-1|姓名|年齡|語文-2|數(shù)學(xué)-3|英語-4|總分-5|平均分-6|n);for(n=0;n請用數(shù)字鍵選擇科目nnt
16、t1-語文2-數(shù)學(xué)3-英語nnntt);scanf(%d,&s);for(n=0;n輸入錯誤!ttnn);break;if(studentsn.num!=0)printf(tt學(xué)號:%dntt姓名:%sntt成績:,studentsn.num,);scanf(%d,&t);printf(n);switch(s)case1:studentsn.chinese=t;break;case2:studentsn.math=t;break;case3:studentsn.english=t;break;printf(tt若需繼續(xù)錄入,請按1,退出錄入請按0.nnntt);sc
17、anf(%d,&s1);if(s1=1)score_input();elseif(s1=0)return_confirm();elseprintf(nntt輸入錯誤!);return_confirm();修改后代碼:printf(ntt請用數(shù)字鍵選擇科目nntt1-語文2-數(shù)學(xué)3-英語nnntt);scanf(%d,&s);for(n=0;n輸入錯誤!ttnn);break;if(studentsn.num!=0)printf(tt學(xué)號:%dntt姓名:%sntt成績:,studentsn.num,);scanf(%d,&t);printf(n);switch(s)
18、case1:studentsn.chinese=t;break;case2:studentsn.math=t;break;case3:studentsn.english=t;break;printf(tt若需繼續(xù)錄入,請按1,退出錄入請按0.nnntt);scanf(%d,&s1);if(s1=1)score_input();elseif(s1=0)return_confirm();elseprintf(nntt輸入錯誤!);return_confirm();第五章源程序代碼/*學(xué)生成績管理系統(tǒng)劉興*/*microsoftvisualC+6.0下編譯通過*/#include#include#i
19、nclude/用于動態(tài)單元分配,如malloc(),calloc(),rand()等#include/字符串輸入輸出,如出現(xiàn)getch(),clrscr()等#defineN32;intINDEX32;/定義學(xué)生信息數(shù)組,學(xué)生數(shù)目最大為32/*定義學(xué)生信息結(jié)構(gòu)體*/structSTUDENTintnum,age,chinese,math,english;charname21,sex16,tele20;students32;/結(jié)構(gòu)體變量為數(shù)組students,數(shù)目為32/*打印標(biāo)題函數(shù)*/voidpage_title(char*menu_item)system(cls);/清屏,包含于conio
20、,h函數(shù)中printf(*歡迎進(jìn)入學(xué)生信息管理系統(tǒng)按任意鍵返回nn);getch();/*操作完成后的返回函數(shù)*/voidreturn_con(void)printf(ntt按回車進(jìn)行下步nn);getch();/*錄入學(xué)生基本信息函數(shù)*/voidstudent_add(void)ints0;intn;page_title(tt-*錄入學(xué)生基本信息*-);for(n=0;n學(xué)號:);scanf(%d,&studentsn.num);printf(tt姓名:);scanf(%s,&);printf(tt年齡:);scanf(%d,&studentsn.age);pri
21、ntf(tt性別:);scanf(%s,&studentsn.sex);printf(tt電話:);scanf(%s,&studentsn.tele);break;printf(nntt如需繼續(xù)請按1,返回請按0.nnnntt);/次步驟方便了學(xué)生信息的連續(xù)錄入scanf(%d,&s0);if(s0=1)student_add();elseif(s0=0)return_confirm();elseprintf(nntt輸入錯誤!);return_confirm();/*查找學(xué)生檔案函數(shù)*/intstudent_search(void)intn,i;printf(tt-*請輸入學(xué)生學(xué)號*-nnn
22、tt學(xué)號:);scanf(%d,&i);for(n=0;n姓名:%sn,);printf(tt年齡:%dn,studentsn.age);printf(tt性別:%sn,studentsn.sex);printf(tt電話:%sn,studentsn.tele);if(studentsn.chinese=0)printf(tt語文:%sn,尚未錄入);elseprintf(tt語文:%dn,studentsn.chinese);if(studentsn.math=0)printf(tt數(shù)學(xué):%sn,尚未錄入);elseprintf(tt數(shù)學(xué):%dn,students
23、n.math);if(studentsn.english=0)printf(tt英語:%sn,尚未錄入);elseprintf(tt英語:%dn,studentsn.english);return_con();returnn;printf(ntt輸入錯誤或?qū)W號不存在.n);return_con();return33;/*注銷學(xué)生基本信息函數(shù)*/voidstudent_delete(void)intn;page_title(tt-*注銷學(xué)生基本信息*-);if(n=student_search()!=-1)studentsn.num=0;printf(ntt該學(xué)生已注銷.n);return_co
24、nfirm();/*修改學(xué)生基本信息函數(shù)*/voidstudent_edit(void)intn;page_title(tt-*查找學(xué)生基本信息*-);n=student_search();if(n!=33)printf(ntt請重新輸入新信息:ntt學(xué)號:);scanf(%d,&studentsn.num);printf(tt姓名:);scanf(%s,&);printf(tt年齡:);scanf(%d,&studentsn.age);printf(tt性別:);scanf(%s,&studentsn.sex);printf(tt電話:);scanf(%s,&st
25、udentsn.tele);return_confirm();/錄入成績函數(shù)voidscore_input(void)ints1;ints,n,t;page_title(tt-*錄入成績*-);printf(ntt請用數(shù)字鍵選擇科目nntt1-語文2-數(shù)學(xué)3-英語nnntt);scanf(%d,&s);for(n=0;n輸入錯誤!ttnn);break;if(studentsn.num!=0)printf(tt學(xué)號:%dntt姓名:%sntt成績:,studentsn.num,);scanf(%d,&t);printf(n);switch(s)case1:stude
26、ntsn.chinese=t;break;case2:studentsn.math=t;break;case3:studentsn.english=t;break;printf(tt若需繼續(xù)錄入,請按1,退出錄入請按0.nnntt);scanf(%d,&s1);if(s1=1)score_input();elseif(s1=0)return_confirm();elseprintf(nntt輸入錯誤!);return_confirm();/*修改成績函數(shù)*/voidscore_edit(void)intn;page_title(tt-*修改成績*-);if(n=student_search()
27、!=-1&n!=33)printf(tt語文:%d數(shù)學(xué):%d英語:%dn,studentsn.chinese,studentsn.math,studentsn.english);printf(tt請重新輸入成績:nntt語文:);scanf(%d,&studentsn.chinese);printf(tt數(shù)學(xué):);scanf(%s,&studentsn.math);printf(tt英語:);scanf(%d,&studentsn.english);/return_confirm();if(n=33)return_confirm();/*學(xué)生成績排序函數(shù)*/voidsort_it(charnn
28、)intn,m,p,x,t32;for(n=0;n32;n+)switch(nn)/不同排序方式的選擇結(jié)構(gòu)case1:tn=studentsn.num;break;case2:tn=studentsn.chinese;break;case3:tn=studentsn.math;break;case4:tn=studentsn.english;break;case5:tn=studentsn.chinese+studentsn.math+studentsn.english;break;case6:tn=(studentsn.chinese+studentsn.math+studentsn.eng
29、lish)/5;break;for(n=0;n32;n+)/對結(jié)構(gòu)體的序號數(shù)進(jìn)行排序x=0;p=-1;for(m=0;mx)x=tm;p=m;tp=-1;INDEXn=p;/*瀏覽學(xué)生成績*/voidscore_browser(void)intn,x;chark;sort_it(1);/初始時(shí)按學(xué)號降序排序while(1)page_title(tt-*瀏覽*-);printf(按數(shù)字鍵選擇排序方式或按0返回n);printf(t學(xué)號-1|姓名|年齡|語文-2|數(shù)學(xué)-3|英語-4|總分-5|平均分-6|n);/提醒排序輸入的命令for(n=0;n32;n+)/循環(huán)打印學(xué)生成績if(INDEXn!=-1)x=INDEXn;printf(%14d|%10s|,studentsx.num,);printf(%5d|%7d|,studentsx.age,studentsx.chinese);pr
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程計(jì)量與計(jì)價(jià)試題及答案
- 家具行業(yè)設(shè)計(jì)中的市場細(xì)分與消費(fèi)者畫像分析試題及答案
- 電商化的農(nóng)業(yè)生產(chǎn)考題及答案
- 白盒測試題及答案
- 2025年度企業(yè)安全生產(chǎn)知識競賽題庫及答案(共150題)
- 新能源汽車電動化轉(zhuǎn)型的技術(shù)模式試題及答案
- 教師與學(xué)生互動2025年商務(wù)英語試題及答案
- 物理定理應(yīng)用題及答案2025年
- 2025臨床醫(yī)學(xué)筆試題及答案
- 城市公共停車場建設(shè)2025年社會穩(wěn)定風(fēng)險(xiǎn)評估與停車產(chǎn)業(yè)創(chuàng)新驅(qū)動報(bào)告
- 冠脈介入新技術(shù)
- GB/T 17241.1-1998鑄鐵管法蘭類型
- 繩據(jù)法鋼筋混凝土護(hù)欄切割破除方案計(jì)劃
- 高壓開關(guān)柜基礎(chǔ)知識培訓(xùn)課件
- 企業(yè)臨時(shí)用工合同范本(5篇)
- 2023年武漢民政職業(yè)學(xué)院單招考試面試模擬試題及答案解析
- 中國軍事發(fā)展簡述課件
- 碧桂園物業(yè)案場私宴接待操作規(guī)程
- 核醫(yī)學(xué)工作中輻射防護(hù)課件
- GB-T 1040.2-2022 塑料 拉伸性能的測定 第2部分:模塑和擠塑塑料的試驗(yàn)條件
- 廣東開放大學(xué)計(jì)算機(jī)應(yīng)用技術(shù)(互聯(lián)網(wǎng)營銷)專業(yè)畢業(yè)設(shè)計(jì)0
評論
0/150
提交評論