版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、題目:新生報(bào)到系統(tǒng)一、課程設(shè)計(jì)時(shí)間 201011第2學(xué)期第15周,即6月13日6月17日,共計(jì)1周,20學(xué)時(shí)。二、課程設(shè)計(jì)內(nèi)容 用c語言編寫軟件完成以下任務(wù):(1) 錄入新生的信息(學(xué)號、姓名、來自省份、專業(yè)、高考分?jǐn)?shù)),并保存到磁盤文件中;(2) 新生報(bào)到簽到;(3) 轉(zhuǎn)專業(yè);(4) 查詢統(tǒng)計(jì):可以按專業(yè)或來自省份查詢符合條件的所有學(xué)生;(5) 退出。三、課程設(shè)計(jì)要求1. 程序質(zhì)量:l 貫徹結(jié)構(gòu)化的程序設(shè)計(jì)思想。l 用戶界面友好,功能明確,操作方便,用戶界面中的菜單至少應(yīng)包括“新生信息錄入”、“新生報(bào)到”、“轉(zhuǎn)專業(yè)”、“查詢統(tǒng)計(jì)”等選項(xiàng)。l 代碼應(yīng)適當(dāng)縮進(jìn),并給出必要的注釋,以增強(qiáng)程序的可讀
2、性。2. 課程設(shè)計(jì)說明書:課程結(jié)束后,上交課程設(shè)計(jì)說明書和源程序。課程設(shè)計(jì)說明書的格式和內(nèi)容參見提供的模板。四、指導(dǎo)教師和學(xué)生簽字指導(dǎo)教師:_ 學(xué)生簽名:_五、成績六、教師評語沈陽航空航天大學(xué)設(shè)計(jì)用紙 目錄一、需求分析1二、設(shè)計(jì)分析2三、主要界面截圖9四、技術(shù)要點(diǎn)12五、個人總結(jié)14六、參考文獻(xiàn)15七、源程序1626沈陽航空航天大學(xué)設(shè)計(jì)用紙一、需求分析根據(jù)任務(wù)書給定的“課程設(shè)計(jì)內(nèi)容”和“課程設(shè)計(jì)要求”作如下的需求分析。該系統(tǒng)是一個較典型的數(shù)據(jù)管理系統(tǒng),其使用者被假定為某辦公室的新生報(bào)到的管理人員,系統(tǒng)應(yīng)該具有準(zhǔn)確、穩(wěn)定、功能齊全的特點(diǎn)。1.準(zhǔn)確性分析:系統(tǒng)管理的數(shù)據(jù)涉及到學(xué)院的所有同學(xué),數(shù)據(jù)量
3、較大且是一種基礎(chǔ)性數(shù)據(jù),能夠?yàn)槠渌矫娴膶W(xué)生管理工作提供重要參考,所以該程序錄入的信息必須準(zhǔn)確,該程序錄入信息后,一定要查詢錄入是否準(zhǔn)確,然后才能進(jìn)行任何步驟,這樣就確保了錄入信息的準(zhǔn)確性。 2. 穩(wěn)定性分析:指系統(tǒng)比較健壯,只要是用戶的合理操作,系統(tǒng)都應(yīng)給出合理正確的回應(yīng),而不是出現(xiàn)令用戶感到意外的系統(tǒng)錯誤或系統(tǒng)崩潰。3. 主要功能分析:(1)數(shù)據(jù)輸入:允許用戶輸入學(xué)號、姓名、專業(yè)、省份、高考分?jǐn)?shù)。(2)數(shù)據(jù)保存:對于輸入的數(shù)據(jù),或被修改的數(shù)據(jù)應(yīng)該保存到某個磁盤文件中,實(shí)現(xiàn)永久存儲。文件的具體格式題目未作具體要求,所以可采用隨機(jī)文件,也可采用文本文件。不管采用哪種文件形式,文件中的數(shù)據(jù)應(yīng)有固
4、定的格式,以便于程序自動讀取或人工閱讀。(3)數(shù)據(jù)查詢:用戶輸入查詢條件,系統(tǒng)規(guī)則地在界面顯示查詢結(jié)果,且顯示的數(shù)據(jù)盡量全面。當(dāng)輸入省份時(shí),可查詢到該學(xué)生的學(xué)號、姓名、高考成績、到?jīng)]到校、專業(yè);當(dāng)輸入專業(yè)時(shí),可查詢到匹配的學(xué)生名單和信息。二、設(shè)計(jì)分析本程序主要由五個自定義函數(shù)和一個主函數(shù)組成,其中主函數(shù)以菜單的形式調(diào)用其他函數(shù)來實(shí)現(xiàn)要求的所有功能。在這些函數(shù)當(dāng)中,錄入信息函數(shù)、新生報(bào)到函數(shù),轉(zhuǎn)專業(yè)函數(shù)和查詢函數(shù)是程序中較為核心的部分,下面分別進(jìn)行說明。1、 錄入信息函數(shù):定義一個文件型指針變量fp,用(fp=fopen(stud.dat,wb)=null,若不能打開,輸出(“不能打開文件”)從
5、磁盤文件中讀入新生的信息,并輸入到結(jié)構(gòu)體studi中,再經(jīng)結(jié)構(gòu)體studi和指針fp傳遞到磁盤文件中,實(shí)現(xiàn)文件的錄入和保存。2、 新生報(bào)到函數(shù):確立循環(huán)次數(shù),再令用戶輸入報(bào)到學(xué)生的學(xué)號,用strcmp( )函數(shù)對用戶輸入學(xué)生學(xué)號與讀入到結(jié)構(gòu)體studi中成員學(xué)號進(jìn)行比較,若相同,則報(bào)到成功(輸出1)。3、 學(xué)生轉(zhuǎn)專業(yè)函數(shù): 學(xué)生轉(zhuǎn)專業(yè)函數(shù)的功能是對學(xué)生信息進(jìn)行修改,首先輸入修改的學(xué)生學(xué)號,并且讀取文件信息,判斷學(xué)號是否相同,當(dāng)學(xué)號相同時(shí),重新輸入學(xué)生信息。并且把信息保存到文件中。4、 查詢統(tǒng)計(jì)函數(shù):輸入查詢的專業(yè)或省份,用while循環(huán)實(shí)現(xiàn)查詢。輸入i=0,i增至100,就結(jié)束循環(huán)。輸入省份或
6、專業(yè)就可以查詢出符合條件的學(xué)生。5、 主函數(shù):輸出菜單,并用switch語句定義了5個分支,實(shí)現(xiàn)多功能結(jié)構(gòu)的選擇。除上面介紹的功能之外,程序還具有退出功能,可以在程序的一次運(yùn)行當(dāng)中循環(huán)執(zhí)行所有的功能,并根據(jù)需要終止程序的執(zhí)行。1、 程序整體流程圖 圖一 整體結(jié)構(gòu)圖2、錄入學(xué)生信息流程圖在學(xué)號處加over圖二 錄入學(xué)生信息流程圖3新生報(bào)到簽到流程圖新 生 報(bào) 到定義文件類型指針 定義整形變量 i=0 輸入一個學(xué)生的信息 、dao為 1、i自增1i小于100進(jìn)行循環(huán)關(guān)閉文件,并且把學(xué)生信息輸出到屏幕上 清 屏 退 出while 圖三 新生報(bào)到簽到流程圖4轉(zhuǎn)專業(yè)流程圖 圖四 轉(zhuǎn)專業(yè)流程圖 5查詢統(tǒng)計(jì)
7、流程圖圖五 查詢統(tǒng)計(jì)流程圖三、主要界面截圖 圖一 程序主界面截圖圖二 錄入學(xué)生信息截圖 圖三 新生報(bào)到截圖 圖四 轉(zhuǎn)專業(yè)截圖 圖五 按專業(yè)查詢截圖 圖六 按省份查詢截圖 圖七 退出截圖四、技術(shù)要點(diǎn)1、結(jié)構(gòu)體的應(yīng)用定義了結(jié)構(gòu)體用來描述學(xué)生的姓名、學(xué)號、專業(yè)、省份、高考分?jǐn)?shù)。具體的定義如下:char sno12; char name10; char home20; char sc20; int bcome; float score;所定義的結(jié)構(gòu)體主要用于定義數(shù)組。2、文件操作包括了文件的寫入和讀取兩個方面。文件的寫入操作,用于保存錄入的學(xué)生數(shù)據(jù),也用于保存所修改的數(shù)據(jù)。例如如下程序段用于保存錄入的
8、學(xué)生信息:void write() int i=0; file *fp;if(fp=fopen(stud.dat,wb)=null) printf(文件打開失敗!); exit(0);while(tempi.sno!=null) fwrite(&tempi,sizeof(temp),1,fp); i+ ; 3、關(guān)于程序詳細(xì)說明 (1)學(xué)生信息錄入:定義一個文件型指針變量fp,從磁盤文件中讀入新生的信息,并輸入到結(jié)構(gòu)體studi中,再經(jīng)結(jié)構(gòu)體studi和指針fp傳遞到磁盤文件中,實(shí)現(xiàn)文件的錄入和保存。(2)新生報(bào)到:程序的主要內(nèi)容是根據(jù)錄入的學(xué)生信息,先判斷文件是否能打開,如能打開文件,然后通過
9、輸入學(xué)生學(xué)號,實(shí)現(xiàn)新生報(bào)到,成功報(bào)到,用fwrite儲存在磁盤文件中。(3)轉(zhuǎn)專業(yè):學(xué)生轉(zhuǎn)專業(yè)函數(shù)的功能是對學(xué)生信息進(jìn)行修改,首先輸入修改的學(xué)生學(xué)號,并且讀取文件信息,判斷學(xué)號是否相同,當(dāng)學(xué)號相同時(shí),重新輸入學(xué)生信息。并且把信息保存到磁盤文件中。(4)查詢:實(shí)現(xiàn)從系統(tǒng)中查詢專業(yè)與省份的相關(guān)信息,其實(shí)質(zhì)是對數(shù)組某個或某些元素的查詢操作。對數(shù)組元素的查詢,用while循環(huán)實(shí)現(xiàn)查詢,把查詢的結(jié)果顯示出來,這就實(shí)現(xiàn)了查詢功能。(5)退出:只要輸入服務(wù)類型5,按回車,然后按任意鍵就可以退出。五、個人總結(jié) 一周的c語言課設(shè)結(jié)束了,我學(xué)到了很多知識,積累了很多經(jīng)驗(yàn),我通過這次課設(shè)從新復(fù)習(xí)了c語言,發(fā)現(xiàn)編程并
10、不是那么簡單,而最難的就要數(shù)調(diào)試了,無論多么小的錯誤都可能是程序運(yùn)行出錯,我就是因?yàn)橥右粋€括號,我整整用了一個多點(diǎn)才找出這個錯誤,真讓我哭笑不得,這次c語言課程設(shè)計(jì)還消除了我對c語言的錯誤認(rèn)識,以前認(rèn)為c語言就是簡單的學(xué)科,其實(shí)不然,通過這次c語課程設(shè)計(jì),使我加深了對c語言的了解,也提高了c語言的應(yīng)用能力。在多次查書翻資料請教老師同學(xué)之后,使我能夠完成整個任務(wù).這次課設(shè)使我熟練掌握知識的同時(shí)還增強(qiáng)了我的動手能力,使我受益終生。此程序的優(yōu)點(diǎn):儲存數(shù)據(jù)大,查詢功能強(qiáng)大,錄入信息不能更改,保證安全性,且先錄入學(xué)生信息,然后一定要查詢看看錄入沒有,然后才可以執(zhí)行任何步驟(1至5都可),保證準(zhǔn)確性。缺
11、點(diǎn):程序中有些沒用的重復(fù)語句,程序步驟較復(fù)雜,應(yīng)簡化些。六、參考文獻(xiàn)1. 譚浩強(qiáng)c程序設(shè)計(jì)北京:清華大學(xué)出版社,20052. 劉成等c語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)與習(xí)題集北京:中國鐵道出版社,20063.袁蒲佳,唐謙等 c語言程序設(shè)計(jì) 華中科技大學(xué)出版社,2007年1月七、源程序#include#include#include#include#define n 100struct stud char sno12; char name10; char home20; char sc20; int bcome; float score;stud tempn;int number=0;/輸入 學(xué)生信息/in
12、t input() stud temp; file *fp; printf(輸入學(xué)生信息:(輸入結(jié)束在學(xué)號處輸over)n);if(fp=fopen(stud.dat,wb)=null) printf(文件打開失??!); exit(0); while(1) printf(輸入學(xué)生學(xué)號:); scanf(%s,temp.sno); if(!strcmp(temp.sno,over) fclose(fp);return 0; printf(輸入學(xué)生姓名:); scanf(%s,); printf(輸入學(xué)生來自省份:); scanf(%s,temp.home); printf(輸入
13、學(xué)生專業(yè):); scanf(%s,temp.sc); printf(輸入高考分?jǐn)?shù):); scanf(%f,&temp.score); temp.bcome=0; fwrite(&temp,sizeof(temp),1,fp); fclose(fp);/void write() int i=0; file *fp;if(fp=fopen(stud.dat,wb)=null) printf(文件打開失??!); exit(0);while(tempi.sno!=null) fwrite(&tempi,sizeof(temp),1,fp); i+ ;/改變專業(yè)void change() file *f
14、p;printf(輸入新到學(xué)生的學(xué)生號:);char buffer_no12;char buffer_sc20;scanf(%s,buffer_no); int i=0; if(strcmp(buffer_no,tempi.sno)=0) while(strcmp(buffer_no,tempi.sno)=0)i+; if(i=n)printf(沒有要找的學(xué)生信息); elseprintf(you); printf(所換專業(yè):); scanf(%s,&buffer_sc); if(fp=fopen(stud.dat,rb)=null) printf(文件打開失敗!); exit(0); fre
15、ad(&tempi,sizeof(stud),1,fp);if(strcmp(buffer_no,tempi.sno)=0)strcpy(tempi.sc,buffer_sc); i=0; fread(&tempi,sizeof(stud),1,fp);if(strcmp(buffer_no,tempi.sno)=0)strcpy(tempi.sc,buffer_sc); if(fp=fopen(stud.dat,wb)=null) printf(文件打開失敗!); exit(0); fwrite(&tempi,sizeof(temp),1,fp); printf(專業(yè)轉(zhuǎn)換成功n); /els
16、eprintf(you); printf(所換專業(yè):); scanf(%s,&buffer_sc); int i=0; if(fp=fopen(stud.dat,rb)=null) printf(文件打開失??!); exit(0); while(strcmp(buffer_no,tempi.sno)!=0) fread(&tempi,sizeof(stud),1,fp);i+; fclose(fp);if(strcmp(buffer_no,tempi.sno)=0)strcpy(tempi.sc,buffer_sc); if(fp=fopen(stud.dat,wb)=null) printf
17、(文件打開失敗!); exit(0); i=0;if(strcmp(buffer_no,tempi.sno)=0&strcmp(tempi.sc,buffer_sc)=0)strcpy(tempi.sc,buffer_sc); while(strcmp(buffer_no,tempi.sno)!=0) fwrite(&tempi,sizeof(temp),1,fp);i+; printf(專業(yè)轉(zhuǎn)換成功n);fclose(fp); /新生報(bào)到/void set() file *fp; printf(輸入新到學(xué)生的學(xué)生號:); char buffer_no20; scanf(%s,buffer_n
18、o); int i=0;if(strcmp(buffer_no,tempi.sno)=0) while(strcmp(buffer_no,tempi.sno)=0)i+; if(i=n)printf(沒有要找的學(xué)生信息); else if(fp=fopen(stud.dat,rb)=null) printf(文件打開失?。?; exit(0); fread(&tempi,sizeof(stud),1,fp);if(strcmp(buffer_no,tempi.sno)=0)tempi.bcome=1; i=0; fread(&tempi,sizeof(stud),1,fp);if(strcmp
19、(buffer_no,tempi.sno)=0)tempi.bcome=1; if(fp=fopen(stud.dat,wb)=null) printf(文件打開失?。?; exit(0); fwrite(&tempi,sizeof(temp),1,fp); printf(新生報(bào)到成功n); /else int i=0; if(fp=fopen(stud.dat,rb)=null) printf(文件打開失??!); exit(0); while(strcmp(buffer_no,tempi.sno)!=0) fread(&tempi,sizeof(stud),1,fp);i+; fclose(
20、fp);if(strcmp(buffer_no,tempi.sno)=0)tempi.bcome=1; if(fp=fopen(stud.dat,wb)=null) printf(文件打開失??!); exit(0); i=0;while(strcmp(buffer_no,tempi.sno)!=0) fwrite(&tempi,sizeof(temp),1,fp);i+; printf(新生報(bào)到成功n);fclose(fp); /查詢/void showstu()file *fp;int i=0;int m=-1;char a100;printf(輸入查詢條件:1、專業(yè) 2、來自省份:);sc
21、anf(%d,&m);switch(m)case 1:printf(輸入查詢專業(yè):); scanf(%s,a); if(fp=fopen(stud.dat,rb)=null) printf(文件打開失?。?;exit(0); printf(學(xué)號 姓名 來自省份 專業(yè) 分?jǐn)?shù) 到校否n); while(fread(&tempi,sizeof(stud),1,fp)!=0) if(strcmp(tempi.sc,a)=0) printf(%s %s %s %s %.2f %dn,tempi.sno,,tempi.home,tempi.sc,tempi.score,tempi.bcome); i+; fclose(fp); break
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 石河子大學(xué)《中小學(xué)生心理輔導(dǎo)》2021-2022學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《武術(shù)》2021-2022學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《基本樂理》2021-2022學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《專題產(chǎn)品設(shè)計(jì)》2022-2023學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《新能源與分布式發(fā)電》2023-2024學(xué)年期末試卷
- 沈陽理工大學(xué)《人工智能》2023-2024學(xué)年期末試卷
- 沈陽理工大學(xué)《計(jì)算機(jī)網(wǎng)絡(luò)實(shí)踐指導(dǎo)》2022-2023學(xué)年期末試卷
- 警察現(xiàn)場救護(hù)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 沈陽理工大學(xué)《光電子學(xué)》2022-2023學(xué)年期末試卷
- 沈陽理工大學(xué)《德語國家社會與文化》2022-2023學(xué)年第一學(xué)期期末試卷
- (正式版)HGT 6313-2024 化工園區(qū)智慧化評價(jià)導(dǎo)則
- 宿舍消防疏散圖
- 常用焊條合格證
- 站場明敷接地扁鋼安裝技術(shù)要求
- 《個人防護(hù)用品PPE》ppt課件
- 國際貿(mào)易SimTrade外貿(mào)實(shí)習(xí)報(bào)告
- 導(dǎo)師帶徒實(shí)施辦法6、30
- 《Fishing with Grandpa》RAZ分級閱讀繪本pdf資源
- 水穩(wěn)施工方案(完整版)
- 跨海大橋施工方案
- MATLAB語言課程論文 基于MATLAB的電磁場數(shù)值圖像分析
評論
0/150
提交評論