面向对象程序设计大作业(C++)

合集下载

西电2022年秋季《面向对象程序设计(c++)》大作业及答案

西电2022年秋季《面向对象程序设计(c++)》大作业及答案

学习中心/函授站姓名学号西安电子科技大学网络与继续教育学院2022 学年下学期《面向对象程序设计(C++)》期末考试试题(综合大作业)考试说明:1、大作业试题公布时间:(1)毕业班:2022 年10 月21 日;(2)正常班:2022 年11 月18 日;2、考试必须独立完成,如发现抄袭、雷同均按零分计;3、答案须用《西安电子科技大学网络与继续教育学院2022 秋期末考试答题纸》(个人专属答题纸)手写完成,要求字迹工整、卷面干净、整齐;4、在线上传时间:(1)毕业班学生于2022 年10 月21 日至2022 年11 月1 日在线上传大作业答卷;(2)正常班学生于2022 年11 月18 日至2022 年12 月5 日在线上传大作业答卷;5、拍照要求完整、清晰,一张图片对应一张个人专属答题纸(A4 纸),正确上传。

一、简答题(10 分)1、运算符 new 和 delete 的功能分别是什么?(3 分)答案:运算符new的功能是创建动态对象;delete的功能是释放由new创建的动态对象。

2、若派生类以 private 方式从一个基类派生,派生类的对象可以访问基类中的哪些成员?派生类的成员函数可以访问基类中的哪些成员?(3 分)答案:若派生类以private方式从一个基类派生,派生类的对象不能访问基类中的任何成员(1分);派生类的成员函数可以访问基类中的public和protected成员(2分)。

3、构造函数的作用是什么?在创建派生类的对象时,应按照怎样的顺序调用构造函数?(4 分)答案:构造函数的作用是创建对象并对其进行必要的初始化。

(1分)构造函数调用顺序:基类构造函数、子对象类构造函数(如果有)、派生类构造函数。

(2分)二、填空题(每空 2 分,共 20 分)1、函数的返回值是通过函数体中的return语句带回的;若被调用函数被定义为 void 类型,则被调用函数不带回任何值。

2、表示逻辑关系“ a 大于等于8 或者 a 小于等于5”的C++表达式是。

C++面向对象程序设计的大作业计算两点之间的距离

C++面向对象程序设计的大作业计算两点之间的距离

武汉轻工大学面向对象程序设计期末大作业专业:电子信息科学与技术班级:电信产业1301班学号:1304100025姓名:肖梦1目的与要求学生能够比较熟练地掌握C++语言的基本语法规则;熟练掌握基本的面向对象的程序设计方法,如类的实现、创建类的实例—对象、实现类的继承等;掌握各种面向对象的程序设计技术,如继承和派生,虚继承、虚函数、抽象类、多态的实现等。

掌握在VC++平台上进行程序设计和调试的方法。

学生利用学到的面向对象的基本原理和C++语言语法以及编程技巧,通过灵活应用Visual C++6.0 集成开发环境进行应用程序和系统的开发设计,掌握可视化程序设计的基本方法和步骤,强化巩固已有编程知识,训练新的设计与编程思路,帮助熟悉程序编写,及时查究错误。

要求学生独立完成完整的用C++语言编写的应用程序,以全面掌握C++面向对象程序设计的基础知识。

2 设计内容2.1计算两点之间的距离用类实现计算两点之间的距离。

(可以定义点类(Point),再定义一个类(Distance)描述两点之间的距离,其数据成员为两个点类对象,两点之间距离的计算可设计由构造函数来实现。

)2.1.1 程序设计方案和原理根据题目要求本题可以用类的组合来实现。

我们可以用一个point类来描述平面上点的的坐标,然后为Distance类添加一个Point类的对象作为其数据成员,用来计算两个点之间的距离。

2.1.2 程序的代码实现#include<iostream.h>#include<math.h>class Point //定义Point类{public:Point(int a=0,int b=0){x=a;y=b;}int xcord(){return x;}int ycord (){return y;}private:int x,y;};class Distance //定义Distance类作为容器类{public:Distance(Point q1,Point q2);float getdist(){return dist;}private:Point p1,p2; //p1,p2是类嵌对象float dist;};Distance::Distance(Point q1,Point q2):p1(q1),p2(q2) /*Distance类的构造函数通过初始化列表向类嵌对象的构造函数赋值*/{float x=float(p1.xcord()-p2.xcord());float y=float(p1.ycord()-p2.ycord());dist=sqrt(x*x+y*y); //两点间距离}void main(){Point p(0,0),q(1,1); //创建Point类对象Distance dis(p,q); //创建Distance类对象cout<<"The distance is: "<<dis.getdist()<<endl;}Distance类为容器类,包含Point类的内嵌对象q1和q2,Distance类的构造函数通过初始化列表向Point类的构造函数传递参数。

c面向对象程序设计期末考试题及答案

c面向对象程序设计期末考试题及答案

c面向对象程序设计期末考试题及答案一、选择题(每题2分,共20分)1. 下列哪个是面向对象程序设计的特点?A. 封装B. 继承C. 多态D. 所有选项都是2. 在Java中,以下哪个关键字用于定义类?A. classB. structC. typeD. classdef3. 以下哪个是Java中不允许的类成员访问修饰符?A. publicB. protectedC. privateD. global4. 以下哪个是Java中实现多态的方式?A. 函数重载B. 函数重写C. 接口D. 抽象类5. 在Java中,哪个关键字用于声明一个方法,该方法没有返回值?A. voidB. returnC. noneD. null6. 以下哪个是Java中创建对象的语法?A. new ClassName();B. create ClassName;C. make ClassName;D. ClassName();7. 在Java中,以下哪个是正确的构造方法声明?A. public ClassName();B. public ClassName new();C. public new ClassName();D. public ClassName create();8. 以下哪个是Java中实现继承的方式?A. 使用extends关键字B. 使用implements关键字C. 使用interface关键字D. 使用new关键字9. 在Java中,以下哪个关键字用于实现接口?A. implementsB. extendsC. interfaceD. class10. 以下哪个是Java中实现封装的方式?A. 使用public关键字B. 使用private关键字C. 使用protected关键字D. 使用default关键字答案:1. D2. A3. D4. B5. A6. A7. A8. A9. A10. B二、简答题(每题10分,共20分)1. 简述面向对象程序设计中的“封装”概念及其重要性。

2022春西安电子科技大学《面向对象程序设计(C++)》大作业答案

2022春西安电子科技大学《面向对象程序设计(C++)》大作业答案

学习中心/函授站_姓名学号西安电子科技大学网络与继续教育学院2022 学年上学期《面向对象程序设计(C++)》期末考试试题(综合大作业)一、简答题(共 10 分)1.(3 分)什么是引用?它与指针有什么区别?答:(任选一个版本,不要两个版本都抄)答案版本1:引用是为已存在的变量取了一个别名,引用和引用的变量共用同一块内存空间。

1) 引用必须被初始化,指针不必。

所以不存在指向空值的引用,但是存在指向空值的指针。

2) 引用初始化以后不能被改变,指针可以改变所指的对象。

答案版本2:引用是某个变量或对象的别名。

(1)引用不是变量,它不占据内存空间,它本身没有内存地址。

引用只是被引用的变量或对象的替身。

(2)引用与指针的区别在于应用不是变量,而指针是变量。

没有引用的引用,却有指针的引用。

2.(3 分)C++提供了哪些循环语句?它们各自的特点是什么?答:C++提供了三种循环语句for、while和do-while。

while循环语句先判断是否满足循环条件,如果满足循环条件,则执行一次循环体,再判断是否执行下一次循环,否则退出循环。

do-while循环语句先执行一次循环体后再判断是继续执行循环体还是退出循环。

for循环先设置循环变量的初值,再判断是执行循环体还是退出循环体。

如果执行了循环体,再改变循环变量值后,判断是执行下一次循环体还是退出循环,依此类推。

3.(4 分)构造函数的作用是什么?在创建派生类的对象时,应按照怎样的顺序调用构造函数?答:构造函数的作用是创建对象并对其进行必要的初始化。

构造函数调用顺序:基类构造函数、子对象类构造函数(如果有)、派生类构造函数。

二、填空题(每空 2 分,共 20 分)1.C++程序中的数据可以分为两大类,;2.C++x = 5,y = 0,z = 3,则表达式 !x || y++ && z 执行表达式后y的值4.下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该类的实现。

面向对象程序设计C课后题答案

面向对象程序设计C课后题答案

第一章:面向对象程序设计概述[1_1]什么是面向对象程序设计?面向对象程序设计是一种新型的程序设计范型。

这种范型的主要特征是:程序=对象+消息。

面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。

第二:程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作。

面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。

这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。

[1_2]什么是类?什么是对象?对象与类的关系是什么?在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。

对象可以认为是:数据+操作在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。

类和对象之间的关系是抽象和具体的关系。

类是多个对象进行综合抽象的结果,一个对象是类的一个实例。

在面向对象程序设计中,总是先声明类,再由类生成对象。

类是建立对象的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。

[1_3]现实世界中的对象有哪些特征?请举例说明。

对象是现实世界中的一个实体,其具有以下一些特征:(1)每一个对象必须有一个名字以区别于其他对象。

(2)需要用属性来描述它的某些特性。

(3)有一组操作,每一个操作决定了对象的一种行为。

(4)对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。

例如:雇员刘名是一个对象对象名:刘名对象的属性:年龄:36 生日:1966.10.1 工资:2000 部门:人事部对象的操作:吃饭开车[1_4]什么是消息?消息具有什么性质?在面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息”。

C++程序设计大作业要求

C++程序设计大作业要求

C++程序设计大作业要求一、作业目的1、掌握用C++实现面向对象程序设计的基本方法。

2、熟练掌握window控制台应用程序的编写,初步掌握window可视化界面应用程序的编写方法。

3、初步完成一个应用程序的设计、编码、调试,了解程序设计过程,锻炼实际应用能力,为后续课程打下基础。

二、对象本学期“面向对象程序设计(C++)”选课班全体同学。

三、作业内容1、学生信息管理系统基本功能要求:学生信息存储在文件中,不同班级可以用不同文件,要求能添加学生记录(系、专业、年级、班级、学号、姓名、性别、宿舍、联系电话),能删除学生记录,能修改学生记录,能按不同字段(学号、姓名)查找、浏览学生信息,能对学生信息按某些字段进行排序浏览,可以从txt文本导数据,实现可视化界面。

进行所有修改后,退出系统之前提示用户修改完的数据是否存储到文件中。

基本要求:按上述要求建立一个CStudent类,类的设计参照上述要求。

使用类作为基本的结构完成上述系统2、电费收缴信息管理系统基本功能要求:水电费信息存储在文件中,每个月新建一个文件,每条记录以宿舍为单位,字段(楼号,宿舍号、上期行度(由上月文件中信息获得或直接输入)、本期行度、电费(由输入的电费单价计算得到)、缴费人(若没有交则为空)、缴费日期)。

本程序可以浏览所有情况、若有人缴费则修改缴费信息、查询未缴费信息,可导出txt文本,实现可视化界面,对电费信息按缴费日期排序。

进行所有修改后,退出系统之前将内存中数据存储到文件中。

基本要求:按上述要求建立一个CElefee类,类的设计参照上述要求。

使用类作为基本的结构完成上述系统3、图书信息管理系统基本功能要求:图书信息存储在文件中,每种书库(流通书库、阅览室、保留书库)新建一个文件,每条记录以图书为单位,字段(图书号、书名、出版社、ISBN、著者、出版日期、简介、共有存书数、现有存书数)。

本程序可以浏览所有图书,按书名、著者、出版日期模糊查询,按图书号、ISBN、出版社精确查询,查询结果要注明哪个书库哪种图书及图书的详细信息。

《面向对象程序设计C》课程大作业_1-1

《面向对象程序设计C》课程大作业_1-1
3.在date类中定义成员函数,用于处理月、日的进位的改变问题,特别注意不同月份天数的问题,判断闰年问题。
4.在date类中重载+或-,++或--运算符.设计一个双计时器界面,提供人工设定起始日期,人工加、减日期操作,测试date类中各成员函数是否能正确运行,并给出测试结果的运行截图。
15分
5分
5分
5分
20分
扣5分
成绩评定
基本1
基本2
基本3
基本4
基本5
基本6
提高1
提高2
报告
延期提交
合计
标准分数
10分
5分
15分
20分
15分
5分
5分
5分
20分
扣5分
100分
实际完成情况
教师签名:
2020年月日
报告正文
【注】:
(1)请根据“基本要求”和“提高要求”中列出的项目撰写对应的内容。
(2)请将完整的源码作为附录放在报告正文的最后。
6.对本大作业进行总结(存在的不足、问题、经验等)。
二、提高要求
1.通过继承方式设计出时间类(类名为DateTime)(包含年、月、日、时、分、秒),给出类DateTime的定义和实现,描述设计思路。
2.给出设完整的日历表类(类名为CDate)设计,描述设计思路。
三、其他要求
1.运用课堂所学的知识,按题目的要求独立完成大作业及报告。
2.被认定为抄袭或被抄袭者,本课程最终成绩作不及格处理。
3.在网络教学平台上提交:(最后截止日期为:2020年7月12日)
(1)大作业报告(word版和pdf版各一份)
(2)源代码(仅提交.h和.cpp文件)

面向对象程序设计大作业

面向对象程序设计大作业

面向对象程序设计(C++)大作业(总20页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除面向对象程序设计(C++)课程大作业设计题目:院系:计算机科学与信息工程学院专业班级: 09软件工程(2)班学号姓名: 0042 刘国松4012 吕秀锦0034 高婉婉指导教师:李源2015 年 1月目录一、成员分工 (1)二、需求分析 (2)三、总体设计 (3)四、详细设计 (8)五、系统测试 (24)六、总结 (30)七、参考文献 (31)一成员分工我们小组成员共有三名,分别是刘国松、吕秀锦、高婉婉,为了能按时圆满的完成这次VC++课程设计,我们小组进行了详细的分工,以确保设计能按时完成。

经过周密的考虑和详细的调查最终确定该俄罗斯方块游戏需要以下几个功能模块:(1)需求分析(2)界面的设计(3)背景色的选择模块(4)游戏随机选择方块模块(5)游戏预览功能模块(6)收埋功能模块(7)记分功能模块(8)鼠标控制功能模块(9)模块联结(10)系统测试经过小组成员的讨论,并根据个人的特长和具体爱好做如下具体分工:刘国松具体完成以下模块的设计与实现:(1)需求分析(2)界面的设计(3)背景色的选择模块吕秀锦具体完成以下模块的设计与实现:(1)游戏随机选择方块模块(2)游戏预览功能模块(3)收埋功能模块(4)记分功能模块高婉婉主要具体完成以下模块的设计与实现:(1)鼠标控制功能模块(2)模块联结(3)系统测试二需求分析1.系统概述该游戏软件在Windows系统为玩家提供传统俄罗斯方块游戏的基本功能,玩家可以通过键盘控制在游戏区中堆积软件随机提供的由四个小方块不同组合的7种类型不同颜色的方块,每个小方格的颜色也是随机的,并且在整个下落的过程中,其颜色也呈动态变化。

游戏过程中,每在游戏区堆满一行后,自动消除并记分。

同时消去的行数越多,那一次性所加的分数也就越多。

C++大作业说明

C++大作业说明

《面向对象程序设计》大作业的说明一、3个示例(相应的cpp文件和h文件具有完整的源代码)1.以下程序涉及类模板,补充顺序栈类模板成员函数的定义,利用队列实现栈的逆置。

//sq_queue_sq_stack.h#include<iostream.h>//定义循环队列模板类template <class T>class sq_queue{protected:int mm; //循环队列容量int front,rear; //队头、队尾指针T*q; //循环队列向量指针public:sq_queue(int); //构造函数,建立空循环队列int emptyqueue(); //测试队列是否下溢void enqueue(T); //入队T dequeue(); //出队};//定义顺序栈模板类template <class T>class sq_stack{private:int mm; //顺序栈容量int top; //栈顶指针T*s; //顺序栈向量指针public:sq_stack(int); //构造函数,建立空栈int emptystack(); //测试栈是否下溢void push(T); //入栈T pop(); //出栈T get(); //读栈顶元素void print(); //从栈顶到栈底输出栈中元素};//定义循环队列类模板构造函数template<class T>sq_queue<T>::sq_queue(int m){mm=m+1; //设置队列容量,考虑到循环队列少用一个存储单元q=new T[mm]; //动态分配循环队列存储空间front=rear=mm-1; //设置空队列}//定义顺序栈类模板构造函数template<class T>sq_stack<T>::sq_stack(int m){mm=m; //设置顺序栈容量s=new T[mm]; //动态分配顺序栈存储空间top=0; //设置空栈}//定义循环队列类模板成员函数template<class T>int sq_queue<T>::emptyqueue(){if(front==rear) return 1;else return 0;}template<class T>void sq_queue<T>::enqueue(T x){rear=(rear+1)%mm;q[rear]=x;}template<class T>T sq_queue<T>::dequeue(){front=(front+1)%mm;return q[front];}//定义顺序栈类模板成员函数//顺序表逆置.cpp#include "sq_queue_sq_stack.h"void main(){sq_queue<char> queue(20); //建立容量为20的队列对象sq_stack<char> stack(20); //建立容量为20的栈对象char ch;for(ch='a';ch<='f';ch++)stack.push(ch);stack.print();while(!stack.emptystack())queue.enqueue(stack.pop());while(!queue.emptyqueue())stack.push(queue.dequeue());stack.print();cout<<"按“Y”键结束";cin>>ch;}2.以下程序涉及类模板、友元函数、插入符“<<”重载函数,补充成员函数、友元函数的定义,实现将顺序表A按元素值奇、偶数拆分成两个表,A表存放奇数,B表存放偶数。

《面向对象程序设计》大作业--基于C#的一款扫雷游戏

《面向对象程序设计》大作业--基于C#的一款扫雷游戏

《面向对象程序设计》大作业项目名称基于C#的一款扫雷游戏班级组员一、开发环境开发环境:vs2010开发语言:C#二、系统功能设计1.创建项目功能实现创建项目,找图片素材2.界面设计介绍关于扫雷游戏界面的设计提出希望在对应级别(初级、中级、高级、自定义)的按钮的显示勾,以表示目前的游戏等级。

3.雷区绘制界面中雷区的绘制方法4.菜单操作有两个时候需要对它进行操作,一个是加载上次游戏设置的时候,一个是在游戏过程中进行设置的时候,设计菜单中的相关方法5.内部实现内部埋雷,放雷,标旗子,标问号的方法6.整体完善写游戏的胜利条件,自定义游戏的初始化及相关调试任务三、实现1、创建项目功能实现玩过扫雷的读者应该知道,扫雷需要用到三种图片素材——地雷、红旗、问号。

当右击一个方块的时候,会插上红旗,表示游戏者认为该方块内有地雷;再次右击该方块,会变成问号,表示不确定该方块内是否有地雷;第三次右击该方块,问号消失,恢复到初始的状态。

我们前往Iconfinder寻找合适的图标,并且通过Photoshop或者Illustrator的处理得到我们所需要的图标。

文章中含有下载地址的图标资源可以使用右键—目标另存为进行下载。

通过一定的搜索以及图片的处理,得到了下面一组素材图标,下载地址:Doubbt、Flag、Mine。

除了这些素材以外,我们还需要找一个图标,使得整个程序看上去更加正式一点,这里使用图标如下,注意程序图标的后缀为ico,下载地址:favicon接下来,我们打开Visual Studio 2013开始创建工程,界面如下:创建好的项目如下图所示。

我们需要对这个窗口的几项属性进行修改,首先通过Text属性将它的标题修改为“Minesweeper”;通过FormBorderStyle属性将它的大小设置为“FixedSingle”,即为不可调节窗口大小;通过MaximizeBox属性将它的最大化按钮设置为“False”,即最大化按钮失效;通过Name属性将它的名称修改为“Form_Main”,修改这个属性主要用于后面书写代码的方便;通过BackColor属性将它的背景修改为“White”。

c面向对象程序设计试题和答案

c面向对象程序设计试题和答案

一、填空题(每空1分,共14分)1、观看以下程序:class point{public:void show() {cout<<”point”<<endl;}};void main(){point p1;point *p;p=&p1;_______________//通过对象p1访问show函数______________//通过指针p访问show函数}2、在C++类中可以包含______________、______________和______________三种具有不同访问控制权的成员。

3、定义类时,在类头中将使用关键字_____________来表示类定义的开始。

4、如果一个类中至少有一个纯虚函数,则该类称为________________。

5、C++类的组成包括数据成员和______________,友元_____(是、不是)该类的成员函数。

6、友员函数是用关键字____________修饰的非成员函数。

7、若有:int i;int &j=i;i=10;j=i+1;则i=__________,j=__________。

8、 new的功能是____________________,delete的功能是____________________。

二、选择题(每小题1.5分,共30分)1、下列特性中不是面向对象程序设计语言所特有的是()。

(A)数据封装(B)继承(C)多态性(D)模板2、()是给变量取一个别名,它引入了变量的同意词。

(A)指针(B)引用(C)枚举(D)结构3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。

(A)share (B)public (C)private (D)protected4、关于构造函数,下列说法不正确的是()。

(A)构造函数名字和类名相同(B)构造函数在创建对象时自动执行(C)构造函数无任何函数返回类型(D)构造函数有且只有一个5、派生类可以访问其基类的()。

第1-7章C++面向对象程序设计 作业参考答案

第1-7章C++面向对象程序设计 作业参考答案
cout<<"int"<<max(a1,b1)<<endl;
cout<<"long"<<max(a2,b2)<<endl;
cout<<"double"<<max(a3,b3)<<endl;//使用相同的函数名求不同类型数据的绝对值
return 0;
}
int max(int a,int b)
{int c;
一个类的内部数据结构和其所有成员函数的定义部分称为类的实现。
2.3公用public成员和私有private成员有何区别?
【解答】
私有private成员只能被该类中的其他成员访问,而程序中的其它代码是不能直接访问这些变量的。
公用public成员既可以被该类的其他成员访问,也可以被程序中的其它代码访问。类中的公用成员对外部代码是开放的,通常情况下,程序中的其它代码通过类的公用成员函数来访问类的私有成员。
方法:面向对象程序设计中的术语“方法”对应于对象的行为(能力),即它是实现对象所具有的功能操作的代码段。在C++程序中,方法即是类中定义的成员函数,它是该类对象所能执行的操作的算法实现。
消息:在面向对象的程序中,一个对象向另一个对象发出的请求称为消息。消息是要求某个对象执行其中某个功能操作的规格说明。程序中的所有对象通过消息传递实现相互协作,完成一些特定的任务。
{ Rectangle Rect(10,15);
cout<<"Area is:"<<Rect.area()<<endl;
}

3.1解释下列名词:

《面向对象程序设计(C++)大作业报告模板

《面向对象程序设计(C++)大作业报告模板

《面向对象程序设计(C++)》课程大作业大作业名称年级专业项目成员指导教师2010 年6月1日目录1 需求分析 (1)1.1 开发背景 (1)1.2 项目目标 (1)1.3 运行环境 (1)2 程序分析 (1)2.1 技术要点 (1)2.2 项目任务书 (1)3 技术路线 (1)3.1 总体方案 (1)3.1.1 软件及开发平台 (1)3.1.2 总体方案 (1)3.2 详细设计 (2)4 工程进度 (2)5 测试报告 (2)5.1 阶段性测试 (2)5.2 总体测试 (2)6 个人小结 (2)参考文献 (2)附录程序源代码 (2)1 需求分析1.1 开发背景1.2 项目目标1.3 运行环境2 程序分析2.1 技术要点2.2 项目任务书3 技术路线3.1 总体方案3.1.1 软件及开发平台3.1.2 总体方案3.2 详细设计4 工程进度5 测试报告5.1 阶段性测试5.2 总体测试6 个人小结参考文献[1] 薛华成. 管理信息系统. 第二版. 北京: 清华大学出版社, 1993[2] R K 霍斯尼. 谷物科学与工艺学原理. 李庆龙译. 第2版. 北京: 中国食品出版社, 1989[3] 赵秀珍, 王崇文. 关于计算机学科中几个量和单位用法的建议. 见: 科技编辑学论文集.北京: 北京师范大学出版社, 1997. 125-129附录程序源代码正文文字采用宋体小四,行间距20磅。

正文所有的图表都必须在文中进行引用,图表中的字体用宋体五号,图标号在图的下方,表标号在表的上方,图标号与表标号均采用宋体五号。

图标号。

所有的图按章顺序编号,如第2章的第4个图的编号为“图2-4”,并将图的编号和名称标在图的下方(图中文字、图名称均为宋体五号字),如:图2-4 计算机与数据库表标号。

所有的表按章顺序编号,如第3章的第1个表的编号为“表3-1”,并将表的编号和名称标在表的上方(表中文字、表名称均为宋体五号字),如:所有的数字和字母都采用Times New Roman ,每段段首缩进两格。

面向对象程序设计(C++)大作业任务书

面向对象程序设计(C++)大作业任务书

《面向对象程序设计(C++)》大作业任务书一、题目每组同学(3人一组)可从下列给出的参考题目中任选一题完成,不可以重复。

(1)消费卡支付管理系统(2)驾校学员管理系统(3)网吧上网管理系统(4)超市管理系统(5)网上购物管理系统(6)校园一卡通管理系统(7)家族族谱管理系统(8)银行管理系统(9)个人财务管理系统(10)图书馆管理系统(11)学生成绩管理系统(12)药店进销存管理系统(13) 学生选课管理系统(14)高校招生管理系统(15)公交一卡通管理系统(16)食品安全管理系统(17)机场汽车出入管理系统(18)个人电话簿管理系统(19)建筑公司承包管理系统(20)餐馆营业管理系统其余题目略。

二、对象本学期“面向对象程序设计(C++)”选课班全体同学。

三、目的(1)掌握面向对象程序设计(OOP)的思想,区别传统的过程式程序设计思想,能够使用面向对象的程序设计思想解决实际问题;(2)掌握在Visual C++集成开发环境下编辑、编译、链接和运行一个C++程序的基本方法;(3)独立完成每个程序设计和编码,能够灵活运用各种调试命令修改源程序中可能出现的错误,并能根据问题进行学习、拓广、深化。

(4)学会科学地撰写总结报告,加深对所学知识的理解和掌握,答辩中考察学生的技能,并培养学生的表达和思辨能力。

四、要求(1)根据学生人数分成原则上3人(少量4人)一组,各小组选择感兴趣的题目,在课外完成查找资料、选题、拟大纲、小组讨论、研究写作等各环节;每一环节完成后,在课堂上进行小组之间的讨论、教师点评,最后确定解决问题的方案。

(2)问题规模:体现面向对象程序设计语言的特点,程序代码不少于400行;使用技术:体现OOP的抽象、封装、继承、多态等4种关键技术中的两种或多种;程序结构良好,没有明显错误;按照大作业格式,在课程结束前一周交电子稿和打印稿。

五、内容(1)系统说明书内容包括:①问题描述②类体系设计和程序流程图③各类定义的基本功能,即主要数据和函数功能描述④拟采用开发平台(Visual C++,Borland C++等)(2)大作业报告根据原有的系统设计,编码阶段的工作,整理书写实验报告,内容包括:①系统说明②实验分析与结论③收获与体会④附程序代码(3)最后提交材料:①大作业报告(打印稿和电子稿)②源程序代码(CPP文件),执行文件(EXE)六、评分本次大作业占期末考试总成绩的20%,满分20分。

面向对象程序设计大作业参考题目及要求

面向对象程序设计大作业参考题目及要求

面向对象程序设计大作业参考题目1、学生信息管理(1)问题描述学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。

试设计一学生信息管理系统,使之能提供以下功能:●系统以菜单方式工作●学生信息录入功能(学生信息用文件保存)---输入●学生信息浏览功能——输出●查询、排序功能——算法1、按学号查询2、按姓名查询●学生信息的删除与修改(可选项)(2)功能要求●界面简单明了;●有一定的容错能力,比如输入的成绩不在0~100之间,就提示不合法,要求重新输入;●最好用链表的方式实现。

(3)算法分析首先,一个学生包括这么多的属性,应该考虑定义一个结构,其次,我们应该考虑数据的存储形式:是定义一个数组来存储,还是定义一个链表呢?在这里假如我们以数组的方式来存储,当然可以,但是我们知道,假如我们定义一个数组的话,我们首先必须知道学生人数大概是多少,以便我们确定数组的大小,但是题目中没有给出,而且题目要求中有大量的删除、插入操作,所以用链表的方式比较方便。

对于菜单的实现,其实也比较简单,首先我们用printf语句把程序的功能列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后又回到菜单。

文件的读写操作大家参照书中的有关文件的章节。

2、学生综合测评系统每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。

考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。

A、学生信息处理(1) 输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。

提示:学生信息可先输入到数组中,排序后可写到文件中。

(2) 插入(修改)同学信息:提示:先输入将插入的同学信息,然后再打开源文件并建立新文件,把源文件和输入的信息合并到新文件中(保持按学号有序)若存在该同学则将新记录内容替换源内容,(3) 删除同学信息:提示:输入将删除同学号,读出该同学信息,要求对此进行确认,以决定是否删除将删除后的信息写到文件中。

C 面向对象作业三

C   面向对象作业三
}
}; Class outcircle:public circle{
Public: Outcircle(double x=0):circle(x){} Void display(){
Cout<<”外切正方形面积”<<4*r*r<<endl; Cout<<”外切正方形周长”<<8*r<<endl;
} } 定义 3 个类 A、B 和 C,其中类 B 继承于类 A,类 C 继承于类 B,其都包含函数 f(),用于 表明当前执行的是哪个类的 f()函数。 Class A{
定义一个类 B,该类包含用于输出信息的成员函数 vf(),再设计一个继承于该类的派生类 D, 也包含用于输出信息的成员函数 vf(),调用这两个函数,实现编译时的多态。 Class B {
Public: Void vf(){cout<<””<<endl;}
} Class D:public B{
Public: Void vf(){cout<<””<<endl;}
Friend complex operator *(complex c1,complex c2);
Friend complex operator /(complex c1,complex c2); Private:
Double real; Double imag;
}
Input>>c.real>>c.imag; Return input;
}
} 编写一个程序,用友元函数重载运算符的方法,使对实型的运算符+、-、*、/ 适用于复数 运算。 Class complex{

C面向对象程序设计大作业

C面向对象程序设计大作业

学号:《C++面向对象程序设计》大作业题目学院专业信息工程班级姓名王继文指导教师2015 年11 月15 日目录一大作业的目的 (1)二大作业的内容 (1)三大作业的要求与数据 (2)四大作业应完成的工作 (2)五总体设计(包含几大功能模块) (2)六详细设计(各功能模块的具体实现算法——流程图) (3)七调试分析(包含各模块的测试用例,及测试结果) (5)八总结 (18)九参考资料 (19)一大作业的目的《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。

更好地掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。

二大作业的内容(1) 初始化输入:N-参赛院系总数,M-男子竞赛项目数,W-女子竞赛项目数;(2) 各项目名次取法有如下几种:取前5名:第1名得分7,第2名得分5,第3名得分3,第4名得分2,第5名得分1;(3) 由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。

(4) 所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报表,查看参赛院系信息、获奖运动员、比赛项目信息等。

三大作业的要求与数据1、用C++语言实现系统;2、由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。

所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报表,查看参赛院系信息、获奖运动员、比赛项目信息等。

3、各项目名次取法有如下几种:取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1。

四大作业应完成的工作(1)编写算法;(2)算法测试,并有具体的测试结果和结果分析;(3)撰写大作业报告。

内容包括:1)封面扉页2)设计任务书3)目录4)总体设计方案(包括流程图)5)使用说明及运行实例(包括界面)6)成员设计内容简介7)项目源程序代码(注意注释的使用)8)指导教师评语五总体设计(包含几大功能模块)本文研究开发的运动会管理系统用于支持用于查询各个学校在运动会中的成绩。

c++课程大作业--

c++课程大作业--

面向对象程序设计大作业------计算器设计学院名称信息科学与工程学院专业班级数学类10—1班学生姓名白培培学号 201001051401 指导教师孙红梅完成时间:2012年6月27日计算器设计1.编程目的(1)编制一个多功能计算器,要求此计算器能进行加减乘除平方基本运算二进制,十进制,八进制,十六进制之间的相互转换,三角函的计算。

(2),通过设计过程,掌握面向对象程序设计的基本思路和方法;(3)通过实践掌握类与对象的概念、类的继承与多态、简单的程序控制语句等;(4)应用学过的的知识,动手解决面向对象程序设计问题;2.系统简介(1)设计出一个菜单显示出实现的功能,并附有选择提示,用户可以根据界面要求输入相应的代码或数字进入不同的运算界面,比如输入1,即可进入+,-,*,/简单运算。

(2)计算器的基本信息包括:每一层的菜单选择项。

计算操作的提示,部分操作错误的提示。

(3)能进行加减乘除平方基本运算,能进行二进制,十进制,八进制,十六进制之间的相互转换,三角函的计算。

(4)能够实现小数之间的二进制,十进制,八进制,十六进制之间相互的转换。

(5)能够计算加减乘除的简单运算。

3.编程思路(1)由于要求要求可计算加减乘除平方基本运算,二进制,十进制,八进制,十六进制之间的转换,以及三角函的计算。

所以应分别设计。

(2)加减乘除乘方二则简单运算可以直接运算。

(3)加减乘除乘方简单混合运算首先输入时,运算符以字符串的方式储存,数值用浮点型数组的方式储存。

由于不含括号,第一步就是把加减乘除运算符提出来,先算它们,把结果存到乘或除运算符的最前面的一个数组元素内。

第二步就是把加减运算符后的第一个数加或减起来就可以得到最后结果。

(4)三角函数运算。

由于在库函数中就有三角函数,所以可以直接使用,只不过参数是以弧度制传入的,要想计算角度值,只需把它转换成弧度制而已。

(5)进制转换。

二进制、八进制、十六进制向十进制转换。

他们之间的转换原理相同下面以二进制为例。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

面向对象分析/设计课程大作业银行业务处理系统13级软件学院测试班1367004029曾丹1.需求分析随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。

现今,人们的金融意识、科技意识己经有了很大的提高,在紧张忙碌的生活中,己越来越来不习惯每月奔忙于各银行营业柜台之问去排队缴各种各样的费用了;同时,各种经营单位如电信、移动、供电、煤气、自来水、证券等等一是为了提高服务质量、方便客户,二是为了减轻自己日趋繁重的工作量,纷纷委托银行为其开展代收代付业务:同时,随着我国加入世贸组织的日益临近,我国的银行业将面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理、进行银行业务再造,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。

近几年来,各商业银行加快了与社会各业的合作,利用自身的网点优势和业务特点,为其提供各种高效、快捷的代收代付业务,也就是中间代理业务,目前以与广大人民群众生活密切相关的各项缴费业务如水电费、电话费、手机费等代收业务为主,这些业务开展方式多种多样,但一般都离不开计算机的高效管理支持。

随着代理业务不断发展,业务品种越来越多,各项业务做法互有差异,这就对银行的电子化水平和相应的管理水平提出了更高的要求。

如何利用电子化的手段构建一个高效统一的、通用灵活的系统来管理各种各样的业务,是每个商业银行所要研究的课题。

支持决策系统的,需要在数据库的基础上,进行联机分析处理,每次处理的数据量大,响应时间长。

特别是银行每天要处理大量的存取款事件,做好存取款是银行工作重要的环节,然而要有效处理必须要有良好的程序和数据管理系统来建立一个良好的软件系统来实现快速、有效、准确、安全的处理银行事物。

主要用于银行的储蓄卡管理系统,它可以帮助我们有效、准确、并且高效实现的完成存取事件。

此系统操作方便效率、安全性高,只要客户开户并设定好密码就可以轻松的实现存取款。

系统实现的主要有储蓄卡开户管理、存取款管理、用户查询历史数据显示、注销等功能。

储蓄卡开户管理模块:卡号、姓名、开户金额、身份证号、地址、电话、密码、确认密码和保存组成。

(开户金额必须是数字,密码和确认密码必须一样是六位数字)*注销模块:一旦注销该卡号就不存在且余额提醒你取出。

通过该银行账户管理系统地运行,使办公人员可以轻松快捷的完成对账户管理的任务,提高账目管理效率,使银行的账目管理工作系统化、规范化、自动化。

该银行帐目管理信息系统,优点是设计过程思路清晰、模块划分简洁,设计各阶段分工明确。

经过实践证明,该划分是合理的,极大得提高了本系统的实现。

2.UML静态建模表示2.1用例图2.2类图3.UML动态建模表示3.1序列图3.2协同图3.3状态图4.UML物理架构建模表示4.1组件图4.2配置图5.系统总体框架5.1框架图5.2数据流图5.3实体关系图6.模块设计与分析储蓄卡开户管理模块:6.1 登录页面输入卡号和密码,根据用户输入的卡号和密码,到后台文件查询,若正确则登录成功,并保存卡好信息已备后用。

若卡号存在和密码不匹配或无该卡号已经注销,提示该卡号已存在或已注销,保持界面三次不变等待用户的重新输入。

6.2 主界面页面主要导航栏有:欢迎使用储蓄卡管理(存款、取款、修改密码、转账功能、注销退出)6.3 储蓄卡开户页面提供开户界面,由用户输入新储蓄卡的所有信息,将该信息保存到文件中,并将开户金额作为该卡的第一次存款记录存人文件。

6.4 存钱页面从登录界面得到卡号,并提供数据输入界面,等待用户的输入存款金额。

从后台数据库中找到该用户余额记录,修改余额,并将该存款事件的相应信息写人数据库,同时将存钱的金额显示在页面上。

6.5 取款页面从登录界面得到卡号,并提供数据输入界面,等待用户输入取款金额,如果取款金额大于该用户卡上的余额则不能取款,或者将新的余额写人文件,并将本次取款事件写入文件同时将取钱的金额显示在页面上,。

6.6 注销页面从关闭文件,状态为注销,最后关闭整个系统。

列举取款模块进行分析:void consumer::fetchmoney(){float m;char ch;do{cout<<endl<<"输入取款金额:"<<"¥>"<<endl ;cin>>m;while(m<=0){cout<<"请输入正确的数字!"<<endl;cout<<"→";cin>>m;}if(money<m){cout<<"对不起,你的余额不足!"<<endl;}else{money=money-m;cout<<endl<<"操作成功,请收好钱!"<<endl;}cout<<"是否要继续该项操作:(Y/N) "<<endl;cout<<"→";cin>>ch;while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')//选择错误时判定{cout<<"→";cin>>ch;}}while(ch=='y'||ch=='Y');}在取款页面中,输入取款金额并对取款金额与存款余额进行比较,如果取款金额小于零,请输入正确的数字;如果取款金额大于存款金额,对不起,您的余额不足;如果取款金额小于存款余额的话就执行,并保存记录。

7.类的设计与分析7.1 consumer类class consumer:public YH//用户类,继承银行类的属性{public:friend class YH;consumer(int id,string Name,int Number,double IN,string Company,string Address,string PassWord,float m){ID=id;name=Name;number=Number;in=IN;company=Company;address=Addres s;money=m;passwd=PassWord;}consumer(){ID=0;name='0';number=0;in=0;company='0';address='0';money=0;p asswd='0';}int get_id(){return ID;}void savemoney();// 取钱string get_passwd(){return passwd;}// 取得密码void display();void fetchmoney(); //取钱void change_passwd();void add_money(float);//计算余额void dec_money(float);//计算余额float get_money();//卡卡转帐private:int ID; //开户帐号string passwd; // 用户密码string name; // 用户姓名float money; //开户金额int number;string company;string address;double in;};名称属性说明ID 数据成员用户账户数据name 数据成员用户姓名money 数据成员用户首次金额in 数据成员用户身份证号address 数据成员用户地址number 数据成员用户电话Passwd 数据成员用户密码savemoney() 成员方法存钱fetchmoney () 成员方法取钱change_passwd() 成员方法修改密码get_money() 成员方法卡卡转账7.2 YH 类class YH //银行类{public:void set_account();//银行开户功能void del_account(); //注销账户功能void transfer(int); //转账功能void enter_account(); //进入用户个人信息功能oid addmoney(int,float);//存款功能void exitYH();// 退出系统void functionshow();void save();void load();// 功能界面protected:consumer *account[20];static int acnum;//账户数名称属性说明acnum 数据成员账户数set_account () 成员方法开户功能del_account () 成员方法注销账户功能transfer () 成员方法转账功能functionshow() 成员方法主界面显示功能addmoney() 成员方法存钱功能exitYH() 成员方法退出系统功能8.程序源码consumer.cpp#include<iostream>#include <string>#include<fstream>using namespace std;class consumer;class YH //银行类{public:void set_account();//银行开户功能void del_account(); //注销账户功能void transfer(int); //转账功能void enter_account(); //进入用户个人信息功能void addmoney(int,float);//存款功能void exitYH();// 退出系统void functionshow();void save();void load();// 功能界面protected:consumer *account[20];static int acnum;//账户数};class consumer:public YH//用户类,继承银行类的属性{public:friend class YH;consumer(int id,string Name,int Number,double IN,string Company,string Address,string PassWord,float m){ID=id;name=Name;number=Number;in=IN;company=Company;address=Address; money=m;passwd=PassWord;}consumer(){ID=0;name='0';number=0;in=0;company='0';address='0';money =0;passwd='0';}int get_id(){return ID;}void savemoney();// 取钱string get_passwd(){return passwd;}// 取得密码void display();void fetchmoney(); //取钱void change_passwd();void add_money(float);//计算余额void dec_money(float);//计算余额float get_money();//卡卡转帐private:int ID; //开户帐号string passwd; // 用户密码string name; // 用户姓名float money; //开户金额int number;string company;string address;double in;};void YH::save(){ofstream ofile("bankdat.dat",ios::out);//以输出方式打开文件ofstream outfile("bankdat.dat",ios::out);//以输出方式打开文件bankdat.dat接收从内存输出的数据int n=0;outfile<<acnum<<" ";for(n=0;n<acnum;n++){outfile<<account[n]->ID<<" ";//把信息写入磁盘文件bankdat.datoutfile<<account[n]->money<<" ";outfile<<account[n]->name<<" ";outfile<<account[n]->passwd<<" ";outfile<<account[n]->number<<" ";outfile<<account[n]->company<<" ";outfile<<account[n]->address<<" ";outfile<<account[n]->in<<" ";}outfile.close();}/*读入用户信息功能实现*/void YH::load(){ifstream infile("bankdat.dat",ios::in);//以输入方式打开文件if(!infile){cerr<<"读取错误,无资料中!"<<endl;return;}int n=0;int id,m;string nam,passw;int number;string company;string address;double in; infile>>acnum;for(n=0;n<acnum;n++)//全部读入{infile>>id;//从磁盘文件bankdat.dat读入信息infile>>m;infile>>nam;infile>>passw;infile>>company;infile>>number;infile>>address;infile>>in;account[n]->passwd;consumer * acc = new consumer(id,nam,number,in,company,address,passw,m); //每读入一个n开辟一段内存account[n] = acc; //赋值首地址}infile.close();cout<<"系统正在正常运行,您可以办理以下业务:"<<endl;}/*转账功能实现*/void YH::transfer(int x){int id;cout<<"请输入帐号:";cin>>id;int flag = 1;int i = 0;while((i<acnum)&&(flag)) //查找要转入的账号{if(id==account[i]->get_id()) flag = 0; else i++;}if(flag){cout<<"帐号不存在!"<<endl<<endl;return ;}float b;cout<<endl<<"请输入你要转帐的金额:";cin>>b;while(b<=0){cout<<"请输入正确的数字!"<<endl;cout<<"→";cin>>b;}if(account[x]->get_money()<b) //调用友元类consumer的公有成员函数cout<<"对不起,金额不够!!"<<endl;else {account[x]->dec_money(b);account[i]->add_money(b);} cout<<"转账成功!!"<<endl;return;}/*账户金额计算*/void consumer::add_money(float x){money=x+money;}void consumer::dec_money(float x){money=money-x;}void YH::addmoney(int x,float y){account[x]->money=account[x]->money-y;}float consumer::get_money(){return money;}void main(){YH yh;yh.functionshow();}/*主界面显示*/void YH::functionshow(){int n;do{system("cls");load();cout<<"____________________________________________________________" <<endl;cout<<"| |"<<endl;cout<<"| 1:开户|"<<endl;cout<<"| |"<<endl;cout<<"| 2:账户登录|"<<endl;cout<<"| |"<<endl;cout<<"| 3:账户注销|"<<endl;cout<<"| |"<<endl;cout<<"| 4:退出系统|"<<endl;cout<<"| |"<<endl;cout<<"____________________________________________________________" <<endl;cout<<endl<<"请您输入你要进行的相应操作前的数字:"<<endl;cout<<"→";cin>>n;while(n<1||n>4){cout<<"您输入的数字有误!请重新输入..."<<endl;cout<<"→";cin>>n;}switch(n){case 1: set_account();//开户break;case 2:enter_account();//登录break;case 3: del_account();//注销break;case 4: exitYH();//退出break;}cin.get();//输入流类istream的成员函数}while(true);}void YH::enter_account(){int id;cout<<"请输入帐号:";cin>>id;int flag = 1;int i = 0; //__page_break__while((i<acnum)&&(flag)) //循环查找{if(id==account[i]->get_id()) flag = 0; else i++;}if(flag){cout<<"帐号不存在!"<<endl;return;}cout<<"请输入密码:";string passw;cin>>passw;if(passw!=account[i]->get_passwd()) return;//返回到登录界面account[i]->display();cin.get();cin.get();int n;do{system("cls");cout<<"请选择下列操作:"<<endl;cout<<"__________________________________________________"<<endl;cout<<"| |"<<endl; cout<<"| 1.查看账户信息 |"<<endl; cout<<"| |"<<endl; cout<<"| 2.取款 |"<<endl; cout<<"| |"<<endl; cout<<"| 3.存款 |"<<endl; cout<<"| |"<<endl; cout<<"| 4.修改密码 |"<<endl; cout<<"| |"<<endl; cout<<"| 5.转账 |"<<endl; cout<<"| |"<<endl; cout<<"| 6.返回 |"<<endl; cout<<"| |"<<endl; cout<<"__________________________________________________"<<endl; cout<<"→";cin>>n;switch(n){case 1: account[i]->display();break;case 2: account[i]->fetchmoney();save();break;//从2-5功能,每执行一次调用一次save函数,重新写入数据case 3:account[i]->savemoney();save();break;case 4:account[i]->change_passwd();save();break;case 5:transfer(i);save();break;case 6:return;}cin.get();cin.get();}while(1);}void YH::set_account(){int id;string nam;string passw;float m;string company;string address;int number;double in;cout<<"请输入开户账号:"<<endl;cin>>id;cout<<"请输入开户人姓名:"<<endl;cin>>nam;cout<<"请输入开户密码:"<<endl;cin>>passw;cout<<"请输入存入金额:"<<endl;cin>>m;cout<<"请输入开户人电话:"<<endl;cin>>number;cout<<"请输入开户人公司:"<<endl;cin>>company;cout<<"请输入开户人地址:"<<endl;cin>>address;cout<<"请输入开户人身份证号码:"<<endl;cin>>in;while(m<=0){cout<<"请输入正确的数字!"<<endl;cin>>m;}consumer * acc = newconsumer(id,nam,number,in,company,address,passw,m);account[acnum] = acc;cout<<"您好,你已开户成功,请牢记您的账号和密码,注意账号安全!"<<endl<<endl;acnum++;save();cin.get();return;}void YH::del_account(){int id;cout<<endl<<"请输入您要注销的帐户号:";cin>>id;int flag = 1;int i = 0;while((i<acnum)&&(flag)) //循环查找{if(id == account[i]->get_id()){flag = 0;}else{i++;}}if(flag){cout<<"对不起,你输入的该帐号不存在或有误,请重新输入!"<<endl; return; //返回到登陆界面}for(int j=i;j<acnum;j++) //所有被删号后的数据重新存储{account[j] = account[j+1];}account[acnum-1]=NULL;acnum--; //账号总数自减一次cout<<"您好,您的账号已成功注销!"<<endl<<endl;save();cin.get();return;}void consumer::change_passwd(){string pwd,repwd;cout<<"请输入新密码:";cin>>pwd;cout<<"请确认新密码:";cin>>repwd;if(pwd!=repwd)cout<<"对不起,您输入的两次密码不一致,按输入键返回上一层菜单!"<<endl; elsecout<<"您好,您的密码已修改成功,请牢记并注意账号安全!"<<endl;cin.get();}void consumer::fetchmoney(){float m;char ch;do{cout<<endl<<"请输入您的取款金额:"<<"¥>"<<endl ;cin>>m;while(m<=0){cout<<"请您输入正确的金额!"<<endl;cout<<"→";cin>>m;}if(money<m){cout<<"对不起,您的余额不足!"<<endl;}else{money=money-m;cout<<endl<<"操作成功,请拿好您的钱!"<<endl;}cout<<"是否要继续该项操作:(Y/N) "<<endl;cout<<"→";cin>>ch;while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')//选择错误时判定{cout<<"→";cin>>ch;}}while(ch=='y'||ch=='Y');}void consumer::savemoney()//存钱函数功能实现{float c;char ch;do{cout<<endl<<"请输入要存入的金额:"<<"¥>"<<endl ;cin>>c;while(c<=0){cout<<"对不起您输入的金额错误,请重新输入!"<<endl;cout<<"→";cin>>c;}money=money+c;cout<<"操作已成功!"<<endl;cout<<"是否要继续该项操作:(Y/N) "<<endl;cout<<"→";cin>>ch;while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y'){cout<<"→";cin>>ch;}}while(ch=='y'||ch=='Y');}int YH::acnum=0;void consumer::display()//用户信息界面{system("cls");cout<<"_____________________________________________"<<endl; cout<<"| |"<<endl; cout<<"| 用户姓名:"<<name<<endl;cout<<"| |"<<endl; cout<<"| 帐号:"<<ID<<endl;cout<<"| |"<<endl; cout<<"| 余额:"<<money<<endl;cout<<"| |"<<endl; cout<<"| 返回(Enter键) |"<<endl; cout<<"| |"<<endl; cout<<"_____________________________________________"<<endl; cout<<"→";}void YH::exitYH()//退出系统{cout<<endl<<"感谢您对XX银行的支持,欢迎下次光临!"<<endl;exit(0);}9.程序截图。

相关文档
最新文档