宿舍管理软件c语言版.docx

上传人:b****1 文档编号:2142414 上传时间:2023-05-02 格式:DOCX 页数:26 大小:18.62KB
下载 相关 举报
宿舍管理软件c语言版.docx_第1页
第1页 / 共26页
宿舍管理软件c语言版.docx_第2页
第2页 / 共26页
宿舍管理软件c语言版.docx_第3页
第3页 / 共26页
宿舍管理软件c语言版.docx_第4页
第4页 / 共26页
宿舍管理软件c语言版.docx_第5页
第5页 / 共26页
宿舍管理软件c语言版.docx_第6页
第6页 / 共26页
宿舍管理软件c语言版.docx_第7页
第7页 / 共26页
宿舍管理软件c语言版.docx_第8页
第8页 / 共26页
宿舍管理软件c语言版.docx_第9页
第9页 / 共26页
宿舍管理软件c语言版.docx_第10页
第10页 / 共26页
宿舍管理软件c语言版.docx_第11页
第11页 / 共26页
宿舍管理软件c语言版.docx_第12页
第12页 / 共26页
宿舍管理软件c语言版.docx_第13页
第13页 / 共26页
宿舍管理软件c语言版.docx_第14页
第14页 / 共26页
宿舍管理软件c语言版.docx_第15页
第15页 / 共26页
宿舍管理软件c语言版.docx_第16页
第16页 / 共26页
宿舍管理软件c语言版.docx_第17页
第17页 / 共26页
宿舍管理软件c语言版.docx_第18页
第18页 / 共26页
宿舍管理软件c语言版.docx_第19页
第19页 / 共26页
宿舍管理软件c语言版.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

宿舍管理软件c语言版.docx

《宿舍管理软件c语言版.docx》由会员分享,可在线阅读,更多相关《宿舍管理软件c语言版.docx(26页珍藏版)》请在冰点文库上搜索。

宿舍管理软件c语言版.docx

宿舍管理软件c语言版

#include

#include

#include

#include

voidmenu();/*主菜单*/

voidsearchmenu();/*查询菜单*/

voidsearch();/*查询系统*/

intsearch_stuname(charstr[]);/*按姓名查询*/

intsearch_stunum(charstr[]);/*按学号查询*/

intsearch_number(charstr[]);/*按宿舍号查询*/

voidsort_stunum();/*按学号排序*/

intfind_stunum();/*增加学生信息时检查学号是否存在*/

intfind1_stunum();/*修改学生信息时检查学号是否存在*/

voidmodify_stuname();/*按姓名修改学生信息*/

voidmodify_stunum();/*按学号修改学生信息*/

voiddelete_stuname();/*按姓名删除学生信息*/

voiddelete_stunum();/*按学号删除学生信息*/

voidquit();/*退出系统*/

voidbound();/*画一条直线*/

intcheck();/*检查是否为第一次使用*/

typedefstructstudent

{

charstuname[31];

charstunum[11];

charnumber[5];

structstudent*next;

}STU;

FILE*fp;/*定义数据文件为全局变量*/

staticcharchoice;/*定义操作代码为全局静态变量*/

voidmenu()

{

do

{

system("cls");

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

printf("\n\t\t\t宿舍管理系统\n");

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

bound();

printf("\n\t\t1.显示所有学生信息\n");

printf("\t\t2.添加学生信息\n");

printf("\t\t3.查询学生信息\n");

printf("\t\t4.修改学生信息\n");

printf("\t\t5.删除学生信息\n");

printf("\t\t0.退出系统\n");

bound();

printf("\t\t请输入操作代码(0~5):

\t");

fflush(stdin);

choice=getchar();

}while(choice<'0'||choice>'5');

/*while(choice<'0'||choice>'5')

{printf("\t\t输入的操作代码无效,请重新输入:

");

fflush(stdin);

choice=getchar();

}*/

}

voiddisplay()/*显示所有学生的信息*/

{

STU*sturecord;

sturecord=(STU*)malloc(sizeof(STU));

if(check()==0)

return;

system("cls");

sort_stunum();

fp=fopen("record.dat","r");

if(fp==NULL)

{printf("文件读取失败!

\n");

return;

}

printf("\t%-10s\t%-10s\t%-5s\n","姓名","学号","宿舍号");

bound();

while(fread(sturecord,sizeof(STU),1,fp)!

=0)

{

printf("\t%-10s",sturecord->stuname);

printf("\t%-10s",sturecord->stunum);

printf("\t%-5s\n",sturecord->number);

}

fclose(fp);

printf("\t请按任意键返回主菜单:

");

getch();

menu();

}

voidaddrecord()/*增加学生信息*/

{

STU*sturecord;

charch;

system("cls");

sturecord=(STU*)malloc(sizeof(STU));

printf("\n\t请输入学生的姓名:

");

scanf("%s",sturecord->stuname);

printf("\t请输入学生的学号:

");

scanf("%s",sturecord->stunum);

if(find_stunum(sturecord->stunum)==1)

{addrecord();

return;

}

printf("\t请输入学生的宿舍号:

");

scanf("%s",sturecord->number);

bound();

printf("\t该学生信息如下:

\n");

printf("\t%-10s\t%-10s\t%-5s\n","姓名","学号","宿舍号");

printf("\t%-10s\t%-10s\t%-5s\n",sturecord->stuname,sturecord->stunum,sturecord->number);

printf("\t确认添加该信息吗?

(Y/N)\t");

fflush(stdin);

ch=getchar();

if(ch=='y'||ch=='Y')

{fp=fopen("record.dat","a");

if(fp!

=NULL)

{

fwrite(sturecord,sizeof(STU),1,fp);

printf("\t学生信息已增加!

\n");

free(sturecord);

}

else

{

printf("添加信息失败,请按任意键退出!

\n");

getch();

exit

(1);

}

fclose(fp);

}

else

{

menu();

return;

}

bound();

printf("\t输入y/Y继续增加学生信息,否则按任意键返回主菜单:

");

fflush(stdin);

ch=getchar();

fflush(stdin);

if(ch=='y'||ch=='Y')

addrecord();

else

menu();

return;

}

voidsearchmenu()/*查询菜单*/

{

system("cls");

printf("\t1.按姓名查询\n\n");

printf("\t2.按学号查询\n\n");

printf("\t3.按宿舍号查询\n\n");

printf("\t4.返回菜单\n");

bound();

}

voidsearch()/*查询系统*/

{

charch;

charstr[31];

if(check()==0)

return;

searchmenu();

printf("\t请输入查询类型:

\t");

fflush(stdin);

ch=getchar();

while(ch<'1'||ch>'4')

{

printf("\t输入的操作代码无效,请重新输入:

");

fflush(stdin);

ch=getchar();

}

switch(ch)

{case'1':

printf("\t请输入要查找学生的姓名:

");

scanf("%s",str);

if(search_stuname(str)==1)

{

bound();

printf("\t请按任意键返回");

getch();

break;

}

printf("\t该学生信息不存在,是否继续查找?

(Y/N)");

fflush(stdin);

ch=getchar();

if(ch=='Y'||ch=='y')

search();

break;

case'2':

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

");

scanf("%s",str);

if(search_stunum(str)==1)

{bound();

printf("\t请按任意键返回");

getch();

fflush(stdin);

break;

}

printf("\t该学生信息不存在,是否继续查找?

(Y/N)");

fflush(stdin);

ch=getchar();

if(ch=='Y'||ch=='y')

search();

break;

case'3':

printf("\t请输入要查找的宿舍号:

");

scanf("%s",str);

if(search_number(str)==1)

{

bound();

printf("\t请按任意键返回");

getch();

fflush(stdin);

break;

}

printf("\n\t该宿舍号不存在,是否继续查找?

(Y/N)");

fflush(stdin);

ch=getchar();

if(ch=='Y'||ch=='y')

search();

break;

}

menu();

}

intsearch_stuname(charstr[])/*按姓名查询*/

{inti=0;

STU*sturecord;

sturecord=(STU*)malloc(sizeof(STU));

fp=fopen("record.dat","r");

while(fread(sturecord,sizeof(STU),1,fp)!

=0)

{

if(strcmp(str,sturecord->stuname)==0)

{

printf("\t该学生信息如下:

\n");

printf("\t%-10s\t%-10s\t%-5s\n","姓名","学号","宿舍号");

printf("\t%-10s\t%-10s\t%-5s\n",sturecord->stuname,sturecord->stunum,sturecord->number);

i++;

}

}

fclose(fp);

if(i>0)

return1;

else

return0;

}

intsearch_stunum(charstr[])/*按学号查询*/

{

STU*sturecord;

sturecord=(STU*)malloc(sizeof(STU));

fp=fopen("record.dat","r");

while(fread(sturecord,sizeof(STU),1,fp)!

=0)

{

if(strcmp(str,sturecord->stunum)==0)

{

printf("\t该学生信息如下:

\n");

printf("\t%-10s\t%-10s\t%-5s\n","姓名","学号","宿舍号");

printf("\t%-10s\t%-10s\t%-5s\n",sturecord->stuname,sturecord->stunum,sturecord->number);

fclose(fp);

return1;

}

}

fclose(fp);

return0;

}

intsearch_number(charstr[])/*按宿舍号查询*/

{inti=0;

STU*sturecord;

sturecord=(STU*)malloc(sizeof(STU));

fp=fopen("record.dat","r");

printf("\t该宿舍的学生信息为:

\n");

printf("\t%-10s\t%-10s\t%-5s\n","姓名","学号","宿舍号");

while(fread(sturecord,sizeof(STU),1,fp)!

=0)

{

if(strcmp(str,sturecord->number)==0)

{printf("\t%-10s\t%-10s\t%-5s\n",sturecord->stuname,sturecord->stunum,sturecord->number);

i++;

}

}

fclose(fp);

if(i>0)

return1;

else

return0;

}

voidsort_stunum()/*按学号对所有学生信息排序*/

{

intcount;

STU*head,*p,*q,*r;

head=(STU*)malloc(sizeof(STU));

q=(STU*)malloc(sizeof(STU));

head->next=NULL;

fp=fopen("record.dat","r");

count=fread(q,sizeof(STU),1,fp);

while(count!

=0)

{

r=head->next;

p=head;

while(r!

=NULL&&strcmp(q->stunum,r->stunum)==1)

{

p=r;

r=r->next;

}

p->next=q;

q->next=r;

q=(STU*)malloc(sizeof(STU));

count=fread(q,sizeof(STU),1,fp);

}

fclose(fp);

p=head->next;

fp=fopen("record.dat","w");

while(p!

=NULL)

{

fwrite(p,sizeof(STU),1,fp);

p=p->next;

}

fclose(fp);

return;

}

intfind_stunum(charstr[])/*增加学生信息时检查学号是否存在*/

{STU*p;

p=(STU*)malloc(sizeof(STU));

fp=fopen("record.dat","a+");

while(fread(p,sizeof(STU),1,fp)!

=0)

{if(strcmp(str,p->stunum)==0)

{printf("\t该学生信息已存在,按任意键返回重新输入!

");

fclose(fp);

getch();

fflush(stdin);

return1;

}

}

fclose(fp);

return0;

}

intfind1_stunum(charstr[],STU*q,STU*p)/*修改学生信息时检查学号是否存在*/

{

while(q!

=NULL)

{if(q==p)

{

q=q->next;

continue;

}

if(strcmp(str,q->stunum)==0)

{printf("\t该学号已存在,请重新输入!

\n");

return1;

}

q=q->next;

}

return0;

}

voidmodify()/*修改系统*/

{

charch;

if(check()==0)

return;

system("cls");

printf("\n\t1.按姓名修改学生信息\n");

printf("\n\t2.按学号修改学生信息\n");

printf("\n\t3.返回主菜单\n");

bound();

printf("\n\t请选择(1~3):

\t");

fflush(stdin);

ch=getchar();

if(ch=='1')

{modify_stuname();

menu();

return;

}

if(ch=='2')

{modify_stunum();

menu();

return;

}

else

menu();

}

voidmodify_stuname()/*按姓名修改学生信息*/

{charch;

charstr[31];

STU*head,*p,*q;

head=(STU*)malloc(sizeof(STU));

q=head;

p=(STU*)malloc(sizeof(STU));

printf("\t请输入学生姓名:

");

scanf("%s",str);

while(search_stuname(str)==0)

{

printf("\t输入的学生姓名不存在,是否返回主菜单?

(y/n)");

fflush(stdin);

ch=getchar();

if(ch=='y'||ch=='Y')

return;

else

{

printf("\t请重新输入姓名:

");

scanf("%s",str);

}

}

fp=fopen("record.dat","r");

while(fread(p,sizeof(STU),1,fp)!

=0)

{q->next=p;

q=p;

p=(STU*)malloc(sizeof(STU));

}

q->next=NULL;

q=head->next;

p=head->next;

while(p!

=NULL)

{if(strcmp(str,p->stuname)==0)

{

do

{

printf("\t请重新输入该学生的学号:

");

scanf("%s",p->stunum);

}while(find1_stunum(p->stunum,q,p)==1);

printf("\t请重新输入该学生的姓名:

");

scanf("%s",p->stuname);

printf("\t请重新输入该学生的宿舍号:

");

scanf("%s",p->number);

}

p=p->next;

}

fclose(fp);

bound();

printf("\t学生信息已修改,确认保存吗?

(Y/N):

");

fflush(stdin);

ch=getchar();

if(ch=='y'||ch=='Y')

{p=head->next;

fp=fopen("record.dat","w");

while(p!

=NULL)

{

fwrite(p,sizeof(STU),1,fp);

p=p->next;

}

fclose(fp);

}

}

voidmodify_stunum()/*按学号修改学生信息*/

{charch;

charstr[31];

STU*head,*p,*q;

head=(STU*)malloc(sizeof(STU));

q=head;

p=(STU*)malloc(sizeof(STU));

printf("\t请输入学生学号:

");

scanf("%s",str);

while(search_stunum(str)==0)

{

printf("\t输入的学生学号不存在,是否返回主菜单?

");

fflush(stdin);

ch=getchar();

if(ch=='y'||ch=='Y')

return;

else

{

printf("\t请重新输入学号:

");

scanf("%s",str);

}

}

fp=fopen("record.dat","r");

while(fread(p,sizeof(STU),1,fp)!

=0)

{q->next=p;

q=p;

p=(STU*)malloc(sizeof(STU));

}

q->next=NULL;

q=head->next;

p=head->next;

while(p!

=NULL)

{if(strcmp(str,p->stunum)==0)

{

do

{

printf("\t请重新输入该学生的学号:

");

scanf("%s",p->stunum);

}while(find1_stunum(p->stunum,q,p)==1);

printf("\t请重新输入该学生的姓名:

");

scanf("%s",p->stuname);

printf("\t请重新输入该学生的宿舍号:

");

scanf("%s",p->number);

}

p=p->next;

}

fclose(fp);

bound();

printf("\t学生信息已修改,确认保存吗?

(Y/N):

");

fflush(stdin);

ch=getchar(

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

当前位置:首页 > 高等教育 > 院校资料

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

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