高校水电费管理Word下载.docx
- 文档编号:18220999
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:55
- 大小:381.44KB
高校水电费管理Word下载.docx
《高校水电费管理Word下载.docx》由会员分享,可在线阅读,更多相关《高校水电费管理Word下载.docx(55页珍藏版)》请在冰豆网上搜索。
主要实现对已添加的学生或教工记录进行删除。
如果当前系统中没有相应的记录,则提示“记录为空!
”并返回操作。
(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.1高校水电费管理系统模块图
2.画出主程序及其主要模块的流程图
图2.2main()函数
图2.3添加函数
图2.4菜单函数
图2.5查找函数
图2.6修改函数
图2.7显示函数
图2.8删除函数
3.编写程序关键代码
voidAdd()//添加信息
{
Students;
cout<
<
"
输入新添人员信息"
endl;
s.Input();
for(inti=0;
i<
amount;
i++)
if(s.num==stu[i].num)
{
该编号的用户已存在!
return;
}
stu[amount]=s;
添加成功!
ofstreamout_file("
学生.txt"
ios:
:
app);
//将添加记录更新到文件
if(!
out_file)
打开失败!
out_file<
stu[amount].num<
"
stu[amount].name<
stu[amount].sex<
stu[amount].old<
stu[amount].classrome<
stu[amount].water<
stu[amount].watermoney<
stu[amount].power<
stu[amount].powermoney<
stu[amount].flag<
out_file.close();
amount++;
}
voidSearch()//查询信息
intchioce;
cin>
>
chioce;
switch(chioce)
case1:
stringname;
name;
intk=0;
if(stu[i].name==name)
cout<
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<
\n"
k=1;
if(k==0)
查无此人!
}break;
case2:
doublewaters;
waters;
if(stu[i].water==waters)
cout<
k=1;
查无此用水量!
case3:
doublepowers;
powers;
if(stu[i].power==powers)
查无此用电量!
default:
cout<
无此选项!
请重试!
break;
voidShow()//显示信息
stu[i].sex<
voidStudent:
Compile()//修改学生信息
stringnums;
nums;
if(stu[i].num==nums)
s.Inputs();
for(intt=0;
t<
t++)
if(s.num==stu[t].num)
if(t==i)continue;
修改不成功!
stu[i]=s;
stu[i].watermoney<
修改成功!
VoidDelete()//删除信息
intchioce;
intchoice=2;
choice;
switch(choice)
for(intj=i;
j<
amount-1;
j++)
stu[j]=stu[j+1];
amount--;
case0:
k=2;
break;
无此项!
if(k==1)
删除成功!
elseif(k==2)
查找到此学号,但未删除!
else
查无此学号!
请输入姓名:
stringnames;
names;
if(stu[i].name==names)
k=2;
elseif(k==2)
if(k==1)
}break;
voidTotal()//统计信息
intt=0;
if(stu[i].flag=="
否"
)
t=1;
if(t==0)
无未缴费人员!
voidRead()//读取信息
ifstreamin_file("
in);
in_file)
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)
i++;
in_file.close();
三、调试分析
1.实际完成的情况说明(完成的功能,支持的数据类型等)
完成的功能:
支持类型:
编号、年龄支持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++面向对象程序设计》实验指导及习题解析.西安:
[3]郑莉,董渊.C++程序设计基础教程.北京:
清华大学出版社,2010
[4]郑莉.C++程序设计基础教程学生用书.北京:
七、附录
#include<
iostream>
string>
iomanip>
fstream>
stdlib.h>
#defineMAX100
usingnamespacestd;
classPerson
public:
stringnum;
//编号
//姓名
stringsex;
//性别
intold;
//年龄
doublepower;
//用电量
doublewater;
//用水量
doublewatermoney;
//水费
doublepowermoney;
//电费
stringflag;
//缴费标志
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
stringclassrome;
//班级
Student(stringn="
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();
//保存信
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高校 水电费 管理