宿舍管理系统 c语言程序设计.docx
- 文档编号:30052563
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:41
- 大小:21.52KB
宿舍管理系统 c语言程序设计.docx
《宿舍管理系统 c语言程序设计.docx》由会员分享,可在线阅读,更多相关《宿舍管理系统 c语言程序设计.docx(41页珍藏版)》请在冰豆网上搜索。
宿舍管理系统c语言程序设计
宿舍管理系统c语言程序设计
#includestdio.h//*库函数
#includestdlib.h
#includestring.h
#includeconio.hintm;//*控制登陆界面菜单显示项目的全局变量
intnum;//控制学号的全局变量
intorn;//控制日志顺序号的全局变量
intprintnote(void);//日志菜单打印函数函数声明
structnote*creatnote(void);//创建日志函数
voidsavenote(structnote*head1);//保存日志函数
structnote*readnote(void);//从磁盘中读取日志函数
voidreadoutnote(void);//读取日志并显示在屏幕上的函数
voidshow1(void);
intsearchnote(structnote*head1);//查找日志函数
intaddnote(void);//添加日志函数
intdeleteinfonote(void);//删除日志函数
structnode*read1(void);
voidreadout(void);//*链表从文件中读取并显示在屏幕上函数
structnode*creat(void);//*链表的创建函数
intprint1(void);
intprint2(void);//*登陆菜单的打印函数
intlogin(void);//*登陆程序函数
voidshow(void);//*信息管理菜单的显示函数
voidsave(structnode*);//*在磁盘中保存文件的函数
voidchoose(int);//*信息管理菜单的选择函数
intsearch(structnode*);//*信息查询函数
intdeleteinfo(void);//*信息删除函数
intadd(void);//*信息添加函数
intmodify();//*信息修改函数
voidtotal(structnode*);//*信息统计函数
structnode//*学生宿舍信息的结构体创建
{
charname[30];//*数据域
charClass[30];
charsex;
intage;
longintstunum;
intdornum;
introomnum;
structnode*next;//*指针域
};
structuser//*登陆信息结构体创建
{
charusername[15],
password[15];
}user,t;
structnote//日志结构体
{
intordernum;
charnotes[80];
intyear;
intmonth;
intday;
structnote*next;
};
intprintnote(void)//日志菜单打印函数
{
inta;
printf("*\n");
printf("\n");
printf("--欢迎查看管理员日志--\n");
printf("\n");
printf("▲1.创建日志!
");printf("▲2.查看日志!
");printf("▲3.写日志!
");printf("▲4.删除日志\n");
printf("\n");
printf("*\n");
printf("★请输入你的选择!
\n");
scanf("%d",&a);
return(a);
}
structnote*creatnote(void)//*创建日志链表函数
{
structnote*head1,*p1,*p2;
inti;
charc='y';
head1=(structnote*)malloc(sizeof(structnote));//*创建头结点
head1-next=NULL;
p1=head1;
show1();
for(i=0;c=='y';)//*输入信息
{
system("cls");
p2=(structnote*)malloc(sizeof(structnote));
printf("◆输入第%d条信息:
\n",++i);
scanf("%d",&p2-ordernum);fflush(stdin);
gets(p2-notes);fflush(stdin);
scanf("%d",&p2-year);
scanf("%d",&p2-month);
scanf("%d",&p2-day);
p1-next=p2;
p1=p2;
printf("★还要输入信息吗,输入(yorn?
)\n");
c=getch();
fflush(stdin);
system("cls");
}
p1-next=NULL;
return(head1);
}
voidsavenote(structnote*head1)//*保存日志文件
{
structnote*p2;
FILE*fp;
if((fp=fopen("f:
/2.txt","wt"))==NULL)
{
printf("写文件出错,按任意键退出!
");
getch();
exit
(1);
}
for(p2=head1-next;p2!
=NULL;p2=p2-next)
fprintf(fp,"%d\t%s\t\t\t%d%d%d\n",p2-ordernum,p2-notes,p2-year,p2-month,p2-day);
getch();
fclose(fp);
}
structnote*readnote(void)//从日志中文件读取出来
{
structnote*head1,*p1,*p2;
FILE*fp;
if((fp=fopen("f:
/2.txt","rt"))==NULL)
{
printf("读取信息错误!
按任意键退出!
");
getch();
exit
(1);
}
head1=(structnote*)malloc(sizeof(structnote));
head1-next=NULL;
p1=head1;
while(!
feof(fp))
{
p2=(structnote*)malloc(sizeof(structnote));
fscanf(fp,"%d\t%s\t\t\t%d%d%d\n",&p2-ordernum,p2-notes,&p2-year,&p2-month,&p2-day);
p1-next=p2;
p1=p2;
}
p1-next=NULL;
fclose(fp);
return(head1);
}
voidreadoutnote(void)//*从磁盘中读取信息显示在屏幕上
{
structnote*head1,*p1,*p2;
FILE*fp;
if((fp=fopen("f:
/2.txt","rt"))==NULL)
{
printf("读取信息错误!
按任意键退出!
");
getch();
exit
(1);
}
head1=(structnote*)malloc(sizeof(structnote));
head1-next=NULL;
p1=head1;
printf("序列号\t事件\t\t\t\t\t日期\n");
while(!
feof(fp))
{
p2=(structnote*)malloc(sizeof(structnote));
fscanf(fp,"%d\t%s\t\t\t\t\t%d%d%d\n",&p2-ordernum,p2-notes,&p2-year,&p2-month,&p2-day);
printf("\n");
printf("%d\t%s\t\t%d%d%d\n",p2-ordernum,p2-notes,p2-year,p2-month,p2-day);
printf("\n");
p1-next=p2;
p1=p2;
}
p1-next=NULL;
fclose(fp);
}
intsearchnote(structnote*head1)//*日志信息查询
{
inta=0;
structnote*p1,*p2;
p1=head1;
printf("★请你输入你想要查询的事件号!
\n");fflush(stdin);
scanf("%d",&orn);fflush(stdin);
while(p1!
=NULL)
{
if(p1-ordernum==orn)
{
printf("★查询成功!
找到该信息:
\n");
printf("序列号\t实际事件\t\t\t日期\n");
printf("%d\t%s\t\t\t%d%d%d\n",p1-ordernum,p1-notes,p1-year,p1-month,p1-day);
a=1;
returna;
}
p2=p1;
head1=p1-next;
p1=head1;
}
if(p2-ordernum!
=orn)
{
printf("★对不起!
序列号错误!
找不到该信息!
\n");
returna;
}
returna;
}
intaddnote(void)//*日志信息添加
{
structnote*p,*p1,*head1;
head1=readnote();
p=(structnote*)malloc(sizeof(structnote));
printf("★输入信息:
\n");
printf("序列号\t实际事件\t日期\n");
scanf("%d",&p-ordernum);fflush(stdin);
gets(p-notes);fflush(stdin);
scanf("%d",&p-year);
scanf("%d",&p-month);
scanf("%d",&p-day);
p1=head1;
while(p1-next!
=NULL)
{
p1=p1-next;
}
p1-next=p;
p-next=NULL;
p1=p;
savenote(head1);
readoutnote();
return
(1);
}
intdeleteinfonote(void)//*日志信息删除
{
charc;
inta;
structnote*head1,*p1,*p2;
head1=readnote();
a=searchnote(head1);
p1=head1-next;
p2=head1;
if(p1==NULL)return0;
if(a)
{
printf("★您要删除此条信息吗?
\n");
printf("★确定请按y键,取消请按n键!
(yorn?
)\n");
scanf("%c",&c);
if(c=='y')//*删除结点
{
while(p1!
=NULL)
{
if(p1-ordernum==orn)
{
p2-next=p1-next;
free(p1);
savenote(head1);
readoutnote();
return1;
}
p2=p1;
p1=p1-next;
}
}
}
return0;
}
intprint1(void)//*登陆菜单打印
{
printf("\n");
printf("\n");
printf("\n");
printf("\t*欢迎登陆西邮学生宿舍信息管理系统!
*\n");
printf("\t*班级:
计科0803!
*\n");
printf("\t*作者:
高朋辉!
*\n");
printf("\n");
printf("\n");
printf("\n");
printf("|*|\n");
printf("\t\t|◆1注册:
\n");
printf("\t\t|◆2登陆:
\n");
printf("\t\t|◆3退出:
\n");
printf("|*|\n");
printf("请按序号输入你的选择:
\n");
scanf("%d",&m);
return(m);
}
intlogin(void)//*登陆程序
{
intflag=1,str1,str2,time=0;
inti,n=0;
charch=0;
FILE*fp;
while(flag)
{
switch(m)
{
case1:
printf("\n");
printf("*");
printf("\n");
printf("★!
注册小提示:
用户名和密码不得超过15个字符!
\n");
printf("\n");
fp=fopen("f:
/password.txt","wt");
if(fp==NULL)
{
printf("★对不起,此文件打不开:
\n");
getch();
exit
(1);
}
printf("★请输入你的用户名:
\n");
fflush(stdin);
gets(user.username);
fflush(stdin);
printf("★请你输入密码:
\n");
ch=getch();
i=0;
while(ch!
='\r')
{
user.password[i]=ch;
printf("*");
if(ch==8)
{
printf("\b\b\b\b");
i--;
}
elsei++;
ch=getch();
fflush(stdin);
}
user.password[i]='[message]';
fprintf(fp,"%s\n%s\n",user.username,user.password);
fclose(fp);
flag=0,n=1;printf("\n");printf("★注册成功!
\n");
system("cls");
break;
case2:
fp=fopen("f:
/password.txt","rt");
if(fp==NULL)
{
printf("对不起,此文件打不开:
\n");
getch();
exit
(1);
}
fscanf(fp,"%s\n%s\n",user.username,user.password);
fclose(fp);
printf("★请输入你的用户名:
\n");
fflush(stdin);
gets(t.username);
fflush(stdin);
printf("★请你输入密码:
\n");
ch=getch();
i=0;
while(ch!
='\r')
{
t.password[i]=ch;
printf("*");
if(ch==8)
{
printf("\b\b\b\b");
i--;
}
elsei++;
ch=getch();
fflush(stdin);
}
t.password[i]=0;
str1=strcmp(t.username,user.username);
str2=strcmp(t.password,user.password);
if(str1==0&&str2==0)
{
system("cls");
printf("★成功登录!
\n");
return
(1);
}
else
{
printf("\n★登录失败,请重新登录!
\n");
time++;
if(time==3)//登陆次数超过三次自动退出
{
printf("★你超过登陆次数,对不起!
");
exit
(1);
}
}
break;
case3:
exit
(1);break;
}
}
print1();
flag=1;
if(n)
{
switch(m)
{
case1:
printf("你已经注册,请你登陆!
\n");
break;
case2:
while(flag)
{
fp=fopen("f:
/password.txt","rt");
if(fp==NULL)
{
printf("对不起,此文件打不开:
\n");
getch();
exit
(1);
}
fscanf(fp,"%s\n%s\n",user.username,user.password);
fclose(fp);
printf("★请输入你的用户名:
\n");
fflush(stdin);
gets(t.username);
fflush(stdin);
printf("★请你输入密码:
\n");
ch=getch();
for(i=0;ch!
='\r';i++)
{
t.password[i]=ch;
printf("*");
if(ch==8)
printf("\b\b\b\b");
ch=getch();
fflush(stdin);
}
t.password[i]=0;
str1=strcmp(t.username,user.username);
str2=strcmp(t.password,user.password);
if(str1==0&&str2==0)
return
(1);
elseprintf("登录失败!
\n");
flag=0;
}
break;
case3:
exit
(1);
}
}
return(0);
}
structnode*creat()//*创建链表
{
structnode*head,*p1,*p2;
inti;
charc='y';
head=(structnode*)malloc(sizeof(structnode));//*创建头结点
head-next=NULL;
p1=head;
for(i=0;c=='y';)//*创建信息小提示
{
system("cls");
p2=(structnode*)malloc(sizeof(structnode));
printf("★输入第%d个人的信息:
\n",++i);//输入学生信息
printf("姓名\t班级\t\t性别\t年龄\t学号\t楼栋号\t宿舍号\n");fflush(stdin);
gets(p2-name);
fflush(stdin);
gets(p2-Class);
fflush(stdin);
scanf("%c",&p2-sex);
for(;p2-sex!
='f'&&p2-sex!
='m';)
{
printf("★性别输入有误,你必须正确输入'f'或者'm'!
\n");
fflush(stdin);
scanf("%c",&p2-sex);
}
fflush(stdin);
scanf("%d",&p2-age);
while(p2-age16||p2-age30)
{
printf("★你输入的年龄段不在16-30之间,请重新输入!
\n");
scanf("%d",&p2-age);
}
scanf("%ld",&p2-stunum);
while(p2-stunum100000||p2-stunum=1000000)
{
printf("★你输入的学号不是六位数,请重新输入!
\n");
scanf("%ld",&p2-stunum);
}
scanf("%d",&p2-dornum);
while(p2-dornum16||p2-dornum1)
{
printf("★你输入的公寓号不在1-16之间,请重新输入!
\n");
scanf("%d",&p2-dornum);
}
scanf("%d",&p2-roomnum);
p1-next=p2;
p1=p2;
printf("★还要输入学生信息吗,输入(yorn?
)\n");
c=getch();
fflush(stdin);
system("cls");
}
p1-next=NULL;
return(head);
}
voidsave(structnode*head)//*保存文件
{
structnode*p2;
FILE*fp;
if((fp=fopen("f:
/1.txt","wt"))==NULL)
{
printf("写文件出错,按任意键退出!
");
getch();
exit
(1);
}
for(p2=head-next;p2!
=NULL;p2=p2-next)
fprintf(fp,"%s\t%s\t%c\t%d\t%d\t%d\t%d\n",
p2-name,p2-Class,p2-sex,p2-age,p2-stunum,p2-dornum,p2-roomnum);
getch();
fclose(fp);
}
voidshow(void)//*菜单显示
{
printf("\n");
printf("$$$$$$$$$$欢迎进入学生宿舍信息管理系统!
$$$$$$$$$$\n");
printf("\n");
printf("##########宿舍是我家,爱护靠大家##########\n");
printf("\n");
printf("|*|\n");
printf("||\n");
printf("|▲1.信息显示");
printf("\t▲2.信息查询");
printf("\t▲3.信息删除|\n");
printf("||\n");
printf("|▲4.信息创建");
printf("\t▲5.信息修改");
printf("\t▲6.信息统计|\n");
printf("||\n");
printf("|▲7.信息添加");
printf("\t▲8.管理员日志");
printf("▲9.退出系统|\n");
printf("||\n");
printf("|*|\n");
printf("请输入你的选择的信息处理方式的序号!
\n");
}
voidshow1(void)
{
printf("*\n");
printf("!
创建信息小提示:
\n");
printf("\n");
printf("\n");
printf("◆1.输入时性别为'f'或者'm'!
其他均认为是错误操作!
\n");
printf("\n");
printf("◆2.输入年龄时注意年龄在16-30之间,其他均认为是错误操作!
\n");
printf("\n");
printf("◆3.学生学号均为六位数字,如果学号少于或大于六位数字,系统认为此操作为非法操作!
\n");
printf("\n");
printf("◆4.公寓号须在1-16之间,其他数字均认为是错误操作!
\n");
printf("\n");
printf("◆5.因我校公寓楼为五层式建筑结构,故宿舍号在下列范围内,其他区间均认为是非法操作:
\n");
printf("\n");
printf("▲一楼101-150\t二楼201-250\t三楼301-350\n");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 宿舍管理系统 c语言程序设计 宿舍 管理 系统 语言程序设计