学生宿舍管理软件C语言源代码完整版_第1页
学生宿舍管理软件C语言源代码完整版_第2页
学生宿舍管理软件C语言源代码完整版_第3页
学生宿舍管理软件C语言源代码完整版_第4页
学生宿舍管理软件C语言源代码完整版_第5页
免费预览已结束,剩余8页可下载查看

下载本文档

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

文档简介

1、源程序代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#defineM 100intdirty=0;/ 用来判断是否已保存操作/ 定义一个存储学生相关信息的结构体typedefstructchar S_name31;/ 学生姓名char S_class31; /学生班级char S_number16;/ 学生学号intD_number;/ 学生所在寝室的宿舍号char S_address500; /学生地址int S_phone20; /学生电话号码intTotal;/ 学生总数StudentM

2、,St;/ 判断学号是否与表中所存学号重复void S_number_Judge(Student S,intt)inti;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_numb

4、er_Judge(S,S->Total); / 判断输入的学号是否与表中所存在的学号重复 printf( " 请输入宿舍号码 :" );scanf( "%d",&SS->Total.D_number);getchar();printf("请输入学生地址:");scanf("%s",SS->Total.S_address);getchar();printf(“请输入学生电话号码: ”);scanf("%s",&SS->Total. S_phone);getc

5、har();dirty=1;printf(" 添加成功 !nn");/ 修改学生信息函数void Alter(Student S)inti;intflag=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(" 你所要修改的学生信息在表

6、中不存在!n" );elseprintf(" 新信息如下 :n");printf(" 请输入学生姓名(30 个字符以内 ):" );scanf( "%s" ,Sflag.S_name);getchar();printf(“请输入学生班级(30 个字符以内 ): ”);scanf("%s",Sflag.S_class);getchar();printf(" 请输入学生的学号(15 个字符以内 ):" );scanf( "%s" ,Sflag.S_number);

7、9;.getchar();S_number_Judge(S,flag);printf(" 请输入宿舍号:" );scanf( "%d",&Sflag.D_number);getchar();printf("请输入学生地址:");scanf("%s",Sflag.S_address);getchar();printf(“请输入学生电话号码: ”);scanf("%s",&Sflag. S_phone);getchar();dirty=1;printf(" 修改成功 !n&

8、quot;);putchar('n');/ 删除学生信息void Delete(Student S)inti,j;intflag=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(" 你所要删除的学生在表中不存在!" );el

9、sefor (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)-;dirty=1;printf(" 删除成功 !" );'.printf("nn");/ 显示所有学生信息函数void Display_All(Student S)inti;printf(" 全体学生信息如下:n");printf(" 学生姓名学

10、生班级学生学号宿舍号学生地址学生电话号码n" );for (i=1;i<=S->Total;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 ad

11、dress300;char Cnumber30;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(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);strcp

12、y(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_class,Cnumber);Sj.D_number=t;'./ 排序函数按照学号从小到大排序 ( 冒泡法 ) void Sort_S_number(Student S)inti,j,t;char name30;char number15;ch

13、ar address300;char Cnumber30;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(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.

14、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_class,Cnumber);Sj.D_number=t;/ 排序函数按照班级号从小到大排序 ( 冒泡法 ) void Sort_S_class (Student S)int i,j,t;char name30; char

15、 number15;char address300; char Cnumber30;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(address,Si.S_address);strcpy(Cnumber,Si.S_class);t=Si. D_number;strcpy(Si.S_name,Sj.S_name);strcpy(

16、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_class,Cnumber);Sj. D_number =t;/ 查询函数以班级为关键字进行查询 ( 顺序查找 ) void Query_S_class(Student S)int i,

17、j=0;char classnumber31;printf("请输入你要查找的班级号(30 个字符以内 ):");scanf("%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&quo

18、t;,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" ,name);getchar();print

19、f(" 所查找学生信息如下:n");printf(" 学生姓名学生班级学生学号宿舍号学生地址学生电话号码n" );for (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 查找失败 , 表中不存在该学生的信息

20、!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(" 学生姓名学生班级学生学

21、号宿舍号学生地址学生电话号码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_address,Si.S_phon

22、e);putchar('n');j=1;break ;elseif (strcmp(number,Smid.S_number)>0)'.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(" 请输入你要查询的寝室号:"

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

24、m.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_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;pu

25、tchar('n');break ;elseif (i>Smid.D_number)base=mid+1;elsetop=mid-1;if (!j)printf("n 查找失败 , 表中不存在该寝室的信息!nn");/ 存储函数void Save(Student S)St Std;inti;intflag1=0,flag2=0;/ 判断存储是否成功FILE *fp;if (fp=fopen("Dorm_Manage", "w" )=NULL)printf(" 打开文件失败!nn");flag1

26、=1;exit(0);/ 结束程序for (i=1;i<=S->Total;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",

27、"r" )=NULL)printf(" 打开文件失败!nn");exit(0);while (!feof(fp)fread(&S+(S->Total),sizeof(Std),1,fp);fclose(fp);printf(" 加载数据成功!nn");(S->Total)-;/ 由于读取问题,表中个数要减去/ 退出程序时判断是否保存函数void Judge_Save( inti,Student S)char ch;if (i)printf(" 表中数据已改变,是否保存后再退出(Y/N)?:");

28、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. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论