课程设计报告
- 格式:doc
- 大小:337.00 KB
- 文档页数:24
仲恺农业工程学院课程设计报告(居民水电费用管理系统)课程面向对象课程设计姓名袁家富院(系)计算机科学与工程学院专业年级计算机科学与技术083班学号200810214332指导教师陈勇日期2010年8月30日-2010年9月12日仲恺农业工程学院教务处制目录1、需求与功能分析 12、系统总体框架 XX3、模块设计与分析 XX4、类的设计与分析 XX5、特色算法分析 XX6、功能测试 XX7、存在的不足与对策 XX8、程序源代码 XX9、使用说明 XX10、参考文献 XX1.1需求分析水电管理系统为水电收费管理人员日常工作的抄表,报表生成,费用计算等提供充足的信息和快捷的查询手段。
利用Visual C++6.0软件及其提供的各种面向对象的开发工具,开发出功能完备,易使用的应用程序。
经过调试、编译与实现,该程序界面友好、程序设计风格朴素,使用起来美观大方、方便易用。
尤其是系统的“报表生成模块”的功能极大的减轻工作人员的工作量,并以快速、准确等优点取代人工操作,提高了水电管理工作效率。
1.2功能分析本系统是面向普通的输人人员,所以系统使用必须尽可能简单。
根据对水电管理的具体要求及需要本软件实现的功能,将本软件分为7个大的模块,分别是:第一部分:住户信息录入;第二部分:修改住户信息;第三部分:删除住户信息;第四部分:修改水电费用单价;第五部分:住户水电费情况查询;第六部分:报表生成程序;第七部分:退出系统。
2、系统总体框架1. 住户信息录入2.修改住户信息3. 删除住户信息4.修改水电费用单价5.住户水电费情况查询6.报表生成4、类的设计与分析1.Date类class Date//日期{public:void Setvalue(int y,int m,int d)//初始化{year=y;month=m;date=d;}void Display()//输出日期{cout<<year<<"-"<<month<<"-"<<date<<endl;}private:int year;//年int month;//月int date;//日};字段方法2.information 类class information {public: information(); ~information(); void input(); int getid();void price();void changeprice(double w,double e); void account();void input_time(int y,int 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 类说明表5、特色算法分析功能:1.进入住户水电费情况查询选项后,首先执行“清屏”,然后在显示提示信息,按提示信息输入要查询的住户的编号。
然后逐个查找,当找到该编号的住户时,输出该住户的水电费情况的信息;若找不到该编号的住户,系统会输出提示语言:“没有该住户信息”。
2.查找完成后(找到或找不到),系统会提示你是否继续查找,若选择继续,则重复1的步骤;若选择退出,则返回上一层菜单。
算法思路:1.要实现查找功能,用For语句,从第一个对象开始查找,用if语句来判断当前的对象是否为要查找的对象。
当找到该对象,输出该对象的内容;若找不到该对象,测输出提示信息,表明没有该对象的信息。
2.要实现多次查找,用do循环语句,算法一开始时,先进行一次查找,然后查找完成后,判断终止条件,终止条件由用户输入,若不满足终止条件,则继续执行循环体的内容,即继续进行查找;若满足终止条件,则退出循环体,然后进行其他相应的操作,最后返回主菜单。
代码:do{system("cls");cout<<"|**************住户水电费情况查询***************|"<<endl;cout<<"|----------------------------------------------------------------------|"<<endl;cout<<" 请输入要查询的住户的编号:";enternum(c);for(m=0;m<n;m++){if(c==p[m].getid()){menu6(p[m]);p[m].display();cout<<endl;}else if(p[m].getid()==0)cout<<"没有该住户信息"<<endl;}}while(jixu());system("pause");system("cls");break;流程图:6、功能测试图6-1 住户基本信息录入功能测试图图6-2 报表生成功能测试图图6-3 修改住户信息功能测试图图6-4 住户水电费情况查询功能测试图图6-5 删除住户信息功能测试图7、存在的不足与对策由于设计者水平有限以及时间等方面的原因,本系统的功能比较简单,基本实现住户信息录入、修改、删除、查询等功能。
由于进入系统的时候已经设定好住户的数量,所以不能添加住户,到目前为止,还没找到合适的方法来解决迟问题。
此外,系统的查错能力也不强,对于一些不正确的输入可能会造成一些难以预料的结果,因此要按照系统提示信息输入数据,不要故意输入错误的信息。
还有的就是由于《数据库原理》的课程还没学完,对数据库的开发及应用还没有掌握好,因此,本系统没有用到数据库来管理系统的数据,导致本系统很多的功能不能实现。
在今后的学习当中,本人会更多地学习各种的编程技巧和扩充知识面,并且加强对数据库开发方面的学习,从而开发出功能更强大,更完善的数据管理系统。
8、程序源代码/***********************"head.h"***********************/#include<iostream>#include<string>#include<stdlib.h>#include<time.h>using namespace std;/***********************Date.h ***********************/#if !defined (DA TE)#define DA TE#include"head.h"class Date//日期{public:void Setvalue(int y,int m,int d)//初始化{year=y;month=m;date=d;}void Display()//输出日期{cout<<year<<"-"<<month<<"-"<<date<<endl;}private:int year;//年int month;//月int date;//日};#endif/***********************" information.h"***********************/ #if !defined (INFORMA TION)#define INFORMA TION#include"Date.h"//信息类的定义class information{public:information();~information();void input();void output();int getid();void price();void changeprice(double w,double e);void account();void input_time(int y,int 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;//日期};#endif/***********************" information.cpp"***********************/ #include"information.h"//成员函数的实现information::information()//构造函数{name="\0";id=0;water=0;elec=0;w_1=1.32;e_1=0.75;}information::~information()//析构函数{name="\0";id=0;water=0;elec=0;}void information::input()//输入住户信息{cin>>name;cin>>id;cin>>water;cin>>elec;}void information::output()//输出住户信息{cout<<" "<<name<<" "<<id<<" "<<water<<" "<<elec<<endl;}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::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<<"吨"<<" "<<elec<<"度";account();}void information::input_time(int y,int m,int d)//输入日期{time.Setvalue(y,m,d);}void information::output_time()//输出日期{time.Display();}/***********************" main.cpp"***********************/#include"information.h"void enternum(int &num)//清除流的错误{char str[80];cin>>num;while(!cin){cin.clear();cin.getline(str,80);cout<<"你的输入有误,请重新输入:";cin>>num;}}int jixu()//继续则返回1.退出返回0{char c;cout<<"继续请按Y,退出请按任意键:";cin>>c;if(c=='Y'||c=='y')return 1;elsereturn 0;}int confirm()//确定则返回1,取消返回0{char c;cout<<"确定请按Y,取消请按任意键:";cin>>c;if(c=='Y'||c=='y')return 1;elsereturn 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<<"|----------------修改住户信息如下:----------------|"<<endl;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 姓名:袁家富学号:200810214332 |"<<endl;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 住户水电费情况查询| 6 报表生成|"<<endl;cout<<"| | |"<<endl;cout<<"|------------------------------------------------------|"<<endl;cout<<"|************** 0 退出系统**************|"<<endl;cout<<"|------------------------------------------------------|"<<endl;cout<<"请输入序号:";enternum(i);while(i>6){cout<<"你的输入有误,请重新输入:";cin>>i;}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 information[n];cout<<"设置日期:"<<endl;cout<<"年:";cin>>Y;cout<<"月:";cin>>M;cout<<"日:";cin>>D;for(k=0;k<n;k++){p[k].input_time(Y,M,D);}system("cls");for( ; ; ){switch(menu()){case 1:system("cls");menu1(n);for(m=0;m<n;m++)p[m].input();system("pause");system("cls");break;case 2:do{system("cls");cout<<"|*****************修改住户信息*******************|"<<endl;cout<<"请输入要修改的住户的编号:";enternum(a);for(m=0;m<n;m++){if(a==p[m].getid()){menu4();p[m].output();cout<<"确定修改此住户信息?"<<endl;if(confirm()){menu2();p[m].input();cout<<"修改后的住户信息如下:"<<endl;menu4();p[m].output();}}else if(p[m].getid()==0)cout<<"没有该住户信息"<<endl;}}while(jixu());system("pause");system("cls");break;case 3:do{system("cls");cout<<"|********************删除住户信息******************|"<<endl;cout<<" 请输入要删除的住户的编号:";enternum(b);for(m=0;m<n;m++){if(b==p[m].getid()){menu4();p[m].output();cout<<"确定删除此住户信息?"<<endl;if(confirm()){p[m].~information();cout<<"删除成功"<<endl;}}else if(p[m].getid()==0){cout<<"没有该住户信息"<<endl;}}}while(jixu());system("pause");system("cls");break;case 4:system("cls");cout<<"********************修改水电费用单价******************"<<endl;p[0].price();cout<<"修改如下:"<<endl;cout<<" 请输入水费单价:";cin>>w;cout<<" 请输入电费单价:";cin>>e;for(m=0;m<n;m++){p[m].changeprice(w,e);}cout<<"修改成功!";system("pause");system("cls");break;case 5:do{system("cls");cout<<"|**************************住户水电费情况查询**************************|"<<endl;cout<<"|----------------------------------------------------------------------|"<<endl;cout<<" 请输入要查询的住户的编号:";enternum(c);for(m=0;m<n;m++){if(c==p[m].getid()){menu6(p[m]);p[m].display();cout<<endl;}else if(p[m].getid()==0)cout<<"没有该住户信息"<<endl;}}while(jixu());system("pause");system("cls");break;case 6:system("cls");cout<<"|*******************************报表生成*******************************|"<<endl;menu6(p[0]);for(m=0;m<n;m++){if(p[m].getid()==0){}elsep[m].display();}system("pause");system("cls");break;case 0:system("cls");menu0();cout<<"请选择:";cin>>i;if(i=='Y'||i=='y')return 0;else{system("cls");break;}}}}9、使用手册1.刚开始进入系统时,要输入住户的数量和设置日期。