学生宿舍管理软件C语言源代码(完整版_第1页
学生宿舍管理软件C语言源代码(完整版_第2页
学生宿舍管理软件C语言源代码(完整版_第3页
学生宿舍管理软件C语言源代码(完整版_第4页
学生宿舍管理软件C语言源代码(完整版_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、源程序代码:#include#include#include#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; /学生总数StudentM,St;/判断学号是否与表中所存学号重复void S_number_Judg

2、e(Student S,int t)int i;for(i=1;iTotal)-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(Student S)printf(请输入学生姓名(30个字符以内):);scanf(%s,S+(S-Total).S_name);getchar();/获取换行符 printf(“请输入学生班级(30个

3、字符以内):”); scanf(%s,SS-Total.S_class); getchar();printf(请输入学生的学号(15个字符以内):);scanf(%s,SS-Total.S_number); getchar();S_number_Judge(S,S-Total);/判断输入的学号是否与表中所存在的学号重复printf(请输入宿舍号码:);scanf(%d,&SS-Total.D_number); getchar(); printf(请输入学生地址:); scanf(%s,SS-Total.S_address); getchar(); printf(“请输入学生电话号码:”);

4、scanf(%s,&SS-Total. S_phone);getchar();dirty=1;printf(添加成功!nn);/修改学生信息函数void Alter(Student S)int i;int flag=0; /用来判断表中是否存在所要修改的学生的信息char name20;printf(请输入你要修改学生的姓名:); scanf(%s,name);getchar();for(i=1;iTotal;i+)if(strcmp(Si.S_name,name)=0)flag=i;if(!flag)printf(你所要修改的学生信息在表中不存在!n);elseprintf(新信息如下:n)

5、;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(请输入宿舍号:);scanf(%d,&Sflag.D_number); getchar(); printf(请输入学生地址:); scanf(%s,Sflag.S_a

6、ddress); getchar(); printf(“请输入学生电话号码:”); scanf(%s,&Sflag. S_phone);getchar();dirty=1;printf(修改成功!n);putchar(n);/删除学生信息void Delete(Student S)int i,j;int flag=0; /用来判断表中是否存在所要删除的学生的信息char name20;printf(请输入你要删除学生的姓名:);scanf(%s,name); getchar();for(i=1;iTotal;i+)if(strcmp(Si.S_name,name)=0)flag=i;if(!f

7、lag)printf(你所要删除的学生在表中不存在!);else for(i=flag;iTotal;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)-;dirty=1;printf(删除成功!);printf(nn);/显示所有学生信息函数void Display_All(Student S)int i;printf(全体学生信息如下:n);printf(学生姓名 学生班级 学生学号 宿舍号 学生地址 学生电话号码n);for(

8、i=1;iTotal;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;iTotal;i+)for(j=i;jTotal;j+)if(Si.D_numbe

9、rSj.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);Si.D_number=Sj.D_number;strcpy(Sj.S_nam

10、e,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;iTotal;i+)for(j=i;jTotal;j+)if(strcmp(Si.S_number,Sj.S_number)0)str

11、cpy(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);Si.D_number=Sj.D_number;strcpy(Sj.S_name,name);strcpy(S

12、j.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;iTotal;i+)for(j=i;jTotal;j+)if(strcmp(Si.S_class,Sj.S_class)0)strcpy(name,Si.S_nam

13、e);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);Si. D_number =Sj. D_number;strcpy(Sj.S_name,name);strcpy(Sj.S_number,nu

14、mber); 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(%s,classnumber);getchar();printf(所查找学生信息如下:n);printf(学生姓名 学生班级 学生学号 宿舍号 学生地址 学生电话号码n);for(i=1;iTotal;i+)

15、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_phone); j=1; if(!j)printf(n查找失败,表中不存在该学生的信息!nn);/查询函数以姓名为关键字进行查询(顺序查找)void Query_S_name(Student S)int i,j=0;char name31;printf(请输入你要查找的学生的姓名(30个字符以内):);scanf(%s,nam

16、e);getchar();printf(所查找学生信息如下:n);printf(学生姓名 学生班级 学生学号 宿舍号 学生地址 学生电话号码n);for(i=1;iTotal;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_

17、S_number(Student S)int i,j,top,base,mid;char 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-Total.S_number)=0)while(base0)

18、base=mid+1;elsetop=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);printf(学生姓名 学生班级 学生学号 宿舍号 学生地址 学生电话号码n);

19、if(i=S1.D_number&iTotal.D_number)while(baseS-Total)break;if(n0)while(Sn.D_number=i)printf(%-20s%-15s%-5dn,Sn.S_name,Sn.S_number,Sn.D_number); n-;if(nSmid.D_number)base=mid+1;elsetop=mid-1;if(!j)printf(n查找失败,表中不存在该寝室的信息!nn);/存储函数void Save(Student S)St Std;int i;int flag1=0,flag2=0; /判断存储是否成功FILE *fp;

20、 if(fp=fopen(Dorm_Manage,w)=NULL) printf(打开文件失败!nn); flag1=1; exit(0); /结束程序for(i=1;iTotal;i+) if(fwrite(&Si,sizeof(Std),1,fp)!=1) printf(数据写入错误nn); flag2=1;exit(0); if(!flag1&!flag2) printf(数据存储成功!nn);dirty=0; fclose(fp);/加载记录函数void Load(Student S)St Std;FILE *fp;if(fp=fopen(Dorm_Manage,r)=NULL)pri

21、ntf(打开文件失败!nn);exit(0);while(!feof(fp)fread(&S+(S-Total),sizeof(Std),1,fp);fclose(fp); printf(加载数据成功!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):);

22、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.以姓名查询学生信息 | 11.显示所有学生的相关信息n);printf(5.以学号查询学生信息 | 12.保存操作n);printf(6.以寝室号查询该寝室中的全部学生信息 | 13.加载记录n

23、); printf(“7.以班级号查询该班级中的全部学生信息 | 14.退出程序n);printf(*n);void main()int i;Student S;S-Total=0;doMenu();printf(请选择所要实现的功能(请输入114中的任意一个数字):);scanf(%d,&i);getchar(); /获取换行符putchar(n);switch(i)case 1:Add(S); break;case 2:Alter(S); break;case 3:Delete(S); break;case 4:Query_S_name(S); break;case 5:Query_S_n

24、umber(S); break;case 6:Query_D_number(S); break; case 7: Query_S_class (S); break; case 8: Sort_S_class (S); printf(排序完成!nn); break;case 9:Sort_D_number(S); printf(排序完成!nn); break;case 10:Sort_S_number(S);十几年的学校教育让我们大学生掌握了足够的科学文化知识,深韵的文化底子为我们创业奠定了一定的基础。特别是在大学期间,我们学到的不单单是书本知识,假期的打工经验也帮了大忙。 printf(排序完成!nn); break;case 11:Display_All(S); break;1、DIY手工艺市场状况分析case 12:Save(S);(三)上海的文化对饰品市场的影响 break;case 13:Load(S);我们长期呆在校园里,没有工作收入一直都是靠父母生活,在资金

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论