电煤气管理系统设计说明书.doc

上传人:牧羊曲112 文档编号:3913927 上传时间:2023-03-27 格式:DOC 页数:36 大小:157.50KB
返回 下载 相关 举报
电煤气管理系统设计说明书.doc_第1页
第1页 / 共36页
电煤气管理系统设计说明书.doc_第2页
第2页 / 共36页
电煤气管理系统设计说明书.doc_第3页
第3页 / 共36页
电煤气管理系统设计说明书.doc_第4页
第4页 / 共36页
电煤气管理系统设计说明书.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《电煤气管理系统设计说明书.doc》由会员分享,可在线阅读,更多相关《电煤气管理系统设计说明书.doc(36页珍藏版)》请在三一办公上搜索。

1、*实践教学* 兰州理工大学计算机与通信学院2011年秋季学期 面向对象 课程设计题 目: 电煤气管理系统 专业班级:计算机科学与技术四班姓 名: 霍雪萍 学 号: 10240442 指导教师: 朱红蕾 成 绩:_ 目 录序 言3摘 要4第一章 需求分析5第二章 设计62.1设计思想62.2 设计表示62.3 实现注释82.4 详细设计表示8第三章 用户手册9第四章 调试及测试10第五章 附录源程序13参考文献34设计小结35致 谢36序 言近年来,在计算机软件业,面向对象程序设计的思想已经被越来越多的软件设计人员所接受。不仅因为它是一种最先进的,新颖的计算机程序设计思想,最主要的是这种新的思想

2、更接近人的思维活动,人们利用这种思想进行程序设计时,可以很大程度地提高编程能力,减少软件维护的开销。面向对象程序设计方法是通过增加软件的可扩充性和可重用性来提高程序员的编程能力。随着计算机在我国广泛而深入的应用,在分析和开发计算机系统软件和应用软件的过程中,迫切需要掌握各种数据结构的描述方法以及相应的处理算法。因此面向对象程序设计知识是计算机相关科学的学生和从事计算机应用的技术人员必备的专业基础知识。著名的瑞士计算机科学家沃思提出:对象+消息=程序。摘要电煤气管理系统程序的设计与实现,该程序具有登记费用,查询费用及住户信息管理等功能。在课程设计中,程序设计语言采用Visual C+,程序运行平

3、台为Windows XP。对于在设计时要考虑到学生和教工在用水电时的不同,学生可以免费使用一定额度的水电,超过这个额度的随便以后必须自费使用,且自费部分水电费的价格标准要高于教工的收费标准(主要是节约资源)。程序通过调试运行,实现了最初的设计目标,并且经过适当完善后,在实际中可以解决更多的问题。关键词 电煤气管理系统 ; 程序设计 ; C+ 第一章 需求分析 本程序是一个水电气管理信息系统,能够对高校的水电气费用进行理,包括了成员基本信息,如学号、编号、姓名、成员水电气的用量;程序的用途包括缴纳水电气费、查询一个同学水电气费用量、查看所有同学的缴费情况、增加学生信息、删除学生信息、退出系统等。

4、在设计时也考虑到学生和教师在用水电气时的不同,学生可以免费使用一定额度的水电气,超过这个额度的以后必须付费,且付费部分水电气费的价格要高于教工的收费标准,该措施的实行是为了鼓励同学们节约用水,以免造成不必要的资源浪费。该软件主要是为了学校的管理人员提供便捷,以更快的完成水电气费用的收缴。该软件本着简洁明了,实用稳定与与一体。第二章 设计1.设计思想:设计面向对象的程序设计语言,首先考虑的肯定是要设计类。程序设计了四个类,两个是学生类,两个是教师类。在主函数中用动态数组,机动的分配类存,以至于不造成类存的浪费。在本程序中涉及用户的选择,用户要根据自己的实际需要选择不同的功能,由于选择的多样性,程

5、序中必须要有switch结构控制各个功能的选择,如果需要多次进行操作,则要在switch结构的外部,通过循环来实现。首先该程序的第一目的是要读记事本里的内容,然后再根据用户的选项来实现各种不同的功能,当正确按照要求就可进行更进一步进行操作,直到你达到自己的目的为止。与while结构有着相似功能的ifelse在本程序中的使用也是非常普遍的。本程序通过调用不同的函数来实现不同的功能,通过用户自己的选择可以自己进行操作,在主函数中申明的函数分别起到不同的作用,为了使主函数不过于冗繁,故在本程序中所有的子函数都是在主函数外实现的。在子函数的函数体中为了使程序的功能和细节更加的完善,在子函数中设置菜单,

6、这样不仅使得程序更加完善还有利于用户的操作。使得程序更加简洁明了。2设计表示:在这个电煤气管理系统中,共用到了四个类,一个是Feebz类,它起的作用是把水电煤气的用量和每个人的缴费信息结合在一起,还有”的重载,我开始没有用友元函数来写,后来想到了可还是不对,得必须把这个友元函数写在类里面,其正确答案就是:friend ostream& operator (ostream &out,Feebz &r)outsetw(6)leftr.number;outsetw(6)leftr.name; outsetw(6)leftr.water; outsetw(6)leftr.power; outsetw(

7、6)leftr.gas; outsetw(6)leftr.GetW(); outsetw(6)leftr.GetP(); outsetw(6)leftr.GetG();outsetw(6)leftr.GetTotal();if(r.flag)out已交endl;else out未交Sti.number; tfileSti.name; tfileSti.water; tfileSti.power; tfileSti.gas; i+; tfile.close();最后一个难解的问题就是error C2668: StuMan:StuMan : ambiguous call to overloaded

8、 function这段提示,然后经过在网上的了解,终于将它给改正过来了。这时我感觉自己越来越接近胜利了,可始终还是有一个错误,而且错误是在主函数中,最后经过仔细的思考,原来是没有创立对象,直接写了StuMan.MainMenu(),可事实上应该是StuMan xuesheng;xuesheng MainMenu();在解决这些问题期间,对我来说最难解决的就是在文件的读取方面,在没有写这个程序之前我对磁盘文件可谓是一无所知,但这个程序必须要用到磁盘文件,在运用这个知识点时错误就不停的出现,就像文件的读入,本来应是ofile,虽然这些都是些小问题,可写程序本身就是件很严谨的事情,一个小错误都不能错

9、误,否则这程序还是不能运行,所以我们不可以忽略它们,我们在平时多注意点就会很容易的避免这些错误,同时也就会节省很多的时间。在写这个程序花的时间很长,可能是由于在家的缘故,没有集中的时间去做这个工作,通常是集中花几天时间先写一点,然后就停了几天,结果再到写的时候,就又忘记了当时的思路,结果就做了很多的无用功。所以写程序时一定不能三心二意,要集中一段时间将它写完,这样不仅能节省许多时间,而且还能提高程序的准确性。运行实例:若选学生电煤气管理系统,则会出现以下画面:然后继续按要求输入,就会出现以下的菜单,如下图:出现这个画面后,接着就是继续按照要求来写,如选3,就会得到如下想要的结果:第五章 附录源

10、程序 StuMan.h#include iostream#include string#include cstdlib#include iomanip#include fstreamusing namespace std;int ns,nt; class Feebz 学生的信息类public:Feebz(string Num=0904032011,string Name=任家双,double water=1,double power=0,double gas=10); 构造函数friend ostream &operator (ostream &out,Feebz &r) 运算符重载outse

11、tw(12)leftr.number; outsetw(8)leftr.name; outsetw(8)leftr.water; outsetw(8)leftr.power; outsetw(8)leftr.gas; outsetw(8)leftr.GetW(); outsetw(8)leftr.GetP(); outsetw(8)leftr.GetG(); outsetw(8)leftr.GetTotal(); if(r.flag) out已交; else out未交; return out;void operator =(Feebz r); 运算符重载double GetW(); 计算学生

12、水费double GetP(); 计算学生电费 double GetG(); 计算学生气费 double GetTotal() 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=P

13、ower;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 Waterprice=0.6*(water-6);return Waterprice;double Feebz:GetP() 计算学生电费if(power=6) Powerprice=0;elsePowerprice=0.6*(pow

14、er-6); return Powerprice; double Feebz:GetG() 计算学生气费if(gas=6)Powerprice=0;elsePowerprice=0.6*(gas-6); return Powerprice;class StuMan 学生管理类public:StuMan(int sz=50) size=sz; St=new Feebzsize; 构造函数StuMan() delete St; 析构函数void MainMenu(); 主菜单void FeeMenu(); 学生交费菜单 void NumFee(); 输入学号交费void NameFee(); 输入

15、姓名交费 void CheckMenu(); 学生查询菜单void NumCheck(); 输入学号查询void NameCheck(); 输入姓名查询void Add(); 增加学生功能void DeleteMenu(); 学生删除菜单 void NumDelete(); 输入学号删除 void NameDelete(); 输入姓名删除 void Regist(); void Chakan(); 学生查看作用private:int size;Feebz *St;void StuMan:MainMenu() 主菜单 system(cls); int choice; cout*endl; cou

16、t 欢迎使用学生水电气费管理系统endl; cout 1.缴纳水电气费endl; cout 2.查询一个同学水电气费用量endl; cout 3.查看所有同学的缴费情况endl; cout 4.增加学生信息endl; cout 5.删除学生信息endl; cout 6.退出系统endl; cout*endl; while(1) coutchoice; switch(choice) case 1:FeeMenu(); break; case 2:CheckMenu(); break;case 3:Chakan(); break;case 4:Add(); break; case 5:Delete

17、Menu(); break;default: break; if(choice=6) break; void StuMan:Regist() int i=0; ifstream tfile(student.txt); while(tfile.good() tfileSti.number; tfileSti.name; tfileSti.water; tfileSti.power; tfileSti.gas; i+; tfile.close(); ns=i; void StuMan:FeeMenu() 学生交费菜单system(cls); int choice; cout *endl; cout

18、 学 生 交 费 菜 单endl; cout 1.按照学号交费endl; cout 2.按照姓名交费endl; cout 3.返回主菜单endl; cout 4.退出系统endl; cout *endl; while(1) coutchoice; switch(choice) case 1:NumFee(); break; case 2:NameFee(); break; case 3:system(cls); MainMenu(); break; default:exit(1); if(choice=3) break; void StuMan:NumFee() 输入学号交费 string n

19、umber; float money; int flag=0,flag1=0; cout 欢迎使用交费功能endl; coutnumber; for(int i=0;ins;i+) if(number=Sti.number) flag1=1;cout该同学应该交费共Sti.GetTotal()元endl; coutmoney; if(moneySti.GetTotal() cout该同学需再补交Sti.GetTotal()-money元endl;Sti.flag=0;MainMenu(); else cout该同学交费成功,且找零钱为money-Sti.GetTotal()元endl; Sti

20、.flag=1;MainMenu();break; if(!flag1)system(cls);cout该学生的学号输入错误,请重新使用该功能!endl;NumFee();void StuMan:NameFee() 输入姓名交费string name; float money; int flag=0,flag1=0; cout 欢迎使用交费功能endl; coutname; for(int i=0;ins;i+) if(name=Sti.name) flag1=1;cout该同学应该交费共Sti.GetTotal()元endl; coutmoney; if(moneySti.GetTotal(

21、)cout该同学需再补交Sti.GetTotal()-money元endl; Sti.flag=0; MainMenu(); else cout该同学交费成功,且找零钱为money-Sti.GetTotal()元endl; Sti.flag=1; MainMenu(); break; if(!flag1) system(cls); cout该学生的姓名输入错误,请重新使用该功能!endl; NameFee(); void StuMan:CheckMenu() 学生查询菜单 system(cls); int choice; cout *endl; cout 学 生 查 询 菜 单endl; co

22、ut 1.按照学号查询endl; cout 2.按照姓名查询endl; cout 3.返回主菜单endl; cout 4.退出系统endl; cout *endl; while(1) cout请选择:choice; switch(choice) case 1:NumCheck(); break; case 2:NameCheck(); break; case 3:system(cls); MainMenu(); break; default:exit(1); if(choice=3) break; void StuMan:NumCheck() 输入学号查询 string number; int

23、 flag1=0,i,item; cout 欢迎使用查询功能endl; coutnumber; for(i=0;ins;i+) if(number=Sti.number) flag1=1; item=i; break; if(flag1) cout学号 姓名 用水量 用电量 用煤气量 水费 电费 煤气费 总额 交费否endl; coutStitemendl; else system(cls); cout该学生的学号输入错误,请重新使用该功能!endl; NumCheck(); void StuMan:NameCheck() 输入姓名查询 string name; int flag1=0,i,i

24、tem; cout 欢迎使用查询功能endl; coutname; for(i=0;ins;i+) if(name=Sti.name) flag1=1; item=i; break; if(flag1)cout学号 姓名 用水量 用电量 用煤气量 水费 电费 煤气费 总额 交费否endl; coutStitemendl; else system(cls); cout该学生的学号输入错误,请重新使用该功能!endl; NameCheck(); void StuMan:DeleteMenu() 学生删除菜单 system(cls); int choice; cout *endl; cout 学 生

25、 删 除 菜 单endl; cout 1.按照学号删除endl; cout 2.按照姓名删除endl; cout 3.返回主菜单endl; cout 4.退出系统endl; cout *endl; while(1) coutchoice; 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() 输入学号删除 str

26、ing number; int item=1,i,j; cout 欢迎使用删除功能endl; coutnumber; for(i=0;ins;i+) if(number=Sti.number) item=0; j=i; break; if(!item) for(j=i;jns-1;j+) Stj=Stj+1; cout该学生的信息已被删除!endl; if(item)system(cls); cout该学生的学号输入错误,请重新使用该功能!endl; NumDelete(); void StuMan:NameDelete() 输入姓名删除 string name; int item=1,i,j

27、; cout 欢迎使用删除功能endl; coutname; for(i=0;ins;i+) if(name=Sti.name) item=0; j=i; break; if(!item) for(j=i;jns-1;j+) Stj=Stj+1; cout该学生的信息已被删除!endl; if(item)system(cls); cout该学生的姓名输入错误,请重新使用该功能!endl; NameDelete(); void StuMan:Add() 增加学生功能int n,i,j=1; coutn; i=ns; for(;nsi+n;ns+) cout请输入第j个学生的学号、姓名、水用量、电用量、用气量:Stns.number;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号