1、 面向对象程序设计课外实践报告 项 目 名 称: 水电气管理系统 所 在 班 级: 计算机科技与技术 小 组 成 员: 王耀权、董金明 指 导 教 师: 葛文英 起 止 时 间: .11.25——.12.20 项目基本信息 项目名称 设计一种水电气管理系
2、统 项目简介 1.问题描述 设计一种水电管理信息系统,可以对高校水电费用进行管理,涉及登记费用、查询费用和住户信息管理等。在设计时要考虑到学生和教工在用水电时不同,学生可以免费使用一定额度水电,超过这个额度水电后来必要自费使用,且自费某些水电费价格原则要高于教工收费原则(重要是节约资源)。 2.基本规定 ⑴实现对顾客信息录入。 ⑵实现水电煤气数据录入。 ⑶计算并查询顾客应缴费用。 ⑷查询未缴纳费用名单。 3.测试数据 可选用社区物业管理部门数据,也可采用手工输入不少于10个顾客信息数据。 小构成员 王耀权、董金明 任务分工 这个程序是一起做,王耀权重要做是学生水
3、电气管理系统, 董金明做是教师水电气管理系统,然后再会合改错误,最后一起把这个是实验报告完毕。 一、问题描述及分析: 设计一种水电管理信息系统,可以对高校水电费用进行管理,涉及登记费用、查询费用和住户信息管理等。在设计时要考虑到学生和教工在用水电时不同,学生可以免费使用一定额度水电,超过这个额度水电后来必要自费使用,且自费某些水电费价格原则要高于教工收费原则(重要是节约资源)。 二、功能模块及构造描述: 功能模块: 1.在主函数中通过度支选取可以跳转不同功能选项进而实现 2.在显示主菜单函数中,咱们通过设计和谐界面来与顾客进行交互。在“请选取相应功能(1-3):”中使用者
4、输入非1-3数字或其她字符时,系统提示结束然后从新开始。 3.进入学生管理系统菜单或者教师管理系统菜单会浮现相应功能(1-6):分别相应有交费功能、查询一种功能、、查询所有功能、增长功能、删除功能。 学生查询功能分别为学号和姓名,教师查询功能为编号和姓名,也可以查询到与否缴费,如未交费就会分别显示水费、电费、煤气费、费用并显示总费用。 4.交费时它会显示费用多少,实际交了多少钱,如果钱交多了显示应找零多少。 构造描述: 1.一方面建立了Feebz类,用于初始化身份证号码、姓名、用水电、煤气量,又定义了缴费函数Get(),用在有人缴费函数体中,从键盘输入缴费用,一开始咱
5、们在Get(),中没有对缴费用进行累加,在查询信息时现实应缴费用不对的,通过咱们努力,检查出错误并加以改正,让程序更加完善。 2.用Feebz类派生出StuMan和|TeaMan类,其中有计算应当缴费用,StuMan类比TeaMan类多了免费。 3.在保存文献解决中,需考虑到“查询失败”和“重新输入”等诸多内容 三、重要流程描述: 水 电 气 管 理 系 统 选操作对象 退 出 系 统 教 师 学 生 选取操作对象 缴 纳 水 电 气 费 查询一种学生水电气用 量 查询所有学生交费状况 增 加 学 生 信
6、息 删 除 学 生 信 息 退 出 系 统 缴 纳 水 电 气 费 查询一种教师水电用量 查询所有教师缴费状况 增 加 教 师 信 息 删 除 教 师 信 息 退 出 系 统 退 出 退 出 系 统 流程图: 选取操作对象 四、使用阐明: 程序运营后,进入界面: 在如上所示界
7、面下,依照提示进行基本操作。 五、 问题及解决办法 问题1. 觉得该系统局限性就是不可以实现查看某个人用水量、用电量或者用气量中一种和应当支付钱。 问题2尚有一种局限性就是程序感觉不够简洁,有点罗嗦。 解决办法:对于解决这些问题,觉得应当定义子函数来提取每个人信息这样就可以实现查看某人用水量、用电量、或者用气量一种和应当支付钱。对于问题2这需要有夯实基本功,能都用最简短源程序代码去解决一种相似问题。 六、 实践总结: 课程设汁过程中遇到了诸多麻烦,虽然我早有心理准备,但还是令我伤透了脑筋,只怪自己平时看书太少,其实有诸多东匹在书上都可以找到答案
8、可是还是有某些问題我实在没有办法解决,最后通过教师和同窗们努力解决了一种又一种问题。 通过这次课程设计,我学习到了诸多知识,并且给了我一种星月时间去重新认真有目性C++语言进行复习,查找补漏,为后续课程做充分准备。设计过程是困难,由于此前没有类似经验刚开始几天没有太多进展,但是咱们没有灰心,通过认真思考以及教师协助,最咱们有了较好设设计办法。 程序完毕使咱们很高兴,所有疲倦己经不算什么了,当前觉得要想编写一种好程序真很累,它需要牢固基本知识作为 铺垫,所有源代码编写输入以及每一步调试都容不得一点马虎,整个牢固基本是编程最基本需要,要想好每一步算法,要想到每一种相应函数。 我觉得一月课程
9、设计远远比我自己看一学期书 收获多,实践是检查知识最隹手段。
七、 源代码:
#include
10、uble water=1,double power=0,double gas=10);
// 构造函数
friend ostream &operator <<(ostream &out,Feebz &r)
//运算符重载
{out< 11、 out< 12、 operator =(Feebz r); // 运算符重载
double GetW(); // 计算学生水费
double GetP(); // 计算学生电费
double GetG(); // 计算学气愤费
double GetT 13、otal() {return GetW()+GetP()+GetG();} // 计算学生总费用
string number,name;int flag;
double water,power,gas,Waterprice,Powerprice,Gasprice;};
Feebz::Feebz(string Num,string Name,
double Water,
double Power,
double Gas) // 构造函数
{number=Num;name=Name;water=Water;
power=Pow 14、er;gas=Gas;flag=0; }
void Feebz::operator =(Feebz r) // 赋值运算符重载
{name=r.name;
number=r.number;
water=r.water;
power=r.power;
gas=r.gas;}
double Feebz::GetW() // 计算学生水费
{
if(water<=6) Waterprice=0;
else
Wate 15、rprice=0.6*(water-6);
return Waterprice;}
double Feebz::GetP() // 计算学生电费
{if(power<=6) Powerprice=0;
else
Powerprice=0.6*(power-6);
return Powerprice;}
double Feebz::GetG() // 计算学气愤费
{if(gas<=6) Powerpr 16、ice=0;
else
Powerprice=0.6*(gas-6);
return Powerprice;}
class StuMan // 学生管理类
{public:
StuMan(int sz=50)
{
size=sz;
St=new Feebz[size];} //构造函数
~StuMan()
{delete [] St;} // 析构函数
void MainMenu(); 17、 // 主菜单
void FeeMenu(); // 学生交费菜单
void NumFee(); // 输入学号交费
void NameFee(); // 输入姓名交费
void CheckMenu(); // 学生查询菜单
void 18、NumCheck(); // 输入学号查询
void NameCheck(); // 输入姓名查询
void Add(); // 增长学生功能
void DeleteMenu(); // 学生删除菜单
void NumDelete(); // 19、 输入学号删除
void NameDelete(); // 输入姓名删除
void Regist();
void Chakan(); // 学生查看作用
private:
int size;Feebz *St;};
void StuMan::MainMenu() // 主菜单
{system("cls"); int choice;
cout<<" 20、 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"< 21、 cout<<" 欢 迎 使 用 教 师 水 电 气 费 管 理 系 统"< 22、
cout<<" 6.退出系统"< 23、t:
break;
}if(choice==6)
break;
}
}
void StuMan::Regist()
{
int i=0;
ifstream tfile("student.txt");
while(tfile.good())
{
tfile>>St[i].number;
tfile>>St[i].name;
tfile>>St[i].water;
tfile> 24、>St[i].power;
tfile>>St[i].gas; i++;
}
tfile.close(); ns=i;
}
void StuMan::FeeMenu() //学生交费菜单
{
system("cls");
int choice;
cout<<" ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"< 25、☆"< 26、
cout<<" 2.按照姓名交费"< 27、reak;
case 3:system("cls");
MainMenu();
break;
default:exit(1);
}
if(choice==3)
break;
}
}
void StuMan::NumFee() // 输入学号交费
{
string number;
float money;
int flag=0,flag1=0;
cout 28、<<"欢迎使用交费功能"< 29、再补交"< 30、重新使用该功能!"< 31、)
{
flag1=1;
cout<<"该同窗应当交费共"< 32、ey-St[i].GetTotal()<<"元"< 33、system("cls"); int choice;
cout<<" ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"< 34、 cout<<" ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"< 35、 while(1) {
cout<<"请选取:"< 36、NumCheck() // 输入学号查询
{
string number;
int flag1=0,i,item;
cout<<"欢迎使用查询功能"< 37、flag1)
{
cout<<"学号 "<<"姓名"<<"用水量 "<<"用电量 "<<"用煤气量 "<<"水费 "<<"电费 "<<"煤气费 "<<" 总额 "<<" 交费否"< 38、 输入姓名查询
{
string name;
int flag1=0,i,item;
cout<<"欢迎使用查询功能"< 39、水费"<<"电费 "<<"煤气费 "<<" 总额 "<<" 交费否"< 40、" ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"< 41、☆☆☆☆☆☆"< 42、in>>choice;
switch(choice)
{
case 1:NumDelete();
break;
case 2:NameDelete();
break;
case 3:system("cls");
MainMenu();
break;
default:exit(1);
}
if(choice==3)
break;
}
}
void StuMan::NumDelete() 43、 // 输入学号删除
{
string number;
int item=1,i,j;
cout<<"欢迎使用删除功能"< 44、 St[j]=St[j+1];
cout<<"该学生信息已被删除!"< 45、out<<"请输入要删除学生姓名:";
cin>>name;
for(i=0;i 46、meDelete();
}
}
void StuMan::Add() // 增长学生功能
{
int n,i,j=1;
cout<<"请输入你要增长学生数:";
cin>>n;
i=ns;
for(;ns>St[ns].number;
cin>>St[ns].name;
cin>>St[ns].water; 47、
cin>>St[ns].power;
cin>>St[ns].gas;
j++;
}
}
void StuMan::Chakan() // 学生查看功能
{
int i;
cout<<"已交费学生信息"< 48、lag)
cout< 49、 // 教师信息类
{
public:
TFeebz(string Num="01",string Name="王耀权",double water=1,double power=0,double gas=10) ;
friend ostream &operator <<(ostream &out,TFeebz &r) // 运算符重载
{
out< 50、)<






