水电煤气管理系统.docx
《水电煤气管理系统.docx》由会员分享,可在线阅读,更多相关《水电煤气管理系统.docx(39页珍藏版)》请在冰豆网上搜索。
水电煤气管理系统
面向对象程序设计课外实践报告
项目名称:
水电气管理系统
所在班级:
计算机科技与技术
小组成员:
王耀权、董金明
指导教师:
***
起止时间:
2014.11.25——2015.12.20
项目基本信息
项目名称
设计一个水电气管理系统
项目简介
1.问题描述
设计一个水电管理信息系统,能够对高校的水电费用进行管理,包括登记费用、查询费用和住户信息管理等。
在设计时要考虑到学生和教工在用水电时的不同,学生可以免费使用一定额度的水电,超过这个额度的水电以后必须自费使用,且自费部分水电费的价格标准要高于教工的收费标准(主要是节约资源)。
2.基本要求
⑴实现对用户信息的录入。
⑵实现水电煤气数据的录入。
⑶计算并查询用户应缴费用。
⑷查询未缴纳费用的名单。
3.测试数据
可选用小区物业管理部门的数据,也可采用手工输入不少于10个用户信息的数据。
小组成员
王耀权、董金明
任务分工
这个程序是一起做的,王耀权主要做的是学生水电气管理系统,
董金明做的是老师水电气管理系统,然后再会合改错误,最后一起把这个是实验报告完成。
一、问题描述及分析:
设计一个水电管理信息系统,能够对高校的水电费用进行管理,包括登记费用、查询费用和住户信息管理等。
在设计时要考虑到学生和教工在用水电时的不同,学生可以免费使用一定额度的水电,超过这个额度的水电以后必须自费使用,且自费部分水电费的价格标准要高于教工的收费标准(主要是节约资源)。
二、功能模块及结构描述:
功能模块:
1.在主函数中通过分支选择可以跳转不同的功能选项进而实现
2.在显示主菜单函数中,我们通过设计友好界面来与用户进行交互。
在“请选择相应功能(1-3):
”中使用者输入非1-3数字或其他字符时,系统提示结束然后从新开始。
3.进入学生管理系统菜单或者老师管理系统菜单会出现相应功能(1-6):
分别对应的有交费功能、查询一个功能、、查询全部功能、增加功能、删除功能。
学生的查询功能分别为学号和姓名,老师的查询功能为编号和姓名,也可以查询到是否缴费,如未交费就会分别显示水费、电费、煤气费、费用并显示总费用。
4.交费时它会显示费用多少,实际交了多少钱,如果钱交多了显示应找零多少。
结构描述:
1.首先建立了Feebz类,用于初始化身份证号码、姓名、用水电、煤气量,又定义了缴费函数Get(),用在有人缴费的函数体中,从键盘输入缴的费用,一开始我们在Get(),中没有对缴的费用进行累加,在查询信息时现实的应缴费用不正确,经过我们的努力,检查出错误并加以改正,让程序更加完善。
2.用Feebz类派生出StuMan和|TeaMan类,其中有计算应该缴的费用,StuMan类比TeaMan类多了免费。
3.在保存文件的处理中,需考虑到“查询失败”和“重新输入”等诸多内容
三、主要流程描述:
流程图:
四、使用说明:
程序运行后,进入界面:
在如上所示的界面下,根据提示进行基本的操作。
五、问题及解决方法
问题1.觉得该系统的不足就是不能够实现查看某个人的用水量、用电量或者用气量中的一种和应该支付的钱。
问题2还有一个不足就是程序感觉不够简练,有点罗嗦。
解决方法:
对于解决这些问题,觉得应该定义子函数来提取每个人的信息这样就可以实现查看某人的用水量、用电量、或者用气量的一种和应该支付的钱。
对于问题2这需要有扎实的基本功,能都用最简短的源程序代码去解决一个相同的问题。
六、实践总结:
课程设汁的过程中遇到了很多麻烦,虽然我早有心理准备,但还是令我伤透了脑筋,只怪自己平时看书太少,其实有很多东匹在书上都可以找到答案的,可是还是有一些问題我实在没有办法解决,最终通过老师和同学们的努力解决了一个又一个的问题。
通过这次课程设计,我学习到了很多知识,并且给了我一个星月的时间去重新认真的有目的性的C++语言进行复习,查找补漏,为后续课程做充足的准备。
设计的过程是困难的,因为以前没有类似的经验刚开始的几天没有太多进展,不过我们没有灰心,经过认真思考以及老师帮助,最我们有了很好的设设计方法。
程序的完成使我们很高兴,所有的疲惫己经不算什么了,现在觉得要想编写一个好的程序真的很累,它需要牢固的基础知识作为铺垫,所有源代码的编写输入以及每一步的调试都容不得一点马虎,整个牢固的基础是编程的最基本需要,要想好每一步的算法,要想到每一个相应的函数。
我觉得一月的课程设计远远比我自己看一学期书的收获多,实践是检验知识的最隹手段。
七、源代码:
#include
#include
#include
#include
#include
usingnamespacestd;
intns,nt;
classFeebz//学生的信息类
{
public:
Feebz(stringNum="140901019",stringName="董金明",
doublewater=1,doublepower=0,doublegas=10);
//构造函数
friendostream&operator<<(ostream&out,Feebz&r)
//运算符重载
{out<out<out<out<out<out<out<out<out<if(r.flag)
out<<"已交";
else
out<<"未交";returnout;}
voidoperator=(Feebzr);//运算符重载
doubleGetW();//计算学生水费
doubleGetP();//计算学生电费
doubleGetG();//计算学生气费
doubleGetTotal(){returnGetW()+GetP()+GetG();}//计算学生总费用
stringnumber,name;intflag;
doublewater,power,gas,Waterprice,Powerprice,Gasprice;};
Feebz:
:
Feebz(stringNum,stringName,
doubleWater,
doublePower,
doubleGas)//构造函数
{number=Num;name=Name;water=Water;
power=Power;gas=Gas;flag=0;}
voidFeebz:
:
operator=(Feebzr)//赋值运算符重载
{name=r.name;
number=r.number;
water=r.water;
power=r.power;
gas=r.gas;}
doubleFeebz:
:
GetW()//计算学生水费
{
if(water<=6)Waterprice=0;
else
Waterprice=0.6*(water-6);
returnWaterprice;}
doubleFeebz:
:
GetP()//计算学生电费
{if(power<=6)Powerprice=0;
else
Powerprice=0.6*(power-6);
returnPowerprice;}
doubleFeebz:
:
GetG()//计算学生气费
{if(gas<=6)Powerprice=0;
else
Powerprice=0.6*(gas-6);
returnPowerprice;}
classStuMan//学生管理类
{public:
StuMan(intsz=50)
{
size=sz;
St=newFeebz[size];}//构造函数
~StuMan()
{delete[]St;}//析构函数
voidMainMenu();//主菜单
voidFeeMenu();//学生交费菜单
voidNumFee();//输入学号交费
voidNameFee();//输入姓名交费
voidCheckMenu();//学生查询菜单
voidNumCheck();//输入学号查询
voidNameCheck();//输入姓名查询
voidAdd();//增加学生功能
voidDeleteMenu();//学生删除菜单
voidNumDelete();//输入学号删除
voidNameDelete();//输入姓名删除
voidRegist();
voidChakan();//学生查看作用
private:
intsize;Feebz*St;};
voidStuMan:
:
MainMenu()//主菜单
{system("cls");intchoice;
cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<cout<<"☆☆"<cout<<"☆水电煤气管理系统☆"<cout<<"☆☆"<cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<cout<<"欢迎使用教师水电气费管理系统"<cout<<"1.缴纳水电气费"<cout<<"2.查询一个同学水电气费用量"<cout<<"3.查看所有同学的缴费情况"<cout<<"4.增加学生信息"<cout<<"5.删除学生信息"<cout<<"6.退出系统"<while
(1){
cout<<"请选择:
";
cin>>choice;
switch(choice)
{
case1:
FeeMenu();
break;
case2:
CheckMenu();
break;
case3:
Chakan();
break;
case4:
Add();
break;
case5:
DeleteMenu();
break;
default:
break;
}if(choice==6)
break;
}
}
voidStuMan:
:
Regist()
{
inti=0;
ifstreamtfile("student.txt");
while(tfile.good())
{
tfile>>St[i].number;
tfile>>St[i].name;
tfile>>St[i].water;
tfile>>St[i].power;
tfile>>St[i].gas;i++;
}
tfile.close();ns=i;
}
voidStuMan:
:
FeeMenu()//学生交费菜单
{
system("cls");
intchoice;
cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<cout<<"☆☆"<cout<<"☆水电煤气管理系统☆"<cout<<"☆☆"<cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<cout<<"学生交费菜单"<cout<<"1.按照学号交费"<cout<<"2.按照姓名交费"<cout<<"3.返回主菜单"<cout<<"4.退出系统"<while
(1)
{
cout<<"请选择:
";
cin>>choice;
switch(choice)
{
case1:
NumFee();
break;
case2:
NameFee();
break;
case3:
system("cls");
MainMenu();
break;
default:
exit
(1);
}
if(choice==3)
break;
}
}
voidStuMan:
:
NumFee()//输入学号交费
{
stringnumber;
floatmoney;
intflag=0,flag1=0;
cout<<"欢迎使用交费功能"<cout<<"请输入学生学号:
";
cin>>number;
for(inti=0;iif(number==St[i].number)
{
flag1=1;
cout<<"该同学应该交费共"<cout<<"该同学实际交钱:
";
cin>>money;
if(money{
cout<<"该同学需再补交"<St[i].flag=0;MainMenu();}
else
{
cout<<"该同学交费成功,且找零钱为"<St[i].flag=1;MainMenu();
}
break;
}
if(!
flag1)
{
system("cls");
cout<<"该学生的学号输入错误,请重新使用该功能!
"<NumFee();
}
}
voidStuMan:
:
NameFee()//输入姓名交费
{
stringname;
floatmoney;
intflag=0,flag1=0;
cout<<"欢迎使用交费功能"<cout<<"请输入学生姓名:
";
cin>>name;
for(inti=0;iif(name==St[i].name)
{
flag1=1;
cout<<"该同学应该交费共"<cout<<"该同学实际交钱:
";
cin>>money;
if(money{
cout<<"该同学需再补交"<St[i].flag=0;MainMenu();
}
else
{
cout<<"该同学交费成功,且找零钱为"<St[i].flag=1;
MainMenu();
}
break;
}
if(!
flag1)
{
system("cls");
cout<<"该学生的姓名输入错误,请重新使用该功能!
"<NameFee();
}
}
voidStuMan:
:
CheckMenu()//学生查询菜单
{
system("cls");intchoice;
cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<cout<<"☆☆"<cout<<"☆水电煤气管理系统☆"<cout<<"☆☆"<cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<cout<<"学生查询菜单"<cout<<"1.按照学号查询"<cout<<"2.按照姓名查询"<cout<<"3.返回主菜单"<cout<<"4.退出系统"<while
(1){
cout<<"请选择:
"<cin>>choice;
switch(choice)
{
case1:
NumCheck();
break;
case2:
NameCheck();
break;
case3:
system("cls");
MainMenu();
break;
default:
exit
(1);
}
if(choice==3)
break;
}
}
voidStuMan:
:
NumCheck()//输入学号查询
{
stringnumber;
intflag1=0,i,item;
cout<<"欢迎使用查询功能"<cout<<"请输入需要查找的学生学号:
";
cin>>number;
for(i=0;iif(number==St[i].number)
{
flag1=1;
item=i;
break;
}
if(flag1)
{
cout<<"学号"<<"姓名"<<"用水量"<<"用电量"<<"用煤气量"<<"水费"<<"电费"<<"煤气费"<<"总额"<<"交费否"<cout<}
else
{
system("cls");
cout<<"该学生的学号输入错误,请重新使用该功能!
"<NumCheck();}}
voidStuMan:
:
NameCheck()//输入姓名查询
{
stringname;
intflag1=0,i,item;
cout<<"欢迎使用查询功能"<cout<<"请输入需要查找的学生姓名:
";
cin>>name;
for(i=0;iif(name==St[i].name)
{
flag1=1;item=i;
break;
}
if(flag1)
{
cout<<"学号"<<"姓名"<<"用水量"<<"用电量"<<"用煤气量"<<"水费"<<"电费"<<"煤气费"<<"总额"<<"交费否"<cout<}
else
{
system("cls");
cout<<"该学生的学号输入错误,请重新使用该功能!
"<NameCheck();
}
}
voidStuMan:
:
DeleteMenu()//学生删除菜单
{
system("cls");
intchoice;
cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<cout<<"☆☆"<cout<<"☆水电煤气管理系统☆"<cout<<"☆☆"<cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<cout<<"学生删除菜单"<cout<<"1.按照学号删除"<cout<<"2.按照姓名删除"<cout<<"3.返回主菜单"<cout<<"4.退出系统"<while
(1)
{
cout<<"请选择:
";
cin>>choice;
switch(choice)
{
case1:
NumDelete();
break;
case2:
NameDelete();
break;
case3:
system("cls");
MainMenu();
break;
default:
exit
(1);
}
if(choice==3)
break;
}
}
voidStuMan:
:
NumDelete()//输入学号删除
{
stringnumber;
intitem=1,i,j;
cout<<"欢迎使用删除功能"<cout<<"请输入要删除学生的学号:
";
cin>>number;
for(i=0;iif(number==St[i].number)
{
item=0;j=i;
break;
}
if(!
item)
{
for(j=i;jSt[j]=St[j+1];
cout<<"该学生的信息已被删除!
"<}
if(item){system("cls");
cout<<"该学生的学号输入错误,请重新使用该功能!
"<NumDelete();}}
voidStuMan:
:
NameDelete()//输入姓名删除
{
stringname;
intitem=1,i,j;
cout<<"欢迎使用删除功能"<cout<<"请输入要删除学生的姓名:
";
cin>>name;
for(i=0;iif((name==St[i].name))
{
item=0;j=i;