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

下载本文档

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

文档简介

1、源程序代码:#include#include#include#defineM 100int dirty=0; / 用来判断是否已保存操作/ 定义一个存储学生相关信息的结构体typedef structchar S_name31;/ 学生姓名char S_class31; /学生班级char S_number16;int D_number;/ 学生学号/ 学生所在寝室的宿舍号int Total;/ 学生总数char S_address500; / 学生地址int S_phone20; /学生电话号码StudentM,St;/ 判断学号是否与表中所存学号重复void S_number_Judge(

2、Student S, int t)int i;whilefor (i=1;iTotal)-1;i+) (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(); / 获取换行符

3、printf( “请输入学生班级 (30 个字符以内 ): ”);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);

4、getchar();请输入学生电话号码 : ”);printf(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)pr

5、intf( 你所要修改的学生信息在表中不存在! n );elseprintf(printf( 新信息如下 :n );请输入学生姓名 (30 个字符以内 ): );getchar();printf( “请输入学生班级 (30 个字符以内 ): ”);scanf(%s,Sflag.S_class);getchar();printf( 请输入学生的学号 (15 个字符以内 ): );scanf(%s,Sflag.S_name);scanf( %s ,Sflag.S_number);getchar();S_number_Judge(S,flag); printf( 请输入宿舍号 : ); scanf(

6、 %d,&Sflag.D_number);getchar();printf( 请输入学生地址 :);scanf(%s,Sflag.S_address);strcpy(Si.S_name,Sj.S_name);Si.D_number=Sj.D_number;getchar();printf(请输入学生电话号码 : ”);scanf(%s,&Sflag. S_phone);getchar();dirty=1;printf( 修改成功 !n );putchar( n );/ 删除学生信息void Delete(Student S)int i,j;int flag=0; / 用来判断表中是否存在所要删

7、除的学生的信息char name20;printf( 请输入你要删除学生的姓名 : );scanf( %s ,name);getchar();for (i=1;iTotal;i+)if (strcmp(Si.S_name,name)=0)flag=i;if (!flag)printf( 你所要删除的学生在表中不存在! ); elsefor (i=flag;iTotal;i+)j=i+1;strcpy(Si.S_number,Sj.S_number);(S-Total)-;dirty=1;printf( 删除成功 ! );printf( nn );/ 显示所有学生信息函数void Display

8、_All(Student S)int i;printf( 全体学生信息如下 :n ); printf( 学生姓名 学生班级学生学号宿舍号学生地址学生电话号码 n );for (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_add ress,Si.S_phone );putchar( nn );/ 排序函数按照寝室号从小到大排序 (冒泡法 ) void Sort_D_number(Student S)int i,j,t;char n

9、ame30; char number15;char address300;char Cnumber30;for (i=1;iTotal;i+)for (j=i;jTotal;j+)if (Si.D_numberSj.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);str

10、cpy(Si.S_address,Sj.S_address);strcpy(Si.S_class,Sj.S_class);Si.D_number=Sj.D_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

11、=i;jTotal;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,Sj.S_class);Si.D_n

12、umber=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;char number15;/排序函数按照班级号从小到大排序 (冒泡法 )void Sort_S_class (Student S)int i,j,t;char name30;char address300;char Cnumber30;for(i=1;iTotal;i+)for(j=i;jTotal;j+)if(strc

13、mp(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.S_class,Sj.S_class);Si. D_number =Sj. D_number;s

14、trcpy(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(%s,classnumber);getchar();printf( 所查找学生信息如下 :n); print

15、f( 学生姓名 学生班级学生学号宿舍号学生地址学生电话号码 n);for(i=1;iTotal;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_phone);j=1;if(!j)printf(n 查找失败 , 表中不存在该学生的信息 !nn);/ 查询函数以姓名为关键字进行查询 ( 顺序查找 ) void Query_S_name(Student S)int i,j=0

16、;char name31;printf( 请输入你要查找的学生的姓名 (30个字符以内 ): );scanf( %s ,name);getchar();printf( 所查找学生信息如下 :n );printf( 学生姓名 学生班级 学生学号宿舍号学生地址学生电话号码 n );iffor (i=1;iTotal;i+) (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

17、;if (!j)printf( n 查找失败 , 表中不存在该学生的信息 !nn );/ 查询函数以学号为关键字进行查询 ( 折半查找 ) void Query_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( 学生姓名 学生班级 学生学号宿舍号学生

18、地址学生电话号码 n );if (strcmp(number,S1.S_number)=0&strcmp(number,SS-Total.S_number)=0) while (base0)base=mid+1;elseiftop=mid-1;(!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,&

19、i);getchar();Sort_D_number(S); / 将表中原数据按照寝室号从小到大排序 printf( 所查找寝室信息如下 :n );printf( 学生姓名 学生班级 学生学号宿舍号学生地址学生电话号码 n );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

20、=mid-1;if (!j)printf( n 查找失败 , 表中不存在该寝室的信息 !nn );/ 存储函数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;iTotal;i+)if (fwrite(&Si, sizeof (Std),1,fp)!=1)printf( 数据写入错误 nn );flag2=1;exit(0);

21、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( 加载数据成功! nn );(S-Total)-;/ 由于读取问题,表中个数要减去/退出程序时判断是否保存函数voi

22、d Judge_Save( int i,Student S)charch;if (i)printf( 表中数据已改变,是否保存后再退出 (Y/N)?: );ch=getchar();whilegetchar();(ch!= n &ch!=N &ch!=y &ch!=Y )printf(请输入 N(n)或者 Y(y):);ch=getchar();ifgetchar();(ch= y |ch= Y )Save(S);/菜单void Menu()/菜单voidprintf(printf(printf(printf(printf(printf(printf(printf(printf(printf(main()”*1. 添加学生信息2. 修改学生信息3. 删除学生信息4. 以姓名查询学生信息5. 以学号查询学生信息10.| 11.| 12.6. 以寝室号查询该寝室中的全部学生信息“7.以班级号查询该班级中的全部学生信息学生管理 nn );菜单 *n13.8.按照班级号

温馨提示

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

评论

0/150

提交评论