C宿舍信息管理组织系统源代码.docx
《C宿舍信息管理组织系统源代码.docx》由会员分享,可在线阅读,更多相关《C宿舍信息管理组织系统源代码.docx(15页珍藏版)》请在冰点文库上搜索。
C宿舍信息管理组织系统源代码
宿舍信息管理系统
代码如下:
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"conio.h"
structrecord
{
charnumb[20];//学号
charname[20];//姓名
charroom[10];//宿舍号
}student[500];
intnum=0;
FILE*fp;
intmenu();/*菜单主界面*/
intadduser();/*输入记录*/
intlist();/*显示记录*/
intsearchbyname();/*按姓名查找*/
intsearchbyroom();/*按宿舍号查找*/
intsearchbynumb();/*按学号查找*/
intadd();/*添加记录*/
intchange();/*删除学生信息*/
intdele();/*删除记录*/
intsave();/*保存记录*/
intexit();/*结束*/
menu()/*主界面*/
{
inti;
printf("*_*pressanykeyentermenu!
*_*\n");
getch();
system("cls");/*清屏*/
printf("\t\t********************MENU*********************\n\n");
printf("\t\t0.输入记录\n");
printf("\t\t1.显示记录\n");
printf("\t\t2.按姓名查找\n");
printf("\t\t3.按姓名查找\n");
printf("\t\t4.按学号查找\n");
printf("\t\t5.添加记录\n");
printf("\t\t6.修改学生信息\n");
printf("\t\t7.删除记录\n");
printf("\t\t8.记录保存文件\n");
printf("\t\t9.Quit\n");
printf("\t\t***********************************************\n");
printf("\nEnteryouchoice(0~9):
");
scanf("%d",&i);
returni;
}
voidmain()
{
for(;;)
{
switch(menu())
{
case0:
adduser();break;/*调用输入函数*/
case1:
list();break;/*调用显示记录函数*/
case2:
searchbyname();break;/*调用按姓名查找函数*/
case3:
searchbyname();break;/*调用按宿舍号查找函数*/
case4:
searchbynumb();break;/*调用按学号查找函数*/
case5:
add();break;/*调用添加函数*/
case6:
change();break;/*调用修改学生信息函数*/
case7:
dele();break;/*调用删除函数*/
case8:
save();break;/*调用保存函数*/
case9:
exit(0);
}
}
}
adduser()/*输入记录*/
{
printf("\n\t\t****************请输入用户信息****************\n");
printf("\n\t\t输入学号:
");
scanf("%s",student[num].numb);
printf("\n\t\t输入姓名:
");
scanf("%s",student[num].name);
printf("\n\t\t输入宿舍号:
");
scanf("%s",student[num].room);
num++;
printf("\n\t\t是否继续添加?
(Y/N):
");
if(getch()=='y')
adduser();
return(0);
}
list()/*显示记录*/
{
inti;
if(num!
=0)
{
printf("\n\t\t***************以下为宿舍信息管理系统所有信息************");
for(i=0;i{
printf("\n\t\t学号:
%s",student[i].numb);
printf("\n\t\t姓名:
%s",student[i].name);
printf("\n\t\t宿舍号:
%s",student[i].room);
printf("\t\t");
if(i+1{
printf("\n\t\t_____________________________________________");
}
}
printf("\n\t\t************************************************");
}
else
printf("\n\t\t宿舍信息管理系统中无任何纪录");
printf("\n\t\t按任意键返回主菜单:
");
getch();
return(0);
}
searchbyname()/*按姓名查找*/
{
intmark=0;
inti;
inta=0;
printf("\n\t\t*****************按姓名查找*******************");
charname[20];
printf("\n\t\t请输入姓名:
");
scanf("%s",name);
for(i=a;i{
if(strcmp(student[i].name,name)==0)
{
printf("\n\t\t*************以下是您查找的用户信息***********");
printf("\n\t\t学号:
%s",student[i].numb);
printf("\n\t\t姓名:
%s",student[i].name);
printf("\n\t\t宿舍号:
%s",student[i].room);
printf("\n\t\t************************************************");
mark++;
getch();
return(0);
}
}
if(mark==0)
{
printf("\n\t\t没有该学生的信息");
printf("\n\t\t按任意键返回主菜单");
getch();
return(0);
}
return(0);
}
searchbyroom()/*按学号查找*/
{
intmark=0;
inti;
inta=0;
printf("\n\t\t******************按宿舍号查找******************");
charnumb[10];
printf("\n\t\t请输入宿舍号:
");
scanf("%s",room);
for(i=0;i{
if(strcmp(student[i].room,room)==0)
{
printf("\n\t\t**************以下是您查找的用户信息**********");
printf("\n\t\t学号:
%s",student[i].numb);
printf("\n\t\t姓名:
%s",student[i].name);
printf("\n\t\t宿舍号:
%s",student[i].room);
printf("\n\t\t************************************************");
printf("\n\t\t按任意键返回主菜单:
");
mark++;
if((i+1){
printf("\n\t\t是否继续查找相同宿舍号的用户信息:
(y/n)");
if(getch()=='y')
{
a=i;
continue;
}
else
return(0);
}
else
{
printf("\n\t\t按任意键返回主菜单");
getch();
return(0);
}
}
}
if(mark!
=0)
{
printf("\n\t\t没有相同宿舍号的用户纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return(0);
}
return(0);
}
searchbynumb()/*按学号查找*/
{
intmark=0;
inti;
inta=0;
printf("\n\t\t******************按学号查找******************");
charnumb[10];
printf("\n\t\t请输入学号:
");
scanf("%s",numb);
for(i=0;i{
if(strcmp(student[i].numb,numb)==0)
{
printf("\n\t\t**************以下是您查找的学生信息**********");
printf("\n\t\t学号:
%s",student[i].numb);
printf("\n\t\t姓名:
%s",student[i].name);
printf("\n\t\t宿舍号:
%s",student[i].room);
printf("\n\t\t************************************************");
printf("\n\t\t按任意键返回主菜单:
");
mark++;
getch();
return(0);
}
}
if(mark==0)
{
printf("\n\t\t没有该学生的信息");
printf("\n\t\t按任意键返回主菜单");
getch();
return(0);
}
return(0);
}
add()/*添加记录*/
{
inti;
if((fp=fopen("student.bin","wb"))==NULL)/*判断文件是否打开*/
{
printf("\n\t\t文件打开失败");
}
for(i=0;i{
if(fwrite(&student[i],sizeof(structrecord),1,fp)!
=1)
/*fwrite()(数据块的输出)将以数组student[i]为首地址的一个sizeof(structrecord)的大小的数据块写入fp指向的文件中*/
{
printf("\n\t\t写入文件错误!
\n");
}
printf("\n\t\t****************请输入用户信息****************\n");
printf("\n\t\t输入学号:
");
scanf("%s",student[num].numb);
printf("\n\t\t输入姓名:
");
scanf("%s",student[num].name);
printf("\n\t\t输入性别:
");
scanf("%s",student[num].sex);
num++;
printf("\n\t\t是否继续添加?
(Y/N):
");
if(getch()=='y')
adduser();
return(0);
}
fclose(fp);/*关闭fp所指向的文件*/
printf("\n\t\t宿舍信息管理系统文件已保存");
printf("\n\t\t按任意键退出程序\n\t\t");
exit(0);
return(0);
}
change()/*按学号修改*/
{inti,j;
charnumb;
scanf("%s",numb);
for(i=0;iif(strcmp(student[i].numb,numb)==0)
{printf("\n\t\t**************以下是您查找的用户信息**********");
printf("\n\t\t学号:
%s",student[i].numb);
printf("\n\t\t姓名:
%s",student[i].name);
printf("\n\t\t宿舍号:
%s",student[i].room);
printf("\n\t\t************************************************");
printf("\n\t\t是否要修改?
(Y/N)\n");
if(getchar()=='Y'||getchar()=='y')
{{printf("\n\t\t********请输入第%d位的学生信息*****************",i);
printf("\n\t\t输入学号:
");
scanf("%s",student[num].numb);
printf("\n\t\t输入姓名:
");
scanf("%s",student[num].name);
printf("\n\t\t输入宿舍号:
");
scanf("%s",student[num].room);
printf("\n\t\t************************************************");
}
student[i]=student[i];
printf("\n\t\t修改成功");
printf("\n\t\t是否继续修改?
(y/n)");
if(getch()=='y'||getch()=='Y')
plus();
return;
}
}
else
{printf("\n\t\t对不起,文件中无任何纪录");
printf("\n\t\t按任意键返回主菜单");
getchar();
return;
}
}
voiddeletebynumb()/*按学号删除*/
{
inti,j;
intdeletemark=0;/*将删除联系人的数目初始化为0*/
charnumb[20];
printf("\n\t\t请输入要删除学生学号:
");
scanf("%s",numb);
if(num==0)/*num为0说明宿舍信息管理系统中还没有输入联系人*/
{
printf("\n\t\t对不起,文件中无任何纪录");
printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
for(i=0;i{
if(strcmp(student[i].numb,numb)==0)
{
printf("\n\t\t以下是您要删除的学生纪录:
");
printf("\n\t\t学号:
%s",student[i].numb);
printf("\n\t\t姓名:
%s",student[i].name);
printf("\n\t\t性别:
%s",student[i].room);
printf("\t\t");
printf("\n\t\t是否删除?
(y/n)");
if(getch()=='y')
{
for(j=i;jstudent[j]=student[j+1];/*将要删除的学生的后一位赋值给要删除的学生*/
num--;/*宿舍信息管理系统中的学生数目减少1*/
deletemark++;/*删除的联系人增加1*/
printf("\n\t\t删除成功");
printf("\n\t\t是否继续删除?
(y/n)");
if(getch()=='y')/*输入y值,继续调用按学号函数删除*/
deletebynumb();
return;
}
else/*否则,返回值*/
return;
}
continue;/*跳出for循环,立即转向计算表达式3,对循环控制变量增量或减量*/
}
if(deletemark==0)/*若删除的学生数目为0,则说明没有删除学生信息管理系统里的学生*/
{
printf("\n\t\t没有该学生的纪录");
printf("\n\t\t是否继续删除?
(y/n)");
if(getch()=='y')/*输入y值,继续调用按学号函数删除*/
deletebynumb();
return;
}
}
voiddeletebyname()/*按姓名删除*/
{inta=0;
intfindmark=0;
inti,j;
intdeletemark=0;
charname[20];
printf("\n\t\t请输入要删除学生姓名:
");
scanf("%s",name);
for(i=a;i{
if(strcmp(student[i].name,name)==0)
{
printf("\n\t\t以下是您要删除的学生纪录:
");
findmark++;
printf("\n\t\t________________________________");
printf("\n\t\t学号:
%s",student[i].numb);
printf("\n\t\t姓名:
%s",student[i].name);
printf("\n\t\t性别:
%s",student[i].sex);
printf("\n\t\t出生日期:
%s",student[i].birth);
printf("\n\t\t学位:
%s",student[i].degr);
printf("\n\t\t职务:
%s",student[i].duty);
printf("\n\t\t电话号码:
%s",student[i].tel);
printf("\n\t\t________________________________");
printf("\n\t\t是否删除?
(y/n)");
if(getchar()=='y')
{
for(j=i;jstudent[j]=student[j+1];
num--;
deletemark++;
printf("\n\t\t删除成功");
printf("\n\t\t是否继续删除?
(y/n)");
if(getch()=='y')/*输入y值,继续调用按姓名函数删除*/
deletebyname();
return;
}
else/*否则,返回值*/
return;
}
continue;/*跳出for循环,立即转向计算表达式3,对循环控制变量增量或减量*/
}
if(deletemark==0)/*若删除的学生数目为0,则说明没有删除宿舍信息管理系统里的学生*/
{
printf("\n\t\t没有该学生的纪录");
printf("\n\t\t是否继续删除?
(y/n)");
if(getch()=='y')/*输入y值,继续调用按姓名函数删除*/
deletebyname();
return;
}
}
dele()
{
charchoic;
printf("\n\t\t1-按学号删除2-按姓名删除");
printf("\n\t\t请选择:
");
choic=getch();
switch(choic)
{
case'1':
deletebynumb();break;
case'2':
deletebyname();break;
}
return(0);
}
save()/*保存记录*/
{
intj;
FILE*fp;
fp=fopen("student.txt","w");/*以只写的方式打开文件*/
if(fp==NULL)/*判断文件是否存在*/
printf("can'topenthefile.");/*不能打开文件*/
if(num!
=0)
{
for(j=0;j{
fwrite(student,sizeof(student),1,fp);
}
}
printf("保存成功!
");
fclose(fp);/*关闭fp所指向的文件*/
return(0);
}