C語言課程設(shè)計報告——學(xué)生信息管理系統(tǒng)_第1頁
C語言課程設(shè)計報告——學(xué)生信息管理系統(tǒng)_第2頁
C語言課程設(shè)計報告——學(xué)生信息管理系統(tǒng)_第3頁
C語言課程設(shè)計報告——學(xué)生信息管理系統(tǒng)_第4頁
C語言課程設(shè)計報告——學(xué)生信息管理系統(tǒng)_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C語言程序設(shè)計課程設(shè)計報告設(shè)計題目:學(xué)生信息管理系統(tǒng)專 業(yè) 電子信息工程班 級學(xué) 生指導(dǎo)教師.成易ftN次字年 學(xué)期設(shè)計任務(wù):C語言課程設(shè)計任務(wù)書及指導(dǎo)書5題目:學(xué)生信息管理系統(tǒng)功能:學(xué)生信息管理系統(tǒng),每個學(xué)生信息作為一條記錄,包括學(xué)號、姓名、 性別、出生年月、專業(yè)、班級、家庭地址、宿舍號碼等。系統(tǒng)要求實現(xiàn)以下功能:1、輸入功能:錄入學(xué)生信息(包括學(xué)號、姓名、出生年月、專業(yè)等);2、顯示功能:完成學(xué)生記錄的顯示;3、查找功能:完成按姓名或姓名查找學(xué)生的相關(guān)記錄,并顯示。要求:1、用C語言實現(xiàn)程序設(shè)計;2、利用結(jié)構(gòu)體數(shù)組實現(xiàn)學(xué)生信息的數(shù)據(jù)結(jié)構(gòu)設(shè)計;3、系統(tǒng)的各個功能模塊要求用函數(shù)的形式實現(xiàn);4、

2、界面友好(良好的人機交互),程序加必要的注釋。第一部分(20%)第二部分(20%)第三部分(30%)第四部分(30%)報告成績:指導(dǎo)教師:預(yù)習(xí)報告(20%):平時成績(10%):驗收答辯成績(50%):設(shè)計報告成績(20%):報告撰寫要求:報告內(nèi)容不能雷同。字體工整,版面整潔,圖表規(guī)范,格式分明。流程圖用鋼筆或油性筆畫,不能使用鉛筆。如不滿足以上要求中的任意一條,發(fā)回重寫;嚴(yán)重者,給予不及格。總評成績:一、總體設(shè)計一.模塊劃分 總體分為4大板塊,分別為:1、輸入信息模塊:輸入信息并將信息保存到文件當(dāng)中:2、瀏覽信息模塊:顯示需要全部的學(xué)生信息:3、編輯信息模塊:輸入密碼,修改或刪除學(xué)生信息:4

3、、修改密碼模塊:修改系統(tǒng)密碼;5、系統(tǒng)初始化模塊:刪除保存的數(shù)據(jù)和修改后的密碼,初始化系統(tǒng)。二.數(shù)據(jù)結(jié)構(gòu)#define N 100/*所能容納的數(shù)據(jù)數(shù)量*/struct student int number;char name10;char gender6;int birthday;char major18;char Class10;char address30;char dormitory10;stuN;三.函數(shù)原型聲明1、int menu1();主菜單輸出函數(shù)2、int menu2();瀏覽選項子菜單輸出函數(shù)3、int menu3();編輯選項子菜單輸出函數(shù)4、void input();信

4、息輸入函數(shù)5、void scan();瀏覽學(xué)生信息子函數(shù)6、void display();信息顯示函數(shù)7、 void save(int n);將輸入的信息保存為文件8、void edit();編輯學(xué)生信息子函數(shù)9、 void search(int s);查找函數(shù)10、 void revise_info();信息修改函數(shù)11、void code();密碼管理函數(shù)12、void del();信息刪除函數(shù)13、void recover();初始化程序二、功能實現(xiàn)main()(流程圖)各功能模塊詳細流程圖(1)、輸入信息模塊輸入人數(shù)一一輸入信息一一保存信息至文件(2)、瀏覽信息模塊、全部顯示:從文件中

5、讀取信息至結(jié)構(gòu)體一一輸出信息、按姓名查找:輸入姓名一一從文件中讀取信息至結(jié)構(gòu)體一一查找姓名輸出信息、按學(xué)號查找:輸入學(xué)號一一從文件中讀取信息至結(jié)構(gòu)體一一查找學(xué)號輸出信息(3)、編輯信息模塊、修改信息:輸入學(xué)號一一從文件中讀取信息至結(jié)構(gòu)體一一查找學(xué)號 選擇修改項目一一修改信息一一保存信息至文件、刪除信息:輸入學(xué)號一一從文件中讀取信息至結(jié)構(gòu)體一一查找學(xué)號確認刪除一一刪除信息一一保存剩余信息至文件(4)、修改密碼模塊從文件中讀取舊密碼一一輸入舊密碼一一輸入新密碼一一保存至文件 修改成功(5)、系統(tǒng)初始化模塊刪除原文件建立空白文件三、測試及調(diào)試(測試方案、存在的問題及解決方法)1、主菜單與子菜單無法建

6、立聯(lián)系,即輸入相應(yīng)的選項后不能運行相應(yīng)的子函數(shù)。分析與解決:函數(shù)的結(jié)構(gòu)出現(xiàn)了一些問題,最終在老師的幫助下得以解決。2、保存數(shù)據(jù)時無法調(diào)用文件(軟件提示:cannot open Debug/學(xué)生管理系統(tǒng).exefor writing”)。分析與解決:原以為是程序某個地方有錯誤,于是檢查了好長時間的程序, 還向QQ群好友進行了求助。最終在網(wǎng)上查到的答案的提醒下,刪除了 “學(xué) 生管理系統(tǒng).exe ”程序并重新進行了編譯,問題因此得以解決。3、用feof()函數(shù)判斷文件中信息是否讀取完畢時導(dǎo)致輸出的信息總是比實際信息多一組分析與解決:在網(wǎng)上搜素該函數(shù)的具體用法后,才發(fā)現(xiàn)這是這個函數(shù)的弊 端所在,讀到文

7、件中信息的最后,還要多執(zhí)行一次循環(huán)。最終,我采用了 先讀出文件中信息的組數(shù),然后在得到的組數(shù)的基礎(chǔ)上減1的方法從頭輸 出信息。4、編寫密碼管理子函數(shù)時,每次啟動程序時密碼都會初始化分析與解決:采用了文件的方法,將密碼保存在文件中。5、顯示信息時出現(xiàn)亂碼分析與解決:該錯誤是由于給字符數(shù)組賦值時使用了“&”的同時使用了 數(shù)組名進行賦值,二者發(fā)生了沖突導(dǎo)致。在王棟老師的指導(dǎo)下,刪除了賦 值符號“&”,問題得以解決。6、運行程序的時候,只有本次存進去的信息才能實現(xiàn)查找功能分析與解決:該錯誤是由于每次運行程序的時候沒有將以前存在文件中的 信息讀取到內(nèi)存當(dāng)中導(dǎo)致。四、總結(jié)1、對C語言知識掌握程度得到了很大

8、的提高,對C語言的編程實踐有了比較深刻的認識。2、在遇到程序調(diào)試不通過時,學(xué)會通過縮小范圍的分析來鎖定問題所在。3、通過這次實驗,熟悉了從自然語言轉(zhuǎn)換成偽代碼再轉(zhuǎn)換為流程圖的過程。4、在程序中設(shè)定合適的全局變量,可以簡化程序的編寫難度。5、運用函數(shù)可以減少編寫時的代碼量,也使程序條理清晰。6、通過本次C語言上機實驗,我對這個介于人類與非人類之間的計算機編程語言有了一定的體驗。隨著實驗的成功與報告的完成,有點微微的成就感使 人難忘。伴隨著學(xué)習(xí)的深入,我發(fā)現(xiàn)高深的東西還有很多很多,等待著我 自己去挖掘。對C語言的學(xué)習(xí),我會加倍努力。附件:源程序代碼/* 學(xué)生管理系統(tǒng) */#include#incl

9、ude#include#include/*控制臺輸入輸出庫函數(shù)*/int menu1();/*主菜單輸出函數(shù)*/int menu2();/*瀏覽選項子菜單輸出函數(shù)*/int menu3();/*編輯選項子菜單輸出函數(shù)*/void input();/*信息輸入函數(shù)*/void scan();/*瀏覽學(xué)生信息子函數(shù)*/void display();/*信息顯示函數(shù) */void save(int n);/*將輸入的信息保存為文件*/void edit();/*編輯學(xué)生信息子函數(shù)*/void search(int s);/*查找函數(shù)*/void revise_info();/*信息修改函數(shù) */vo

10、id code();/*密碼管理函數(shù) */void del();/*信息刪除函數(shù) */void recover();/*初始化程序*/#define N 100/*所能容納的數(shù)據(jù)數(shù)量*/struct studentint number;char name10;char gender6;int birthday;char major18;char Class10;char address30;char dormitory10;stuN;/*/學(xué)生信息結(jié)構(gòu)體*/性別宿舍int i,n;int a,b,c;int code0=123456;long longBytes;FILE *fp;FILE *

11、co;/*/*/*/*傳遞選項的全局變量*/初始密碼 */讀取文件長度的變量*/創(chuàng)建與保存數(shù)據(jù)的文件student聯(lián)系的指針變量*/*主函數(shù) */void main()system(color 2e);/*設(shè)置文本背景顏色*/co=fopen(code”,ab+);fseek(co,0,SEEK_SET);fseek(co,0,SEEK_END);longBytes=ftell(co);if(longBytes=0)fprintf(co,%d”,code0);fclose(co);/*/*判斷是否有code文件,如果不存在則建立*/獲取文件code的長度,以判斷文件中是否有數(shù)據(jù)*/fp=fop

12、en(student,ab+);fclose(fp);/*判斷是否有student文件,如果不存在則建立*/while(1) a=menu1();/*引入主菜單*/switch(a)case 1:input();break;/*調(diào)用信息輸入子函數(shù)*/case 2:scan();break;/*調(diào)用瀏覽信息子函數(shù)*/case 3:edit();break;/*調(diào)用編輯信息子函數(shù)*/case 4:code();break;/*調(diào)用密碼管理子函數(shù)*/case 5:recover();break;case 0:exit(1);break;/*退出程序 */default:system(CLS);/*

13、主菜單輸出函數(shù) */int menu1()int ml;printf(ntt學(xué)生管理系統(tǒng));printf(nnnttt1、錄入學(xué)生信息,printf(nntt t2、瀏覽學(xué)生信息,printf(nnttt3、編輯已有信息,printf(nnttt4、修改密碼”);printf(nnttt5、系統(tǒng)初始化”);printf(nntt 仞、退出系統(tǒng)”);printf(nnntt);printf(nntt請輸入您的選擇:”);scanf(%d”,&m1);/*讀取選項值 */return m1;/*返回選項值 */ /* 瀏 覽選項子菜單輸出函數(shù) */ int menu2()int m2;printf

14、(ntt瀏覽學(xué)生信息);printf(nnnttt1、顯示全部信息”);printf(nntt t2、按姓名查找”);printf(nnttt3、按學(xué)號查找”);printf(nnttt4、返回主菜單”););printf(nntt 仞、退出系統(tǒng)”);printf(nnnttprintf(nntt請輸入您的選擇:”);scanf(%d”,&m2);/* 讀取選項值 */return m2;/* 返回選項值 */ /* 編 輯選項子菜單輸出函數(shù) */ int menu3()int m3;printf(ntt編輯已有信息);printf(nnnttt1、修改信息,printf(nntt t2、刪除

15、信息”);printf(nnttt3、返回主菜單”);printf(nntt 仞、退出系統(tǒng)”);printf(nnntt);printf(nntt請輸入您的選擇:”);scanf(%d”,&m3);/* 讀取選項值 */return m3;/* 返回選項值 */ /* 信 息輸入函數(shù) */ void input()system(CLS);/* 清屏 */printf(n請輸入需要錄入信息的學(xué)生人數(shù):,scanf(%d”,&n);system(CLS);/* 清屏 */printf(ntt信息錄入);for(i=0;in;i+)/* 輸入多個學(xué)生的信息*/printf(nnttt 學(xué) 號:”);

16、scanf(%d”,&stui.number);printf(nttt 姓名:”);scanf(%s”,);printf(nttt 性另 lj:);scanf(%s”,stui.gender);printf(nttt 出生年月:”);scanf(%d”,&stui.birthday); printf(nttt 專業(yè):”);scanf(%s”,stui.major); printf(nttt 班級:”);scanf(%s”,stui.Class);printf(nttt 家庭地址:”);scanf(%s”,stui.address); printf(nttt 宿舍號碼:”);s

17、canf(%s”,stui.dormitory);printf(ntt);save(n);/*調(diào)用保存信息函數(shù)*/printf(ntt數(shù)據(jù)保存成功!”);printf(nn按任意鍵返回主菜單!”);getch();system(CLS);/* 清屏 */ /* 瀏 覽學(xué)生信息子函數(shù) */void scan()system(CLS);b=menu2();switch(b)case 1:display();break;case 2:search(2);break;case 3:search(3);break;case 4:system(CLS);break;case 0:exit(1);break

18、;default:system(CLS);/* 清屏 */*引入瀏覽子菜單*/*調(diào)用顯示全部信息子函數(shù)*/*調(diào)用按姓名查找信息函數(shù)*/*調(diào)用按學(xué)號查找信息函數(shù)*/* 清屏,返回主菜單 */* 退出程序 */* 編 輯學(xué)生信息子函數(shù) */ void edit() int m,n;*/system(CLS);/* 清屏printf(n請輸入密碼(初始密碼123456):,scanf(%d”,&m);co=fopen(”code”,”rb”);fscanf(co,”%d”,&n);fclose(co);if(m=n)/*驗證密碼是否正確*/system(CLS);/*清屏*/c=menu3(); s

19、witch(c) /*引入編輯選項子菜單*/case 1:revise_info();break;/*調(diào)用修改信息子函數(shù)*/case 2:del();break;/*調(diào)用刪除信息子函數(shù)*/case 3:system(CLS);break; /*清屏,返回主菜單*/case 0:exit(1);break;default:system(CLS);/*退出程序*/elseprintf(nt 密碼錯誤!”);getch();system(CLS);/* 清屏 */void save(int n)if(fp=fopen(”student”,”ab+”)=NULL)/*打開文件是否失敗*/printf(

20、文件student打開失敗!n);/*顯示打開文件失敗信息*/getchar();exit(1);/* 退出程序 */for(i=0;in;i+)/* 向文件 information 中與數(shù)據(jù)if(fwrite(&stui,sizeof(struct student),1,fp)!=1)printf(n保存數(shù)據(jù)失敗!”);fclose(fp);/* 關(guān)閉文件 */* 信 息保存函數(shù) */* 信 息顯示函數(shù) */*/void display() system(CLS);/* 清屏 */n=0; fp=fopen(”student”,”rb”);/* 打開文件 */while(!feof(fp)

21、fread(&stun,sizeof(struct student),1,fp); n+; fclose(fp);/* 關(guān)閉文件 */n=n-1;for(i=0;in;i+)printf(nttprintf(nnttt 學(xué)printf(nnttt 姓printf(nnttt 性/*讀取所有保存的信息*/全部信息號:d,stui.number);名:s”,);另 ij :%s”,stui.gender););printf(nnttt 出生年月:d”,stui.birthday);printf(nnttt 專業(yè):s”,stui.major);printf(nnttt 班級:s”,

22、stui.Class);printf(nnttt 家庭地址:s”,stui.address);printf(nnttt 宿舍號碼:s”,stui.dormitory);printf(nntt);printf(-ntt按任意鍵繼續(xù)查看下一組學(xué)生信息!”);getch();system(cls);printf(ntt全部信息顯示完畢!nn按任意鍵返回主菜單!”);getch();/* 清屏 */system(CLS);/* 按姓名、學(xué)號查找信息函數(shù) */ void search(int s)char s_name10;int s_number;/* 清屏 */system(CLS);if(s=2)

23、/*按姓名查找*/printf(n請輸入需要顯示信息的學(xué)生的姓名:,scanf(%s”,s_name);if(s=3)/*按姓名查找 */printf(n請輸入需要顯示信息的學(xué)生的學(xué)號:,scanf(%d”,&s_number);fp=fopen(”student”,”rb”);/*打開文件*/system(CLS);/* 清屏 */for(i=0;iN;i+)fread(&stui,sizeof(struct student),1,fp);if(strcmp(s_name,)=0|s_number=stui.number)/*輸出所查找的信息*/printf(ntt信息查找

24、);printf(nnttt 學(xué)printf(nnttt 姓printf(nnttt 性號:d,stui.number);名:s”,);另 j :%s,stui.gender);printf(nnttt 出生年月:d”,stui.birthday);printf(nnttt 專業(yè):s”,stui.major);printf(nnttt 班 級:s”,stui.Class);printf(nnttt 家庭地址:s”,stui.address);printf(nnttt 宿舍號碼:s”,stui.dormitory);printf(nntt);break;/* 關(guān)閉文件 */*

25、清屏 */fclose(fp);printf(nn按任意鍵返回主菜單!”);getch();system(CLS);/* 信 息修改函數(shù) */void revise_info()int x,y;system(cls);printf(n請輸入學(xué)號:”);scanf(%d”,&x);system(cls);n=0;fp=fopen(student,rb);while(!feof(fp)fread(&stun,sizeof(struct student),1,fp);n+;fclose(fp);n=n-1;for(i=0;in;i+)if(x=stui.number)/*清屏*/*讀取需要修改信息的

26、學(xué)生的學(xué)號*/*清屏*/*打開文件*/*關(guān)閉文件*/* 修改所信息*/break;if(i=n)system(CLS);printf(-n無此學(xué)生的信息!”); elseprintf(ntt修改信息);printf(nntt1、學(xué)號心2、姓名”);printf(nntt3、性別tt4、出生年月”);printf(nntt5、專業(yè)tt6、班級”);printf(nntt7、家庭地址tt8、宿舍號碼”);printf(nntt);printf(nn請選擇需要修改的項目(每次只能修改一項):, scanf(%d”,&y);system(cls);/* 清屏 */printf(n請輸入修改后的信息:)

27、;switch(y)case 1:scanf(%d,&stui.number);break;case 2:scanf(%s”,);break;case 3:scanf(%s”,stui.gender);break;case 4:scanf(%d”,&stui.birthday);break;case 5:scanf(%s”,stui.major);break;case 6:scanf(%s”,stui.Class);break;case 7:scanf(%s”,stui.address);break;case 8:scanf(%s”,stui.dormitory);break

28、;default:printf(選項有誤!”);printf(ntt 修改完畢!”);fp=fopen(”student”,”wb”);/* 清空文件 student 中的數(shù)據(jù) */fclose(fp);save(n);printf(nn按任意鍵返回主菜單!”);getch();system(CLS);/* 清屏 */ /* 密碼管理函數(shù) */ void code()int code1,code2;/* 清屏 */system(CLS);co=fopen(”code”,”rb”);fscanf(co,”%d”,&code0);fclose(co);printf(n請輸入原密碼(初始密碼1234

29、56):,scanf(%d”,&code1);if(code1=code0)system(CLS);printf(n請輸入新密碼:);scanf(%d”,&code2);printf(n密碼修改完畢!”);getch();co=fopen(code,wb);fprintf(co,%d”,code2);fclose(co);elseprintf(n 密碼錯誤!”);getch();system(cls);/*驗證密碼/* 清屏 */*/* 清屏 */* 信 息刪除函數(shù) */ void del()int x;char j;system(cls);/*清屏 */printf(n請輸入學(xué)號:”);scanf(%d”,&x);/*讀取需要刪除信息的學(xué)生的學(xué)號 */system(cls);/*清屏 */fp=fopen(student”,”rb”);/*打開文件*/n=0;while(!feof(fp)fread(&stun,sizeof(struct student),1,fp);n+;n=n-1;for(i=0;in;i+)/* 查找信息 */if(x=stui.number)printf(nttprintf(n

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論