1、课程设计报告4019566(此文档为word格式,下载后您可任意编辑修改!)仲恺农业工程学院课程设计报告(居民水电费用管理系统)课 程 面向对象课程设计姓 名 袁家富院 (系) 计算机科学与工程学院 专业年级 计算机科学与技术083班学 号 指导教师 陈勇日 期 2010年8月30日-2010年9月12日仲恺农业工程学院教务处制目 录1、需求与功能分析 12、系统总体框架 XX3、模块设计与分析 XX4、类的设计与分析 XX5、特色算法分析 XX6、功能测试 XX7、存在的不足与对策 XX8、程序源代码 XX9、使用说明 XX10、参考文献 XX1、需求与功能分析1.1需求分析 水电管理系统为
2、水电收费管理人员日常工作的抄表,报表生成,费用计算等提供充足的信息和快捷的查询手段。利用Visual C+6.0软件及其提供的各种面向对象的开发工具,开发出功能完备,易使用的应用程序。经过调试、编译与实现,该程序界面友好、程序设计风格朴素,使用起来美观大方、方便易用。尤其是系统的“报表生成模块”的功能极大的减轻工作人员的工作量,并以快速、准确等优点取代人工操作,提高了水电管理工作效率。1.2功能分析本系统是面向普通的输人人员,所以系统使用必须尽可能简单。根据对水电管理的具体要求及需要本软件实现的功能,将本软件分为7个大的模块,分别是:第一部分:住户信息录入;第二部分:修改住户信息;第三部分:删
3、除住户信息; 第四部分:修改水电费用单价;第五部分:住户水电费情况查询;第六部分:报表生成程序;第七部分:退出系统。2、系统总体框架3、模块设计与分析1. 住户信息录入系统:居民水电费用管理系统模块:住户信息录入输入:住户基本信息输出:提示信息设计与分析:1.进入系统时要设定住户数量。2.然后进入此功能模块时,系统提示你输入你设定数量的住户的信息。3.按提示输入住户的基本信息,包括姓名,编号,本月水用量和本月点用量。4.全部信息输入后,退出模块,返回主菜单。备注:1.操作应简单。2.按提示输入,否则可能会产生错误。2.修改住户信息系统:居民水电费用管理系统模块:修改住户信息输入:住户的编号和修
4、改后的信息输出:提示信息设计与分析:1.进入此功能模块时,系统提示你输入你想修改住户的编号。2.然后系统会查找该住户。3.如果找到该住户,按系统提示,修改住户的信息。4.如果没有该住户,系统会提示“没有该住户的信息”。3.执行完后,系统提示你是否继续修改。4.输入Y继续进行修改操作。5.按任意键,退出模块,返回主菜单。备注:1.操作应简单。2.按提示输入,否则可能会产生错误。3. 删除住户信息系统:居民水电费用管理系统模块:删除住户信息输入:住户的编号输出:提示信息设计与分析:1.进入此功能模块时,系统提示你输入你想删除住户的编号。2.如果删除成功,系统会提示“删除成功”。3.如果没有该住户的
5、信息,系统会提示“没有该住户的信息”。4.执行完后,系统提示你是否继续修改。5.输入Y继续进行删除操作。6.按任意键,退出模块,返回主菜单。备注:1.操作应简单。2.按提示输入,否则可能会产生错误。4.修改水电费用单价系统:居民水电费用管理系统模块:修改水电费用单价输入:更改后的水电费单价输出:原来的水电费单价以及提示信息设计与分析:1.进入此功能模块时,系统提示你原来的水电费单价。2.按照提示,修改水电费单价。3.修改成功后,退出模块,返回主菜单。备注:1.操作应简单。2.按提示输入,否则可能会产生错误。5.住户水电费情况查询系统:居民水电费用管理系统模块:住户水电费情况查询输入:住户的编号
6、输出:该住户水电费情况设计与分析:1.进入此功能模块时,系统提示你输入你想查询住户的编号。2.若查找到该住户,系统会输出该用户的基本信息和水电费用情况。3.如果没有该住户的信息,系统会提示“没有该住户的信息”。4.执行完以后,系统会提示你是否继续查询。5.输入Y继续进行查询操作。6.按任意键,退出模块,返回主菜单。备注:1.操作应简单。2.按提示输入,否则可能会产生错误。6.报表生成系统:居民水电费用管理系统模块:报表生成输入:无 输出:列出全部住户水电费情况设计与分析:1.进入此功能模块后,系统会输出所有住户的基本信息和水电费用情况。2.退出模块,返回主菜单。备注:1.操作应简单。7.退出系
7、统系统:居民水电费用管理系统模块:退出系统输入:按提示输入 输出:设计者信息以及提示信息设计与分析:1.进入此功能模块后,系统会输出设计者的信息。2.系统提示信息,输入Y则退出系统;按任意键,退出模块,返回主菜单。 备注:1.操作应简单。4、类的设计与分析 1Date类class Date/日期 public: void Setvalue(int y,int m,int d)/初始化 year=y; month=m; date=d; void Display()/输出日期 coutyear-month-dateendl; private: int year;/年 int month;/月 in
8、t date;/日;表1 Date类说明表名称属性说明year数据成员记录日期对象的年份month数据成员记录日期对象的月份date数据成员记录日期对象的日期Setvalue成员函数对日期对象初始化Display成员函数输出日期2information类 class informationpublic: information(); information(); void input(); int getid(); void price(); void changeprice(double w,double e); void account(); void input_time(int y,i
9、nt m,int d); void output_time(); void display();protected: string name;/姓名 int id;/编号 double water;/用水量 double elec;/用电量 double w_1;/水费单价 double e_1;/电费单价 Date time;/日期;表2 information类说明表名称属性说明name数据成员记录住户的姓名id数据成员记录住户的编号water数据成员记录住户的本月用水量elec数据成员记录住户的本月用电量w_1数据成员记录当前水费单价e_1数据成员记录当前电费单价time数据成员记录日期
10、information成员函数构造函数information成员函数析构函数input成员函数输入住户的信息getid成员函数返回住户的编号price成员函数输出当前水电费单价changeprice成员函数改变水电费单价account成员函数计算住户水电费用input_time成员函数初始化日期output_time成员函数输出日期display成员函数输出用户水电费情况5、特色算法分析功能:1. 进入住户水电费情况查询选项后,首先执行“清屏”,然后在显示提示信息,按提示信息输入要查询的住户的编号。然后逐个查找,当找到该编号的住户时,输出该住户的水电费情况的信息;若找不到该编号的住户,系统会输
11、出提示语言:“没有该住户信息”。2. 查找完成后(找到或找不到),系统会提示你是否继续查找,若选择继续,则重复1的步骤;若选择退出,则返回上一层菜单。算法思路:1. 要实现查找功能,用For语句,从第一个对象开始查找,用if语句来判断当前的对象是否为要查找的对象。当找到该对象,输出该对象的内容;若找不到该对象,测输出提示信息,表明没有该对象的信息。2. 要实现多次查找,用do循环语句,算法一开始时,先进行一次查找,然后查找完成后,判断终止条件,终止条件由用户输入,若不满足终止条件,则继续执行循环体的内容,即继续进行查找;若满足终止条件,则退出循环体,然后进行其他相应的操作,最后返回主菜单。 代
12、码:do system(cls); cout|*住户水电费情况查询*|endl; cout|endl; cout 请输入要查询的住户的编号:; enternum(c); for(m=0;mn;m+) if(c=pm.getid() menu6(pm); pm.display(); coutendl; else if(pm.getid()=0) cout没有该住户信息endl; while(jixu(); system(pause); system(cls); break;流程图:6、功能测试图6-1 住户基本信息录入功能测试图图6-2 报表生成功能测试图图6-3 修改住户信息功能测试图图6-4
13、 住户水电费情况查询功能测试图 图6-5 删除住户信息功能测试图7、存在的不足与对策 由于设计者水平有限以及时间等方面的原因,本系统的功能比较简单,基本实现住户信息录入、修改、删除、查询等功能。由于进入系统的时候已经设定好住户的数量,所以不能添加住户,到目前为止,还没找到合适的方法来解决迟问题。此外,系统的查错能力也不强,对于一些不正确的输入可能会造成一些难以预料的结果,因此要按照系统提示信息输入数据,不要故意输入错误的信息。还有的就是由于数据库原理的课程还没学完,对数据库的开发及应用还没有掌握好,因此,本系统没有用到数据库来管理系统的数据,导致本系统很多的功能不能实现。 在今后的学习当中,本
14、人会更多地学习各种的编程技巧和扩充知识面,并且加强对数据库开发方面的学习,从而开发出功能更强大,更完善的数据管理系统。8、程序源代码/*head.h*/#include#include#include#includeusing namespace std;/*Date.h */#if !defined (DATE)#define DATE#includehead.hclass Date/日期 public: void Setvalue(int y,int m,int d)/初始化 year=y; month=m; date=d; void Display()/输出日期 coutyear-mon
15、th-datename; cinid; cinwater; cinelec;void information:output()/输出住户信息 cout name id water elecendl;int information:getid()/返回住户编号 return id;void information:price()/输出当前水电费单价 cout 水费单价:w_1元/吨 ; cout电费单价:e_1元/度endl;void information:changeprice(double w,double e)/改变水电费单价 w_1=w; e_1=e;void information:
16、account()/计算水电费用 double w,e,we; w=water*w_1; e=elec*e_1; we=w+e; cout w元 e元 we元endl;void information:display()/输出住户水电费情况 cout name id water吨 elecnum; while(!cin) cin.clear(); cin.getline(str,80); coutnum; int jixu()/继续则返回1.退出返回0 char c; coutc; if(c=Y|c=y) return 1; else return 0;int confirm()/确定则返回1
17、,取消返回0 char c; coutc; if(c=Y|c=y) return 1; else return 0;void menu4() cout|-|endl; cout| 姓名 | 编号 | 本月用水量 | 本月用电量|endl; cout|-|endl;void menu1(int n) cout|-|endl; cout|*住户基本信息录入*|endl; cout|-输入n个住户的信息: -|endl; cout|请按以下方式输入住户信息,不同数据之间以空格分割 |endl; cout|-|endl; menu4();void menu2() cout|-修改住户信息如下: -|e
18、ndl; cout|-|endl; cout|请按以下方式输入住户信息,不同数据之间以空格分割 |endl; cout|-|endl; menu4();void menu6(information p) cout日期:; p.output_time(); cout|endl; cout| 姓名 | 编号 | 本月用水量 | 本月用电量 | 水费金额 | 电费金额 | 总金额 |endl; cout|endl;void menu0() cout|-|endl; cout|* 面向对象课程设计 *|endl; cout|-|endl; cout| 班级:计机083 姓名:袁家富 学号: |endl
19、; cout|-|endl; cout| 题目:居民水电费用管理系统 |endl; cout|-|endl; cout| 确定退出请按Y | 返回系统请按任意键 |endl; cout|-|endl;int menu() int i; cout|-|endl; cout|* 居民水电费用管理系统 *|endl; cout|-|endl; cout| | |endl; cout| 1 住户信息录入 | 2 修改住户信息 |endl; cout| | |endl; cout| 3 删除住户信息 | 4 修改水电费用单价 |endl; cout| | |endl; cout| 5 住户水电费情况查询
20、 | 6 报表生成 |endl; cout| | |endl; cout|-|endl; cout|* 0 退出系统 *|endl; cout|-|endl; cout6) couti; return i;/*主函数*/int main() int n,m,k; double w,e; char i; int a,b,c; int Y,M,D; information *p; cout|-|endl; cout|* 欢迎进入居民水电费用管理系统 *|endl; cout|-|endl; cout请输入住户数量:; enternum(n); p=new informationn; cout设置日
21、期:endl; coutY; coutM; coutD; for(k=0;kn;k+) pk.input_time(Y,M,D); system(cls); for( ; ; ) switch(menu() case 1: system(cls); menu1(n); for(m=0;mn;m+) pm.input(); system(pause); system(cls); break; case 2: do system(cls); cout|*修改住户信息*|endl; cout请输入要修改的住户的编号:; enternum(a); for(m=0;mn;m+) if(a=pm.getid()
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1