高校水电费管理系统设计.doc
《高校水电费管理系统设计.doc》由会员分享,可在线阅读,更多相关《高校水电费管理系统设计.doc(61页珍藏版)》请在咨信网上搜索。
实 验 报 告 课程名称 程序设计实践(C++) 实验题目 高校水电费管理系统 实验仪器 计算机 系 别 计算机学院 专 业 计算机科学与技术 班级/学号 学生姓名 实验日期 2015-6-15 成 绩 指导教师 实验题目 高校水电费管理系统 一 、实验目的(10分) 面向对象程序设计实践课程设计是该课程集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习和实践。要求学生能够熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基础知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力,达到课程学习的目的和要求。 二、 需求分析 (20分) 2.1 环境分析 随着科学技术的发展,不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻的认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 而面对现今社会的发展,水电费管理系统是每一个高校管理机构对学校资源进行有效管理的不可或缺的一个管理信息系统,它的内容对于学校资源管理机构的管理者来说是至关重要的,该系统应该能够为资源管理机构的管理者提供有效的帮助,使之能够对有效信息进行快捷的整理和查询,大大的方便了管理机构的管理者的合理有效管理。 2.2 要求 具体要求: (1)添加功能:程序能够添加不同学生和教工的记录,提供选择界面供用户选择所要添加的类别,要求编号号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。 (2)查询功能:可根据姓名、用水量、用电量信息对已添加的学生或教工记录进行查询如果未找到,给出相应的提示信息;如果找到,则显示相应的记录信息。 (3)显示功能:可显示当前系统中所有学生或教工的记录,每条记录占据一行。 (4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。 (5)删除功能:主要实现对已添加的学生或教工记录进行删除。如果当前 系统中没有相应的记录则提示“记录为空”并返回操作。 (6)统计功能:能统计学生和教工的用水用电量、所要交 纳的电费和水费信息等。 (7)保存功能:可将当前系统中各类记录存入文件中,存入方式位“学生.txt”和“教师.txt”。 (8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。 2.3运行环境 (1)Windows XP/Windows 7/Windows 8 等系统 (2)Visual C++ 6.0编译环境或VS 2013编译环境等 2.4 开发工具 C++语言 三、实验课时 24课时 四、 实验步骤(20分) 4.1 系统功能分析: 系统通过调用函数来实现教师、学生信息地录入、修改、删除、查询以及数据保存文件等功能。input()函数用于录入信息;output()函数用来输出信息;statistics()函数用来统计信息;compile()函数用来修改教师和学生的信息;add()函数用来添加新增信息;reading()函数用来读取已有的文件;show()函数用于显示所有已有的记录;deletes()函数用来删除教师和学生的信息;search()函数用来查询信息;saving()函数用于将输入的信息存入文件内;主函数main()用于调用这些函数。 4.2系统功能模块划分与设计: 本系统定义了College类、Teacher类、Student类、Student_message类以及Teacher_message这五个类,定义了input()、output()、statistics()、compile()、add()、reading()、show()、deletes()、search()、saving()等函数来实现系统所需功能。 4.3详细设计 1.基类College的设计: class College //声明基类大学类 { public: //公有数据成员 College(string nam = " ", string s = " ", int a = 0, int num = 0, double wat = 0.0, double ele = 0.0, double powerf = 0.0, double waterf = 0.0) : name(nam), sex(s), age(a), number(num), water(wat), electric(ele), powerfare(powerf), waterfee(waterf){}; //定义构造函数 void input(); //声明输入函数 void output(); //声明输出函数 string getname(){ return name; } //获取姓名 int getage(){ return age; } //获取年龄 double getwater(){ return water; } //获取用水量 double geteletric(){ return electric; } //获取用电量 double getpowerfare(){ return powerfare; } //获取电费 double getwaterfee(){ return waterfee; } //获取水费 int getnumber(){ return number; } //获取编号 public: //公有类数据成员 string name; //姓名 string sex; //性别 int age; //年龄 int number; //编号 double water; //用水量 double electric; //用电量 double powerfare; //电费 double waterfee; //水费 }; 2. 派生类Student类的设计 class Student : public College //公有继承基类 { public: //公有数据成员 Student(string nam = " ", string s = " ", int a = 0, int num = 0, double wat = 0.0, double ele = 0.0, double powerf = 0.0, double waterf = 0.0, string grad = " ") : College(nam, s, a, num, wat, ele, powerf, waterf), grade(grad){} //定义学生类构造函数 void input(); //声明学生类输入函数 void output(); //声明学生类输出函数 public: //公有数据成员 string grade; }; 3. 派生类Teacher类的设计 class Teacher : public College //公有继承基类 { public: //公用数据成员 Teacher(string nam = " ", string s = " ", int a = 0, int num = 0, double wat = 0.0, double ele = 0.0, double powerf = 0.0, double waterf = 0.0, string depart = " ") : College(nam, s, a, num, wat, ele, powerf, waterf), department(depart){} //定义教师类构造函数 void input(); //声明教师类输入函数 void output(); //声明教师类输出函数 public: string department; }; 4.Student_message类的设计 class Student_message //声明学生信息类 { Student stu[capacity]; //学生数组 int amount; //当前的数据量 public: Student_message(){ amount = 0; } //定义当前学生信息容量为0 void add(); //声明学生信息添加函数 void search(); //声明学生信息查询函数 void show(); //声明学生信息显示函数 void compile(); //声明学生信息编辑函数 void deletes(); //声明学生信息删除函数 void statistics(); //声明学生信息统计函数 void saving(); //声明学生信息保存函数 void reading(); //声明学生信息读取函数 }; 5. Teacher_message类的设计 class Teacher_message //声明教师信息类 { Teacher teach[capacity]; int amount; //定义当前数据数 public: Teacher_message(){ amount = 0; } //初始记录数据数为0 void add(); //声明教师信息添加函数 void search(); //声明教师信息查询函数 void show(); //声明教师信息显示函数 void compile(); //声明教师信息编辑函数 void deletes(); //声明教师信息删除函数 void statistics(); //声明统计函数 void saving(); //声明教师信息保存函数 void reading(); //声明教师信息读取函数 }; 五、实验心得(10分) 在课程设计刚开始时,我不清楚到底需要做什么,无从下手,因为这不是平时的实验,平时的实验都是有目的,有内容的,而此次的设计是需要自己去设计去实践的,没有什么东西,需要自己去一步一步实现,一步一步的写。后来,回想老师所讲的方法和技巧,开始有了目的,也有了思路。 首先,在确定我的设计题目之后,并且在对本题目进行分析的时候,我懂得了一个很重要的道理,那就是说一个程序的产生需要一个对题目要求有一个正确全面的分析。其次,就该考虑程序算法的问题了,一个好的算法是一个好程序的灵魂,也决定了一个程序的质量。 经过三个星期的设计和实践,虽然有些疲劳和困倦,但带给我很多的收获。C++已经学了一个学期了,有许多知识都存在似懂非懂的现象,后来这种现象通过实际的上机操作和实验,以及老师的讲解,同学的帮助,已经减少了许多。对这些知识也有了更深的理解和很好的掌握。同时也有很多理论上可以说得过去的代码,但到了实际操作的时候,却是行不通的。这种困惑,有许多已经通过实际 地操作解决了,并能够深刻地认识,但也有很多不是很清楚。后来,只能避过这些方法,转换策略实现。在课程设计之前,因为有了多次的综合实验的经验与教训,明白了写代码这一步是非常重要的,因为当你把代码输入电脑,并用编译器将其运行,发现通过不了,再来检查找出问题,这是一件非常辛苦的事情,也很浪费时间。于是在课程设计的时候,我先花了几天的时间来规划要写的代码,将要实现的内容分析清楚,才把代码输入电脑。这样就能够有效地降低了错误的几率,提高了写代码的效率,并且也减少了设计时的盲目性,无序性。 同时,这次的课程设计,让我充分的感觉到了自己要设计一个好的程序是多么的难和不容易,以及学习好C++是多么的重要。在这个程序的设计过程中,我清楚的意识到了自己的编程水平有多么的薄弱,课程的知识学得有多么的不扎实。在程序调试的时候系统总是在报错,还有很多警告,每增加一个函数就要调试好久,有时候因为少了一个大括号或是分号,要找很久很久。在完成课程设计的过程中,我发现运行后的界面非常的不好看,效果不是很好,有些数据之间没有分开,格式较拥挤,分辨不清各个数据所代表的含义。后来,对程序进行了修改和添补,有了一定的好转,加了一些必要的空格和符号,以及一些标识,使得程序的界面更加的友好、美观,更佳的适用。尽管系统后来可以正常地运行,也具有了一些基本的功能,但我还是意识到了自己有太多的不足。 但是呢,好在以后还会有很多的课程设计,我则一定要吸取这次的教训,把知识学懂学透学精,真正的为我所用,这样走上社会我才能真正的发挥所长。 六、 程序运行结果截图以及C++程序源代码(40分) 程序运行结果截图 1.开始运行界面截图: 2.退出主界面: 3.进入教师水电费管理系统: 4.添加功能: 5.查找功能: 6.修改功能: 7.读取显示功能: 8.添加、保存功能: 9.统计功能: 10.删除功能: 11.退出教师水电费管理系统: 注:学生水电费管理系统运行原理与教师水电费管理系统运行与原理一样。 程序源代码: #include<iostream> #include<string> #include<fstream> #include<iomanip> const int capacity = 1500; //定义常变量数据容量为1500 using namespace std; class College //声明基类大学类 { public: //公有数据成员 College(string nam = " ", string s = " ", int a = 0, int num = 0, double wat = 0.0, double ele = 0.0, double powerf = 0.0, double waterf = 0.0) : name(nam), sex(s), age(a), number(num), water(wat), electric(ele), powerfare(powerf), waterfee(waterf){}; //定义构造函数 void input(); //声明输入函数 void output(); //声明输出函数 string getname(){ return name; } //获取姓名 int getage(){ return age; } //获取年龄 double getwater(){ return water; } //获取用水量 double geteletric(){ return electric; } //获取用电量 double getpowerfare(){ return powerfare; } //获取电费 double getwaterfee(){ return waterfee; } //获取水费 int getnumber(){ return number; } //获取编号 public: //公有类数据成员 string name; //姓名 string sex; //性别 int age; //年龄 int number; //编号 double water; //用水量 double electric; //用电量 double powerfare; //电费 double waterfee; //水费 }; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class Student : public College //公有继承基类 { public: //公有数据成员 Student(string nam = " ", string s = " ", int a = 0, int num = 0, double wat = 0.0, double ele = 0.0, double powerf = 0.0, double waterf = 0.0, string grad = " ") : College(nam, s, a, num, wat, ele, powerf, waterf), grade(grad){} //定义学生类构造函数 void input(); //声明学生类输入函数 void output(); //声明学生类输出函数 public: //公有数据成员 string grade; }; class Student_message //声明学生信息类 { Student stu[capacity]; //学生数组 int amount; //当前的数据量 public: Student_message(){ amount = 0; } //定义当前学生信息容量为0 void add(); //声明学生信息添加函数 void search(); //声明学生信息查询函数 void show(); //声明学生信息显示函数 void compile(); //声明学生信息编辑函数 void deletes(); //声明学生信息删除函数 void statistics(); //声明学生信息统计函数 void saving(); //声明学生信息保存函数 void reading(); //声明学生信息读取函数 }; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void Student::input() //学生信息输入函数 { cout << "请输入姓名:" << endl; cin >> name; int choice; cout << "请选择性别(1.男,2.女):" << endl; cin >> choice; switch (choice) { case 1:sex = "男"; break; case 2:sex = "女"; break; default:cout << "输入错误!" << endl; break; } cout << "请输入年龄:" << endl; cin >> age; cout << "请输入班级:" << endl; cin >> grade; cout << "请输入学号:" << endl; cin >> number; cout << "请输入本月用水量:" << endl; cin >> water; cout << "请输入本月用电量:" << endl; cin >> electric; cout << "请输入水费:" << endl; cin >> waterfee; cout << "请输入电费:" << endl; cin >> powerfare; } void Student::output() //学生信息输出函数 { cout << "姓名:" << name << " " << "性别:" << sex << " " << "年龄:" << age << endl; cout << "班级:" << grade << " " << "学号:" << number << " " << "用水量:" << water << endl; cout << "用电量:" << electric << " " << "水费:" << waterfee << " " << "电费:" << powerfare << endl << endl; } void Student_message::add() //学生信息添加函数 { if (amount >= capacity) { cout << "警告!用户已满!" << endl; return; } Student stud; cout << "请输入添加人员的信息" << endl; stud.input(); for (int i = 0; i < amount; i++) if (stud.getnumber() == stu[i].getnumber()) { cout << "该编号人员已存在!" << endl; return; } stu[amount] = stud; amount = amount + 1; cout << "添加成功!" << endl; } void Student_message::search() //学生信息查询函数 { if (amount == 0) { cout << "当前没有人员记录!" << endl; return; } int choice; cout << "请选择查询方式:1.编号查找 2.姓名查找 3.用水量查找 4.用电量查找" << endl; cin >> choice; switch (choice) { case 1: { cout << "请输入要查询的编号:" << endl; int number; cin >> number; cout << "姓名" << " " << "性别" << " " << "年龄" << " " << "班级" << " " << "学号" << setw(10) << "用水量" << setw(10) << "用电量" << setw(10) << "水费" << setw(10) << "电费" << endl << endl; for (int i = 0; i < amount; i++) { if (stu[i].getnumber() == number) { stu[i].output(); } } return; cout << "此人不存在!" << endl; }break; case 2: { cout << "请输入要查询的姓名:" << endl; string name; cin >> name; cout << "姓名" << " " << "性别" << " " << "年龄" << " " << "班级" << " " << "学号" << setw(10) << "用水量" << setw(10) << "用电量" << setw(10) << "水费" << setw(10) << "电费" << endl << endl; for (int i = 0; i < amount; i++) { if (stu[i].getname() == name) { stu[i].output(); } } return; cout << "此人不存在!" << endl; }break; case 3: { cout << "请输入要查询的用水量:" << endl; double water; cin >> water; cout << "姓名" << " " << "性别" << " " << "年龄" << " " << "班级" << " " << "学号" << setw(10) << "用水量" << setw(10) << "用电量" << setw(10) << "水费" << setw(10) << "电费" << endl << endl; for (int i = 0; i < amount; i++) { if (stu[i].getwater() == water) { stu[i].output(); } } return; cout << "此人不存在!" << endl; }break; case 4: { cout << "请输入要查询的用电量:" << endl; double electric; cin >> electric; cout << "姓名" << " " << "性别" << " " << "年龄" << " " << "班级" << " " << "学号" << setw(10) << "用水量" << setw(10) << "用电量" << setw(10) << "水费" << setw(10) << "电费" << endl << endl; for (int i = 0; i < amount; i++) { if (stu[i].geteletric() == electric) { stu[i].output(); } } return; cout << "此人不存在!" << endl; }break; default:cout << "无此选项,请重试!" << endl; break; } } void Student_message::show() //学生信息显示函数 { if (amount == 0) { cout << "没有数据!" << endl; return; } cout << "姓名" << " " << "性别" << " " << "年龄" << " " << "班级" << " " << "学号" << setw(10) << "用水量" << setw(10) << "用电量" << setw(10) << "水费" << setw(10) << "电费" << endl << endl; for (int i = 0; i < amount; i++) { stu[i].output(); } } void Student_message::compile() //学生信息编辑函数 { if (amount == 0) { cout << "当前没有人员记录!" << endl; return; } int num; cout << "请输入要查找的编号:" << endl; cin >> num; for (int i = 0; i < amount; i++) { if (stu[i].getnumber() == num) { cout << "请输入修改的信息" << endl; stu[i].input(); cout << "修改成功!" << endl; return; } } cout << "查无此人!" << endl; } void Student_message::deletes() //学生信息删除函数 { if (amount == 0) { cout << "当前没有人员记录!" << endl; return; } cout << "请输入您的选择:" << endl; cout << "1.编号查找删除 2.姓名查找删除" << endl; int choice; cin >> choice; switch (choice) { case 1: { cout << "请输入编号:" << endl; int num; cin >> num; for (int i = 0; i < amount; i++) { if (num == stu[i].number) { cout << "是否删除?" << endl; cout << "1.是 2.否" << endl; int choice1; cin >> choice1; switch (choice1) { case 1: { for (int k = i; k < amount - 1; k++) stu[k] = stu[k + 1]; cout << "删除成功!" << endl; amount--; }; break; case 2:return; default:cout << "不存在此选项!" << endl; break; }return; } } cout << "不存在此人!" << endl; }; break; case 2: { cout << "请输入姓名:" << endl; string name; cin >> name; for (int i = 0; i < amount; i++) { if (name == stu[i].name) { cout << "是否删除?" << endl; cout << "1.是 2.否 " << endl; int choice2; cin >> choice2; switch (choice2) { case 1: { for (int k = i; k < amount - 1; k++) stu[k] = stu[k + 1]; cout << "删除成功!" << endl; amount--; }; break; case 2:return; default:cout << "无此项,失败!" << endl; break; }return; } } cout << "无此人!" << endl; }; break; default:cout << "没有此选项,失败!" << endl; break; } } void Student_message::statistics() //统计函数 { cout << "1.学生用水总量和用电总量 2.学生总的水电费" << endl; int choice; cout << "请选择您的选项:" << endl; cin >> choice; switch (choice) { case 1: { double all_water = 0.0, all_electric = 0.0; for (int i = 0; i < amount; i++) { all_water += stu[i].water; all_electric += stu[i].electric; } cout << "学生总用水量为:" << all_water << endl; cout << "学生总用电量为:" << all_electric << endl; }break; case 2: { double all_waterfare = 0.0, all_powerfee = 0.0; for (int i = 0; i < amount- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高校 水电费 管理 系统 设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文