學(xué)生宿舍管理軟件C語言源代碼_第1頁
學(xué)生宿舍管理軟件C語言源代碼_第2頁
學(xué)生宿舍管理軟件C語言源代碼_第3頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、源程序代碼:#include<stdio.h>#include<string.h>#include<stdlib.h>#defineM100intdirty=0;/用來判斷是否已保存操作/定義一個存儲學(xué)生相關(guān)信息的結(jié)構(gòu)體typedefstructcharS_name31;/學(xué)生姓名charS_class31;/學(xué)生班級charS_number16;/學(xué)生學(xué)號intD_number;/學(xué)生所在寢室的宿舍號charS_address500;/學(xué)生地址intS_phone20;/學(xué)生電話號碼intTotal;/學(xué)生總數(shù)StudentM,St;/判斷學(xué)號是否與表中所

2、存學(xué)號重復(fù)voidS_number_Judge(StudentS,intt)inti;for(i=1;i<=(S->Total)-1;i+)while(strcmp(Si.S_number,St.S_number)=0);printf("學(xué)號輸入失敗,該學(xué)號已存在,請重新輸入學(xué)號!n"printf("請輸入學(xué)生的學(xué)號(15個字符以內(nèi)):");scanf("%s”,St.S_number);getchar();i=1;)/添加學(xué)生信息函數(shù)voidAdd(StudentS)printf("請輸入學(xué)生姓名(30個字符以內(nèi)):”)

3、;scanf("%s",S+(S->Total).S_name);getchar();/獲取換行符printf(請輸入學(xué)生班級(30個字符以內(nèi)):");scanf("%s",SS->Total.S_class);getchar();printf("請輸入學(xué)生的學(xué)號(15個字符以內(nèi)):");scanf("%s",SS->Total.S_number);getchar();S_number_Judge(S,S->Total);/判斷輸入的學(xué)號是否與表中所存在的學(xué)號重復(fù)printf(&q

4、uot;請輸入宿舍號碼:");scanf("%d",&SS->Total.D_number);getchar();printf("請輸入學(xué)生地址:");scanf("%s",SS->Total.S_address);getchar();printf(請輸入學(xué)生電話號碼:”);scanf("%s”,&SS->Total.S_phone);getchar();dirty=1;printf("添加成功!nn");/修改學(xué)生信息函數(shù)voidAlter(StudentS)

5、inti;intflag=0;/用來判斷表中是否存在所要修改的學(xué)生的信息charname20;printf("請輸入你要修改學(xué)生的姓名:");scanf("%s",name);getchar();for(i=1;i<=S->Total;i+)if(strcmp(Si.S_name,name)=0)flag=i;if(!flag)printf("你所要修改的學(xué)生信息在表中不存在!n");elseprintf("新信息如下:n");printf("請輸入學(xué)生姓名(30個字符以內(nèi)):");

6、scanf("%s",Sflag.S_name);getchar();printf(請輸入學(xué)生班級(30個字符以內(nèi)):”);scanf("%s",Sflag.S_class);getchar();printf("請輸入學(xué)生的學(xué)號(15個字符以內(nèi)):");scanf("%s",Sflag.S_number);getchar();S_number_Judge(S,flag);printf("請輸入宿舍號:");scanf("%d",&Sflag.D_number);get

7、char();printf("請輸入學(xué)生地址:");scanf("%s",Sflag.S_address);getchar();printf(請輸入學(xué)生電話號碼:”);scanf("%s",&Sflag.S_phone);getchar();dirty=1;printf("修改成功!n");putchar('n');/刪除學(xué)生信息voidDelete(StudentS)inti,j;intflag=0;/用來判斷表中是否存在所要刪除的學(xué)生的信息charname20;printf("

8、請輸入你要刪除學(xué)生的姓名:");scanf("%s",name);getchar();for(i=1;i<=S->Total;i+)if(strcmp(Si.S_name,name)=0)flag=i;if(!flag)printf("你所要刪除的學(xué)生在表中不存在!”);elsefor(i=flag;i<S->Total;i+)j=i+1;strcpy(Si.S_name,Sj.S_name);strcpy(Si.S_number,Sj.S_number);Si.D_number=Sj.D_number;(S->Total)

9、-;dirty=1;printf("刪除成功!");printf("nn");)/顯示所有學(xué)生信息函數(shù)voidDisplay_All(StudentS)(inti;printf("全體學(xué)生信息如下:n");學(xué)生學(xué)號宿舍號學(xué)生地址學(xué)生電話號碼n");printf("學(xué)生姓名學(xué)生班級for(i=1;i<=S->Total;i+)printf("%-20s%-20s%-15s%-5d%s-10%$n”,Si.S_name,Si.S_class,Si.S_number,Si.D_number,Si.S

10、_address,Si.S_phone);putchar('nn');)/排序函數(shù)按照寢室號從小到大排序(冒泡法)voidSort_D_number(StudentS)(inti,j,t;charname30;charnumber15;charaddress300;charCnumber30;for(i=1;i<=S->Total;i+)for(j=i;j<=S->Total;j+)if(Si.D_number>Sj.D_number)(strcpy(name,Si.S_name);strcpy(number,Si.S_number);strcpy

11、(address,Si.S_address);strcpy(Cnumber,Si.S_class);t=Si.D_number;strcpy(Si.S_name,Sj.S_name);strcpy(Si.S_number,Sj.S_number);strcpy(Si.S_address,Sj.S_address);strcpy(Si.S_class,Sj.S_class);Si.D_number=Sj.D_number;strcpy(Sj.S_name,name);strcpy(Sj.S_number,number);strcpy(Sj.S_address,address);strcpy(Sj

12、.S_class,Cnumber);Sj.D_number=t;)/排序函數(shù)按照學(xué)號從小到大排序(冒泡法)voidSort_S_number(StudentS)(inti,j,t;charname30;charnumber15;charaddress300;charCnumber30;for(i=1;i<=S->Total;i+)for(j=i;j<=S->Total;j+)if(strcmp(Si.S_number,Sj.S_number)>0)(strcpy(name,Si.S_name);strcpy(number,Si.S_number);strcpy(a

13、ddress,Si.S_address);strcpy(Cnumber,Si.S_class);t=Si.D_number;strcpy(Si.S_name,Sj.S_name);strcpy(Si.S_number,Sj.S_number);strcpy(Si.S_address,Sj.S_address);strcpy(Si.S_class,Sj.S_class);Si.D_number=Sj.D_number;strcpy(Sj.S_name,name);strcpy(Sj.S_number,number);strcpy(Sj.S_address,address);strcpy(Sj.S

14、_class,Cnumber);Sj.D_number=t;/排序函數(shù)按照班級號從小到大排序(冒泡法)voidSort_S_class(StudentS)(inti,j,t;charname30;charnumber15;charaddress300;charCnumber30;for(i=1;i<=S->Total;i+)for(j=i;j<=S->Total;j+)if(strcmp(Si.S_class,Sj.S_class)>0)(strcpy(name,Si.S_name);strcpy(number,Si.S_number);strcpy(addres

15、s,Si.S_address);strcpy(Cnumber,Si.S_class);t=Si.D_number;strcpy(Si.S_name,Sj.S_name);strcpy(Si.S_number,Sj.S_number);strcpy(Si.S_address,Sj.S_address);strcpy(Si.S_class,Sj.S_class);Si.D_number=Sj.D_number;strcpy(Sj.S_name,name);strcpy(Sj.S_number,number);strcpy(Sj.S_address,address);strcpy(Sj.S_clas

16、s,Cnumber);Sj.D_number=t;)/查詢函數(shù)以班級為關(guān)鍵字進行查詢(順序查找)voidQuery_S_class(StudentS)inti,j=0;charclassnumber31;printf("請輸入你要查找的班級號(30個字符以內(nèi)):");scanf("%s”,classnumber);getchar();printf("所查找學(xué)生信息如下:n");學(xué)生電話號碼n");printf("學(xué)生姓名學(xué)生班級學(xué)生學(xué)號宿舍號學(xué)生地址for(i=1;i<=S->Total;i+)if(strcmp

17、(classnumber,Si.S_class)=0)printf("%-20s%-20s%-15s%-5d%s-10%sn",Si.S_name,Si.S_class,Si.S_number,Si.D_number,Si.S_address,Si.S_phone);j=1;)if(!j)printf("n查找失敗,表中不存在該學(xué)生的信息!nn");)/查詢函數(shù)以姓名為關(guān)鍵字進行查詢(順序查找)voidQuery_S_name(StudentS)inti,j=0;charname31;printf("請輸入你要查找的學(xué)生的姓名(30個字符以內(nèi))

18、:");scanf("%s",name);getchar();printf("所查找學(xué)生信息如下:n");學(xué)生地址學(xué)生電話號碼n");printf("學(xué)生姓名學(xué)生班級學(xué)生學(xué)號宿舍號for(i=1;i<=S->Total;i+)if(strcmp(name,Si.S_name)=0)printf("%-20s%-20s%-15s%-5d%s-10%&n",Si.S_name,Si.S_class,Si.S_number,Si.D_number,Si.S_address,Si.S_phon

19、e);j=1;if(!j)printf("n查找失敗,表中不存在該學(xué)生的信息!nn");/查詢函數(shù)以學(xué)號為關(guān)鍵字進行查詢(折半查找)voidQuery_S_number(StudentS)inti,j,top,base,mid;charnumber15;j=0;base=1;top=S->Total;printf("請輸入你要查找學(xué)生的學(xué)號:");scanf("%s",number);getchar();Sort_S_number(S);/將表中原數(shù)據(jù)按照學(xué)號從小到大排序printf("所查找學(xué)生信息如下:n"

20、;);printf("學(xué)生姓名學(xué)生班級學(xué)生學(xué)號宿舍號學(xué)生地址學(xué)生電話號碼n");if(strcmp(number,S1.S_number)>=0&&strcmp(number,SS->Total.S_number)<=0)while(base<=top)mid=(base+top)/2;if(strcmp(number,Smid.S_number)=0)printf("%-20s%-20s%-15s%-5d%s-10%sn”,Si.S_name,Si.S_class,Si.S_number,Si.D_number,Si.S_

21、address,Si.S_phone);putchar('n');j=1;break;elseif(strcmp(number,Smid.S_number)>0)base=mid+1;elsetop=mid-1;)if(!j)printf("n查找失敗,表中不存在該學(xué)生的信息!nn");)/查詢函數(shù)以寢室號為關(guān)鍵字進行查詢(折半查找)voidQuery_D_number(StudentS)inti,j,m,n,base,top,mid;j=0;base=1;top=S->Total;printf("請輸入你要查詢的寢室號:”);scan

22、f("%d”,&i);getchar();Sort_D_number(S);/將表中原數(shù)據(jù)按照寢室號從小到大排序printf("所查找寢室信息如下:n");printf("學(xué)生姓名學(xué)生班級學(xué)生學(xué)號宿舍號學(xué)生地址學(xué)生電話號碼n");if(i>=S1.D_number&&i<=SS->Total.D_number)while(base<=top)mid=(base+top)/2;if(i=Smid.D_number)m=mid;n=mid-1;while(Sm.D_number=i)printf(&q

23、uot;%-20s%-20s%-15s%-5d%s-10%sn”,Sm.S_name,Si.S_class,Sm.S_number,Sm.D_number,Si.S_address,Si.S_phone);m+;if(m>S->Total)break;)if(n>0)while(Sn.D_number=i)printf("%-20s%-15s%-5dn",Sn.S_name,Sn.S_number,Sn.D_number);n-;if(n<1)break;)j=1;putchar('n');break;)elseif(i>Smi

24、d.D_number)base=mid+1;elsetop=mid-1;)if(!j)printf("n查找失敗,表中不存在該寢室的信息!nn");)/存儲函數(shù)voidSave(StudentS)StStd;inti;intflag1=0,flag2=0;/判斷存儲是否成功FILE*fp;if(fp=fopen("Dorm_Manage”,"w")=NULL)printf("打開文件失敗!nn");flag1=1;exit(0);/結(jié)束程序)for(i=1;i<=S->Total;i+)if(fwrite(&am

25、p;Si,sizeof(Std),1,fp)!=1)printf(”數(shù)據(jù)寫入錯誤nn");flag2=1;exit(0);)if(!flag1&&!flag2)printf(”數(shù)據(jù)存儲成功!nn");dirty=0;)fclose(fp);/加載記錄函數(shù)voidLoad(StudentS)(StStd;FILE*fp;if(fp=fopen("Dorm_Manage”,"r")=NULL)(printf("打開文件失??!nn");exit(0);)while(!feof(fp)fread(&S+(S-

26、>Total),sizeof(Std),1,fp);fclose(fp);printf("加載數(shù)據(jù)成功!nn");(S->Total)-;/由于讀取問題,表中個數(shù)要減去)/退出程序時判斷是否保存函數(shù)voidJudge_Save(inti,StudentS)(charch;if(i)(printf(”表中數(shù)據(jù)已改變,是否保存后再退出(Y/N)?:");ch=getchar();getchar();while(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y')(printf("請輸入N(n)或者Y(y):");ch=getchar();getchar();)if(ch='y'|ch='Y')Save(S);)/菜單voidMenu()(/菜單printf("學(xué)生管理nn");printf("*菜單*printf(”1.添加學(xué)生信息|8.按照班級號從小到大排序n”);printf(”2.修改學(xué)生信息|9.按照寢室號從小到大排序n");printf(”3.刪除學(xué)生信息|10.按照

溫馨提示

  • 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

提交評論