最新版课程设计报告4019566Word文档格式.docx
《最新版课程设计报告4019566Word文档格式.docx》由会员分享,可在线阅读,更多相关《最新版课程设计报告4019566Word文档格式.docx(32页珍藏版)》请在冰豆网上搜索。
2、系统总体框架
3、模块设计与分析
1.住户信息录入
系统:
居民水电费用管理系统
模块:
住户信息录入
输入:
住户基本信息
输出:
提示信息
设计与分析:
1.进入系统时要设定住户数量。
2.然后进入此功能模块时,系统提示你输入你设定数量的住户的信息。
3.按提示输入住户的基本信息,包括姓名,编号,本月水用量和本月点用量。
4.全部信息输入后,退出模块,返回主菜单。
备注:
1.操作应简单。
2.按提示输入,否则可能会产生错误。
2.修改住户信息
修改住户信息
住户的编号和修改后的信息
1.进入此功能模块时,系统提示你输入你想修改住户的编号。
2.然后系统会查找该住户。
3.如果找到该住户,按系统提示,修改住户的信息。
4.如果没有该住户,系统会提示“没有该住户的信息”。
3.执行完后,系统提示你是否继续修改。
4.输入Y继续进行修改操作。
5.按任意键,退出模块,返回主菜单。
3.删除住户信息
删除住户信息
住户的编号
1.进入此功能模块时,系统提示你输入你想删除住户的编号。
2.如果删除成功,系统会提示“删除成功”。
3.如果没有该住户的信息,系统会提示“没有该住户的信息”。
4.执行完后,系统提示你是否继续修改。
5.输入Y继续进行删除操作。
6.按任意键,退出模块,返回主菜单。
4.修改水电费用单价
修改水电费用单价
更改后的水电费单价
原来的水电费单价以及提示信息
1.进入此功能模块时,系统提示你原来的水电费单价。
2.按照提示,修改水电费单价。
3.修改成功后,退出模块,返回主菜单。
5.住户水电费情况查询
住户水电费情况查询
该住户水电费情况
1.进入此功能模块时,系统提示你输入你想查询住户的编号。
2.若查找到该住户,系统会输出该用户的基本信息和水电费用情况。
4.执行完以后,系统会提示你是否继续查询。
5.输入Y继续进行查询操作。
6.报表生成
报表生成
无
列出全部住户水电费情况
1.进入此功能模块后,系统会输出所有住户的基本信息和水电费用情况。
2.退出模块,返回主菜单。
7.退出系统
退出系统
按提示输入
设计者信息以及提示信息
1.进入此功能模块后,系统会输出设计者的信息。
2.系统提示信息,输入Y则退出系统;
按任意键,退出模块,返回主菜单。
4、类的设计与分析
1.Date类
classDate//日期
{
public:
voidSetvalue(inty,intm,intd)//初始化
{
year=y;
month=m;
date=d;
}
voidDisplay()//输出日期
{
cout<
<
year<
"
-"
month<
date<
endl;
private:
intyear;
//年
intmonth;
//月
intdate;
//日
};
表1Date类说明表
名称
属性
说明
year
数据成员
记录日期对象的年份
month
记录日期对象的月份
date
记录日期对象的日期
Setvalue
成员函数
对日期对象初始化
Display
输出日期
2.information类
classinformation
public:
information();
~information();
voidinput();
intgetid();
voidprice();
voidchangeprice(doublew,doublee);
voidaccount();
voidinput_time(inty,intm,intd);
voidoutput_time();
voiddisplay();
protected:
stringname;
//姓名
intid;
//编号
doublewater;
//用水量
doubleelec;
//用电量
doublew_1;
//水费单价
doublee_1;
//电费单价
Datetime;
//日期
表2information类说明表
name
记录住户的姓名
id
记录住户的编号
water
记录住户的本月用水量
elec
记录住户的本月用电量
w_1
记录当前水费单价
e_1
记录当前电费单价
time
记录日期
information
构造函数
~information
析构函数
input
输入住户的信息
getid
返回住户的编号
price
输出当前水电费单价
changeprice
改变水电费单价
account
计算住户水电费用
input_time
初始化日期
output_time
display
输出用户水电费情况
5、特色算法分析
功能:
1.进入住户水电费情况查询选项后,首先执行“清屏”,然后在显示提示信息,按提示信息输入要查询的住户的编号。
然后逐个查找,当找到该编号的住户时,输出该住户的水电费情况的信息;
若找不到该编号的住户,系统会输出提示语言:
“没有该住户信息”。
2.查找完成后(找到或找不到),系统会提示你是否继续查找,若选择继续,则重复1的步骤;
若选择退出,则返回上一层菜单。
算法思路:
1.要实现查找功能,用For语句,从第一个对象开始查找,用if语句来判断当前的对象是否为要查找的对象。
当找到该对象,输出该对象的内容;
若找不到该对象,测输出提示信息,表明没有该对象的信息。
2.要实现多次查找,用do循环语句,算法一开始时,先进行一次查找,然后查找完成后,判断终止条件,终止条件由用户输入,若不满足终止条件,则继续执行循环体的内容,即继续进行查找;
若满足终止条件,则退出循环体,然后进行其他相应的操作,最后返回主菜单。
代码:
do
system("
cls"
);
cout<
|**************住户水电费情况查询***************|"
||"
请输入要查询的住户的编号:
;
enternum(c);
for(m=0;
m<
n;
m++)
{
if(c==p[m].getid())
menu6(p[m]);
p[m].display();
elseif(p[m].getid()==0)
没有该住户信息"
}
}
while(jixu());
pause"
break;
流程图:
6、功能测试
图6-1住户基本信息录入功能测试图
图6-2报表生成功能测试图
图6-3修改住户信息功能测试图
图6-4住户水电费情况查询功能测试图
图6-5删除住户信息功能测试图
7、存在的不足与对策
由于设计者水平有限以及时间等方面的原因,本系统的功能比较简单,基本实现住户信息录入、修改、删除、查询等功能。
由于进入系统的时候已经设定好住户的数量,所以不能添加住户,到目前为止,还没找到合适的方法来解决迟问题。
此外,系统的查错能力也不强,对于一些不正确的输入可能会造成一些难以预料的结果,因此要按照系统提示信息输入数据,不要故意输入错误的信息。
还有的就是由于《数据库原理》的课程还没学完,对数据库的开发及应用还没有掌握好,因此,本系统没有用到数据库来管理系统的数据,导致本系统很多的功能不能实现。
在今后的学习当中,本人会更多地学习各种的编程技巧和扩充知识面,并且加强对数据库开发方面的学习,从而开发出功能更强大,更完善的数据管理系统。
8、程序源代码
/***********************"
head.h"
***********************/
#include<
iostream>
string>
stdlib.h>
time.h>
usingnamespacestd;
/***********************Date.h***********************/
#if!
defined(DATE)
#defineDATE
#include"
#endif
information.h"
defined(INFORMATION)
#defineINFORMATION
Date.h"
//信息类的定义
classinformation
voidoutput();
information.cpp"
information.h"
//成员函数的实现
information:
:
information()//构造函数
name="
\0"
id=0;
water=0;
elec=0;
w_1=1.32;
e_1=0.75;
~information()//析构函数
{
voidinformation:
input()//输入住户信息
cin>
>
name;
id;
water;
elec;
output()//输出住户信息
"
name<
id<
water<
elec<
intinformation:
getid()//返回住户编号
returnid;
price()//输出当前水电费单价
水费单价:
w_1<
元/吨"
电费单价:
e_1<
元/度"
changeprice(doublew,doublee)//改变水电费单价
w_1=w;
e_1=e;
account()//计算水电费用
doublew,e,we;
w=water*w_1;
e=elec*e_1;
we=w+e;
w<
元"
e<
we<
display()//输出住户水电费情况
吨"
度"
account();
input_time(inty,intm,intd)//输入日期
time.Setvalue(y,m,d);
output_time()//输出日期
time.Display();
main.cpp"
voidenternum(int&
num)//清除流的错误
charstr[80];
num;
while(!
cin)
{
cin.clear();
cin.getline(str,80);
cout<
你的输入有误,请重新输入:
cin>
intjixu()//继续则返回1.退出返回0
charc;
继续请按Y,退出请按任意键:
c;
if(c=='
Y'
||c=='
y'
)
return1;
else
return0;
intconfirm()//确定则返回1,取消返回0
确定请按Y,取消请按任意键:
voidmenu4()
|--|"
|姓名|编号|本月用水量|本月用电量|"
voidmenu1(intn)
|-|"
|****************住户基本信息录入*****************|"
|---输入"
n<
个住户的信息:
----|"
|请按以下方式输入住户信息,不同数据之间以空格分割|"
menu4();
voidmenu2()
|----修改住户信息如下:
voidmenu6(informationp)
日期:
p.output_time();
|姓名|编号|本月用水量|本月用电量|水费金额|电费金额|总金额|"
voidmenu0()
|------|"
|*****************面向对象课程设计******************|"
|班级:
计机083姓名:
袁家富学号:
|"
|题目:
居民水电费用管理系统|"
|确定退出请按Y|返回系统请按任意键|"
intmenu()
inti;
|**************居民水电费用管理系统**************|"
|||"
|1住户信息录入|2修改住户信息|"
|3删除住户信息|4修改水电费用单价|"
|5住户水电费情况查询|6报表生成|"
|**************0退出系统**************|"
请输入序号:
enternum(i);
while(i>
6)
i;
returni;
/*主函数*/
intmain()
{
intn,m,k;
doublew,e;
chari;
inta,b,c;
intY,M,D;
information*p;
|**********欢迎进入居民水电费用管理系统**********|"
请输入住户数量:
enternum(n);
p=newinformation[n];
设置日期:
年:
Y;
月:
M;
日:
D;
for(k=0;
k<
k++)
p[k].input_time(Y,M,D);
for(;
;
)
switch(menu())
case1:
system("
menu1(n);
for(m=0;
p[m].input();
break;
case2:
do
{
system("
cout<
|*****************修改住户信息*******************|"
请输入要修改的住户的编号:
enternum(a);
for(m=0;
{
if(a==p[m].getid())
{
menu4();