最新学生宿舍管理软件C语言源代码完整版.docx

上传人:b****8 文档编号:13030472 上传时间:2023-06-10 格式:DOCX 页数:20 大小:20.09KB
下载 相关 举报
最新学生宿舍管理软件C语言源代码完整版.docx_第1页
第1页 / 共20页
最新学生宿舍管理软件C语言源代码完整版.docx_第2页
第2页 / 共20页
最新学生宿舍管理软件C语言源代码完整版.docx_第3页
第3页 / 共20页
最新学生宿舍管理软件C语言源代码完整版.docx_第4页
第4页 / 共20页
最新学生宿舍管理软件C语言源代码完整版.docx_第5页
第5页 / 共20页
最新学生宿舍管理软件C语言源代码完整版.docx_第6页
第6页 / 共20页
最新学生宿舍管理软件C语言源代码完整版.docx_第7页
第7页 / 共20页
最新学生宿舍管理软件C语言源代码完整版.docx_第8页
第8页 / 共20页
最新学生宿舍管理软件C语言源代码完整版.docx_第9页
第9页 / 共20页
最新学生宿舍管理软件C语言源代码完整版.docx_第10页
第10页 / 共20页
最新学生宿舍管理软件C语言源代码完整版.docx_第11页
第11页 / 共20页
最新学生宿舍管理软件C语言源代码完整版.docx_第12页
第12页 / 共20页
最新学生宿舍管理软件C语言源代码完整版.docx_第13页
第13页 / 共20页
最新学生宿舍管理软件C语言源代码完整版.docx_第14页
第14页 / 共20页
最新学生宿舍管理软件C语言源代码完整版.docx_第15页
第15页 / 共20页
最新学生宿舍管理软件C语言源代码完整版.docx_第16页
第16页 / 共20页
最新学生宿舍管理软件C语言源代码完整版.docx_第17页
第17页 / 共20页
最新学生宿舍管理软件C语言源代码完整版.docx_第18页
第18页 / 共20页
最新学生宿舍管理软件C语言源代码完整版.docx_第19页
第19页 / 共20页
最新学生宿舍管理软件C语言源代码完整版.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

最新学生宿舍管理软件C语言源代码完整版.docx

《最新学生宿舍管理软件C语言源代码完整版.docx》由会员分享,可在线阅读,更多相关《最新学生宿舍管理软件C语言源代码完整版.docx(20页珍藏版)》请在冰点文库上搜索。

最新学生宿舍管理软件C语言源代码完整版.docx

最新学生宿舍管理软件C语言源代码完整版

源程序代码:

#include

#include

#include

#defineM100

intdirty=0;//用来判断是否已保存操作

//定义一个存储学生相关信息的结构体

typedefstruct

{

charS_name[31];//学生姓名

charS_class[31];//学生班级

charS_number[16];//学生学号

intD_number;//学生所在寝室的宿舍号

charS_address[500];//学生地址

intS_phone[20];//学生电话号码

intTotal;//学生总数

}Student[M],St;

//判断学号是否与表中所存学号重复

voidS_number_Judge(StudentS,intt)

{

inti;

for(i=1;i<=(S->Total)-1;i++)

while(strcmp(S[i].S_number,S[t].S_number)==0)

{

printf("学号输入失败,该学号已存在,请重新输入学号!

\n");

printf("请输入学生的学号(15个字符以内):

");

scanf("%s",S[t].S_number);

getchar();

i=1;

}

}

//添加学生信息函数

voidAdd(StudentS)

{

printf("请输入学生姓名(30个字符以内):

");

scanf("%s",S[++(S->Total)].S_name);

getchar();//获取换行符

printf(“请输入学生班级(30个字符以内):

”);

scanf("%s",S[S->Total].S_class);

getchar();

printf("请输入学生的学号(15个字符以内):

");

scanf("%s",S[S->Total].S_number);

getchar();

S_number_Judge(S,S->Total);//判断输入的学号是否与表中所存在的学号重复

printf("请输入宿舍号码:

");

scanf("%d",&S[S->Total].D_number);

getchar();

printf("请输入学生地址:

");

scanf("%s",S[S->Total].S_address);

getchar();

printf(“请输入学生电话号码:

”);

scanf("%s",&S[S->Total].S_phone);

getchar();

dirty=1;

printf("添加成功!

\n\n");

}

//修改学生信息函数

voidAlter(StudentS)

{

inti;

intflag=0;//用来判断表中是否存在所要修改的学生的信息

charname[20];

printf("请输入你要修改学生的姓名:

");

scanf("%s",name);

getchar();

for(i=1;i<=S->Total;i++)

if(strcmp(S[i].S_name,name)==0)

flag=i;

if(!

flag)

printf("你所要修改的学生信息在表中不存在!

\n");

else

{

printf("新信息如下:

\n");

printf("请输入学生姓名(30个字符以内):

");

scanf("%s",S[flag].S_name);

getchar();

printf(“请输入学生班级(30个字符以内):

”);

scanf("%s",S[flag].S_class);

getchar();

printf("请输入学生的学号(15个字符以内):

");

scanf("%s",S[flag].S_number);

getchar();

S_number_Judge(S,flag);

printf("请输入宿舍号:

");

scanf("%d",&S[flag].D_number);

getchar();

printf("请输入学生地址:

");

scanf("%s",S[flag].S_address);

getchar();

printf(“请输入学生电话号码:

”);

scanf("%s",&S[flag].S_phone);

getchar();

dirty=1;

printf("修改成功!

\n");

}

putchar('\n');

}

//删除学生信息

voidDelete(StudentS)

{

inti,j;

intflag=0;//用来判断表中是否存在所要删除的学生的信息

charname[20];

printf("请输入你要删除学生的姓名:

");

scanf("%s",name);

getchar();

for(i=1;i<=S->Total;i++)

if(strcmp(S[i].S_name,name)==0)

flag=i;

if(!

flag)

printf("你所要删除的学生在表中不存在!

");

else

{

for(i=flag;iTotal;i++)

{

j=i+1;

strcpy(S[i].S_name,S[j].S_name);

strcpy(S[i].S_number,S[j].S_number);

S[i].D_number=S[j].D_number;

}

(S->Total)--;

dirty=1;

printf("删除成功!

");

}

printf("\n\n");

}

//显示所有学生信息函数

voidDisplay_All(StudentS)

{

inti;

printf("全体学生信息如下:

\n");

printf("学生姓名学生班级学生学号宿舍号学生地址学生电话号码\n");

for(i=1;i<=S->Total;i++)

printf("%-20s%-20s%-15s%-5d%s-10%s\n",S[i].S_name,S[i].S_class,S[i].S_number,S[i].D_number,S[i].S_address,S[i].S_phone);

putchar('\n\n');

}

//排序函数按照寝室号从小到大排序(冒泡法)

voidSort_D_number(StudentS)

{

inti,j,t;

charname[30];

charnumber[15];

charaddress[300];

charCnumber[30];

for(i=1;i<=S->Total;i++)

for(j=i;j<=S->Total;j++)

if(S[i].D_number>S[j].D_number)

{

strcpy(name,S[i].S_name);

strcpy(number,S[i].S_number);

strcpy(address,S[i].S_address);

strcpy(Cnumber,S[i].S_class);

t=S[i].D_number;

strcpy(S[i].S_name,S[j].S_name);

strcpy(S[i].S_number,S[j].S_number);

strcpy(S[i].S_address,S[j].S_address);;

strcpy(S[i].S_class,S[j].S_class);

S[i].D_number=S[j].D_number;

strcpy(S[j].S_name,name);

strcpy(S[j].S_number,number);

strcpy(S[j].S_address,address);

strcpy(S[j].S_class,Cnumber);

S[j].D_number=t;

}

}

//排序函数按照学号从小到大排序(冒泡法)

voidSort_S_number(StudentS)

{

inti,j,t;

charname[30];

charnumber[15];

charaddress[300];

charCnumber[30];

for(i=1;i<=S->Total;i++)

for(j=i;j<=S->Total;j++)

if(strcmp(S[i].S_number,S[j].S_number)>0)

{

strcpy(name,S[i].S_name);

strcpy(number,S[i].S_number);

strcpy(address,S[i].S_address);

strcpy(Cnumber,S[i].S_class);

t=S[i].D_number;

strcpy(S[i].S_name,S[j].S_name);

strcpy(S[i].S_number,S[j].S_number);

strcpy(S[i].S_address,S[j].S_address);;

strcpy(S[i].S_class,S[j].S_class);

S[i].D_number=S[j].D_number;

strcpy(S[j].S_name,name);

strcpy(S[j].S_number,number);

strcpy(S[j].S_address,address);

strcpy(S[j].S_class,Cnumber);

S[j].D_number=t;

}

}

//排序函数按照班级号从小到大排序(冒泡法)

voidSort_S_class(StudentS)

{

inti,j,t;

charname[30];

charnumber[15];

charaddress[300];

charCnumber[30];

for(i=1;i<=S->Total;i++)

for(j=i;j<=S->Total;j++)

if(strcmp(S[i].S_class,S[j].S_class)>0)

{

strcpy(name,S[i].S_name);

strcpy(number,S[i].S_number);

strcpy(address,S[i].S_address);

strcpy(Cnumber,S[i].S_class);

t=S[i].D_number;

strcpy(S[i].S_name,S[j].S_name);

strcpy(S[i].S_number,S[j].S_number);

strcpy(S[i].S_address,S[j].S_address);;

strcpy(S[i].S_class,S[j].S_class);

S[i].D_number=S[j].D_number;

strcpy(S[j].S_name,name);

strcpy(S[j].S_number,number);

strcpy(S[j].S_address,address);

strcpy(S[j].S_class,Cnumber);

S[j].D_number=t;

}

}

//查询函数以班级为关键字进行查询(顺序查找)

voidQuery_S_class(StudentS)

{

inti,j=0;

charclassnumber[31];

printf("请输入你要查找的班级号(30个字符以内):

");

scanf("%s",classnumber);

getchar();

printf("所查找学生信息如下:

\n");

printf("学生姓名学生班级学生学号宿舍号学生地址学生电话号码\n");

for(i=1;i<=S->Total;i++)

if(strcmp(classnumber,S[i].S_class)==0)

{

printf("%-20s%-20s%-15s%-5d%s-10%s\n",S[i].S_name,S[i].S_class,S[i].S_number,S[i].D_number,S[i].S_address,S[i].S_phone);

j=1;

}

if(!

j)

printf("\n查找失败,表中不存在该学生的信息!

\n\n");

}

 

//查询函数以姓名为关键字进行查询(顺序查找)

voidQuery_S_name(StudentS)

{

inti,j=0;

charname[31];

printf("请输入你要查找的学生的姓名(30个字符以内):

");

scanf("%s",name);

getchar();

printf("所查找学生信息如下:

\n");

printf("学生姓名学生班级学生学号宿舍号学生地址学生电话号码\n");

for(i=1;i<=S->Total;i++)

if(strcmp(name,S[i].S_name)==0)

{

printf("%-20s%-20s%-15s%-5d%s-10%s\n",S[i].S_name,S[i].S_class,S[i].S_number,S[i].D_number,S[i].S_address,S[i].S_phone);

j=1;

}

if(!

j)

printf("\n查找失败,表中不存在该学生的信息!

\n\n");

}

//查询函数以学号为关键字进行查询(折半查找)

voidQuery_S_number(StudentS)

{

inti,j,top,base,mid;

charnumber[15];

j=0;

base=1;

top=S->Total;

printf("请输入你要查找学生的学号:

");

scanf("%s",number);

getchar();

Sort_S_number(S);//将表中原数据按照学号从小到大排序

printf("所查找学生信息如下:

\n");

printf("学生姓名学生班级学生学号宿舍号学生地址学生电话号码\n");

if(strcmp(number,S[1].S_number)>=0&&strcmp(number,S[S->Total].S_number)<=0)

{

while(base<=top)

{

mid=(base+top)/2;

if(strcmp(number,S[mid].S_number)==0)

{

printf("%-20s%-20s%-15s%-5d%s-10%s\n",S[i].S_name,S[i].S_class,S[i].S_number,S[i].D_number,S[i].S_address,S[i].S_phone);

putchar('\n');

j=1;

break;

}

elseif(strcmp(number,S[mid].S_number)>0)

base=mid+1;

else

top=mid-1;

}

}

if(!

j)

printf("\n查找失败,表中不存在该学生的信息!

\n\n");

}

//查询函数以寝室号为关键字进行查询(折半查找)

voidQuery_D_number(StudentS)

{

inti,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");

if(i>=S[1].D_number&&i<=S[S->Total].D_number)

{

while(base<=top)

{

mid=(base+top)/2;

if(i==S[mid].D_number)

{

m=mid;

n=mid-1;

while(S[m].D_number==i)

{

printf("%-20s%-20s%-15s%-5d%s-10%s\n",S[m].S_name,S[i].S_class,S[m].S_number,S[m].D_number,S[i].S_address,S[i].S_phone);

m++;

if(m>S->Total)

break;

}

if(n>0)

{

while(S[n].D_number==i)

{

printf("%-20s%-15s%-5d\n",S[n].S_name,S[n].S_number,S[n].D_number);

n--;

if(n<1)

break;

}

}

j=1;

putchar('\n');

break;

}

elseif(i>S[mid].D_number)

base=mid+1;

else

top=mid-1;

}

}

if(!

j)

printf("\n查找失败,表中不存在该寝室的信息!

\n\n");

}

//存储函数

voidSave(StudentS)

{

StStd;

inti;

intflag1=0,flag2=0;//判断存储是否成功

FILE*fp;

if((fp=fopen("Dorm_Manage","w"))==NULL)

{

printf("打开文件失败!

\n\n");

flag1=1;

exit(0);//结束程序

}

for(i=1;i<=S->Total;i++)

if(fwrite(&S[i],sizeof(Std),1,fp)!

=1)

{

printf("数据写入错误\n\n");

flag2=1;

exit(0);

}

if(!

flag1&&!

flag2)

{

printf("数据存储成功!

\n\n");

dirty=0;

}

fclose(fp);

}

//加载记录函数

voidLoad(StudentS)

{

StStd;

FILE*fp;

if((fp=fopen("Dorm_Manage","r"))==NULL)

{

printf("打开文件失败!

\n\n");

exit(0);

}

while(!

feof(fp))

fread(&S[++(S->Total)],sizeof(Std),1,fp);

fclose(fp);

printf("加载数据成功!

\n\n");

(S->Total)--;//由于读取问题,表中个数要减去

}

//退出程序时判断是否保存函数

voidJudge_Save(inti,StudentS)

{

charch;

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);

}

}

//菜单

voidMenu()

{

//菜单

printf("学生管理\n\n");

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");

printf(“7.以班级号查询该班级中的全部学生信息|14.退出程序\n");

printf("******************************************************************************\n");

}

voidmain()

{

inti;

StudentS;

S->Total=0;

do

{

Menu();

printf("请选择所要实现的功能(请输入1~14中的任意一个数字):

");

scanf("%d",&i);

getchar();//获取换行符

putchar('\n');

switch(i)

{

case1:

Add(S);

break;

case2:

Alter(S);

break;

case3:

Delete(S);

break;

case4:

Query_S_name(S);

break;

case5:

Query_S_number(S);

break;

case6:

Query_D_number(S);

break;

case7:

Query_S_class(S

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2