版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、源程序代碼:#include<stdio.h>#include<string.h>#include<stdlib.h>#define M 100int dirty=0; /用來判斷是否已保存操作/定義一個存儲學生相關信息的結構體typedef structchar S_name31; /學生姓名 char S_class31; /學生班級 char S_number16; /學生學號int D_number; /學生所在寢室的宿舍號 char S_address500; /學生地址 int S_phone20; /學生電話號碼 int Total; /學生總
2、數StudentM,St;/判斷學號是否與表中所存學號重復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("學號輸入失敗,該學號已存在,請重新輸入學號!n");printf("請輸入學生的學號(15個字符以內):"); scanf("%s",St.S_number);getchar();i=1;/添加學生信息函數void Add(Studen
3、t S)printf("請輸入學生姓名(30個字符以內):");scanf("%s",S+(S->Total).S_name);getchar();/獲取換行符 printf(“請輸入學生班級(30個字符以內):”); scanf("%s",SS->Total.S_class); getchar();printf("請輸入學生的學號(15個字符以內):");scanf("%s",SS->Total.S_number); getchar();S_number_Judge(S,S-
4、>Total);/判斷輸入的學號是否與表中所存在的學號重復printf("請輸入宿舍號碼:");scanf("%d",&SS->Total.D_number); getchar(); printf("請輸入學生地址:"); scanf("%s",SS->Total.S_address); getchar(); printf(“請輸入學生電話號碼:”); scanf("%s",&SS->Total. S_phone);getchar();dirty=1;pr
5、intf("添加成功!nn");/修改學生信息函數void Alter(Student S)int i;int flag=0; /用來判斷表中是否存在所要修改的學生的信息char name20;printf("請輸入你要修改學生的姓名:"); scanf("%s",name);getchar();for(i=1;i<=S->Total;i+)if(strcmp(Si.S_name,name)=0)flag=i;if(!flag)printf("你所要修改的學生信息在表中不存在!n");elseprint
6、f("新信息如下:n");printf("請輸入學生姓名(30個字符以內):");scanf("%s",Sflag.S_name);getchar(); printf(“請輸入學生班級(30個字符以內):”); scanf("%s",Sflag.S_class); getchar();printf("請輸入學生的學號(15個字符以內):");scanf("%s",Sflag.S_number);getchar();S_number_Judge(S,flag);printf(&
7、quot;請輸入宿舍號:");scanf("%d",&Sflag.D_number); getchar(); printf("請輸入學生地址:"); scanf("%s",Sflag.S_address); getchar(); printf(“請輸入學生電話號碼:”); scanf("%s",&Sflag. S_phone);getchar();dirty=1;printf("修改成功!n");putchar('n');/刪除學生信息void Dele
8、te(Student S)int i,j;int flag=0; /用來判斷表中是否存在所要刪除的學生的信息char name20;printf("請輸入你要刪除學生的姓名:");scanf("%s",name); getchar();for(i=1;i<=S->Total;i+)if(strcmp(Si.S_name,name)=0)flag=i;if(!flag)printf("你所要刪除的學生在表中不存在!");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");/顯示所有學生信息函數void Display_All(Student S)int i;printf("全體學生信息如下:n");printf("學生姓名 學生班級 學生學號 宿舍號 學生地址 學生電話號碼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');/排序函數按照寢室號從小到大排序(冒泡法)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;/排序函數按照學號從小到大排序(冒泡法)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;/排序函數按照班級號從小到大排序(冒泡法)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;/查詢函數以班級為關鍵字進行查詢(順序查找)void Query_S_class(Student S)int i,j=0;char classnumber31;printf("請輸入你要查找的班級號(30個字符以內):");scanf(
17、"%s",classnumber);getchar();printf("所查找學生信息如下:n");printf("學生姓名 學生班級 學生學號 宿舍號 學生地址 學生電話號碼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查找失敗,表中不存在該學生的信息!nn");/查詢函數以姓名為關鍵字進行查詢(順序查找)void Query_S_name(Student S)int i,j=0;char name31;printf("請輸入你要查找的學生的姓名(30個字符以內):");scanf("%s",name);getchar();printf("所查找學生信息如下:n");printf("學生姓名 學生班級 學生學號 宿舍號 學生地址 學生電話號碼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查找失敗,表中不存在該學生的信息!nn");/查詢函數以學號為關鍵字進行查詢(折半查找)void Query_S_number(Student S)int i,j,top,base,mid;ch
20、ar number15;j=0;base=1;top=S->Total;printf("請輸入你要查找學生的學號:");scanf("%s",number);getchar();Sort_S_number(S); /將表中原數據按照學號從小到大排序printf("所查找學生信息如下:n");printf("學生姓名 學生班級 學生學號 宿舍號 學生地址 學生電話號碼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查找失敗,表中不存在該學生的信息!nn");/查詢函數以寢室號為關鍵字進行查詢(折半查找)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);/將表中原數據按照寢室號從小到大排序printf("所查找寢室信息如下:n");pri
23、ntf("學生姓名 學生班級 學生學號 宿舍號 學生地址 學生電話號碼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、數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); /結束程序for(i=1;i<=S->Total;i+) if(fwrite(&Si,sizeof(Std),1,fp)!=1) printf("數據寫入錯誤nn"); flag2=1;exit(0)
26、; if(!flag1&&!flag2) printf("數據存儲成功!nn");dirty=0; fclose(fp);/加載記錄函數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、;加載數據成功!nn"); (S->Total)-; /由于讀取問題,表中個數要減去/退出程序時判斷是否保存函數void Judge_Save(int i,Student S)char ch;if(i)printf("表中數據已改變,是否保存后再退出(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(" 學生管理nn");printf("*菜單*n");printf("1.添加學生信息 | 8.按照班級號從小到大排序n”);printf("2.修改學生信息 | 9.按照寢室號從小到大排序n");printf("3.刪除學生信息 | 10.按照學號從小到大排序n");printf("4.以姓名查詢學
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025國際貿易合同
- 2025開關插座采購合同標準版
- 2025年度高科技企業(yè)公司股權協議書模板3篇
- 2025年度智能家居生態(tài)鏈消費者協議3篇
- 2025年度新材料研發(fā)與應用公司整體轉讓協議版3篇
- 2025年度醫(yī)療設備融資租賃服務合同模板3篇
- 2025年度農村宅基地房買賣合同(農村電商服務站建設)
- 2025年度公租房合同(含租賃合同簽訂及備案費用)3篇
- 2025年度環(huán)保處理設備專業(yè)維修與改造合同3篇
- 2025年度新能源汽車充電基礎設施合作項目協議書范本3篇
- DB11-T 693-2024 施工現場臨建房屋應用技術標準
- GB/T 45089-20240~3歲嬰幼兒居家照護服務規(guī)范
- 統(tǒng)編版2024-2025學年三年級上冊語文期末情景試卷(含答案)
- 2024年01月11344金融風險管理期末試題答案
- 浙江省杭州市八縣區(qū)2024-2025學年高二數學上學期期末學業(yè)水平測試試題
- 民政部主管社團管理辦法
- 工地施工臨時用水及計算
- 工作計劃酒店上半年工作總結及下半年工作計劃
- 淺談燃機電廠燃氣管道的完整性管理
- 防護設備操作手冊
- 《中小學教師職業(yè)生涯規(guī)劃與專業(yè)發(fā)展》講座
評論
0/150
提交評論