C语言机房收费管理系统整理.docx
《C语言机房收费管理系统整理.docx》由会员分享,可在线阅读,更多相关《C语言机房收费管理系统整理.docx(13页珍藏版)》请在冰豆网上搜索。
![C语言机房收费管理系统整理.docx](https://file1.bdocx.com/fileroot1/2022-12/12/161680ef-fba0-4c2b-927a-8c22800d80da/161680ef-fba0-4c2b-927a-8c22800d80da1.gif)
C语言机房收费管理系统整理
C语言机房收费管理系统[整理]
机房收费管理系统
2011-5-221.设计目的
(1)通过对机房收费管理程序的编写加深对C语言的掌握。
加深掌握条件语句,循环语
句,函数调用,结构体等。
(2)通过对机房收费管理系统程序的编写,提高自己,对C语言有了更深一步的认识。
2.函数调用关系
main-menu函数:
输出机房管理系统菜单
input函数:
输入若干个学生的学号、班级和姓名
online函数:
学生上机,输入上机学生学号或姓名及时间
calculate函数:
计算上机费用并输出
offline函数:
学生下机,输入下机时间,调用calculate函数得到上机费用search函数:
查找学生上机信息
display函数:
显示全部机器的使用信息
main函数:
函数调用以及结束程序
3(程序模块
机房收费管理系统
输入学生信息学生上机学生下机查询上机时间机器使用情况退出系统将学生的学按学号或按学号或按学号或者姓显示全部机器退出机房
使用情况号、班级、姓者姓名上者姓名下名查询学生上收费管理名输入信息库机机机时间系统
若该生未需判断是输入学生信需判断是否有显示机器是否在信息库否有该学系统使用息,并确定是该学生并且该被使用以及使中,则先生并且该完毕,退否继续输入生是否正在上用该机器的学输入学生生是否正出机生信息信息在上机
(程序代码4
#include
#include
#include
#include
structtime
/*
时间*/
{
inthour;
intminute;
intsecond;
};
typedefstruct
/*
学生信息*/
{
charnum[20];
/*
学号*/
intbanji;
/*
班级*/
intflag;
/*
用来标记学生是否上机
*/
charname[20];
---/*
姓名*/
structtimestart,finish;
}Student;
/**/
上机起止时间
Studentstu[50];--
/*
信息库*/
structcomputer--
{
/*
机器信息*/
intf;
-/*
用来标记机
器是否使用*/
Studentstut;
-/*
使用这台机器的学生*/
}com[30];
intk;
/*30
台机器*/
intmain_menu()-
/*
主菜单*/
{
charc;do
清屏*/
system("cls");
printf("\t\t\t****
机房收费管理系统****\n");
printf("\t\t\t1.
输入学生信息\n");
printf("\t\t\t2.
上机\n");
printf("\t\t\t3.
下机\n");
printf("\t\t\t4.
查询上机时间\n");
printf("\t\t\t5.
机器使用情况显示\n");
printf("\t\t\t0.
退出系统\n");
/*
printf("\t\t\t*
*********************
**\n");
printf("\t\t\t请选择菜单(0-5):
");
c=getchar();
}while(c<'0'||c>'5');
/*
判断输入是否合法*/
return(c-'0');
}
intinput(Studentstu[],intn)
/*输入学生信息*/{
inti=0;
charsign='0';
while(sign!
='n'&&sign!
='N')
/*判断是否继续输入学生信息*/
getchar();
/*
吃掉回车*/
printf("\t\t学号:
");
gets(stu[n+i].num);
printf("\t\t班级:
");
scanf("%d",&stu[n+i].banji);
getchar();
printf("\t\t姓名:
");
gets(stu[n+i].name);
printf("\t\t继续输入,是请按丫,否请按N:
");
scanf("%c",&sign);
stu[n+i].flag=0;
/*初始化为未上机*/i++;
}
return(n+i);
}
voidonline(Studentstu[],intn)
上机*/
/*
{
charnum_t[20],name_t[20];
inti,s;
do
printf("\t\t使用姓名按1,使用学号按2:
");
scanf("%d",&s);
}while(s!
=1&&s!
=2);
getchar();
if(s==1)
{
printf("\t\t请输入姓名:
");
gets(name_t);
for(i=0;i/*查找信息库中是否有该学生*/
if(strcmp(stu[i].name,name_t)==0)
break;
}
else
{
printf("\t\t请输入学号:
");
gets(num_t);
for(i=0;i{
if(strcmp(stu[i].num,num_t)==0)
break;
}
}
if(i==n)
{
printf("\t\t信息库中暂无该生,请输入该生信息再上机〜\n");
return;
}
elseif(stu[i].flag==1)
{
printf("\t\t该生正在上机〜\n");
return;
}
else
{
for(k=0;k<30;k++)
if(com[k].f==0)
{
com[k].f=1;
/*该台机器标记为使用*/
printf("\t\t请输入上机时间(当前时间):
");
scanf("%d:
%d:
%d",&stu[i].start.hour,&stu[i].start.minute,&stu[i].sta
rt.second);
stu[i].flag=1;
/*该生标记为上机
*/
com[k].stut=stu[i];/*
录使用该台机器的学生信息*/
break;
}
if(k==30)
printf("\t\t机器全部使用中,请稍后再上机〜\n");
}
}
voidcalculate(Studentstu)
/*上机时间及费用计算*/{
intt;
structtimetimet;
if(stu.finish.second{
if(stu.finish.minute==0)
{
stu.finish.hour-=1;
stu.finish.minute=59;
}
else
stu.finish.minute-=1;
timet.second=stu.finish.second+60-stu.start.second;
}
else
timet.second=stu.finish.second-stu.start.second;
if(stu.finish.minute{
stu.finish.hour-=1;
timet.minute=stu.finish.minute+60-stu.start.minute;
}
else
timet.minute=stu.finish.minute-stu.start.minute;
timet.hour=stu.finish.hour-stu.start.hour;
if(timet.second==0&&timet.minute==0)
t=timet.hour;
else
t=timet.hour+1;
/*不满一小时按一小时记*/
printf("\t\t该生上机用时%d小时,费用为%d%\n",t,t);}
voidoffline(Studentstu[],intn)
下机*/
/*
{
charnum_t[20],name_t[20];
inti,s;
do
{
printf("\t\t使用姓名按1,使用学号按2:
");
scanf("%d",&s);
}while(s!
=1&&s!
=2);
getchar();
if(s==1)
{
printf("\t\t请输入姓名:
");
gets(name_t);
for(i=0;i{
if(strcmp(stu[i].name,name_t)==0)break;
}
}
else
{
printf("\t\t请输入学号:
");
gets(num_t);
for(i=0;i{
if(strcmp(stu[i].num,num_t)==0)break;
}
}
if(i==n)
{
printf("\t\t没有这个学生〜\n");
return;
}
elseif(stu[i].flag==0)
{
printf("\t\t该生未上机或已下机〜\n");
return;
}
else
{
printf("\t\t请输入下机时间(当前时间):
");
scanf("%d:
%d:
%d",&stu[i].finish.hour,&stu[i].finish.minute,&stu[i].finish.second);
calculate(stu[i]);
/*计算并输出上机费用
*/
stu[i].flag=0;
/*该生标记为未上机
*/
for(k=0;k<3;k++)/*将刚下机学生使用的机器标记为未使用*/
if(strcmp(com[k].stut.num,stu[i].num)==0)
{
com[k].f=0;
/*该台机器标记为未使用*/
break;
}
}
}
voidsearch(Studentstu[],intn)
/*上机时间查询*/
{
charnum_t[20],name_t[20];
inti,s;
do
{
printf("\t\t使用姓名按1,使用学号按2:
");
scanf("%d",&s);
}while(s!
=1&&s!
=2);
getchar();
if(s==1)
{
printf("\t\t请输入姓名:
");
gets(name_t);
for(i=0;i{
if(strcmp(stu[i].name,name_t)==0)
break;
else
{
printf("\t\t请输入学号:
");
gets(num_t);
for(i=0;i{
if(strcmp(stu[i].num,num_t)==0)
break;
}
}
if(i==n)
{
printf("\t\t查无此生〜\n");
return;
}
elseif(stu[i].flag==1)
printf("\t\t该生正在上机,上机起始时间为
%d:
%d:
%d\n",stu[i].start.hour,stu[i].start.minute,
stu[i].start.second);
else
printf("\t\t该生未上机或已下机〜\n");
voiddisplay()
/*全部机器使用情况显示*/
{
printf("\t机器号是否使用使用者学号班级上机时间\n");--/*显示格式,表头*/
printf("\t
\n");
for(k=0;k<30;k++)
{
if(com[k].f==0)
printf("\t%02d否--------:
--:
--\n",k+1);
else
printf("\t%02d是%-10s%-10s%2d%02d:
%02d:
%02d\n",k+1,com[k].stut.name,com[k].stut.num,com[k].stut.banji,com[k].stut.start
.hour,
com[k].stut.start.minute,com[k].stut.start.second);
}
printf("\t");
system("pause");/*使刚显示的内容在屏幕
上停留一段时间,直到继续操作为止*/
}
intmain()
/*
主函数*/
intn=0;
for(k=0;k<30;k++)
/*全部机器标记为未使用*/
com[k].f=0;
for(;;)
{
switch(main_menu())
{
case1:
system("cls");
printf("\t\t\t输入学生信息:
\n");
n=input(stu,n);
break;
case2:
system("cls");
printf("\t\t\t学生上机\n");
online(stu,n);
printf("\t\t");
system("pause");
break;
case3:
system("cls");
printf("\t\t\t学生下机\n");
offline(stu,n);
printf("\t\t");
system("pause");
break;
case4:
system("cls");
printf("\t\t\t上机时间查询\n");
search(stu,n);
printf("\t\t");
system("pause");
break;
case5:
system("cls");
printf("\t\t\t机器使用情况显示\n\n");
display();
break;
case0:
system("cls");
\n\n");
printf("\n\n\t\t感谢使用机房收费管理系统,欢迎下次使用,再见〜
printf("\t\t");
system("pause");
exit(0);
}
}
return0;