最新學生宿舍管理系統(tǒng)---C語言編程_第1頁
最新學生宿舍管理系統(tǒng)---C語言編程_第2頁
最新學生宿舍管理系統(tǒng)---C語言編程_第3頁
最新學生宿舍管理系統(tǒng)---C語言編程_第4頁
最新學生宿舍管理系統(tǒng)---C語言編程_第5頁
免費預覽已結束,剩余20頁可下載查看

下載本文檔

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

文檔簡介

1、精品文檔“學生宿舍管理系統(tǒng)”C 語言課程設計報告1、 程序功能簡介我設計的是“學生宿舍管理系統(tǒng)”,主要是針對住宿學生個人信息的管理,適用對象主要是學校,以方便學校對住宿學生的管理。包括學生的姓名、學號、 性別、 專業(yè)、 班級等等。在編寫過程中主要運用 C語言的基本知識有:數(shù)據(jù)類型(整形、實型、字符型、指針、數(shù)組、結構等) ;運算類型(算術運算、邏輯運算、自增自減運算、賦值運算等);程序結構(順序結構、判斷選擇結構、循環(huán)結構);大程序的功能分解方法(即函數(shù)的調用與使用)等。2、 課程設計要求該程序是由C 語言編寫的一個學生宿舍管理查詢軟件,程序在Microsoft Visual C+6.0 下運

2、行,其主要功能是實現(xiàn)對學生信息的錄入、添加、刪除、修改、查詢、統(tǒng)計。其中查詢可以分別以姓名、學號、 宿舍號為關鍵字查詢學生信息。統(tǒng)計可以分別以學號、宿舍號、性別、班級、專業(yè)為關鍵字進行統(tǒng)計,并且輸出信息按學號大小從小到大輸出。源程序分析1) 結構分析1 . 方案設計主函數(shù)錄入模塊添加模塊修改模塊刪除模塊查詢模塊退出系統(tǒng)統(tǒng)計模塊學號姓名宿舍 一二 nJ 性另年齡返回按姓名學號按宿舍返回2 .數(shù)據(jù)結構說明程序中數(shù)據(jù)主要是學生信息,具體屬于類型如下:struct st_messagechar name20;/* 學生姓名 */char dorm7;/* 宿舍號 */char num10;/* 學號*

3、/char sex5;/* 性別*/char age4;/* 年齡*/char major20; /* 專業(yè)*/char classs8; /* 班級*/3,模塊功能說明第一錄入模塊:調用第二添加模塊:調用第三修改模塊:調用第四刪除模塊:調用第五查詢模塊:調用第六統(tǒng)計模塊:調用input_message(),對住宿學生信息進行錄入。 append_message(),對新來學生信息進行添加錄入。 revise_message(),對需修改學生的信息進行修改。 delete_message(),對某一學生信息進行刪除操作。find_message(),分別以姓名、學號、宿舍號對學生信息進行查詢。

4、 census_message(l分別以學號、宿舍號、性別、班級、專業(yè)方式對學生信息進行統(tǒng)計,并按學號由小到大輸出。四、編程中遇到的問題及解決方法在調試過程中,時常會出現(xiàn)輸入或顯示為亂碼的情況,這可能是上下定義的數(shù)據(jù)類型不同或定義數(shù)組長度不夠所導致的。有時候程序中還會出現(xiàn)錄入五個數(shù)據(jù)而只顯示四個的情 況,這也經(jīng)常是因為定義的結構體數(shù)組長度過低所造成的。像這些問題只要把數(shù)據(jù)類型都定義成字符型,并且定義一個合理的數(shù)組長度一般都能解決。在調試過程中我遇到最大的問題出現(xiàn)在刪除模塊。在運用“ rt+ ”打開文件并對某一數(shù) 據(jù)進行刪除后,往往顯示會多顯示一行數(shù)據(jù)。這是由于“ rt+ ”寫數(shù)據(jù)時只會覆蓋數(shù)據(jù)

5、而不 會清除原文件數(shù)據(jù),因此文件最后一行數(shù)據(jù)總會保留在原文件中。后來我先用“ rt ”打開文 件并讀取文件中的數(shù)據(jù),然后再用“ wt”打開原文件將刪除后的數(shù)據(jù)重新寫入文件,最終成 功運行。五、程序運行截屏與結果分析1.測試數(shù)據(jù)對功能1 (錄入學生信息)的測試:按照先后順序分別輸入學生信息:學號姓名班級宿舍號性別年齡專業(yè)05111101張三051111429女18土木工程04111102李四041111218男18信息工程對功能2 (添加學生信息)的測試:按照先后順序分別輸入學生信息學號姓名班級宿舍號性別年齡專業(yè)02111101陳紅021111429女18機械系03111203趙娜0311121

6、01女18能源與環(huán)境對功能3 (修改學生信息)的測試:輸入要修改學生的姓名:林丹,系統(tǒng)顯示“該學生 信息不存在。輸入修改學生姓名:張三,系統(tǒng)顯示出該學生信息。 選擇修改學號為:05111118, 系統(tǒng)顯示出修改后的學生信息。對功能4 (刪除學生信息)的測試:輸入要刪除學生的學號:03111210,系統(tǒng)顯示“該學生信息不存在。輸入要刪除的學生的學號:03111203,系統(tǒng)顯示出該學生信息。選擇刪除該學生信息。對功能5 (查詢學生信息)的測試:查詢宿舍號為429的信息,系統(tǒng)顯示為:學號姓名班級宿舍號,住另年齡專業(yè)02111101陳紅021111429女18機械系05111101張三05111142

7、9女18土木工程對功能6 (統(tǒng)計學生信息)的測試:選擇按學號統(tǒng)計,系統(tǒng)顯示為:學號姓名班級宿舍號性別年齡專業(yè)02111101陳紅021111429女18機械系04111102李四041111218男18信息工程05111101張三051111429女18土木工程學生總人數(shù)3人,其中男生1人,女生2人。對功能7 (退出系統(tǒng))的測試:選擇退出系統(tǒng),程序關閉。2.詳細設計及運行結果1)函數(shù)調用關系圖精品文檔2)部分模塊流程圖及運行結果截屏 主頁界面主頁流程圖開始錄入模塊添加模塊修改模塊刪除模塊錄入界面結束錄入界面JZftLhn ktopX dSLlLOlptlllWlM*4tVbugCpp4JMa-

8、產(chǎn)輸入學生柱名:張三請輸入學生越跳:81111國喻人學生宿會帶二M/0H輸入學生量工Mil 1161苦鋪入學生性別:女用隨人學生郵齡:1 8卜軸人學生專仆二木工砰 看J j友-刁【是否繼續(xù)錄入d/w”修改模塊是X、1 二否選2尸只是選3否1是(3否迫41選5否是1(tglbULl口口汽,甲1*。號llTLCilMEIUIQDHmXbg缶to*.歸:也加草iL汨4稚二設學生宿虺,學號姓名拉家一宿 舍母一忖寫一年酊一、業(yè)一比.g111101,I .;,丁.a7.統(tǒng)計模塊統(tǒng)計界面/功能選擇二是二是是結束返回主頁精品文檔 I pG;SU5ffTacfiDwkC&pti5ft-51111C1C1111!

9、31- tWDcbLjgi, Cpp4Me-學生信息I學號攤名班鍛一宿舍號一性別隼艙-專業(yè)02111101 pstr41 1 11 32 季方051)1118 ;L9892 12 q 24男女磯辭呈 信息工程 上代工程學士總人數(shù)為超具中男生為1 .#生為器 譜接任意域地續(xù)一-六、心得體會“萬事開頭難”這句話在我編寫程序的過程中得到了真正的體現(xiàn)。在最初編寫的幾天里出現(xiàn)了這樣那樣的錯誤一大堆,這主要是由于我對基礎知識掌握不扎實所造成的。但是隨后幾天里,我對課本知識進行了回顧并不時的向老師和同學進行請教,慢慢的對編寫程序也開始得心應手起來。程序的編寫總歸是一件費時費力的事情,但只要我們認真編寫和調試

10、最后總能成功。短短以周實習時間我收獲頗多, 我相信經(jīng)過這次實習必將為我以后的深入學習打下扎實 的基礎。七、源程序#include #include #include #include #define N 900struct st_message /* 學生信息 */ .char name20; /*學生姓名 */ char dorm7; /* 宿舍號 */ char num10; /* 學號*/ char sex5; /* 性別*/ char age4; /* 年齡 */ char major20; /* 專業(yè) */ char classs8; /* 班級 */ stN,t;sort_mess

11、age()/* 排序模塊 */精品文檔精品文檔int i,j,fno,fsize,fnum;FILE *fp;fp=fopen(student.txt,rt+);if(fp=NULL)printf(nn* 文件打開錯誤。按任意鍵退出!);getchar();exit(1);fno=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(struct st_message);for(i=0;ifnum;i+)fread(&sti,sizeof(struct st_message),1,fp);for(i=0;ifnum-1;i+)for(j=i+1;

12、j0)t=sti;sti=stj;stj=t;rewind(fp);for(i=0;ifnum;i+)fwrite(&sti,sizeof(struct st_message),1,fp);fclose(fp);input_message() /*錄用信息模塊*/int i;char choice;FILE *fp;fp=fopen(student.txt,at+);if(fp=NULL)printf(nn* 庫存文件不存在!請建立。按任意鍵退出!);getchar();exit(1);for (i=0;i+) system (cls);getchar();printf( 請輸入學生姓名:);

13、gets();printf(n 請輸入學生班級:);gets(sti.classs);printf(n 請輸入學生宿舍號:);gets(sti.dorm);printf(n 請輸入學生學號:);gets(sti.num);printf(n 請輸入學生性別:);gets(sti.sex);printf(n 請輸入學生年齡:);gets(sti.age);printf(n 請輸入學生專業(yè):);gets(sti.major);fwrite(&sti,sizeof(struct st_message),1,fp);printf(輸入成功! n是否冰續(xù)錄入(Y/N)?);choice=g

14、etchar();if(choice=y|choice=Y)continue;else fclose(fp);break;append_message() /*添加模塊*/int i;char choice;FILE *fp;fp=fopen(student.txt,at+);if(fp=NULL)printf(nn* 庫存文件不存在!請建立。按任意鍵退出!);getchar();exit(1);for (i=0;i+)struct st_message stN;system (cls);getchar();printf( 請輸入所添加學生姓名:);gets();printf(

15、n 請輸入所添加學生班級:);gets(sti.classs);printf(n 請輸入所添加學生宿舍號:);gets(sti.dorm);printf(n 請輸入所添加學生學號:);gets(sti.num);printf(n 請輸入所添加學生性別:);gets(sti.sex);printf(n 請輸入所添加學生年齡:);gets(sti.age);printf(n 請輸入所添加學生專業(yè):);gets(sti.major);fwrite(&sti,sizeof(struct st_message),1,fp);printf(輸入成功! n是否“續(xù)添加(Y/N)?);choice=getch

16、ar();if(choice=y|choice=Y)continue;elsefclose(fp);break;revise_message() /*修改模塊*/int i,choice,flag,fno,fsize,fnum;char re_name20,s20;FILE *fp;dofp=fopen(student.txt,rt+);fno=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(struct st_message);system(cls);gets(s);printf(請輸入需要修改的學生姓名:);gets(re_name);

17、for (i=0;ifnum;i+)fread(&sti,sizeof(struct st_message),1,fp);if(!strcmp(re_name,) printf(n該學生信息nn);printf( 學號 姓名 班級-宿舍號-性別-年齡-專業(yè)-n);printf(n);printf(%-8s %-6s %-4s %-6s %-4s %-4s %-20sn,sti.num,, sti.classs,sti.dorm,sti.sex,sti.age,sti.major);printf( 您要修改哪一項?n);printf(1. 學號n);printf(

18、2. 姓名n);printf(3. 班級n);printf(4. 宿舍號 n);printf(5. 性別n);printf(6. 年齡n);printf(7. 專業(yè)n);printf(8. 返回主頁n);scanf(%d,&choice);switch(choice)case 1:printf(n 請輸入修改后的學號:);scanf(%s,sti.num);break;case 2:printf(n 請輸入修改后的姓名:);scanf(%s,);break;case 3:printf(n 請輸入修改后的班級:);scanf(%s,sti.classs);break;case 4

19、:printf(n 請輸入修改后的宿舍號:);scanf(%s,sti.dorm);break;精品文檔精品文檔case 5:printf(n 請輸入修改后的性別:);scanf(%s,sti.sex);break;case 6:printf(n 請輸入修改后的年齡:);scanf(%s,sti.age);break;case 7:printf(n 請輸入修改后的專業(yè):);scanf(%s,sti.major);break;case 8:return 1;getchar();system(cls);printf(n修改后的學生信息nn);printf( 學號 姓名 班級-宿舍號-性別-年齡-專

20、業(yè)-n);printf(n);printf(%-8s %-6s %-4s %-6s %-4s %-4s %-20sn,sti.num,,sti.classs,sti.dorm,sti.sex,sti.age,sti.major); rewind(fp);fseek(fp,sizeof(struct st_message)*i,0);fwrite(&sti,sizeof(struct st_message),1,fp);fclose(fp);break;if(i=fnum)printf(n 該學生信息不存在!);printf(nn 繼續(xù)修改嗎?(Y/N);choice=getch

21、ar();if(choice=Y|choice=y)flag=1;system(pause);else flag=0;while(flag=1);return 1;delete_message() /*刪除模塊*/int i,j,choice,fno,fsize,fnum;char d_num10;FILE *fp;system(cls);getchar();fp=fopen(student.txt,rt);if(fp=NULL)printf(nn* 庫存文件不存在!請先建立。按任意鍵退出!);getchar();exit(1);fno=fileno(fp);fsize=filelength(

22、fno);fnum=fsize/sizeof(struct st_message); 精品文檔精品文檔for(i=0;ifnum;i+)fread(&sti,sizeof(struct st_message),1,fp);printf( 請輸入需要刪除學生的學號:n);gets(d_num);system(cls);for(i=0;ifnum;i+)if(!strcmp(d_num,sti.num)printf(n該學生信息nn);printf(學號姓名-班級-宿舍號性別年齡專業(yè)-n);printf(n);printf(%-8s %-6s %-4s %-6s %-4s %-4s %-20sn,

23、sti.num,, sti.classs,sti.dorm,sti.sex,sti.age,sti.major);printf(n 是否刪除該學生信息:n);printf(1. 是 n);printf(2. 否 n);scanf(%d,&choice);switch(choice)case 1:for(j=i;jfnum-1;j+)stj=stj+1;rewind(fp);fp=fopen(student.txt,wt);for(i=0;ifnum-1;i+)fwrite(&sti,sizeof(struct st_message),1,fp);fclose(fp);getch

24、ar();break;case 2:printf(按任意鍵返回主菜單!);getchar();return 0; break; if(i=fnum)printf( 所查學生信息不存在,按任意鍵返回主菜單!);getchar();return 0;printf(刪除信息成功,按任意鍵返回主菜單!);return 1;find_message() /*查找信息模塊*/int i,choice,flag,fno,fsize,fnum;char f_name20;char f_num10;char fdorm7;FILE *fp;system(cls);do sort_message();fp=fop

25、en(student.txt,rt);if(fp=NULL)printf(nn* 庫存文件不存在!請先建立。按任意鍵退出!);getchar();exit(1);fno=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(struct st_message);system(cls);printf(請選擇查詢方式:n);printf(1. 按姓名查詢n);printf(2. 按學號查詢n);printf(3. 按宿舍號查詢n);printf(4. 返回主頁n);scanf(%d,&choice);system(cls);getchar();swi

26、tch(choice)case 1:printf( 請輸入需要查詢的姓名:n);gets(f_name);printf(n該學生信息nn);printf( 學號 姓名 班級-宿舍號-性別-年齡-專業(yè)-n);printf(n);for (i=0;ifnum;i+)if(!strcmp(f_name,)printf(%-8s %-6s %-4s %-6s %-4s %-4s %-20sn,sti.num,, sti.classs,sti.dorm,sti.sex,sti.age,sti.major);printf(n);break;case 2:printf(請輸入

27、要查詢的學號:);gets(f_num);printf(n該學生信息nn);printf( 學號 姓名 班級 -宿舍號 -性別-年齡-專業(yè)-n);printf(n);for (i=0;ifnum;i+)fread(&sti,sizeof(struct st_message),1,fp);if(!strcmp(f_num,sti.num)printf(%-8s %-6s %-4s %-6s %-4s %-4s %-20sn,sti.num,, sti.classs,sti.dorm,sti.sex,sti.age,sti.major);printf(n);break;case 3

28、:printf(請輸入要查詢的宿舍號:);gets(f_dorm);printf(n該宿舍學生信息nn);printf( 學號 姓名 班級-宿舍號-性別-年齡 -專業(yè)-n);printf(n);rewind(fp);for (i=0;ifnum;i+)fread(&sti,sizeof(struct st_message),1,fp);if(!strcmp(f_dorm,sti.dorm)printf(%-8s %-6s %-4s %-6s %-4s %-4s %-20sn,sti.num,, sti.classs,sti.dorm,sti.sex,sti.age,sti.ma

29、jor);printf(n);break;case 4:return 0;printf(nn 繼續(xù)查詢嗎?(Y/N);choice=getchar();if(choice=Y|choice=y)flag=1;system(pause);else flag=0;while(flag=1);return 1;census_message() /*統(tǒng)計信息模塊*/int i,choice,fno,fsize,fnum;int m=0,n=0,k=0;char dorm7;char classs8;char major20;FILE *fp;sort_message();fp=fopen(studen

30、t.txt,rt);if(fp=NULL)printf(nn* 文件打開錯誤。按任意鍵退出!);getchar();exit(1);fno=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(struct st_message);system(cls);printf(請選擇顯示方式:n);printf(1. 按學號顯示n);printf(2. 按宿舍號顯示n);printf(3. 按性別顯示n);printf(4. 按班級顯示n);printf(5. 按專業(yè)顯示n);printf(6. 返回主頁n);scanf(%d,&choice);syst

31、em(cls);switch(choice)case 1: printf(n學生信息nn);printf( 學號 姓名 班級 -宿舍號 -性別-年齡-專業(yè)-n);printf(n);for(i=0;ifnum;i+) fread(&sti,sizeof(struct st_message),1,fp); printf(%-8s %-6s %-4s %-6s %-4s %-4s %-20sn,sti.num,, sti.classs,sti.dorm,sti.sex,sti.age,sti.major);k+;if(!strcmp(sti.sex, 男 ) m+;if(!strc

32、mp(sti.sex, 女 ) n+;printf(n);printf(nn學生總人數(shù)為d,其中男生為d,女生為d。,k,m,n); break;case 2: getchar();printf( 請輸入要顯示的宿舍號:);gets(dorm);printf(n該宿舍學生信息nn);printf( 學號 姓名 班級 -宿舍號-性別-年齡-專業(yè)-n);for (i=0;ifnum;i+)if(!strcmp(dorm,sti.dorm) printf(n);printf(%-8s %-6s %-4s %-6s %-4s %-4s %-20sn,sti.num,, sti.clas

33、ss,sti.dorm,sti.sex,sti.age,sti.major);break;case 3:printf(”請輸入需要顯示的性別:n);printf(1. 男 n);printf(2. 女 n);scanf(%d,&choice);printf(n學生信息nn);printf( 學號 姓名 班級 -宿舍號 -性別-年齡-專業(yè)-n);printf(n);switch(choice)case 1: for(i=0;ifnum;i+) if(!strcmp(sti.sex, 男 ) printf(%-8s %-6s %-4s %-6s %-4s %-4s %-20sn,sti.num,s

34、, sti.classs,sti.dorm,sti.sex,sti.age,sti.major);m+;printf(n);printf(nn 男生人數(shù)為%d。 ,m);break;case 2: for(i=0;ifnum;i+)if(!strcmp(sti.sex, 女 ) printf(%-8s %-6s %-4s %-6s %-4s %-4s %-20sn,sti.num,, sti.classs,sti.dorm,sti.sex,sti.age,sti.major);n+;printf(n);printf(nn 女生人數(shù)為%d。 ,n);break;break;case 4: getchar();printf( 請輸入要顯示的班級:);gets(classs);printf(n該班級學生信息nn);printf( 學號 姓名 班級 -宿舍號-性別-年齡-專業(yè)-n);printf(n);for (i=0;ifnum;i+)if(!strcmp(c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論