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

下載本文檔

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

文檔簡介

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

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

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

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

5、某一數(shù) 據(jù)進(jìn)行刪除后,往往顯示會多顯示一行數(shù)據(jù)。這是由于“ rt+ ”寫數(shù)據(jù)時只會覆蓋數(shù)據(jù)而不 會清除原文件數(shù)據(jù),因此文件最后一行數(shù)據(jù)總會保留在原文件中。后來我先用“ rt ”打開文 件并讀取文件中的數(shù)據(jù),然后再用“ wt”打開原文件將刪除后的數(shù)據(jù)重新寫入文件,最終成 功運行。五、程序運行截屏與結(jié)果分析1.測試數(shù)據(jù)對功能1 (錄入學(xué)生信息)的測試:按照先后順序分別輸入學(xué)生信息:學(xué)號姓名班級宿舍號性別年齡專業(yè)05111101張三051111429女18土木工程04111102李四041111218男18信息工程對功能2 (添加學(xué)生信息)的測試:按照先后順序分別輸入學(xué)生信息學(xué)號姓名班級宿舍號性別年

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

7、姓名班級宿舍號,住另年齡專業(yè)02111101陳紅021111429女18機(jī)械系05111101張三051111429女18土木工程對功能6 (統(tǒng)計學(xué)生信息)的測試:選擇按學(xué)號統(tǒng)計,系統(tǒng)顯示為:學(xué)號姓名班級宿舍號性別年齡專業(yè)02111101陳紅021111429女18機(jī)械系04111102李四041111218男18信息工程05111101張三051111429女18土木工程學(xué)生總?cè)藬?shù)3人,其中男生1人,女生2人。對功能7 (退出系統(tǒng))的測試:選擇退出系統(tǒng),程序關(guān)閉。2.詳細(xì)設(shè)計及運行結(jié)果1)函數(shù)調(diào)用關(guān)系圖文檔大全2)部分模塊流程圖及運行結(jié)果截屏 主頁界面主頁流程圖開始錄入模塊添加模塊修改模塊刪

8、除模塊錄入界面錄入界面修改模塊返回主頁是修改界面(s) I 國 “CAUilM®1口Mkrcp%5BW M135Wni 11 lini05T1BOin.hu”pF>4 "謂輸入芾要修改的學(xué)生姓茗F 張三一一 謨學(xué)生信息一 學(xué)號一.姓名一一班破一宿舍號一性別一年齡一專業(yè)=一嘉O1射號力 :管I警別酹業(yè)回 1 1要學(xué)處犯痛性耳專返2.3.M.5ETQ統(tǒng)計模塊統(tǒng)計界面是選1是選2是選3是選4否是選5是選6返回主頁輸入統(tǒng)計方式功能選擇按宿舍按性別按專業(yè)按學(xué)號按班級實用標(biāo)準(zhǔn)機(jī)械系 信息程 二木工程J 甲 mC;UseracftDesktcpciB®11101X051

9、111 01WStDebugXCpp4,exe-學(xué)生信息學(xué)號姓名班級-宿舍1一性別一年某-專業(yè)021 1 1 1EJ1 陳缸04111102 季西05111113 在 Z1學(xué)生總?cè)藬?shù)為3.其中男生為1 .女生為N.請按住意窿繼續(xù).半-二六、心得體會“萬事開頭難”這句話在我編寫程序的過程中得到了真正的體現(xiàn)。在最初編寫的幾天里出現(xiàn)了這樣那樣的錯誤一大堆, 這主要是由于我對基礎(chǔ)知識掌握不扎實所造成的。但是隨后幾天里,我對課本知識進(jìn)行了回顧并不時的向老師和同學(xué)進(jìn)行請教,慢慢的對編寫程序也開始得心應(yīng)手起來。程序的編寫總歸是一件費時費力的事情,但只要我們認(rèn)真編寫和調(diào)試最后總能成功。短短以周實習(xí)時間我收獲頗

10、多, 我相信經(jīng)過這次實習(xí)必將為我以后的深入學(xué)習(xí)打下扎實 的基礎(chǔ)。七、源程序#include<stdio.h> #include<string.h> #include<stdlib.h> #include<io.h> #define N 900struct st_message /* 學(xué)生信息 */ .char name20; /*學(xué)生姓名 */ char dorm7; /* 宿舍號 */ char num10; /* 學(xué)號*/ char sex5; /* 性別*/ char age4; /* 年齡 */ char major20; /* 專業(yè) *

11、/ char classs8; /* 班級 */ stN,t;sort_message()/* 排序模塊 */文檔大全int i,j,fno,fsize,fnum;FILE *fp;fp=fopen("student.txt","rt+");if(fp=NULL)printf("nn*文件打開錯誤。按任意鍵退出!");getchar();exit;fno=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(struct st_message);for(i=0;i<fnum;i+)

12、fread(&sti,sizeof(struct st_message),1,fp);for(i=0;i<fnum-1;i+)for(j=i+1;j<fnum;j+)if(strcmp(sti.num,stj.num)>0)t=sti;sti=stj;stj=t;rewind(fp);for(i=0;i<fnum;i+)fwrite(&sti,sizeof(struct st_message),1,fp);fclose(fp); input_message() /* 錄用信息模塊 */int i;char choice;FILE *fp;fp=fopen

13、("student.txt","at+");if(fp=NULL)printf("nn*庫存文件不存在!請建立。按任意鍵退出!");getchar();exit;for (i=0;i+) system ("cls");getchar();printf("請輸入學(xué)生姓名:");gets();printf("n請輸入學(xué)生班級:");gets(sti.classs);printf("n請輸入學(xué)生宿舍號:");gets(sti.dorm);prin

14、tf("n請輸入學(xué)生學(xué)號:");gets(sti.num);printf("n請輸入學(xué)生性別:");gets(sti.sex);文檔大全實用標(biāo)準(zhǔn)printf("n請輸入學(xué)生年齡:");gets(sti.age);printf("n請輸入學(xué)生專業(yè):");gets(sti.major);fwrite(&sti,sizeof(struct st_message),1,fp);printf("輸入成功! n是否繼續(xù)錄入(Y/N)?");choice=getchar();if(choice=

15、9;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;for (i=0;i+)struct st_message stN;system ("cls");getchar(

16、);printf("請輸入所添加學(xué)生姓名:");gets();printf("n請輸入所添加學(xué)生班級:");gets(sti.classs);printf("n請輸入所添加學(xué)生宿舍號:");gets(sti.dorm);printf("n請輸入所添加學(xué)生學(xué)號:");gets(sti.num);printf("n請輸入所添加學(xué)生性別:");gets(sti.sex);printf("n請輸入所添加學(xué)生年齡:");gets(sti.age);printf(&quo

17、t;n請輸入所添加學(xué)生專業(yè):");gets(sti.major);fwrite(&sti,sizeof(struct st_message),1,fp);printf("輸入成功! n是否繼續(xù)添加(Y/N)?");choice=getchar();if(choice='y'|choice='Y')continue;elsefclose(fp);break;revise_message() /* 修改模塊 */int i,choice,flag,fno,fsize,fnum;char re_name20,s20;FILE *f

18、p;dofp=fopen("student.txt","rt+");fno=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(struct st_message);system("cls");gets(s);printf("請輸入需要修改的學(xué)生姓名:");gets(re_name);for (i=0;i<fnum;i+)fread(&sti,sizeof(struct st_message),1,fp);if(!strcmp(re_name,sti.

19、name) printf("n該學(xué)生信息nn");printf("學(xué)號姓名班級-宿舍號-性別-年齡-專業(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.學(xué)號n");printf("2.姓名n"

20、;);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請輸入修改后的學(xué)號:");scanf("%s",sti.num);break;case 2:printf(&qu

21、ot;n請輸入修改后的姓名:");scanf("%s",);break;case 3:printf("n請輸入修改后的班級:");scanf("%s",sti.classs);break;case 4:printf("n請輸入修改后的宿舍號:");scanf("%s",sti.dorm);break;case 5:printf("n請輸入修改后的性別:");scanf("%s",sti.sex);break;case 6:prin

22、tf("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修改后的學(xué)生信息 nn");printf("學(xué)號姓名班級一宿舍號-性別一年齡一專業(yè)-n");printf("n");printf("

23、;%-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該學(xué)生信息不存在!");printf("nn 繼續(xù)修改嗎?(Y/N)");c

24、hoice=getchar();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)pri

25、ntf("nn*庫存文件不存在!請先建立。按任意鍵退出!");getchar();exit;fno=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(struct st_message);for(i=0;i<fnum;i+)文檔大全實用標(biāo)準(zhǔn)fread(&sti,sizeof(struct st_message),1,fp);printf("請輸入需要刪除學(xué)生而學(xué)號:n");gets(d_num);system("cls");for(i=0;i<fnum;i+)if

26、(!strcmp(d_num,sti.num)printf("n該學(xué)生信息nn");printf("學(xué)號-姓名-班級-宿舍號性別年齡專業(yè)-n");printf("An");printf("%-8s%-6s %-4s %-6s %-4s %-4s %-20sn",sti.num,,sti.classs,sti.dorm,sti.sex,sti.age,sti.major);printf("n是否刪除該學(xué)士信息:n");printf("1.是n");printf(

27、"2.否n");scanf("%d”,&choice);switch(choice)case 1:for(j=i;j<fnum-1;j+)stj=stj+1;rewind(fp);fp=fopen("student.txt","wt");for(i=0;i<fnum-1;i+)fwrite(&sti,sizeof(struct st_message),1,fp);fclose(fp);getchar();break;case 2:printf("按任意鍵返回主菜單!");get

28、char();return 0; break; if(i=fnum)printf("所查學(xué)生信息不存在,按任意鍵返回主菜單!");getchar();return 0;printf("刪除信息成功,按任意鍵返回主菜單!");return 1;find_message()/*查找信息模塊*/int i,choice,flag,fno,fsize,fnum;char f_name20;char f_num10;char f dorm7;FILE *fp;system("cls");do文檔大全 sort_message();fp=fope

29、n("student.txt","rt");if(fp=NULL)printf("nn*庫存文件不存在!請先建立。按任意鍵退出!");getchar();exit;fno=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(struct st_message);system("cls");printf("請選擇查詢方式:n");printf("1.按姓名查詢n");printf("2.按學(xué)號查詢n");pr

30、intf("3.按宿舍號查詢n");printf("4.返回主頁 n");scanf("%d”,&choice);system("cls");getchar();switch(choice)case 1:printf(”請輸入需要查詢的姓名:n");gets(f_name);printf("n該學(xué)生信息nn");printf("學(xué)號-姓名-班級宿舍號性別年齡專業(yè)-n");printf("n");for (i=0;i<fnum;i+)if(!s

31、trcmp(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("請輸入要查詢的學(xué)號:");gets(f_num);printf("n該學(xué)生信息nn");printf("學(xué)號-姓名-班級宿舍號性別年齡專業(yè)-n");printf("

32、;n");for (i=0;i<fnum;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:printf("請輸入要查詢的宿舍號:");gets(f_dor

33、m);printf("n該宿舍學(xué)生信息nn");printf("學(xué)號-姓名-班級宿舍號性別年齡專業(yè)-n");printf("n");rewind(fp);for (i=0;i<fnum;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

34、.sex,sti.age,sti.major); 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,

35、k=0;char dorm7;char classs8;char major20;FILE *fp;sort_message();fp=fopen("student.txt","rt");if(fp=NULL)printf("nn*文件打開錯誤。按任意鍵退出!");getchar();exit;fno=fileno(fp);fsize=filelength(fno);fnum=fsize/sizeof(struct st_message);system("cls");printf("請選擇顯示方式:n&q

36、uot;);printf("1.按學(xué)號顯示n");printf("2.按宿舍號顯示n");printf("3.按性別顯示n");printf("4.按班級顯示n");printf("5.按專業(yè)顯示n");文檔大全實用標(biāo)準(zhǔn)printf("6.返回主頁 n");scanf("%d”,&choice);system("cls");switch(choice)case 1: printf("n學(xué)生信息 nn");printf(

37、"學(xué)號姓名班級一宿舍號-性別一年齡-專業(yè)-n");printf("n");for(i=0;i<fnum;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(!strcmp(sti.

38、sex,"女")n+;printf("n");printf("nn學(xué)生總?cè)藬?shù)為d,其中男生為d,女生為d。",k,m,n); break;case 2: getchar();printf(”請輸入要顯示的宿舍號:");gets(dorm);printf("n該宿舍學(xué)生信息nn");printf("學(xué)號姓名-班級-宿舍號性別年齡-專業(yè)-n");for (i=0;i<fnum;i+) if(!strcmp(dorm,sti.dorm) printf("n");pr

39、intf("%-8s %-6s %-4s %-6s %-4s %-4s %-20sn",sti.num,, sti.classs,sti.dorm,sti.sex,sti.age,sti.major);break;case 3:printf(”請輸入需要顯示的性別:n");printf("1.男 n");printf("2.女n");scanf("%d”,&choice);printf("n學(xué)生信息 nn");printf("學(xué)號姓名-班級宿舍號性別年齡專業(yè)-n

40、");printf("n");switch(choice)case 1: for(i=0;i<fnum;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);m+;An"); printf("printf("nn 男生人數(shù)為 d。",m); break;case

41、 2: for(i=0;i<fnum;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("An");printf("nn 女生人數(shù)為 d。",n); break; break;case 4: getchar();printf("請輸入要顯示的班級:");gets(classs);printf("n該班級學(xué)生信息 nn");printf("學(xué)號姓名-班級宿舍號性別年齡專業(yè)-n");printf("n");for (i=0;i<fnum;i+)if(!strcmp(classs,sti.classs) printf("%-8s%-6s %-4s %-6

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論