




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、源程序代碼:#include<stdio.h>#include<string.h>#include<stdlib.h>#define M 100int dirty=0; /用來判斷是否已保存操作/定義一個存儲學(xué)生相關(guān)信息的結(jié)構(gòu)體typedef structchar S_name31; /學(xué)生姓名 char S_class31; /學(xué)生班級 char S_number16; /學(xué)生學(xué)號int D_number; /學(xué)生所在寢室的宿舍號 char S_address500; /學(xué)生地址 int S_phone20; /學(xué)生電話號碼 int Total; /學(xué)生總
2、數(shù)StudentM,St;/判斷學(xué)號是否與表中所存學(xué)號重復(fù)void S_number_Judge(Student S,int t)int i;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ù)void Add(Studen
3、t S)printf("請輸入學(xué)生姓名(30個字符以內(nèi)):");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-
4、>Total);/判斷輸入的學(xué)號是否與表中所存在的學(xué)號重復(fù)printf("請輸入宿舍號碼:");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;pr
5、intf("添加成功!nn");/修改學(xué)生信息函數(shù)void Alter(Student S)int i;int flag=0; /用來判斷表中是否存在所要修改的學(xué)生的信息char name20;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");elseprint
6、f("新信息如下:n");printf("請輸入學(xué)生姓名(30個字符以內(nèi)):");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(&
7、quot;請輸入宿舍號:");scanf("%d",&Sflag.D_number); getchar(); printf("請輸入學(xué)生地址:"); scanf("%s",Sflag.S_address); getchar(); printf(“請輸入學(xué)生電話號碼:”); scanf("%s",&Sflag. S_phone);getchar();dirty=1;printf("修改成功!n");putchar('n');/刪除學(xué)生信息void Dele
8、te(Student S)int i,j;int flag=0; /用來判斷表中是否存在所要刪除的學(xué)生的信息char name20;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é)生在表中不存在!");else for(i=flag;i<S->Total;i+) j=i+1; strcpy(Si
9、.S_name,Sj.S_name); strcpy(Si.S_number,Sj.S_number); Si.D_number=Sj.D_number; (S->Total)-;dirty=1;printf("刪除成功!");printf("nn");/顯示所有學(xué)生信息函數(shù)void Display_All(Student S)int i;printf("全體學(xué)生信息如下:n");printf("學(xué)生姓名 學(xué)生班級 學(xué)生學(xué)號 宿舍號 學(xué)生地址 學(xué)生電話號碼n");for(i=1;i<=S->Tot
10、al;i+)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);putchar('nn');/排序函數(shù)按照寢室號從小到大排序(冒泡法)void Sort_D_number(Student S)int i,j,t;char name30;char number15; char address300; char Cnumber30;for(i=1;i<=S->Total;i+)for(j=
11、i;j<=S->Total;j+)if(Si.D_number>Sj.D_number)strcpy(name,Si.S_name);strcpy(number,Si.S_number); strcpy(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)
12、;Si.D_number=Sj.D_number;strcpy(Sj.S_name,name);strcpy(Sj.S_number,number); strcpy(Sj.S_address,address); strcpy(Sj.S_class,Cnumber);Sj.D_number=t;/排序函數(shù)按照學(xué)號從小到大排序(冒泡法)void Sort_S_number(Student S)int i,j,t;char name30;char number15; char address300; char Cnumber30;for(i=1;i<=S->Total;i+)for(j=
13、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(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,S
14、j.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_class,Cnumber);Sj.D_number=t;/排序函數(shù)按照班級號從小到大排序(冒泡法)void Sort_S_class (Student S)int i,j,t;char name30;char number15; char address300; char Cnumber30;for(i=1;i<=S->Tota
15、l;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(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
16、.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_class,Cnumber);Sj. D_number =t;/查詢函數(shù)以班級為關(guān)鍵字進行查詢(順序查找)void Query_S_class(Student S)int i,j=0;char classnumber31;printf("請輸入你要查找的班級號(30個字符以內(nèi)):");scanf(
17、"%s",classnumber);getchar();printf("所查找學(xué)生信息如下:n");printf("學(xué)生姓名 學(xué)生班級 學(xué)生學(xué)號 宿舍號 學(xué)生地址 學(xué)生電話號碼n");for(i=1;i<=S->Total;i+)if(strcmp(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_p
18、hone); j=1; if(!j)printf("n查找失敗,表中不存在該學(xué)生的信息!nn");/查詢函數(shù)以姓名為關(guān)鍵字進行查詢(順序查找)void Query_S_name(Student S)int i,j=0;char name31;printf("請輸入你要查找的學(xué)生的姓名(30個字符以內(nèi)):");scanf("%s",name);getchar();printf("所查找學(xué)生信息如下:n");printf("學(xué)生姓名 學(xué)生班級 學(xué)生學(xué)號 宿舍號 學(xué)生地址 學(xué)生電話號碼n");for(
19、i=1;i<=S->Total;i+)if(strcmp(name,Si.S_name)=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ù)以學(xué)號為關(guān)鍵字進行查詢(折半查找)void Query_S_number(Student S)int i,j,top,base,mid;ch
20、ar number15;j=0;base=1;top=S->Total;printf("請輸入你要查找學(xué)生的學(xué)號:");scanf("%s",number);getchar();Sort_S_number(S); /將表中原數(shù)據(jù)按照學(xué)號從小到大排序printf("所查找學(xué)生信息如下:n");printf("學(xué)生姓名 學(xué)生班級 學(xué)生學(xué)號 宿舍號 學(xué)生地址 學(xué)生電話號碼n");if(strcmp(number,S1.S_number)>=0&&strcmp(number,SS->Tot
21、al.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_address,Si.S_phone);putchar('n');j=1;break;else if(strcmp(number,Smid.S_number)>0)base=mid+1;elsetop=
22、mid-1;if(!j)printf("n查找失敗,表中不存在該學(xué)生的信息!nn");/查詢函數(shù)以寢室號為關(guān)鍵字進行查詢(折半查找)void Query_D_number(Student S)int i,j,m,n,base,top,mid;j=0;base=1;top=S->Total;printf("請輸入你要查詢的寢室號:");scanf("%d",&i);getchar();Sort_D_number(S);/將表中原數(shù)據(jù)按照寢室號從小到大排序printf("所查找寢室信息如下:n");pri
23、ntf("學(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("%-20s%-20s %-15s%-5d%s-10%sn",Sm.S_name, Si.S_class,Sm.S_number,Sm.D_number,Si.S_addr
24、ess,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;else if(i>Smid.D_number)base=mid+1;elsetop=mid-1;if(!j)printf("n查找失敗,表中不存在該寢室的信息!nn");/存儲函
25、數(shù)void Save(Student S)St Std;int i;int flag1=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(&Si,sizeof(Std),1,fp)!=1) printf("數(shù)據(jù)寫入錯誤nn"); flag2=1;exit(0)
26、; if(!flag1&&!flag2) printf("數(shù)據(jù)存儲成功!nn");dirty=0; fclose(fp);/加載記錄函數(shù)void Load(Student S)St Std;FILE *fp;if(fp=fopen("Dorm_Manage","r")=NULL)printf("打開文件失敗!nn");exit(0);while(!feof(fp)fread(&S+(S->Total),sizeof(Std),1,fp);fclose(fp); printf("
27、;加載數(shù)據(jù)成功!nn"); (S->Total)-; /由于讀取問題,表中個數(shù)要減去/退出程序時判斷是否保存函數(shù)void Judge_Save(int i,Student S)char ch;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);/菜單void Menu()/菜單printf(" 學(xué)生管理nn");printf("*菜單*n");printf("1.添加學(xué)生信息 | 8.按照班級號從小到大排序n”);printf("2.修改學(xué)生信息 | 9.按照寢室號從小到大排序n");printf("3.刪除學(xué)生信息 | 10.按照學(xué)號從小到大排序n");printf("4.以姓名查詢學(xué)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2020-2021深圳沙井立才學(xué)校小學(xué)三年級數(shù)學(xué)下期末第一次模擬試題帶答案
- 施工現(xiàn)場臨電施工方案
- 沖孔模具施工方案范本
- 小學(xué)課本劇一年級《雪孩子》-劇本
- 2025年中考物理二輪復(fù)習(xí):聲光專題 能力提升練習(xí)題(含答案解析)
- 2024年廣東省中考滿分作文《當(dāng)好自己故事的主角》2
- 第八單元 課題1金屬材料教學(xué)設(shè)計-2024-2025九年級化學(xué)人教版2024下冊
- 第2課 產(chǎn)生氣體的變化(教學(xué)設(shè)計)-2023-2024學(xué)年六年級下冊科學(xué) 教科版
- 合同范本政府土地使用
- 農(nóng)作物賠償合同范例
- JBT 11699-2013 高處作業(yè)吊籃安裝、拆卸、使用技術(shù)規(guī)程
- 2024年全國版圖知識競賽(小學(xué)組)考試題庫大全(含答案)
- DB32T 4353-2022 房屋建筑和市政基礎(chǔ)設(shè)施工程檔案資料管理規(guī)程
- 梁單元的幾何非線性有限元法PPT
- 電廠粉煤灰儲灰場施工組織設(shè)計(DOC89頁)
- 單晶爐熱場結(jié)構(gòu)ppt課件
- 安全保衛(wèi)實務(wù)實訓(xùn)教學(xué)大綱
- 《煉油設(shè)備培訓(xùn)》ppt課件
- 《廣告學(xué)概論》教案
- 健康教育護理服務(wù)質(zhì)量評價標(biāo)準(zhǔn)
- [合同協(xié)議]車輛掛靠協(xié)議書
評論
0/150
提交評論