C语言 学生宿舍管理系统方案.docx
《C语言 学生宿舍管理系统方案.docx》由会员分享,可在线阅读,更多相关《C语言 学生宿舍管理系统方案.docx(19页珍藏版)》请在冰豆网上搜索。
C语言学生宿舍管理系统方案
#include
#include
#include
//定义学生结构体
structStudent
{
intdorNo;//宿舍号
charstuName[20];//学生姓名
intstuNo;//学生学号
charstuSex[10];//性别
chardept[20];//系别
charmajor[20];//专业
inttel;//电话
}*stu;
//函数指针
void(*p)(structStudent*,int);
//录入学生信息
voidinsert(structStudent*,int);
//按学号查找
voidnoSeek(structStudent*,int);
//函数功能:
打印信息
voidoutput(structStudent*,int);
/*函数功能:
将数据写入文件*/
voidwrite(structStudent*,int);
/*函数功能:
读取文件数据*/
voidread(structStudent*,int);
//按宿舍查找
voiddSeek(structStudent*,int);
//按姓名查找
voidnaSeek(structStudent*,int);
//按系别查找
voiddeSeek(structStudent*,int);
//删除学生信息
voiddel(structStudent*,int);
//修改学生信息
voidmodify(structStudent*,int);
//增加学生信息
voidadd(structStudent*,int);
//全局变量来记录存储学生的人数
intnum=0;
//主函数
intmain()
{
charch[10];
printf("\t--------欢迎进入宿舍管理系统--------\n");
printf("请输入你想存储的学生人数:
");
scanf("%d",&num);
system("cls");
//申请动态存储空间
stu=(structStudent*)malloc((sizeof(structStudent))*num);
while
(1){
system("cls");
printf("\n");
printf("\t--------欢迎进入宿舍管理系统--------\n");
printf("\t***********************************************************\n");
printf("\t1.录入学生信息");
printf("\t2.按学号查询\n");
printf("\t3.按宿舍号查询");
printf("\t4.按姓名查询\n");
printf("\t5.按系别或专业查询");
printf("\t6.添加信息\n");
printf("\t7.修改信息");
printf("\t8.保存信息\n");
printf("\t9.读取信息");
printf("\t10.删除信息\n");
printf("\t0.退出系统\n");
printf("\t*************************************************************\n");
printf("------------------------------------------------------------------\n");
printf("\t请选择你想实现的功能:
");
scanf("%s",&ch);
//用函数指针指向各函数
if(strcmp(ch,"1")==0)
{
p=insert;
(*p)(stu,num);
}
elseif(strcmp(ch,"2")==0)
{
p=noSeek;
(*p)(stu,num);
}
elseif(strcmp(ch,"3")==0)
{
p=dSeek;
(*p)(stu,num);
}
elseif(strcmp(ch,"4")==0)
{
p=naSeek;
(*p)(stu,num);
}
elseif(strcmp(ch,"5")==0)
{
p=deSeek;
(*p)(stu,num);
}
elseif(strcmp(ch,"6")==0)
{
p=add;
(*p)(stu,num);
}
elseif(strcmp(ch,"7")==0)
{
p=modify;
(*p)(stu,num);
}
elseif(strcmp(ch,"8")==0)
{
p=write;
(*p)(stu,num);
}
elseif(strcmp(ch,"9")==0)
{
p=read;
(*p)(stu,num);
}
elseif(strcmp(ch,"10")==0)
{
p=del;
(*p)(stu,num);
}
elseif(strcmp(ch,"0")==0)
{
exit(0);
}
//write(stu,num);
//read(stu,num);
}
return0;
}
//输入学生相关信息
voidinsert(structStudent*stu,intnum)
{
inti=0;
charch;
system("cls");
do{
if(i{
printf("输入第%d个学生的宿舍号:
",i+1);
scanf("%d",&stu[i].dorNo);
printf("\n姓名:
");
scanf("%s",&stu[i].stuName);
printf("\n学号:
");
scanf("%d",&stu[i].stuNo);
printf("\n性别:
");
scanf("%s",&stu[i].stuSex);
printf("\n系别:
");
scanf("%s",&stu[i].dept);
printf("\n专业:
");
scanf("%s",&stu[i].major);
printf("\n电话:
");
scanf("%d",&stu[i].tel);
i++;
}
else
{
printf("\n\t人数已满无法继续输入");
printf("\n是退出该功能输入?
(Y/N):
");
ch=getchar();
ch=getchar();
}
}while(ch!
='y'&&ch!
='Y');
write(stu,num);
system("cls");
}
//按学号查找
voidnoSeek(structStudent*stu,intnum)
{
inti;
intm;
charch;
chara;
system("cls");
printf("\n确认您已录入学生信息?
:
");
a=getchar();
a=getchar();
if(a!
='n'&&a!
='N')
{
printf("\n请输入你想要查找的学生学号:
");
scanf("%d",&m);
for(i=0;i{
if(m==stu[i].stuNo)
{
printf("\n宿舍号:
%d\n姓名:
%s\n学号:
%d\n性别:
%s\n系别:
%s\n专业:
%s\n电话号码:
%d\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel);
}
}
}
else
{
printf("\n\t没有你要查找的学生信息。
\n");
}
printf("\n请按任意键返回.......");
getchar();
getchar();
}
//按宿舍查找
voiddSeek(structStudent*stu,intnum)
{
inti;
intdor;
charch,a;
system("cls");
printf("\n确认您已录入学生信息?
:
");
a=getchar();
a=getchar();
if(a!
='n'&&a!
='N')
{
printf("\n请输入你想要查找的学生宿舍号:
");
scanf("%d",&dor);
for(i=0;i{
if(dor==stu[i].dorNo)
{
printf("\n宿舍号:
%d\n姓名:
%s\n学号:
%d\n性别:
%s\n系别:
%s\n专业:
%s\n电话号码:
%d\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel);
}
}
}
else
{
printf("\t没找到你要的学生信息。
。
。
\n\n");
}
printf("\n请按任意键返回.......");
getchar();
getchar();
}
//按姓名查询
voidnaSeek(structStudent*stu,intnum)
{
inti;
charname[20];
charch,a;
system("cls");
printf("\n确认您已录入学生信息?
:
");
a=getchar();
a=getchar();
if(a!
='n'&&a!
='N')
{
printf("\n请输入你想要查找的学生姓名:
");
scanf("%s",name);
for(i=0;i{
if(strcmp(name,stu[i].stuName)==0)
{
printf("\n宿舍号:
%d\n姓名:
%s\n学号:
%d\n性别:
%s\n系别:
%s\n专业:
%s\n电话号码:
%d\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel);
}
}
}
else
{
printf("\n\n\t没找到你要的学生信息。
。
。
\n\n");
}
printf("\n请按任意键返回.......");
getchar();
getchar();
}
//按系别或专业查询
voiddeSeek(structStudent*stu,intnum)
{
inti;
charde[20];
charch,a;
system("cls");
printf("\n确认您已录入学生信息?
:
");
a=getchar();
a=getchar();
if(a!
='n'&&a!
='N')
{
printf("\n\t请输入你想要查找的系别或专业:
");
scanf("%s",de);
for(i=0;i{
if(strcmp(de,stu[i].dept)==0)
{
printf("\n宿舍号:
%d\n姓名:
%s\n学号:
%d\n性别:
%s\n系别:
%s\n专业:
%s\n电话号码:
%d\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel);
}
}
}
else
{
printf("\n\n\t没找到你要的学生信息。
。
。
\n");
}
printf("\n请按任意键返回.......");
getchar();
getchar();
}
/*函数功能:
将数据写入文件*/
voidwrite(structStudent*stu,intnum)
{
inti;//控制循环
FILE*fp;//定义文件指针
if(stu[num-1].stuNo!
=0)
{
if((fp=fopen("E:
\\student.txt","wt"))==NULL)//如果文件没有打开,提示错误并退出
{
printf("\n\t文件没有打开!
程序结束!
");
getchar();//等待用户观察
exit(0);//结束整个程序
}
else
{
for(i=0;i{
fprintf(fp,"\n宿舍号:
%d\n姓名:
%s\n学号:
%d\n性别:
%s\n系别:
%s\n专业:
%s\n电话号码:
%d\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel);
}
getchar();
printf("\n\t已将学生信息保存在了D盘根目录下的student.txt文件中。
\n");
}
}
else
{
printf("\n\t没有学生信息。
");
}
getchar();
fclose(fp);
}
/*函数功能:
读取文件数据*/
voidread(structStudent*stu,intnum)
{
inti;
FILE*fp;
if(stu[num-1].stuNo!
=0)
{
if((fp=fopen("E:
\\student.txt","rt"))==NULL)
{
printf("数据读取失败!
\n");
exit(0);
}
else
{
for(i=0;i{
//从文件中读出数据
fscanf(fp,"\n宿舍号:
%d\n姓名:
%s\n学号:
%d\n性别:
%s\n系别:
%s\n专业:
%s\n电话号码:
%d\n",&stu[i].dorNo,&stu[i].stuName,&stu[i].stuNo,&stu[i].stuSex,&stu[i].dept,&stu[i].major,&stu[i].tel);
printf("\n宿舍号:
%d\n姓名:
%s\n学号:
%d\n性别:
%s\n系别:
%s\n专业:
%s\n电话号码:
%d\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel);
}
}
}
else
{
printf("\n\t没有学生信息。
");
}
getchar();
getchar();
fclose(fp);
}
//修改信息
voidmodify(structStudent*stu,intnum)
{
intm;
inti;
charch;
system("cls");
printf("请输入你想修改学生的学号:
");
scanf("%d",&m);
for(i=0;i{
if(m==stu[i].stuNo)
{
printf("\n宿舍号:
%d\n姓名:
%s\n学号:
%d\n性别:
%s\n系别:
%s\n专业:
%s\n电话号码:
%d\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel);
printf("\n您确认修改该学生信息吗?
:
");
ch=getchar();
ch=getchar();
if(ch!
='N'&&ch!
='n')
{
printf("\n输入该学生的宿舍号:
");
scanf("%d",&stu[i].dorNo);
printf("\n姓名:
");
scanf("%s",&stu[i].stuName);
printf("\n学号:
");
scanf("%d",&stu[i].stuNo);
printf("\n性别:
");
scanf("%s",&stu[i].stuSex);
printf("\n系别:
");
scanf("%s",&stu[i].dept);
printf("\n专业:
");
scanf("%s",&stu[i].major);
printf("\n电话:
");
scanf("%d",&stu[i].tel);
write(stu,num);
system("cls");
printf("\n\t修改成功!
!
!
\n\n");
output(stu,num);
}
else
{
printf("\n\t无法修改信息!
!
!
\n");
//break;
}
}
else
{
continue;
}
}
printf("\n请按任意键返回.......");
getchar();
getchar();
}
//删除相关学生信息
voiddel(structStudent*stu,intnum)
{
intno;
inti;
charch;
intj;
printf("\n请输入您想删除的学生学号:
");
scanf("%d",&no);
for(i=0;i{
if(no==stu[i].stuNo)
{
printf("\n宿舍号:
%d\n姓名:
%s\n学号:
%d\n性别:
%s\n系别:
%s\n专业:
%s\n电话号码:
%d\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel);
printf("\n您确认删除该学生信息?
:
");
ch=getchar();
ch=getchar();
if(ch!
='n'&&ch!
='N')//实现删除学生信息
{
for(j=i;j<=num-1;j++)
{
*(stu+j)=*(stu+j+1);
}
num--;
printf("\n\t已成功删除该学生信息!
!
!
\n");
write(stu,num);
output(stu,num);
}
else
{
printf("\n\t无法删除!
!
!
\n");
}
}
else
{
continue;
}
}
printf("\n请按任意键返回.......");
getchar();
getchar();
}
//添加学生信息
voidadd(structStudent*stu,intnum)
{
intno;
inti;
printf("\n\t请输入你想添加的学生人数:
");
scanf("%d",&no);
if((stu[num-1].stuNo)!
=0)
{
stu=(structStudent*)realloc(stu,num+no);
for(i=num;i{
*(stu+num+no)=*(stu+num);
printf("\n输入第%d个学生的宿舍号:
",i+1);
scanf("%d",&stu[i].dorNo);
printf("\n姓名:
");
scanf("%s",&stu[i].stuName);
printf("\n学号:
");
scanf("%d",&stu[i].stuNo);
printf("\n性别:
");
scanf("%s",&stu[i].stuSex);
printf("\n系别:
");
scanf("%s",&stu[i].dept);
printf("\n专业:
");
scanf("%s",&stu[i].major);
printf("\n电话:
");
scanf("%d",&stu[i].tel);
}
num=num+no;
for(i=0;i{
printf("\n宿舍号:
%d\n姓名:
%s\n学号:
%d\n性别:
%s\n系别:
%s\n专业:
%s\n电话号码:
%d\n",stu[i].dorNo,stu[i].stuName,stu[i].stuNo,stu[i].stuSex,stu[i].dept,stu[i].major,stu[i].tel);
}
//write(stu,num);
}
else
{