高校水电费管理系统设计(C++面向对象课程设计报告).doc

上传人:e****s 文档编号:92378902 上传时间:2023-06-03 格式:DOC 页数:46 大小:428KB
返回 下载 相关 举报
高校水电费管理系统设计(C++面向对象课程设计报告).doc_第1页
第1页 / 共46页
高校水电费管理系统设计(C++面向对象课程设计报告).doc_第2页
第2页 / 共46页
点击查看更多>>
资源描述

《高校水电费管理系统设计(C++面向对象课程设计报告).doc》由会员分享,可在线阅读,更多相关《高校水电费管理系统设计(C++面向对象课程设计报告).doc(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、青岛理工大学C+面向对象课程设计报告院(系): 计算机工程学院 专业: 软件工程 学生姓名: 沈芳 班级 软件133 学号: 201307246 题目: 高校水电费管理系统设计 起迄日期: 设计地点: 计算机学院机房 指 导 教 师: 王成钢 周全强 完成日期: 任务书题目9 “高校水电费管理系统设计”1、问题描述住宿学生信息包括:学号、姓名、性别、年龄、班级、用电量、用水量等信息。教工信息包括职工号、姓名、性别、年龄、工作部门、用电量、用水量等信息。能计算出学生和教工每月所要交的电费和水费。定义一个人员类,实现学生和教工共同的信息和行为。2、功能要求(1)添加功能:程序能够添加不同学生和教工

2、的记录,提供选择界面供用户选择所要添加的类别,要求编号号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。(2)查询功能:可根据姓名、用水量、用电量信息对已添加的学生或教工记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。(3)显示功能:可显示当前系统中所有学生和教工的记录,每条记录占据一行。(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。(5)删除功能:主要实现对已添加的学生或教工记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。(6)统计功能:能根据多种参数进行统计。能统计学生和教工的用水用电

3、量、所要交纳的电费和水费、未交纳水电费的人员信息等。(7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。(8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。(9)计算电费和水费。学生每月都有一定额度的水电是免费使用的,超过的部分需要交费。3、问题的解决方案 根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述;(5)完成类中各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试;(8)完

4、成系统总结报告。课程设计报告内容一、需求分析 1、目的: (1)要求学生达到熟练掌握C+语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 2、基本要求: (1)要求利用面向对象的方法以及C+的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次;要分析和定义各个类,每个类中要有各自的属性和方法;要求运用面向对象的机制(继承、派生及多态性)来实现系统功能。(3)在系统的设计中,要有清晰的界面设计,同时采用文件进行读写操作。(1)添加功能:程序能够添加职工的记录和工作量,可提供选择界面供

5、用户选择所要添加的类别,要求职工的编号要唯一,如果添加了重复职工号的职工记录时,则提示数据添加重复并取消添加。(2)查询功能:可根据职工号、姓名等信息对已添加的职工记录进行查询。还可以按职工号对工作量进行查询。如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。(3)显示功能:可显示当前系统中所有职工记录和工作量统计信息,每条记录占据一行。(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。(5)删除功能:主要实现对已添加的人员记录进行删除和工作量进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号,根据所

6、输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。(6)统计功能:对职工可按工作量进行统计,并排名次。(7)保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意。(8)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。(9)计算电费和水费。学生每月都有一定额度的水电是免费使用的,超过的部分需要交费。二、内容设计1.根据所选题目,给出模块图 图2.1 高校水电费管理系统模块图 图2.2 main()函数 图2.3 添加函数 图2.4 菜单函数 图2.5 查找函数 图2.6 修改函数 图2.7 显示函数图2.8 删除函数void Add()/添加

7、信息 Student s; cout输入新添人员信息endl; s.Input(); for(int i=0;iamount;i+) if(s.num=stui.num) cout该编号的用户已存在!endl; return; stuamount=s; cout添加成功!endl; ofstream out_file(学生.txt,ios:app); /将添加记录更新到文件 if(!out_file) cout打开失败!endl; return; out_filestuamount.num stuamount.name stuamount.sex stuamount.old stuamount

8、.classrome stuamount.water stuamount.watermoney stuamount.power stuamount.powermoney stuamount.flagchioce; switch(chioce) case 1: string name; cinname; int k=0; for(int i=0;iamount;i+) if(stui.name=name) coutstui.numstui.name)stui.sex stui.oldstui.classromestui.waterstui.watermoney stui.powerstui.po

9、wermoneystui.flagnendl; k=1; if(k=0) cout查无此人!waters; int k=0; for(int i=0;iamount;i+) if(stui.water=waters) coutstui.numstui.name)stui.sex stui.oldstui.classromestui.waterstui.watermoney stui.powerstui.powermoneystui.flagnendl; k=1; if(k=0) cout查无此用水量!powers; int k=0; for(int i=0;iamount;i+) if(stu

10、i.power=powers) coutstui.numstui.name)stui.sex stui.oldstui.classromestui.waterstui.watermoney stui.powerstui.powermoneystui.flagnendl; k=1; if(k=0) cout查无此用电量!endl; break; default:cout无此选项!请重试!endl; break; void Show() /显示信息coutstui.numstui.name)stui.sexstui.oldstui.classromestui.waterstui.watermone

11、y stui.powerstui.powermoneystui.flagnnums; int k=0; for(int i=0;iamount;i+) if(stui.num=nums) Student s; s.Inputs(); for(int t=0;tamount;t+) if(s.num=stut.num) if(t=i) continue; cout该编号的用户已存在!修改不成功!endl; return; stui=s;coutstui.numstui.name)stui.sexstui.oldstui.classromestui.waterstui.watermoneystui

12、.powerstui.powermoneystui.flagendl; cout修改成功!endl; k=1; if(k=0) cout查无此人!chioce; switch(chioce) case 1: string nums; cinnums; int k=0; for(int i=0;ichoice; switch(choice) case 1: for(int j=i;jamount-1;j+) stuj=stuj+1; amount-; k=1; break; case 0:k=2;break; default:cout无此项!endl;break; if(k=1) cout删除成

13、功!endl; else if(k=2) cout查找到此学号,但未删除!endl; else cout查无此学号!endl; break; case 2: cout请输入姓名:names; int k=0; for(int i=0;ichoice; switch(choice) case 0: k=2;break; case 1: for(int j=i;jamount-1;j+) stuj=stuj+1; amount-; k=1; break; default:cout无此项!endl;break; if(k=1) cout删除成功!endl; else if(k=2) cout查找到此

14、学号,但未删除!endl; if(k=1) cout查无此学号!endl; break; default: cout无此项!endl;break; void Total() /统计信息 int t=0; for(int i=0;iamount;i+) if(stui.flag=否) coutstui.numstui.name)stui.sexstui.oldstui.classromestui.waterstui.watermoneystui.powerstui.powermoneystui.flagendl; t=1; if(t=0) cout无未缴费人员!endl;void Read()

15、/读取信息 ifstream in_file(学生.txt,ios:in); if(!in_file) cout打开失败!stui.numstui.namestui.sexstui.oldstui.classrome stui.waterstui.watermoneystui.powerstui.powermoneystui.flag) coutstui.numstui.name)stui.sexstui.oldstui.classromestui.waterstui.watermoneystui.powerstui.powermoneystui.flagendl; i+; in_file.c

16、lose();三、调试分析1.实际完成的情况说明(完成的功能,支持的数据类型等)完成的功能:(1)添加功能:程序能够添加不同学生和教工的记录,提供选择界面供用户选择所要添加的类别,要求编号号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。(2)查询功能:可根据姓名、用水量、用电量信息对已添加的学生或教工记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。(3)显示功能:可显示当前系统中所有学生和教工的记录,每条记录占据一行。(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。(5)删除功能:主要实现对已添加的学生或教工记录进行

17、删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。(6)统计功能:能根据多种参数进行统计。能统计学生和教工的用水用电量、所要交纳的电费和水费、未交纳水电费的人员信息等。(7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。(8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。(9)计算电费和水费。学生每月都有一定额度的水电是免费使用的,超过的部分需要交费。 支持类型:编号、年龄支持int型,姓名、性别、工作部门、班级、交费情况支持string型,用电量、用水量、电费、水费支持double型。 程序主要使在类中操作,将所有记录存入对象数组和文件,采用

18、顺序存储结构对数组进行操作,从而实现需要的操作。1.对类的数据成员进行定义时,起初定义为私有数据,结果继承类不能访问,这是类的访问权限出了问题,于是将其改成了公有数据成员,继承类能够对其进行访问了。2.继承类对基类的访问出现了错误。由于Student类和Teacher类都是从Person类继承的,会出现二义性,因此将其改成虚基类,这样就不会出现二义性飞的问题。3.由于要输入多组数据,因此要定义对象数组,而且要定义为全局变量,否则不会得到有效的修改。4.当系统关闭以后,再打开系统进行操作,若是添加文件中已经存在的编号,还是会添加到文件中去,这是因为文件的更新和当前系统的更新不一直,因此在最开始打

19、开系统是就应该将文件中的记录读取到当前系统中。1.程序应该可以实现输入信息的正确性,例如输入性别的时候,如果不是男或女,可以输出提示信息等。2.对于学生所在班级、性别,老师工作部门、性别等操作可以采用选择的模式,将信息录入文件中,这样可以使输入更方便。3.对于每一次信息的操作应该输出相应的原有信息和现有信息,以防信息出错。4.对于存在多个相同数据的记录,在删除和修改时应注意是否每个都修改。功能:可以添加一个人的12月份的用水用电情况。构想:可以在类中再定义相应的对象数组,在进行操作时,除了对当前数组进行操作,还要对每个人的对象数组进行操作,然后写入文件。四、用户手册 图4.1 打开操作系统2.

20、选择相应操作:图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.学生水电费管理系统: 操作同教师水电费管理系统。五、设计总结(可谈一谈本次课程设计的经验和体会)课程设计,对于我们现在只学了些基础的知识的人来说确实是一个不小的挑战!我想对每个人都一样别人能做到的,我也能做到!从一个函数

21、到很多函数的有机集合到多个类的使用,其中也经历了不少困惑与不知。但至少我现在做到了,终于战胜了自己对课程设计的恐惧,也收获了程序运行成功的喜悦,有付出,就有收获! 通过这学期对C+的学习总结,要把知识运用于这次的课程设计,发现还是有点不足,有点困难,学到用时方恨少,自己学的还不够精,不够深。对于一门技术来说,浅尝辄止是远远不够的。还好通过去网上搜索、去图书馆查找资料、请教老师同学等各种方式克服了一个又一个的困难。多样化的处理问题,才是成功之道,终于把设计给完成了! 学习的心态很关键,不懂了就要学着去用不同的方式去获取,补足自己,通过各种各样的方式,学着去请教别人和别人交流,做到不懂就问。相对来

22、说,我的程序更简易,代码相对来说比较少,但却实现了大多数功能。简单易懂可行才是程序设计的本质,不是吗?把所学的运用于生活中,收获了那种成就感不言而喻的高兴。 至今我感慨颇多的应当是一些难以查出的错误,编译时查不出的错误,其被发现时很可能只是位置的错误,仅隔数行,这些微小的信息却极大地影响了整体的效果。这不仅存在于一个程序之中,因而我对于生活中的细节也有了改观,对于整体和局部的观念也有了更多的见解。 通过这次实践,我对编程有了新的理解,编程并不是像大多数人说的那样充满单调,乏味。一件东西的乐趣在于你能去接触去理解。我接触了,我理解了。让所学的运用于生活中,做到灵活运用,学有所成的兴奋是难得的宝贵

23、。我在其中感悟到乐趣了,相信这是我编程高手之路的一个重要转折点。六、参考文献1 李兰, 任凤华. C+面向对象程序设计. 西安: 西安电子科技大学出版社, 20102 李兰, 任凤华. C+面向对象程序设计实验指导及习题解析. 西安: 西安电子科技大学出版社, 20103 郑莉, 董渊. C+程序设计基础教程. 北京: 清华大学出版社, 20104 郑莉. C+程序设计基础教程学生用书. 北京: 清华大学出版社, 2010七、附录#include #include #include #include #include #define MAX 100using namespace std;cla

24、ss Personpublic: string num; /编号 string name; /姓名 string sex; /性别 int old; /年龄 double power; /用电量 double water; /用水量 double watermoney; /水费 double powermoney; /电费 string flag;/缴费标志public: Person(string n=,string nm=,string s=,int d=0,double p=0,double w=0,double wm=0,double pm=0,string f=否) /构造函数 nu

25、m=n; name=nm; sex=s; old=d; power=p; water=w; watermoney=wm; powermoney=pm; flag=f; ;int amount; /记录当前记录的个数class Student:virtual public Personpublic: string classrome; /班级public: Student(string n=,string nm=,string s=,int d=0,double p=0,double w=0,string cr=,double wm=0,double pm=0,string f=否) :Pers

26、on(n,nm,s,d,p,w,wm,pm,f) /构造函数 classrome=cr; void Input(); void Inputs(); void Output(); void Add(); /添加信息 void Search(); /查询信息 void Show(); /显示信息 void Compile(); /修改信息 void Delete(); /删除信息 void Total(); /数据统计 void Save(); /保存信息 void Read(); /读取信息;Student stuMAX; /学生对象数组int cmp1(const void *a,const

27、void *b) Student *c=(Student *)a; Student *d=(Student *)b; if(c-num d-num) return 1; else return -1;void Student:Input() /输入学生信息 cout请输入学号:num; cout请输入姓名:name; cout请输入性别:sex; cout请输入年龄:old; cout请输入班级:classrome; cout请输入本月用水量:water; cout请输入本月用电量:power; if(water10) /学生水电费一定额度限免 watermoney=(water-10)*0.

28、5; if(power10) powermoney=(power-10)*0.5;void Student:Inputs() /输入学生信息 Input(); cout是否已缴水电费:flag;void Student:Add()/添加学生信息 if(amount=100) cout用户已满!endl; return; Student s; cout输入新添人员信息endl; s.Input(); for(int i=0;iamount;i+) if(s.num=stui.num) cout该编号的用户已存在!endl; return; stuamount=s; cout添加成功!endl;

29、amount+; Save();void Student:Search() /查询学生信息 if(amount=0) cout当前系统无存储记录!endl; return; int chioce; cout请选择查询方式:1.按姓名查询 2.按用水量查询 3.按用电量查询chioce; switch(chioce) case 1: string name; cout请输入要查找的姓名:name; int k=0; cout 编号 姓名 性别 年龄 班级 用水量 水费 用电量 电费 缴费endl; for(int i=0;iamount;i+) if(stui.name=name) coutsetiosflags(ios:left)setw(13)stui.numsetw(9)stui.namesetw(6)stui.sex setw(6)stui.oldsetw(10)stui.classromesetw(8)stui.watersetw(8)stui.watermoney setw(8)stui.powersetw(7)stui.powermoneystui.flagnendl; k=1; if(k=0) cout

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁