高校水电费管理.docx

上传人:b****5 文档编号:5243333 上传时间:2022-12-14 格式:DOCX 页数:55 大小:381.44KB
下载 相关 举报
高校水电费管理.docx_第1页
第1页 / 共55页
高校水电费管理.docx_第2页
第2页 / 共55页
高校水电费管理.docx_第3页
第3页 / 共55页
高校水电费管理.docx_第4页
第4页 / 共55页
高校水电费管理.docx_第5页
第5页 / 共55页
点击查看更多>>
下载资源
资源描述

高校水电费管理.docx

《高校水电费管理.docx》由会员分享,可在线阅读,更多相关《高校水电费管理.docx(55页珍藏版)》请在冰豆网上搜索。

高校水电费管理.docx

高校水电费管理

青岛理工大学

C++面向对象课程设计报告

 

院(系):

计算机工程学院

专业:

软件工程

学生姓名:

班级软件133学号:

题目:

高校水电费管理系统设计_______

起迄日期:

_2015.6.29~2015.7.10

设计地点:

计算机学院机房

指导教师:

 

完成日期:

2015年7月10日

任务书

题目9“高校水电费管理系统设计”

1、问题描述

住宿学生信息包括:

学号、姓名、性别、年龄、班级、用电量、用水量等信息。

教工信息包括职工号、姓名、性别、年龄、工作部门、用电量、用水量等信息。

能计算出学生和教工每月所要交的电费和水费。

定义一个人员类,实现学生和教工共同的信息和行为。

2、功能要求

(1)添加功能:

程序能够添加不同学生和教工的记录,提供选择界面供用户选择所要添加的类别,要求编号号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。

(2)查询功能:

可根据姓名、用水量、用电量信息对已添加的学生或教工记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

(3)显示功能:

可显示当前系统中所有学生和教工的记录,每条记录占据一行。

(4)编辑功能:

可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。

(5)删除功能:

主要实现对已添加的学生或教工记录进行删除。

如果当前系统中没有相应的记录,则提示“记录为空!

”并返回操作。

(6)统计功能:

能根据多种参数进行统计。

能统计学生和教工的用水用电量、所要交纳的电费和水费、未交纳水电费的人员信息等。

(7)保存功能:

可将当前系统中各类记录存入文件中,存入方式任意。

(8)读取功能:

可将保存在文件中的信息读入到当前系统中,供用户进行使用。

(9)计算电费和水费。

学生每月都有一定额度的水电是免费使用的,超过的部分需要交费。

3、问题的解决方案

根据系统功能要求,可以将问题解决分为以下步骤:

(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;

(2)分析系统中的各个实体及它们之间的关系;

(3)根据问题描述,设计系统的类层次;

(4)完成类层次中各个类的描述;

(5)完成类中各个成员函数的定义;

(6)完成系统的应用模块;

(7)功能调试;

(8)完成系统总结报告。

 

课程设计报告内容

一、需求分析

1.选做此课题或项的目的

1、目的:

(1)要求学生达到熟练掌握C++语言的基本知识和技能;

(2)基本掌握面向对象程序设计的基本思路和方法;

(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。

2、基本要求:

(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;

(2)要求在设计的过程中,建立清晰的类层次;要分析和定义各个类,每个类中要有各自的属性和方法;要求运用面向对象的机制(继承、派生及多态性)来实现系统功能。

(3)在系统的设计中,要有清晰的界面设计,同时采用文件进行读写操作。

2.程序所实现的功能

(1)添加功能:

程序能够添加职工的记录和工作量,可提供选择界面供用户选择所要添加的类别,要求职工的编号要唯一,如果添加了重复职工号的职工记录时,则提示数据添加重复并取消添加。

(2)查询功能:

可根据职工号、姓名等信息对已添加的职工记录进行查询。

还可以按职工号对工作量进行查询。

如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

(3)显示功能:

可显示当前系统中所有职工记录和工作量统计信息,每条记录占据一行。

(4)编辑功能:

可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。

(5)删除功能:

主要实现对已添加的人员记录进行删除和工作量进行删除。

如果当前系统中没有相应的人员记录,则提示“记录为空!

”并返回操作;否则,输入要删除的人员的编号,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。

(6)统计功能:

对职工可按工作量进行统计,并排名次。

(7)保存功能:

可将当前系统中各类人员记录存入文件中,存入方式任意。

(8)读取功能:

可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。

(9)计算电费和水费。

学生每月都有一定额度的水电是免费使用的,超过的部分需要交费。

 

二、内容设计

1.根据所选题目,给出模块图

图2.1高校水电费管理系统模块图

2.画出主程序及其主要模块的流程图

图2.2main()函数

图2.3添加函数

图2.4菜单函数

图2.5查找函数

 

图2.6修改函数

图2.7显示函数

图2.8删除函数

 

3.编写程序关键代码

voidAdd()//添加信息

{

Students;

cout<<"输入新添人员信息"<

s.Input();

for(inti=0;i

if(s.num==stu[i].num)

{

cout<<"该编号的用户已存在!

"<

return;

}

stu[amount]=s;

cout<<"添加成功!

"<

ofstreamout_file("学生.txt",ios:

:

app);//将添加记录更新到文件

if(!

out_file)

{

cout<<"打开失败!

"<

return;

}

out_file<

out_file.close();

amount++;

}

voidSearch()//查询信息

{

intchioce;

cin>>chioce;

switch(chioce)

{

case1:

{

stringname;

cin>>name;

intk=0;

for(inti=0;i

{

if(stu[i].name==name)

{

cout<

k=1;

}

}

if(k==0)

cout<<"查无此人!

"<

}break;

case2:

{

doublewaters;

cin>>waters;

intk=0;

for(inti=0;i

if(stu[i].water==waters)

{

cout<

k=1;

}

if(k==0)

cout<<"查无此用水量!

"<

}break;

case3:

{

doublepowers;

cin>>powers;

intk=0;

for(inti=0;i

if(stu[i].power==powers)

{

cout<

k=1;

}

if(k==0)

cout<<"查无此用电量!

"<

}break;

default:

cout<<"无此选项!

请重试!

"<

break;

}

}

voidShow()//显示信息

{

cout<

}

voidStudent:

:

Compile()//修改学生信息

{

stringnums;

cin>>nums;

intk=0;

for(inti=0;i

if(stu[i].num==nums)

{

Students;

s.Inputs();

for(intt=0;t

if(s.num==stu[t].num)

{

if(t==i)continue;

cout<<"该编号的用户已存在!

修改不成功!

"<

return;

}

stu[i]=s;

cout<

cout<<"修改成功!

"<

k=1;

}

if(k==0)

cout<<"查无此人!

"<

}

VoidDelete()//删除信息

{

intchioce;

cin>>chioce;

switch(chioce)

{

case1:

{

stringnums;

cin>>nums;

intk=0;

for(inti=0;i

if(stu[i].num==nums)

{

intchoice=2;

cin>>choice;

switch(choice)

{

case1:

for(intj=i;j

stu[j]=stu[j+1];

amount--;

k=1;

break;

case0:

k=2;break;

default:

cout<<"无此项!

"<

}

}

if(k==1)

cout<<"删除成功!

"<

elseif(k==2)

cout<<"查找到此学号,但未删除!

"<

else

cout<<"查无此学号!

"<

}break;

case2:

{

cout<<"请输入姓名:

"<

stringnames;

cin>>names;

intk=0;

for(inti=0;i

if(stu[i].name==names)

{

intchoice=2;

cin>>choice;

switch(choice)

{

case0:

k=2;break;

case1:

for(intj=i;j

stu[j]=stu[j+1];

amount--;

k=1;

break;

default:

cout<<"无此项!

"<

}

if(k==1)

cout<<"删除成功!

"<

elseif(k==2)

cout<<"查找到此学号,但未删除!

"<

}

if(k==1)

cout<<"查无此学号!

"<

}break;

default:

cout<<"无此项!

"<

}

}

voidTotal()//统计信息

{

intt=0;

for(inti=0;i

if(stu[i].flag=="否")

{

cout<

t=1;

}

if(t==0)

cout<<"无未缴费人员!

"<

}

voidRead()//读取信息

{

ifstreamin_file("学生.txt",ios:

:

in);

if(!

in_file)

{

cout<<"打开失败!

"<

return;

}

inti=0;

while(in_file>>stu[i].num>>stu[i].name>>stu[i].sex>>stu[i].old>>stu[i].classrome

>>stu[i].water>>stu[i].watermoney>>stu[i].power>>stu[i].powermoney>>stu[i].flag)

{

cout<

i++;

}

in_file.close();

}

三、调试分析

1.实际完成的情况说明(完成的功能,支持的数据类型等)

完成的功能:

(1)添加功能:

程序能够添加不同学生和教工的记录,提供选择界面供用户选择所要添加的类别,要求编号号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。

(2)查询功能:

可根据姓名、用水量、用电量信息对已添加的学生或教工记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

(3)显示功能:

可显示当前系统中所有学生和教工的记录,每条记录占据一行。

(4)编辑功能:

可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。

(5)删除功能:

主要实现对已添加的学生或教工记录进行删除。

如果当前系统中没有相应的记录,则提示“记录为空!

”并返回操作。

(6)统计功能:

能根据多种参数进行统计。

能统计学生和教工的用水用电量、所要交纳的电费和水费、未交纳水电费的人员信息等。

(7)保存功能:

可将当前系统中各类记录存入文件中,存入方式任意。

(8)读取功能:

可将保存在文件中的信息读入到当前系统中,供用户进行使用。

(9)计算电费和水费。

学生每月都有一定额度的水电是免费使用的,超过的部分需要交费。

支持类型:

编号、年龄支持int型,姓名、性别、工作部门、班级、交费情况支持string型,用电量、用水量、电费、水费支持double型。

2.程序的性能分析

程序主要使在类中操作,将所有记录存入对象数组和文件,采用顺序存储结构对数组进行操作,从而实现需要的操作。

3.上机过程中出现的问题及其解决方案

1.对类的数据成员进行定义时,起初定义为私有数据,结果继承类不能访问,这是类的访问权限出了问题,于是将其改成了公有数据成员,继承类能够对其进行访问了。

2.继承类对基类的访问出现了错误。

由于Student类和Teacher类都是从Person类继承的,会出现二义性,因此将其改成虚基类,这样就不会出现二义性飞的问题。

3.由于要输入多组数据,因此要定义对象数组,而且要定义为全局变量,否则不会得到有效的修改。

4.当系统关闭以后,再打开系统进行操作,若是添加文件中已经存在的编号,还是会添加到文件中去,这是因为文件的更新和当前系统的更新不一直,因此在最开始打开系统是就应该将文件中的记录读取到当前系统中。

4.程序中可以改进的地方说明

1.程序应该可以实现输入信息的正确性,例如输入性别的时候,如果不是男或女,可以输出提示信息等。

2.对于学生所在班级、性别,老师工作部门、性别等操作可以采用选择的模式,将信息录入文件中,这样可以使输入更方便。

3.对于每一次信息的操作应该输出相应的原有信息和现有信息,以防信息出错。

4.对于存在多个相同数据的记录,在删除和修改时应注意是否每个都修改。

5.程序中可以扩充的功能及设计实现构想

功能:

可以添加一个人的12月份的用水用电情况。

构想:

可以在类中再定义相应的对象数组,在进行操作时,除了对当前数组进行操作,还要对每个人的对象数组进行操作,然后写入文件。

四、用户手册

图4.1打开操作系统

2.选择相应操作:

图4.2选0,退出系统

图4.3选1,教师水电费管理系统

图4.4选2,学生水电费管理系统

3.教师水电费管理系统:

图4.5选0,返回上层系统

图4.6选1,添加教师信息

图4.7选2,查询教师信息

图3.8选3,修改教师信息

图3.9选4,删除教师信息

图3.10选5,显示教师信息

图3.11选6,读取教师信息

图2.12选7,统计教师信息

4.学生水电费管理系统:

操作同教师水电费管理系统。

五、设计总结(可谈一谈本次课程设计的经验和体会)

课程设计,对于我们现在只学了些基础的知识的人来说确实是一个不小的挑战!

我想对每个人都一样别人能做到的,我也能做到!

从一个函数到很多函数的有机集合到多个类的使用,其中也经历了不少困惑与不知。

但至少我现在做到了,终于战胜了自己对课程设计的恐惧,也收获了程序运行成功的喜悦,有付出,就有收获

通过这学期对C++的学习总结,要把知识运用于这次的课程设计,发现还是有点不足,有点困难,学到用时方恨少,自己学的还不够精,不够深。

对于一门技术来说,浅尝辄止是远远不够的。

还好通过去网上搜索、去图书馆查找资料、请教老师同学等各种方式克服了一个又一个的困难。

多样化的处理问题,才是成功之道,终于把设计给完成了!

学习的心态很关键,不懂了就要学着去用不同的方式去获取,补足自己,通过各种各样的方式,学着去请教别人和别人交流,做到不懂就问。

相对来说,我的程序更简易,代码相对来说比较少,但却实现了大多数功能。

简单易懂可行才是程序设计的本质,不是吗?

把所学的运用于生活中,收获了那种成就感不言而喻的高兴。

至今我感慨颇多的应当是一些难以查出的错误,编译时查不出的错误,其被发现时很可能只是位置的错误,仅隔数行,这些微小的信息却极大地影响了整体的效果。

这不仅存在于一个程序之中,因而我对于生活中的细节也有了改观,对于整体和局部的观念也有了更多的见解。

通过这次实践,我对编程有了新的理解,编程并不是像大多数人说的那样充满单调,乏味。

一件东西的乐趣在于你能去接触去理解。

我接触了,我理解了。

让所学的运用于生活中,做到灵活运用,学有所成的兴奋是难得的宝贵。

我在其中感悟到乐趣了,相信这是我编程高手之路的一个重要转折点。

六、参考文献

[1]李兰,任凤华.C++面向对象程序设计.西安:

西安电子科技大学出版社,2010

[2]李兰,任凤华.《C++面向对象程序设计》实验指导及习题解析.西安:

西安电子科技大学出版社,2010

[3]郑莉,董渊.C++程序设计基础教程.北京:

清华大学出版社,2010

[4]郑莉.C++程序设计基础教程学生用书.北京:

清华大学出版社,2010

七、附录

#include

#include

#include

#include

#include

#defineMAX100

usingnamespacestd;

classPerson

{

public:

stringnum;//编号

stringname;//姓名

stringsex;//性别

intold;//年龄

doublepower;//用电量

doublewater;//用水量

doublewatermoney;//水费

doublepowermoney;//电费

stringflag;//缴费标志

public:

Person(stringn="",stringnm="",strings="",intd=0,doublep=0,doublew=0,doublewm=0,doublepm=0,stringf="否")//构造函数

{

num=n;

name=nm;

sex=s;

old=d;

power=p;

water=w;

watermoney=wm;

powermoney=pm;

flag=f;

}

};

intamount;//记录当前记录的个数

classStudent:

virtualpublicPerson

{

public:

stringclassrome;//班级

public:

Student(stringn="",stringnm="",strings="",intd=0,doublep=0,doublew=0,stringcr="",doublewm=0,doublepm=0,stringf="否")

:

Person(n,nm,s,d,p,w,wm,pm,f)//构造函数

{

classrome=cr;

}

voidInput();

voidInputs();

voidOutput();

voidAdd();//添加信息

voidSearch();//查询信息

voidShow();//显示信息

voidCompile();//修改信息

voidDelete();//删除信息

voidTotal();//数据统计

voidSave();//保存信

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

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1