机房收费管理系统C程序设计报告.docx
《机房收费管理系统C程序设计报告.docx》由会员分享,可在线阅读,更多相关《机房收费管理系统C程序设计报告.docx(28页珍藏版)》请在冰豆网上搜索。
机房收费管理系统C程序设计报告
C++程序设计
设计报告
题目:
机房收费管理系统
一、实验题目
机房收费管理系统
二、实验环境
VisualC++6.0
三、设计思想
包括:
函数分解过程、算法描述以及相应的数据流程图
一、函数分解过程
1、输入功能
structlbtime
{intlbhour;
intlbminute;
intlbsecond;
};
typedefstruct
{
charlbnum[20];
intlbbanji;
intlbflag;
charlbname[20];
structlbtimelbstart,lbfinish;}
lbStudent;
lbStudentlbstu[50];
structlbcomputer
{intlbf;
lbStudentlbstut;
}lbcom[30];
intlbk;
intlbmain_menu()
{charlbc;
do
{
system("cls");
cout<<"\t\t\t****机房收费管理系统****\n"<<"\t\t\t1.输入学生信息\n"<<"\t\t\t2.上机\n"<<"\t\t\t3.下机\n"<<"\t\t\t4.查询上机时间\n"<<"\t\t\t5.机器使用情况显示\n"<<"\t\t\t0.退出系统\n"<<"\t\t\t************************\n"<<"\t\t\t请选择菜单(0-5):
";
lbc=getchar();}
while(lbc<'0'||lbc>'5');
return(lbc-'0');
}
intlbinput(lbStudentlbstu[],intlbn)
{
intlbi=0;
charlbsign='0';
while(lbsign!
='lbn'&&lbsign!
='lbN')
{
getchar();
cout<<"\t\t学号:
";
gets(lbstu[lbn+qhi].lbnum);
cout<<"\t\t班级:
";
cin>>lbstu[lbn+lbi].lbbanji;
getchar();
cout<<"\t\t姓名:
";
gets(lbstu[lbn+lbi].lbname);
cout<<"\t\t继续输入?
是请按Y,否请按N:
";
cin>>lbsign;
lbstu[lbn+qhi].lbflag=0;
lbi++;
}
return(lbn+lbi);
}
voidlbonline(lbStudentlbstu[],intlbn)
{
charlbnum_t[20],lbname_t[20];
intlbi,lbs;
do
{
cout<<"\t\t使用姓名按1,使用学号按2:
";
cin>>lbs;}
while(lbs!
=1&&lbs!
=2);
getchar();
if(lbs==1)
{
cout<<"\t\t请输入姓名:
";
gets(lbname_t);
for(lbi=0;lbiif(strcmp(lbstu[lbi].lbname,lbname_t)==0)
break;
}
else
{
cout<<"\t\t请输入学号:
";
gets(lbnum_t);
for(lbi=0;lbi{
if(strcmp(lbstu[lbi].lbnum,lbnum_t)==0)
break;
}
}
if(lbi==lbn)
{
cout<<"\t\t信息库中暂无该生,请输入该生信息再上机!
\n";
return;}
elseif(lbstu[lbi].lbflag==1)
{
cout<<"\t\t该生正在上机!
\n";
return;
}
else
{
for(lbk=0;lbk<30;lbk++)
if(lbcom[lbk].lbf==0)
{
lbcom[lbk].lbf=1;
cout<<"\t\t请输入上机时间(当前时间):
";
cin>>lbstu[lbi].lbstart.lbhour>>lbstu[lbi].lbstart.lbminute>>lbstu[lbi].lbstart.lbsecond;
lbstu[lbi].lbflag=1;
lbcom[lbk].lbstut=lbstu[lbi];break;
}
if(lbk==30)
cout<<"\t\t机器全部使用中,请稍后再上机!
\n";
}
}
2、计算功能
voidlbcalculate(lbStudentlbstu){
intlbt;
structlbtimelbtimet;
if(lbstu.lbfinish.lbsecond{if(lbstu.lbfinish.lbminute==0)
{lbstu.lbfinish.lbhour-=1;
lbstu.lbfinish.lbminute=59;
}
else
lbstu.lbfinish.lbminute-=1;
lbtimet.lbsecond=lbstu.lbfinish.lbsecond+60-lbstu.lbstart.lbsecond;
}
else
lbtimet.lbsecond=lbstu.lbfinish.lbsecond-lbstu.lbstart.lbsecond;
if(lbstu.lbfinish.lbminute{
lbstu.lbfinish.lbhour-=1;lbtimet.lbminute=lbstu.lbfinish.lbminute+60-lbstu.lbstart.lbminute;
}
else
lbtimet.lbminute=lbstu.lbfinish.lbminute-lbstu.lbstart.lbminute;
lbtimet.lbhour=lbstu.lbfinish.lbhour-lbstu.lbstart.lbhour;
if(lbtimet.lbsecond==0&&lbtimet.lbminute==0)
lbt=lbtimet.lbhour;
else
lbt=lbtimet.lbhour+1;
cout<<"\t\t该生上机用时%d小时,费用为%d元\n",lbt,lbt;
}
3、查询功能
voidlboffline(lbStudentlbstu[],intlbn)
{
charlbnum_t[20],lbname_t[20];
intlbi,lbs;
do
{
cout<<"\t\t使用姓名按1,使用学号按2:
";
cin>>lbs;
}while(lbs!
=1&&lbs!
=2);
getchar();
if(lbs==1)
{
cout<<"\t\t请输入姓名:
";
gets(lbname_t);
for(lbi=0;qhi{
if(strcmp(lbstu[lbi].lbname,lbname_t)==0)
break;
}
}
else
{
cout<<"\t\t请输入学号:
";
gets(lbnum_t);
for(lbi=0;lbi{
if(strcmp(lbstu[lbi].lbnum,lbnum_t)==0)
break;
}
}
if(lbi==lbn)
{
cout<<"\t\t没有这个学生!
\n";
return;
}
elseif(lbstu[lbi].lbflag==0)
{
cout<<"\t\t该生未上机或已下机!
\n";
return;
}
else
{
cout<<"\t\t请输入下机时间(当前时间):
";
cin>>lbstu[lbi].lbfinish.lbhour>>lbstu[lbi].lbfinish.lbminute>>lbstu[lbi].lbfinish.lbsecond;
lbcalculate(lbstu[qhi]);lbstu[lbi].lbflag=0;
for(lbk=0;lbk<3;lbk++)
if(strcmp(lbcom[lbk].lbstut.lbnum,lbstu[lbi].bnum)==0)
{
lbcom[lbk].lbf=0;break;
}
}
}
voidlbsearch(lbStudentlbstu[],intlbn){
charlbnum_t[20],lbname_t[20];
intlbi,lbs;
do
{
cout<<"\t\t使用姓名按1,使用学号按2:
";
cin>>lbs;
}while(lbs!
=1&&qhs!
=2);
getchar();
if(lbs==1)
{
cout<<"\t\t请输入姓名:
";
gets(lbname_t);
for(lbi=0;qhi{
if(strcmp(lbstu[lbi].lbname,lbname_t)==0)
break;
}
}
else
{
cout<<"\t\t请输入学号:
";
gets(lbnum_t);
for(lbi=0;qhi{
if(strcmp(lbstu[lbi].lbnum,lbnum_t)==0)
break;
}
}
if(lbi==lbn)
{
cout<<"\t\t查无此生!
\n";
return;
}
elseif(lbstu[lbi].lbflag==1)
cout<<"\t\t该生正在上机,上机起始时间为%d:
%d:
%d\n",lbstu[lbi].lbstart.lbhour,lbstu[lbi].lbstart.lbminute,lbstu[lbi].lbstart.lbsecond;
else
cout<<"\t\t该生未上机或已下机!
\n";
}
4、机器使用情况的显示
voiddisplay()
{
cout<<"\t机器号是否使用使用者学号班级上机时间\n";
cout<<"\t----------------------------------------------------------\n";
for(lbk=0;lbk<30;lbk++)
{
if(lbcom[lbk].lbf==0)
cout<<"\t%02d否-----:
--:
--\n",qhk+1;
else
cout<<"yes"<lbcom[lbk].lbstut.lbname,lbcom[lbk].lbstut.lbnum,lbcom[lbk].lbstut.lbbanji,lbcom[lbk].lbstut.lbstart.lbhour,
lbcom[lbk].lbstut.lbstart.lbminute,lbcom[lbk].lbstut.lbstart.lbsecond;
}
cout<<"\t";
system("pause");
}
1总体结构图
2主函数程序流程图
3子函数程序流程图
1输入学生信息
2学生上机
3学生下机
4上机时间查询
5机器使用情况
四、源程序清单
包括调试过程(碰到的错误、如错误排除)
#include"stdafx.h"
#include
#include
#include
#include
#include
usingnamespacestd;
structqhtime
{intqhhour;
intlbminute;
intlbsecond;
};
typedefstruct
{
charlbnum[20];
intlbbanji;
intlbflag;
charlbname[20];
structlbtimelbstart,lbfinish;}
lbStudent;
lbStudentlbstu[50];
structlbcomputer
{intlbf;
lbStudentlbstut;
}lbcom[30];
intlbk;
intlbmain_menu()
{charqhc;
do
{
system("cls");
cout<<"\t\t\t****机房收费管理系统****\n"<<"\t\t\t1.输入学生信息\n"<<"\t\t\t2.上机\n"<<"\t\t\t3.下机\n"<<"\t\t\t4.查询上机时间\n"<<"\t\t\t5.机器使用情况显示\n"<<"\t\t\t0.退出系统\n"<<"\t\t\t************************\n"<<"\t\t\t请选择菜单(0-5):
";
lbc=getchar();}
while(lbc<'0'||qhc>'5');
return(lbc-'0');
}
intlbinput(lbStudentlbstu[],intlbn)
{
intlbi=0;
charlbsign='0';
while(lbsign!
='lbn'&&lbsign!
='lbN')
{
getchar();
cout<<"\t\t学号:
";
gets(lbstu[lbn+lbi].lbnum);
cout<<"\t\t班级:
";
cin>>lbstu[lbn+lbi].lbbanji;
getchar();
cout<<"\t\t姓名:
";
gets(lbstu[lbn+lbi].lbname);
cout<<"\t\t继续输入?
是请按Y,否请按N:
";
cin>>lbsign;
lbstu[lbn+lbi].lbflag=0;
lbi++;
}
return(lbn+lbi);
}
voidlbonline(lbStudentlbstu[],intlbn)
{
charlbnum_t[20],lbname_t[20];
intlbi,lbs;
do
{
cout<<"\t\t使用姓名按1,使用学号按2:
";
cin>>lbs;}
while(lbs!
=1&&lbs!
=2);
getchar();
if(lbs==1)
{
cout<<"\t\t请输入姓名:
";
gets(lbname_t);
for(lbi=0;lbiif(strcmp(lbstu[lbi].lbname,lbname_t)==0)
break;
}
else
{
cout<<"\t\t请输入学号:
";
gets(lbnum_t);
for(lbi=0;lbi{
if(strcmp(lbstu[lbi].lbnum,lbnum_t)==0)
break;
}
}
if(lbi==lbn)
{
cout<<"\t\t信息库中暂无该生,请输入该生信息再上机!
\n";
return;}
elseif(lbstu[lbi].lbflag==1)
{
cout<<"\t\t该生正在上机!
\n";
return;
}
else
{
for(lbk=0;lbk<30;lbk++)
if(lbcom[lbk].lbf==0)
{
lbcom[lbk].lbf=1;
cout<<"\t\t请输入上机时间(当前时间):
";
cin>>lbstu[lbi].lbstart.lbhour>>lbstu[lbi].lbstart.lbminute>>lbstu[lbi].lbstart.lbsecond;
lbstu[lbi].lbflag=1;
lbcom[lbk].lbstut=lbstu[lbi];break;
}
if(lbk==30)
cout<<"\t\t机器全部使用中,请稍后再上机!
\n";
}
}
voidlbcalculate(lbStudentlbstu){
intlbt;
structlbtimelbtimet;
if(lbstu.lbfinish.lbsecond{if(lbstu.lbfinish.lbminute==0)
{lbstu.lbfinish.lbhour-=1;
lbstu.lbfinish.lbminute=59;
}
else
lbstu.lbfinish.lbminute-=1;
lbtimet.lbsecond=lbstu.lbfinish.lbsecond+60-lbstu.lbstart.lbsecond;
}
else
lbtimet.lbsecond=lbstu.lbfinish.lbsecond-lbstu.lbstart.lbsecond;
if(lbstu.lbfinish.lbminute{
lbstu.lbfinish.lbhour-=1;
lbtimet.lbminute=lbstu.lbfinish.lbminute+60-lbstu.lbstart.lbminute;
}
else
lbtimet.lbminute=lbstu.lbfinish.lbminute-lbstu.lbstart.lbminute;
lbtimet.lbhour=lbstu.lbfinish.lbhour-lbstu.lbstart.lbhour;
if(lbtimet.lbsecond==0&&lbtimet.lbminute==0)
lbt=lbtimet.lbhour;
else
lbt=lbtimet.lbhour+1;
cout<<"\t\t该生上机用时%d小时,费用为%d元\n",lbt,lbt;
}
voidlboffline(lbStudentlbstu[],intqhn)
{
charlbnum_t[20],lbname_t[20];
intlbi,lbs;
do
{
cout<<"\t\t使用姓名按1,使用学号按2:
";
cin>>lbs;
}while(lbs!
=1&&lbs!
=2);
getchar();
if(lbs==1)
{
cout<<"\t\t请输入姓名:
";
gets(lbname_t);
for(lbi=0;lbi{
if(strcmp(lbstu[lbi].lbname,lbname_t)==0)
break;
}
}
else
{
cout<<"\t\t请输入学号:
";
gets(lbnum_t);
for(lbi=0;lbi{
if(strcmp(lbstu[lbi].lbnum,lbnum_t)==0)
break;
}
}
if(lbi==lbn)
{
cout<<"\t\t没有这个学生!
\n";
return;
}
elseif(lbstu[lbi].lbflag==0)
{
cout<<"\t\t该生未上机或已下机!
\n";
return;
}
else
{
cout<<"\t\t请输入下机时间(当前时间):
";
cin>>lbstu[lbi].lbfinish.lbhour>>lbstu[lbi].lbfinish.lbminute>>lbstu[lbi].lbfinish.lbsecond;
lbcalculate(lbstu[lbi]);lbstu[lbi].lbflag=0;
for(lbk=0;lbk<3;lbk++)
if(strcmp(lbcom[lbk].lbstut.lbnum,lbstu[lbi].lbnum)==0)
{
lbcom[lbk].lbf=0;break;
}
}
}
voidlbsearch(lbStudentlbstu[],intlbn){
charlbnum_t[20],lbname_t[20];
intlbi,lbs;
do
{
cout<<"\t\t使用姓名按1,使用学号按2:
";
cin>>lbs;
}while(lbs!
=1&&lbs!
=2);
getchar();
if(lbs==1)
{
cout<<"\t\t请输入姓名:
";
gets(lbname_t);
for(lbi=0;lbi{
if(strcmp(lbstu[lbi].lbname,lbname_t)==0)
break;
}
}
else
{
cout<<"\t\t请输入学号:
";
gets(lbnum_t);
for(lbi=0;lbi{
if(strcmp(lbstu[lbi].lbnum,lbnum_t)==0)
break;
}
}
if(lbi==lbn)
{
cout<<"\t\t查无此生!
\n";
return;
}
elseif(lbstu[lbi].lbflag==1)
cout<<"\t\t该生正在上机,上机起始时间为%d:
%d:
%d\n",lbstu[lbi].lbstart.lbhour,lbstu[lbi].lbstart.lbminute,lbstu[lbi].lbstart.lbsecond;
else
cout<<"\t\t该生未上机或已下机!
\n";
}
voiddisplay()
{
cout<<"\t机器号是否使用使用者学号班级上机时间\n";
cout<<"\t------