面向对象程序设计实验报告
- 格式:doc
- 大小:284.00 KB
- 文档页数:19
python掌握面向对象的程序设计实验报告Python掌握面向对象的程序设计实验报告摘要:本实验报告旨在介绍Python编程语言中面向对象的程序设计。
首先,我们将讨论什么是面向对象编程以及它的优点。
然后,我们将介绍类和对象的概念,并展示如何创建和使用它们。
接下来,我们将讨论继承、多态和封装等面向对象编程的重要概念,并提供相关示例。
最后,我们将总结本次实验的主要内容。
一、介绍面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将数据和操作数据的方法封装到一个独立的实体中,这个实体称为对象。
对象可以通过定义特定类型的类来创建。
Python是一种支持面向对象编程的高级编程语言,它提供了丰富的面向对象编程机制,使得程序的开发和维护更加高效和可靠。
面向对象编程的优点:1. 代码复用:面向对象编程允许我们创建可重用的代码模块,从而提高了代码的复用性和可维护性。
我们可以通过创建类和对象来定义通用的行为和属性,然后在不同的项目中使用它们。
2. 模块化设计:通过将大型程序分解为小型的、独立的对象,我们可以更好地组织和管理代码。
这种模块化的设计使得程序可以被分割为更小的部分进行开发,并且每个部分可以独立测试和调试。
3. 可扩展性:面向对象编程提供了一种灵活的方式来扩展和修改代码。
我们可以通过继承和多态等机制来添加新的功能或修改现有的功能,而不需要修改原始代码。
4. 可理解性:面向对象编程使得代码更易于理解和阅读。
由于对象的行为和属性都被封装在类中,我们可以通过查看类的定义来理解对象的行为和属性。
二、类和对象在Python中,类是一种用于定义对象的模板。
类定义了对象的属性和行为。
对象是类的实例,它具有类所定义的属性和行为。
1. 类的定义在Python中,我们使用class关键字来定义类。
类的定义可以包含属性和方法。
属性是对象的状态,方法是对象的行为。
示例代码:pythonclass Person:def __init__(self, name, age): # 初始化方法 = nameself.age = agedef say_hello(self): # 方法print("Hello, my name is {} and I am {} yearsold.".format(, self.age))在上面的示例中,我们定义了一个名为Person的类。
《面向对象程序设计》实验报告一.实验目的与要求1.学习类与对象的定义。
2.掌握类与对象的使用方法。
3.学习类与对象的声明。
4.学习数据成员与成员函数的访问方式。
5.理解构造函数和析构函数的定义与执行过程。
6.学会构造函数的重载方法。
二.实验准备与内容1.可以定义出一个类,并且在程序中创建一个该类的对象。
2.实现类的定义,借助VC++的方法建立一个新的类。
3.体现出构造函数和析构函数的调用。
4.重载构造函数。
5.为了提高对相关知识的综合应用能力,编写一个较为复杂的类和对象的应用程序。
三.实验设计(分析)1.建立一个空的工程chap2。
2.在工程chap2中,建立一个源程序文件,在此文件中建立一个新的类。
将新建的类命名为Rect。
//--------------------------------------------------------------------------------------------------class Rect{public:int Area_int();double Area_double();Rect(double1, doublew);Rect(int 1,int w);virtual ~Rect();private:int nLength;int nWidth;double dLength;double dWidth;};//--------------------------------------------------------------------------------------------------3.向Rect类中添加数据成员及成员函数,并完善成员函数功能。
如设计一个Area_int()函数,计算机边长为整形的长方形的面积;设计一个Area_double()函数,计算机边长为double的长方形的面积。
4.重载构造函数。
一种构造函数用整形变量记录长方形的长和宽,另一种构造函数用double型记录。
面向对象程序设计实验报告实验一类的定义与使用实验目的:熟悉面向对象程序设计的基本概念和语法,掌握类的定义与使用的方法。
实验器材:计算机、编程软件实验过程:1. 类的定义类是面向对象程序设计的基本单元,是一种自定义数据类型。
在本次实验中,我们以学生(Student)类为例进行讲解。
在定义一个类时,一般需要明确以下几个方面的内容:- 类的名称:使用合适的命名规范,如首字母大写的驼峰式命名法;- 类的属性:表示类的特征或状态,用变量来表示;- 类的方法:表示类的行为或功能,用函数来表示。
示例代码:```pythonclass Student:# 定义类的属性name = ""age = 0gender = ""# 定义类的方法def study(self):print( + "正在学习")```2. 类的使用定义好类后,我们可以创建该类的实例,即对象,通过对象来调用类的属性和方法。
示例代码:```python# 创建对象s1 = Student()# 调用对象的属性 = "张三"s1.age = 18s1.gender = "男"# 调用对象的方法s1.study() # 输出:张三正在学习```在类的使用过程中,还可以通过构造函数(__init__方法)来初始化对象的属性,以及通过访问控制修饰符(public、private、protected)来控制属性或方法的访问权限。
实验总结:通过本次实验,我们学习了面向对象程序设计的基本概念和语法,掌握了类的定义与使用的方法。
在程序设计中,合理地定义和使用类,可以提高代码的可读性、可维护性和可重用性。
在今后的学习和实践中,我们应该注重对面向对象的思考和运用,努力提升自己的编程能力。
一、实验目的1. 理解面向对象设计的基本概念和原则;2. 掌握面向对象设计的常用方法和技术;3. 学会运用面向对象设计方法进行软件系统设计和实现;4. 提高软件设计能力和编程能力。
二、实验环境1. 操作系统:Windows 102. 开发工具:Eclipse IDE3. 编程语言:Java三、实验内容本次实验主要围绕面向对象设计进行,包括以下内容:1. 面向对象设计的基本概念和原则;2. 类的设计与实现;3. 继承与多态的应用;4. 设计模式的应用;5. 软件系统设计与实现。
四、实验步骤1. 面向对象设计的基本概念和原则(1)面向对象设计的基本概念:面向对象设计是一种软件开发方法,它将问题域中的对象作为设计的基本单元,以对象为核心进行系统设计。
(2)面向对象设计的基本原则:封装、继承、多态。
2. 类的设计与实现(1)定义类:根据问题域中的对象,定义相应的类。
(2)实现类:为类添加属性和方法,实现类的功能。
3. 继承与多态的应用(1)继承:通过继承,可以复用已有的类的设计和实现,提高代码的复用性。
(2)多态:多态是面向对象设计的一个重要特性,它可以实现代码的灵活性和扩展性。
4. 设计模式的应用(1)单例模式:确保一个类只有一个实例,并提供一个全局访问点。
(2)工厂模式:用于创建对象,而不直接指定对象的具体类型。
(3)观察者模式:当一个对象的状态发生变化时,其他依赖于该对象的对象会得到通知。
5. 软件系统设计与实现(1)需求分析:分析问题域,确定软件系统的功能和性能要求。
(2)系统设计:根据需求分析,设计软件系统的架构和模块。
(3)编码实现:根据系统设计,实现软件系统的功能。
(4)测试与调试:对软件系统进行测试,确保其功能符合预期。
五、实验结果与分析1. 实验结果本次实验完成了面向对象设计的基本概念、类的设计与实现、继承与多态的应用、设计模式的应用以及软件系统设计与实现等内容。
通过实验,掌握了面向对象设计的方法和技术,提高了软件设计能力和编程能力。
《C++面向对象程序设计》实验内容实验1 C++程序设计初步1.实验目的(1)了解在C++编译系统(Visual C++6.0)上如何编辑、编译、连接和运行一个C++程序。
(2)通过运行简单的C++程序, 初步了解C++源程序的结构和特点。
(3)掌握简单C++程序的编写和调试方法。
(4)掌握重载函数的定义方法。
(5)能正确使用引用型变量。
2.实验内容和步骤(1)在Visual C++环境下编译和运行C++程序①先进入Visual C++6.0环境。
②在自己指定的子目录中建立一个名为test.cpp的新文件。
③从键盘输入以下程序int main(){int a,b;c=a+b;cout>> “a+b=”>>a+b;}选择Build→Compile test.cpp命令, 对此源程序进行编译。
观察和分析编译信息。
⑤根据编译信息指出的错误, 修改程序。
再进行编译, 如果还有错, 再重复此过程, 直到编译不出错为止。
⑥选择Build→Build test.exe命令, 对程序进行连接, 如果不出错, 就会生成可执行程序test.exe。
⑦选择Build→Execute test.exe命令, 执行可执行程序test.exe。
观察屏幕的变化。
在输出窗口应显示程序运行结果。
⑧分析结果是否正确, 如果不正确或认为输出格式不理想, 可以修改程序, 然后重新执行以上④和⑧步骤。
改过后的程序:#include<iostream>using namespace std;int add(int x,int y){int z;z=x+y;return(z);}int main(){int a,b,c;cin>>a>>b;c=add(a,b);cout<<"a+b="<<c<<endl;return 0;}实验2 C++对C的扩充(2)编一个程序, 用来求2个或3个正整数中的最大数。
上海理工大学光电信息与计算机工程学院《面向对象程序设计实验》实验报告专业姓名学号年级指导教师成绩:教师签字:目录实验一面向对象开发环境C++基础实验二C++语言进阶实验三面向对象高级特性实验成绩细化表实验一面向对象开发环境基础一、实验目的(1)了解C++的开发环境,学会独立使用该系统。
(2)了解在该系统上如何编辑、编译、连接和运行一个C++程序。
(3)通过运行简单的C++程序,初步了解C++源程序的基本组成。
.(4)掌握C++中基本数据类型。
(5)掌握C++中各种运算符的作用、优先级和结合性,能熟练运用各种表达式。
(6)掌握不同数据类型的输入输出。
(7)掌握简单的语法错误的查找和改正方法。
二、实验设备PC机,操作系统Windows 8,开发环境Visual Studio 2010三、实验原理配套教材实验一、实验二四、实验源程序//2-35#include <iostream>#include <iomanip>using namespace std;int main(){int x,y,ans;for(x=1;x<10;x++){for(y=1;y<10;y++){ans=x*y;cout<<x<<"*"<<y<<"="<<setw(2)<<ans<<"";}cout<<endl;}system("pause");return 0;}五、自评良好实验二C++语言进阶一、实验目的(1)熟练掌握if语句、switch语句、for语句、while及do-while语句(2)掌握转移控制语句(3)理解编译预处理(4)掌握函数的定义和调用(5)掌握数组的定义和使用(6)掌握结构和枚举类型的定义方法和使用(7)掌握指针的使用方法及应用(8)掌握指针与数组(9)掌握指针传递和引用传递二、实验设备PC机,操作系统Windows 8,开发环境Visual Studio 2010三、实验原理配套教材实验三、实验五、实验六四、实验源程序//3-2#include<iostream>#include<stdlib.h>using namespace std;int Max1(int a,int b){if(a>b)return(a);elsereturn(b);}int Max1(int a, int b,int c){if(a>b){if(a>c)return(a);}else{if(b>c)return(b);elsereturn(c);}}double Max1(double x,double y){if(x>y)return(x);elsereturn(y);}double Max1(double x,double y,double z) {if(x>y){if(x>z)return(x);}else{if(y>z)return(y);elsereturn(z);}}int main(){int a,b,c;double x,y,z;cout<<"请输入两个整数:";cin>>a>>b;cout<<"最大值为:"<<Max1(a,b)<<endl; cout<<"请输入三个整数:";cin>>a>>b>>c;cout<<"最大值为:"<<Max1(a,b,c)<<endl; cout<<"请输入两个双精度数:";cin>>x>>y;cout<<"最大值为:"<<Max1(x,y)<<endl; cout<<"请输入三个双精度数:";cin>>x>>y>>z;cout<<"最大值为:"<<Max1(x,y,z)<<endl;system("pause");return 0;}//5-14#include<iostream>usingnamespace std;class Boat;class Car{private:int weight;public:Car(int j){ weight=j;}friendint getTotalWeight(Car &aCar,Boat &aBoat);};class Boat{private:int weight;public:Boat(int j){ weight=j;}friendint getTotalWeight(Car &aCar,Boat &aBoat);};int getTotalWeight(Car &aCar,Boat &aBoat){ return aCar.weight+aBoat.weight;}int main(){Car c(10);Boat b(7);cout<<"The total weight is : "<<getTotalWeight(c,b)<<endl; system("pause");return 0;}//6-6#include<iostream>#include<string>usingnamespace std;class Employee{private:char name[30];char stree[30];char city[30];char zip[6];public:Employee();void change_name();void display();};Employee::Employee(){strcpy(name,"lianmeng");strcpy(stree,"piamganjie3hao");strcpy(city,"shanghai");strcpy(zip,"900000");}void Employee::change_name(){cout<<"Enter a name:";cin>>name;}void Employee::display(){cout<<"\n"<<name<<"\t"<<stree<<"\t"<<city<<"\t"<<zip<<"\t"; }int main(){int i;Employee *p=new Employee[5];for(i=0;i<5;i++){p[i].display();}for(i=0;i<5;i++){cout<<"\nnumber"<<i+1<<" : "<<endl;p[i].change_name();}for(i=0;i<5;i++){ p[i].display(); }delete p;system("pause");return 0;}五、自评良好实验三面向对象高级特性一、实验目的(1)掌握类与对象的定义(2)掌握对象成员的访问、构造函数和析构函数(3)理解基类和派生类(4)掌握单一继承和多重继承的定义和使用方法(5)掌握运算符重载程序的编写(6)掌握虚函数的编写和使用(7)掌握流类库与输入/输出;异常处理二、实验设备PC机,操作系统Windows 8,开发环境Visual Studio 2010 三、实验原理配套教材实验四、七、八、十一四、实验源程序//4-8#include<iostream>usingnamespace std;class Dog{public:Dog(int nage=0,int nweight=0){age=nage;weight=nweight;}Dog(Dog &d);inlinevoid showstatus();void setstatus();private:int age,weight;};Dog::Dog(Dog &d){age=d.age;weight=d.weight;}inlinevoid Dog::showstatus(){cout<<"His status is:"<<endl<<"age:"<<age<<"\tweight:"<<weight<<"kg"<<endl; }void Dog::setstatus(){int na,nw;cout<<"Please set age and weight:";cin>>na>>nw;age=na;weight=nw;}int main(){Dog Zangming(19,60);cout<<"Here is a dong Zangming!!"<<endl;Zangming.showstatus();cout<<"Please reset his status!"<<endl;Zangming.setstatus();cout<<"\n\nNow:"<<endl;Zangming.showstatus();system("pause");}//7-6#include<iostream>usingnamespace std;class Mammal{public:Mammal(int a,int w):age(a),weight(w){cout<<"Mammal Constructor called..."<<endl;}~Mammal(){cout<<"Mammal Destructor called..."<<endl;}private:int age;int weight;};class Dog:public Mammal{public:Dog(int a,int w):Mammal(a,w){cout<<"Dog Constructor called..."<<endl;}~Dog(){cout<<"Dog Destructor called..."<<endl;}};int main(){{cout<<"Constructing a Mammal..."<<endl;Mammal mammal(8,12);cout<<endl<<"Constructing a Dog..."<<endl;Dog dog(3,9);cout<<endl<<"Destructing......"<<endl;}system("pause");return 0;}//8-5#include<iostream>usingnamespace std;class Mammal{public:Mammal(){cout<<"Mammal Constructor..."<<endl;} ~Mammal(){cout<<"Mammal Destructor..."<<endl;} virtualvoid speak()=0;};class Dog:public Mammal{public:Dog(){cout<<"Dog Constructor..."<<endl;}~Dog(){cout<<"Dog Destructor..."<<endl;}virtualvoid speak();};void Dog::speak(){cout<<"Dog's sound...."<<endl;}int main(){Dog *pdog=new Dog;pdog->speak();delete pdog;system("pause");return 0;}//11-5#include<fstream>#include<iostream>usingnamespace std;int main(){ofstream file1("test.txt",ios::app);file1<<"已成功添加字符!";file1.close();char ch;ifstream file2("test.txt");while(file2.get(ch))cout<<ch;file2.close();system("pause");return 0;}五、自评良好实验成绩细化表。
《面向对象程序设计》实习报告班级:学号:姓名:指导教师:实习时间:一.实习目的1. 学习怎样启动和退出VB,熟悉VB的工作环境2.掌握基本控件的重要属性、事件;3.熟练掌握在窗体上建立上述控件的操作方法;4.熟练掌握事件过程代码的编写;5.掌握建立基于图形界面的应用程序的过程6. 学习用属性窗口设置对象属性及用代码设置对象属性的方法。
7. 学习如何用对象(窗体和控件)建立界面及在代码编辑器中输入程序代码的基本操作。
8 .基本掌握用VB开发应用程序的一般步骤。
二.程序设计实验1 基本算法练习1.编写程序求“自己学号后3位到500”以内的所有素数及自然数对。
2.编写程序“计算最大公约数和最小公倍数”实验:计算3个数的最大公约数和最小公倍数,并以最小公倍数作为总金额,计算人民币各种票额的张数3.编写程序“歌德巴赫猜想及守形数”4.编写程序“百钱百鸡问题”实验:编写程序解决百钱买百鸡问题:公鸡5元/只,母鸡3元/只,小鸡一元买3只,用100元买100只鸡,问有哪些购买方案?实验2 常用统计练习1.成绩统计实验:利用文本框作为数据的输入和输出,产生数学、语文、英语、计算机等4门课程的成绩2.字符统计实验:随机产生200个“32到自己学号后3位”且小于128的随机数,将其转换成相应字符,形成一段统计字符。
统计字符中各个字母、各数字、空格、其它字符的个数。
实验3 常用排序方法1. 选择法排序实验:随机产生10个“学号后3位到500之间”的数,用选择法进行递增序。
2.冒泡法排序实验: 随机产生10个“50到学号后3位之间”的数,然后用冒泡法按递增的顺序进行排序。
3.二维数组排序实验:随机产生“10到学号后3位之间”的数,形成一个4*5 的二维数组,按升序排列。
4.从有序数组中删除一个元素实验要求:随机产生“1到学号后3位之间”的10个数,然后产生1-10间的随机数,确定删除元素,最后得出删除后的结果实验4 加密解密与数制转换1.数据加密与解密根据产生的后移位数,将输入的字符进行加密和解密。
一、实验目的1. 理解面向对象设计的核心概念,如封装、继承、多态等。
2. 掌握面向对象设计的方法和步骤。
3. 通过实际案例分析,提高面向对象设计的实践能力。
二、实验环境1. 操作系统:Windows 102. 编程语言:Java3. 开发工具:Eclipse三、实验内容1. 面向对象设计的基本概念2. 类与对象3. 继承与多态4. 实际案例分析四、实验步骤1. 面向对象设计的基本概念(1)定义:面向对象设计(Object-Oriented Design,OOD)是一种以对象为中心的设计方法,通过将现实世界中的实体抽象为对象,以对象及其相互关系来描述系统的结构和行为。
(2)核心概念:a. 封装:将对象的属性(数据)和行为(方法)封装在一起,对外提供接口。
b. 继承:允许一个类继承另一个类的属性和方法,实现代码复用。
c. 多态:允许不同类的对象对同一消息作出响应,实现行为的变化。
2. 类与对象(1)定义:类是具有相同属性和行为的对象的抽象,对象是类的实例。
(2)步骤:a. 定义类:创建一个新的类,定义属性(成员变量)和方法(成员函数)。
b. 创建对象:使用new关键字创建类的实例。
c. 访问对象属性和方法:使用点号(.)操作符访问对象的属性和方法。
3. 继承与多态(1)继承:定义一个新的类(子类)继承自另一个类(父类),子类继承父类的属性和方法。
(2)多态:允许不同类的对象对同一消息作出响应,实现行为的变化。
(3)步骤:a. 定义父类:创建一个父类,定义属性和方法。
b. 定义子类:创建一个子类,继承自父类,并添加新的属性和方法。
c. 实现多态:使用子类对象调用父类方法,实现不同对象对同一消息的不同响应。
4. 实际案例分析(1)案例分析:设计一个简单的图书管理系统。
(2)设计步骤:a. 分析需求:图书管理系统需要管理图书的增删改查等功能。
b. 设计类:设计图书类(Book)、借阅者类(Borrower)和管理员类(Admin)。
面向对象程序设计(C++)实验报告姓名:刘九州学院:数学与计算机学院班级:10级计算机大类三班学号:100511314实验5 单继承一、实验目的1.掌握派生的类别与方式;2.了解派生类中如何使用基类的成员、基类成员在派生类中的访问控制;3. 掌握继承中构造函数和析构函数的调用过程。
二、实验内容及步骤1.给出一个Document类,从Document派生出Book类,增加PageCount变量。
在主函数中进行测试,创建Book类对象并进行初始化,输出书名和页数。
2.设计一个单基继承的类层次程序,利用Person类派生出Student类,增加属性xh(学号),Person类中至少有姓名、年龄等数据成员,成员函数中构造函数对其初始化,析构函数释放相应存储单元,输出函数输出其数据成员的值,其它成员函数根据需要添加,在主函数中进行测试。
3.设计一个人员类person和一个日期类date,由人员类派生出学生类student和教师类professor,学生类和教师类的数据成员birthday为日期类。
在主函数中进行测试。
三、实验源程序和运行结果实验(一)源程序:#include<iostream>#include<string>using namespace std;class Document{public:Document(){};~Document();Document(char*name);char *Name;void PrintNameOf();};Document::Document(char*name){Name=new char[strlen(name+1)];strcpy(Name,name);}Document::~Document(){delete []Name;}void Document::PrintNameOf(){cout<<Name<<endl;}class Book:public Document{public:int PageCount;Book(char *a,int b):Document(a){PageCount=b;}};void main(){char BookName[20];int n;cout<<"请输入书名:"<<endl;cin>>BookName;cout<<"请输入书的页数:"<<endl;cin>>n;Book b(BookName,n);cout<<"书名为:"<<<<endl;cout<<"页数为:"<<b.PageCount<<endl;}运行结果:实验(二)源程序:#include<iostream>#include<string>using namespace std;class person{public:person(){name="张三";age=0;}person(string c,int a){name=c;age=a;}~person(){}void setname(string c){name=c;}string getname(){return name;}void setage(int a){age=a;}int getage(){return age;}private:string name;int age;};class student:public person{public:student(){xh=0;}student(int d){xh=d;}student(string c,int a,int d):person(c,a){xh=d;}~student(){}void setxh(int d){xh=d;}int getxh(){return xh;}private:int xh;};void main(){string c;cout<<"请输入学生的姓名:\n";cin>>c;cout<<"请输入学生的年龄:\n";int a;cin>>a;cout<<"请输入学生的学号:\n";int d;cin>>d;student n(c,a,d);cout<<"请输入学生的姓名为:"<<n.getname()<<endl;cout<<"请输入学生的年龄为:"<<n.getage()<<endl;cout<<"请输入学生的学号为:"<<n.getxh()<<endl; }运行结果:实验(三)源程序:#include<iostream>using namespace std;class person{public:person(){name="张三";age=0;}person(string c,int a){name=c;age=a;}~person(){}void setname(string c){name=c;}string getname(){return name;}void setage(int a){age=a;}int getage(){return age;}private:string name;int age;};class date{public:date(){year=2011;month=12;day=17;}~date(){}date(int y,int m,int d){year=y;month=m;day=d;}int getyear(){return year;}int getmonth(){return month;}int getday(){return day;}private:int year;int month;int day;};class student:public person{public:student(){// birthday.date();}student(int y,int m,int d):birthday(y,m,d){}~student(){}void getbirthday(){cout<<"学生的生日为:\n";cout<<birthday.getyear()<<"年"<<birthday.getmonth()<<"月"<<birthday.getday()<<"日"<<endl;}private:date birthday;};class teacher:public person{public:teacher(){// birthday.date();}teacher(int y,int m,int d):birthday(y,m,d){//birthday.date(y,m,d);}~teacher(){}void getbirthday(){cout<<"老师的生日为:\n";cout<<birthday.getyear()<<"年"<<birthday.getmonth()<<"月"<<birthday.getday()<<"日"<<endl;}private:date birthday;};void main(){cout<<"请输入学生的生日:"<<endl;int y,m,d;cin>>y>>m>>d;student s(y,m,d);cout<<"请输入老师的生日:"<<endl;cin>>y>>m>>d;teacher t(y,m,d);s.getbirthday();t.getbirthday();}运行结果:实验6 多继承一、实验目的1.掌握多基继承的使用,访问方法;2.理解类层次中访问规则;3.掌握虚基类的定义及使用。
《面向对象程序设计实验》实验一、Java实验环境的建立(2学时)1、目的要求(1)掌握Java编程环境的搭建过程;(2)掌握Jcreator pro软件的使用方法;(3)能使用Java doc文档。
2、实验内容(1)下载并安装JDK1.6,配置JDK环境变量;(2)下载Javadoc压缩包并解压在JDK安装路径下;(3)下载Jcreator pro 4.0并安装和配置使用环境;(4)使用实验环境运行书中实例代码,在屏幕上输出“Hello Java”字符串。
①Java application程序代码如下:public class HelloJava{public static void main(String args[]){ System.out.println("Hello Java!"); }}②Java applet程序代码如下:import java.awt.*;public class Hello extends java.applet.Applet{public void paint(Graphics g){ g.drawString("Hello!",30,30); }}3、仪器与材料:计算机实验二、Java语言程序设计训练(2学时)1、目的要求(1)输入、输出操作实现原理和方法;(2)掌握程序流程控制的实现方法;(3)掌握数组的定义和操作方法。
2、实验内容(1)计算Result=1!+2!+3!+...+10!。
public class Test3 {public static void main(String[] args) {int sum = 0, fact, n, i;for (n = 1; n <= 10; n++) {fact = 1;for (i = 1; i <= n; i++)fact *= i;sum += fact;}System.out.println("sum=" + sum);}}(2)计算1---50之间所有素数的和。
面向对象c 实验报告实验报告:面向对象C程序设计一、实验目的本次实验旨在通过设计一个面向对象的C程序,来加深对面向对象程序设计的理解,并实践C语言中面向对象的编程思想。
二、实验过程1. 设计类和对象:在C语言中,没有类的概念,但可以通过以下方式模拟类和对象。
- 定义一个结构体来表示一个类,结构体中包含该类的成员变量和成员函数指针。
- 定义一些函数来模拟类的成员函数,函数的第一个参数是结构体类型的指针,该指针指向当前对象。
2. 创建对象:定义一个结构体变量,该变量称为对象,通过调用构造函数来初始化对象的成员变量,将对象传递给成员函数。
3. 调用成员函数:使用对象调用该对象的成员函数,通过函数指针实现多态性。
4. 析构对象:在不再使用对象时,调用析构函数来释放对象占用的资源,避免内存泄漏。
5. 运行程序:编译并运行C程序,观察程序的输出结果。
三、实验结果在C语言中实现面向对象的程序设计,可以提供一种思路和方式来实现面向对象的编程思想。
通过将相关的数据和函数封装在一个表示类的数据结构中,并通过该数据结构的函数指针来调用成员函数,可以模拟出面向对象的效果。
四、实验总结通过本次实验,我对于C语言中如何实现面向对象编程有了进一步的理解。
尽管C语言本身没有类的概念,但通过结构体和函数指针的方式,我们可以模拟出类和对象的概念,并实现封装、继承和多态等面向对象的特性。
C语言中面向对象的编程思想可以使程序更加模块化、灵活和易于维护。
通过将相关的数据和函数封装在一个结构体中,我们可以将代码组织得更加清晰,降低代码的耦合度,提高代码的重用性。
此外,通过函数指针的方式来调用成员函数,可以实现多态性,使得代码更加灵活和可扩展。
当然,C语言中实现面向对象编程也存在一些限制和不足。
相比于面向对象编程语言,如C++和Java,C语言中的面向对象编程需要手动管理对象的生命周期,容易出现内存泄漏的问题。
此外,C语言中没有提供访问控制的特性,不同成员函数之间的访问权限不能进行限制。
实验二面向对象编程实验报告一、实验目的本次实验旨在深入理解和掌握面向对象编程的基本概念和方法,通过实际编程操作,提高运用面向对象思想解决问题的能力,熟悉面向对象编程的开发流程和技巧,培养良好的编程习惯和代码规范。
二、实验环境本次实验使用的编程环境为具体编程环境名称及版本,操作系统为操作系统名称及版本。
三、实验内容(一)问题描述设计一个简单的学生管理系统,能够实现对学生信息(包括姓名、学号、年龄、成绩等)的录入、查询、修改和删除操作。
(二)类的设计1、设计一个`Student` 类,用于表示学生对象。
该类包含以下属性:`name`(姓名)、`student_id`(学号)、`age`(年龄)、`score`(成绩)。
2、为`Student` 类添加构造函数,用于初始化学生对象的属性。
3、为`Student` 类添加`get` 和`set` 方法,用于获取和设置学生对象的属性值。
(三)功能实现1、录入功能:实现用户输入学生信息,并创建`Student` 对象进行存储。
2、查询功能:根据学号或姓名查询学生信息,并输出查询结果。
3、修改功能:根据学号或姓名找到对应的学生对象,修改其属性值。
4、删除功能:根据学号或姓名删除对应的学生对象。
四、实验步骤(一)类的实现```javapublic class Student {private String name;private String studentId;private int age;private double score;public Student(String name, String studentId, int age, double score) {thisname = name;thisstudentId = studentId;thisage = age;thisscore = score;}public String getName(){return name;}public void setName(String name) {thisname = name;}public String getStudentId(){return studentId;}public void setStudentId(String studentId) {thisstudentId = studentId;}public int getAge(){return age;}public void setAge(int age) {thisage = age;}public double getScore(){return score;}public void setScore(double score) {thisscore = score;}}```(二)主函数实现```javaimport javautilArrayList;import javautilScanner;public class StudentManagementSystem {private ArrayList<Student> students;public StudentManagementSystem(){students = new ArrayList<>();}public static void main(String args) {StudentManagementSystem system = new StudentManagementSystem();Scanner scanner = new Scanner(Systemin);while (true) {Systemoutprintln("1、录入学生信息");Systemoutprintln("2、查询学生信息");Systemoutprintln("3、修改学生信息");Systemoutprintln("4、删除学生信息");Systemoutprintln("5、退出系统");int choice = scannernextInt();switch (choice) {case 1:systemaddStudent(scanner);break;case 2:systemqueryStudent(scanner);break;case 3:systemmodifyStudent(scanner);break;case 4:systemdeleteStudent(scanner);break;case 5:Systemoutprintln("感谢使用,再见!");Systemexit(0);default:Systemoutprintln("输入有误,请重新输入!");}}}//录入学生信息public void addStudent(Scanner scanner) {Systemoutprintln("请输入学生姓名:");String name = scannernext();Systemoutprintln("请输入学生学号:");String studentId = scannernext();Systemoutprintln("请输入学生年龄:");int age = scannernextInt();Systemoutprintln("请输入学生成绩:");double score = scannernextDouble();Student student = new Student(name, studentId, age, score);studentsadd(student);Systemoutprintln("学生信息录入成功!");}//查询学生信息public void queryStudent(Scanner scanner) {Systemoutprintln("请输入查询方式(1、按学号查询 2、按姓名查询):");int queryType = scannernextInt();if (queryType == 1) {Systemoutprintln("请输入学号:");String studentId = scannernext();for (Student student : students) {if (studentgetStudentId()equals(studentId)){Systemoutprintln("姓名:"+ studentgetName());Systemoutprintln("学号:"+ studentgetStudentId());Systemoutprintln("年龄:"+ studentgetAge());Systemoutprintln("成绩:"+ studentgetScore());return;}}Systemoutprintln("未找到该学号对应的学生信息!");} else if (queryType == 2) {Systemoutprintln("请输入姓名:");String name = scannernext();for (Student student : students) {if (studentgetName()equals(name)){Systemoutprintln("姓名:"+ studentgetName());Systemoutprintln("学号:"+ studentgetStudentId());Systemoutprintln("年龄:"+ studentgetAge());Systemoutprintln("成绩:"+ studentgetScore());return;}}Systemoutprintln("未找到该姓名对应的学生信息!");} else {Systemoutprintln("输入有误,请重新输入!");}}//修改学生信息public void modifyStudent(Scanner scanner) {Systemoutprintln("请输入修改方式(1、按学号修改 2、按姓名修改):");int modifyType = scannernextInt();if (modifyType == 1) {Systemoutprintln("请输入学号:");String studentId = scannernext();for (Student student : students) {if (studentgetStudentId()equals(studentId)){Systemoutprintln("请输入新姓名:");String newName = scannernext();Systemoutprintln("请输入新年龄:");int newAge = scannernextInt();Systemoutprintln("请输入新成绩:");double newScore = scannernextDouble();studentsetName(newName);studentsetAge(newAge);studentsetScore(newScore);Systemoutprintln("学生信息修改成功!");return;}}Systemoutprintln("未找到该学号对应的学生信息!");} else if (modifyType == 2) {Systemoutprintln("请输入姓名:");String name = scannernext();for (Student student : students) {if (studentgetName()equals(name)){Systemoutprintln("请输入新学号:");String newStudentId = scannernext();Systemoutprintln("请输入新年龄:");int newAge = scannernextInt();Systemoutprintln("请输入新成绩:");double newScore = scannernextDouble();studentsetStudentId(newStudentId);studentsetAge(newAge);studentsetScore(newScore);Systemoutprintln("学生信息修改成功!");return;}}Systemoutprintln("未找到该姓名对应的学生信息!");} else {Systemoutprintln("输入有误,请重新输入!");}}//删除学生信息public void deleteStudent(Scanner scanner) {Systemoutprintln("请输入删除方式(1、按学号删除 2、按姓名删除):");int deleteType = scannernextInt();if (deleteType == 1) {Systemoutprintln("请输入学号:");String studentId = scannernext();for (Student student : students) {if (studentgetStudentId()equals(studentId)){studentsremove(student);Systemoutprintln("学生信息删除成功!");return;}}Systemoutprintln("未找到该学号对应的学生信息!");} else if (deleteType == 2) {Systemoutprintln("请输入姓名:");String name = scannernext();for (Student student : students) {if (studentgetName()equals(name)){studentsremove(student);Systemoutprintln("学生信息删除成功!");return;}}Systemoutprintln("未找到该姓名对应的学生信息!");} else {Systemoutprintln("输入有误,请重新输入!");}}}```五、实验结果通过对程序的运行和测试,能够成功实现学生信息的录入、查询、修改和删除功能。
面向对象程序设计实验报告【实验报告】面向对象程序设计一、引言面向对象程序设计是一种以对象为基础的软件开发方法,它将现实世界中的事物抽象成对象,并通过对象之间的交互来实现程序的功能。
本次实验旨在通过实践,加深对面向对象程序设计的理解,并掌握面向对象程序设计的基本原理和技巧。
二、实验目的1. 熟悉面向对象程序设计的基本概念和术语;2. 掌握面向对象程序设计的基本原理和技巧;3. 能够运用面向对象程序设计的思想解决实际问题。
三、实验内容1. 设计一个简单的图书管理系统;2. 实现图书的增删改查功能;3. 设计并实现图书管理系统的类结构;4. 编写测试代码,验证图书管理系统的功能。
四、实验步骤1. 设计图书管理系统的类结构:a. 创建一个Book类,包含图书的属性(书名、作者、出版社等)和方法(借阅、归还等);b. 创建一个Library类,用于管理图书馆的图书,包含添加图书、删除图书、查找图书等方法;c. 创建一个User类,用于表示图书馆的用户,包含借书、还书等方法;d. 创建一个Main类,作为程序的入口,用于测试图书管理系统的功能。
2. 实现图书的增删改查功能:a. 在Book类中实现图书的增删改查方法;b. 在Library类中调用Book类的方法,实现图书的增删改查功能。
3. 设计并实现图书管理系统的类结构:a. 根据实验要求,设计图书管理系统的类结构,包括Book、Library和User 类;b. 在每个类中定义相应的属性和方法,实现图书管理系统的功能。
4. 编写测试代码,验证图书管理系统的功能:a. 在Main类中创建图书馆和用户对象;b. 调用相应的方法,测试图书管理系统的功能;c. 检查输出结果,确保图书管理系统的功能正常运行。
五、实验结果与分析经过实验,成功设计并实现了一个简单的图书管理系统。
该系统具备图书的增删改查功能,用户可以通过借书和还书操作实现对图书的借阅和归还。
经过多次测试,系统运行稳定,功能正常。
面向对象程序设计》C实验报告《面向对象程序设计》实验报告学院:专业:班级学号:姓名:学期:教师:实验一 C++基础练习院(系):课程名称:面向对象程序设计教师签名:实验目的和要求1.掌握C++程序的基本格式与规范,学会编写简单的C++程序。
2.理解C++程序结构的特点。
3.熟悉C++程序基本的输入和输出操作。
4.掌握C++数据类型常量和变量以及修饰符的使用方法。
5.掌握函数定义、函数调用和函数说明的方法。
6.熟悉作用域运算符的功能和基本使用方法。
7.掌握C++内存的动态分配与释放方法。
8.理解引用的概念,掌握引用的使用方法。
实验内容和步骤1. 调试如下的代码并回答问题。
#include <iostream.h>void main(){//First c++ programchar name[10];cout<<"please input your name:";cin>>name;cout<<"welcome "<<name<<endl;}(1)C++的注释和C有何不同?答:C语言的注释有一种,用/*……….*/作为注释分界符号C++除保留了这种注释方式之外,还提供了一种更有效的注释方式,该注释以“//”开始,到行尾结束。
(2)C++的输入和输出所使用的函数及其相应头文件与C有何不同?答:在C中进行输入输出操作时,常使用函数scanf和printf。
C++除了可以照常使用这两个函数进行输入输出外,还增加了标准输入流对象cin和标准输出流对象cout来进行输入和输出。
Iostream是C++系统定义的一个头文件,在这个文件中声明了程序所需要的输入和输出操作的有关信息。
在C语言中头文件中用“.h”作为后缀,如stdio.h、math.h等。
2. 单步调试如下的代码并回答问题。
#include <iostream.h>inline int f(int x){ return 2*x*x+4*x+5; }inline double f(double x){ return 2*x*x+4*x+5; }void main(){ int x=5;double y=5.2;cout<<f(x)<<endl;cout<<f(y)<<endl;}(1)inline的含义和作用是什么?答:含义:在函数说明前冠以关键字“inline”,该函数就被声明为内联函数,每当程序中出现对该函数的调用时C++编译器使用函数体中的代码插入到调用该函数的语句处,同时用实参取代形参。
面向对象程序设计实验报告姓名Name学号Student No.班级Class代码总行数Code Lines 实验名称Item1.实验目的综合应用所学的知识分析问题、解决问题,提高实际编程能力及程序调试能力。
2.实验内容设计并实现一个个人通信录,能记录人员的各种通信信息。
支持通信录条目的添加、查找、删除、修改。
要求:1)通信录需记录的个人信息自行设计。
2)要求采用图形用户界面(GUI),界面效果及事件处理方式自行设计,尽量考虑美观与易用性。
3)系统结构设计应采用面向对象的思想,发现问题域中的事物(常称为实体),抽象成类,建立实体类之间的关系。
同时建立实体类与界面类之间的关系。
要求程序结构设清晰合理。
3.关键代码public class AddressBook extends Frame implements ActionListener{private MenuItem noteAdd=new MenuItem("添加");private MenuItem noteDel=new MenuItem("删除");Private MenuItem noteEdit=new MenuItem("修改");private MenuItem noteSearch=new MenuItem("查找");private MenuItem noteExit=new MenuItem("退出");private List noteList=new List();private String[][]message=new String[1000][4];public Info notes=new Info();public AddressBook(){super("通讯录");Menu note=new Menu("编辑");note.add(noteAdd);note.add(noteDel);note.add(noteEdit);note.add(noteSearch);note.addSeparator();note.add(noteExit);MenuBar bar=new MenuBar();bar.add(note);setMenuBar(bar);add(noteList);noteAdd.addActionListener(this);noteDel.addActionListener(this);noteEdit.addActionListener(this);noteExit.addActionListener(this);noteSearch.addActionListener(this);noteList.addActionListener(this);addWindowListener(new WindowCloser());setSize(400,600);setVisible(true);}public void actionPerformed(ActionEvent e){if(e.getSource()==noteAdd){notes.mail=null;=null;notes.address=null;notes.telephone=null;int index=noteList.getItemCount();EditDialog dlg=new EditDialog(this,"通讯录",notes,false);if(dlg.isOk){message[index][0]=dlg.textName.getText();message[index][1]=dlg.text Address.getText();message[index][2]=dlg.textEmail.getText();message[index][3]=dlg.textTelephone.getText();if(message[index][0]!=null){String s="姓名:"+message[index][0]+"地址:"+message[index][1]+"E-mail:"+message[index][2]+"电话:"+message[index][3];noteList.add(s);}}dlg.dispose();}else if(e.getSource()==noteEdit||e.getSource()==noteList){int i=noteList.getSelectedIndex();if(i!=-1){=message[i][0];notes.address=message[i][1];notes.mail=message[i][2];notes.telephone=message[i][3];面向对象程序设计实验报告EditDialog dlg=new EditDialog(this,"修改通讯录",notes,false);if(dlg.isOk){message[i][0]=dlg.textName.getText();message[i][1]=dlg.textAddress.getText();message[i][2]=dlg.textEmail.getText();message[i][3]=dlg.textTelephone.getText();String s="姓名:"+message[i][0]+"地址:"+message[i][1]+"E-mail:"+message[i][2]+"电话:"+message[i][3]; noteList.replaceItem(s,i);}dlg.dispose();}}else if(e.getSource()==noteDel){ConfirmDialog cd=new ConfirmDialog(this,"确认删除?","确认要删除这条通讯录信息吗?");if(cd.close){int index=noteList.getSelectedIndex();for(int i=index;i<noteList.getItemCount()-1;i++){for(int j=0;j<4;j++)message[i][j]=message[i+1][j];}noteList.remove(index);}}else if(e.getSource()==noteSearch){EditDialog dlg=new EditDialog(this,"查找通讯录",notes,true);if(dlg.isOk){for(int i=0;i<noteList.getItemCount();i++){String thisname=noteList.getItem(i).toString().split("")[0].split(":")[1];String thistelephone=noteList.getItem(i).toString().split("")[30].split(":")[1];if((.equals(thisname)&&dlg.telephone.equals(thistelephone))||(.equal s(thisname)&&(dlg.telephone.equals("")))||((.equals(""))&&dlg.telephone.equ als(thistelephone))){String show="查找成功!信息为:"+noteList.getItem(i).toString();JOptionPane.showMessageDialog(null,show);return;}}。
面向对象程序设计实验报告面向对象程序设计实验报告一、引言面向对象程序设计(Object-Oriented Programming,简称OOP)是一种广泛应用于软件开发的编程范式。
本实验旨在通过实践,加深对面向对象程序设计的理解,并掌握其基本概念和技巧。
二、实验目的1. 理解面向对象程序设计的基本概念和思想;2. 掌握类、对象、继承、封装、多态等面向对象的核心概念;3. 运用面向对象的思想设计和实现一个简单的程序。
三、实验过程1. 设计类和对象在本次实验中,我们选择实现一个简单的学生管理系统。
首先,我们需要设计一个学生类(Student),包括学生的姓名、年龄、学号等属性,并定义相关的方法,如获取学生信息、修改学生信息等。
然后,我们创建多个学生对象,模拟学生管理系统中的多个学生。
2. 继承和多态为了进一步理解继承和多态的概念,我们可以设计一个教师类(Teacher),继承自学生类。
教师类除了继承学生类的属性和方法外,还可以定义自己特有的属性和方法。
通过创建教师对象,我们可以看到继承和多态的效果。
3. 封装和访问控制在面向对象程序设计中,封装是一个重要的概念。
我们可以将学生类的属性设置为私有(private),并通过公有(public)的方法来访问和修改属性。
这样做的好处是可以保护属性的安全性,同时提供统一的接口供外部使用。
四、实验结果通过实验,我们成功地实现了一个简单的学生管理系统。
我们可以创建学生对象,并通过调用相关方法来获取和修改学生的信息。
同时,我们还实现了教师类,通过继承和多态的特性,我们可以灵活地使用学生和教师对象。
五、实验总结通过本次实验,我们深入了解了面向对象程序设计的基本概念和思想。
通过设计和实现一个简单的程序,我们掌握了类、对象、继承、封装、多态等核心概念,并学会了如何运用这些概念来设计和实现面向对象的程序。
面向对象程序设计具有很多优点,如代码的可重用性、可维护性、可扩展性等。
通过合理地设计类和对象,我们可以更好地组织和管理代码,提高开发效率和代码质量。
面向对象程序设计实验报告实验一C++基础1.1实验目的1.了解并熟悉开发环境,学会调试程序;2.熟悉C++中简单的标准输入输出函数的使用方法;3.理解const修饰符的作用并学会应用;4.理解内联函数的优缺点并学会其使用场合;5.理解并学会函数重载;6.理解并熟练掌握使用new和delete来分配内存;7.理解并熟练掌握引用的使用方法。
1.2实验内容1.2.1程序阅读1.理解下面的程序并运行,然后回答问题。
#include<iostream.h>int max_def(int x,int y){return(x>y?x:y);}int max_def(int x,int y,int z){int temp=0;return(temp=(x>y?x:y))>z?temp:z;}double max_def(double x,double y){return(x>y?x:y);}int main(){int x1=0;int x2=0;double d1=0.0;double d2=0.0;x1=max_def(5,6);x2=max_def(2,3,4);d1=max_def(2.1,5.6);d2=max_def(12.3,3.4,7.8);-------------------------------------------------------①cout<<"x1="<<x1<<endl;cout<<"x2="<<x2<<endl;cout<<"d1="<<d1<<endl;cout<<"d2="<<d2<<endl;--------------------------------------------------------②return 1;}问题一:上述程序的输出结果是什么?答:输出结果为问题二:①处调用的是哪个函数?答:①处调用的是double max_def(double x,double y)函数问题三:②处的输出结果为什么是d2=12,而不是d2=12.3?答:因为调用的int max_def(int x,int y,int z)函数返回值为整型。
上海电力学院课程设计报告面向对象程序设计(2012 /2013学年第一学期)课题名称模仿ATM机存取款管理系统设计院(系)电子与信息工程学院专业通信工程学号姓名时间2013年1月12日至1月18日地点奋进楼4楼5机房指导教师王剑云目录一、设计目的与任务 (2)1、本课程设计的目的 (2)2、本课程设计的任务 (2)二、设计方案 (2)1.总体设计 (2)2.系统功能 (2)3.系统截图 (4)4.核心代码设计 (7)三.心得体会 (11)一、设计目的与任务1、本课程设计的目的(1)课程设计是实践教学环节。
设置课程设计的目的是加强学生对本课程及相关课程知识的理解,培养学生综合运用理论知识分析和解决实际问题的方法与能力。
有助于提高学生的创新能力和创新意识。
搞好课程设计教学工作,对实现专业培养目标,提高学生全面素质有重要作用。
(2)通过课程设计更进一步理解C++的基础知识。
(3)训练用系统的观点及软件开发的一般规范进行软件开发,并在此过程中培养严谨的科学态度和良好的工作作风。
初步掌握软件开发过程中的问题分析、系统设计、程序编码、调试、测试等方面的基本方法和技能。
(4)熟练掌握C++知识在程序中的应用,了解书本知识在解决实际问题中的用途。
2、本课程设计的任务模拟银行的自动取款机使用过程中的界面和用户交互过程。
实现查询银行卡余额、取款、修改密码、退出系统等功能。
功能要求:(1)卡号、密码输入最多三次,否则直接退出系统。
(2)取款功能:取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。
(3)查询功能:实现查询余额功能。
(4)更改密码:实现密码更改功能,对于密码要有2次验证。
(5)锁卡功能:实现卡被锁的功能。
(6)退卡功能:实现退出系统功能。
二、设计方案1.总体设计设计的这个程序是模拟A TM取款机的使用过程,该程序功能包括:1)卡号、密码输入最多三次,否则直接退出系统。
2)取款功能:取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。
3)查询功能:实现查询余额功能。
4)更改密码:实现密码更改功能,对于密码要有2次验证。
5)锁卡功能:实现卡被锁的功能。
6)退卡功能:实现退出系统功能。
2.系统功能首先编写一个class consumer(用户类)、class ATM(ATM取款机类)和一个main()函数,程序开始运行时调用main函数里设置好的用户信息,通过main函数来调用class A TM(ATM取款机类)和class consumer(用户类)中的相关函数和数据来达到程序的要求。
class ATM(ATM 取款机类)内主要有void welcome(); // 登陆界面bool check_passwd(char n[],char pwd[]); // 核对密码void fetchmoney(); // 取款功能void functionshow(); // 功能界面void information(); // 查询功能void change_passwd(); // 更改密码void lock(); // 锁卡功能void exitATM(); // 退卡功能class consumer(用户类)内主要有char* get_name(); // 获取姓名char* get_num(); // 获取卡号char* get_passwd(); // 获取密码float get_money(); // 获取余额void set_passwd(char pwd[]); // 设置密码void set_money(float m); // 取款通过在主界面的输入指令来实现各个函数的调用,以达到模仿A TM取款机的功能。
系统功能图与流程图3.系统截图(1)主界面(2)卡号、密码输入最多三次,否则直接退出系统。
(3)取款功能:取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。
(4)查询功能:实现查询余额功能。
(5)更改密码:实现密码更改功能,对于密码要有2次验证。
(6)锁卡功能:实现卡被锁的功能(7)退卡功能:实现退出系统功能。
4.核心代码设计(1)类编写通过定义两个类,class consumer(用户类)和class ATM(A TM取款机类),对于class ATM,public有登陆界面,核对密码,取款功能,功能界面,查询功能,更改密码,锁卡功能,退卡功能。
Private有记录密码输入次数。
对于class consumer,public有获取姓名,获取卡号,获取密码,获取余额,设置密码,取款。
Private有用户密码,用户姓名。
(2)类的成员函数class ATM // ATM取款机类{public:A TM(consumer& cn):cnsm(cn){}void welcome(); // 登陆界面bool check_passwd(char n[],char pwd[]); // 核对密码void fetchmoney(); // 取款功能void functionshow(); // 功能界面void information(); // 查询功能void change_passwd(); // 更改密码void lock(); // 锁卡功能void exitATM(); // 退卡功能private:int times; // 记录密码输入次数consumer& cnsm;};class consumer// 用户类{public:friend class ATM;consumer(char Name[],char Num[],float Money,char Password[]);protected:char* get_name(); // 获取姓名char* get_num(); // 获取卡号char* get_passwd(); // 获取密码float get_money(); // 获取余额void set_passwd(char pwd[]); // 设置密码void set_money(float m); // 取款private:char passwd[8];// 用户密码char name[20]; // 用户姓名char num[20];float money;};(3)各个功能的实现(1)卡号、密码输入最多三次,否则直接退出系统。
void ATM::exitATM() //退卡{cout<<endl<<" 感谢您支持,欢迎下次光临! "<<endl;cout<<" 请取回你的卡片"<<endl;exit(0);}//后面的退卡需要调用此函数void ATM::welcome(){times=0;cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★"<<endl;cout<<"=================================================="<<endl;cout<<" *中国农业银行* "<<endl;cout<<" 欢迎使用ATM自动柜员机"<<endl;cout<<"=================================================="<<endl;cout<<"★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★"<<endl;char pwd[8],num[20],ch;int i=0;do{i=0;cout<<endl<<"请输入卡号:";do{cin.get(ch); //对于键盘字符串的接收!num[i++]=ch;}while(ch!='\n');num[i-1]='\0';i=0;cout<<"请输入密码:";do{cin.get(ch);pwd[i++]=ch;}while(ch!='\n');pwd[i-1]='\0';if(!check_passwd(num,pwd)){cout<<"你输入的卡号或密码有误,请重新输入"<<endl;times++;}else{functionshow();}}while(times<3);exitATM();}(2)取款功能:取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。
void ATM::fetchmoney() //取款{float m;char ch;do{cout<<endl<<"您要取多少钱:"<<endl; // 两种情况cin>>m;while(m<=0){cout<<"请输入您的取款金额!"<<endl;cin>>m;}if(cnsm.get_money()-m<0){cout<<"对不起,你的余额不足!"<<endl;}else{cout<<endl<<"操作成功!请于30秒内取走您的钞票!"<<endl;cnsm.set_money(m);}cout<<"是否要继续该项操作:(y/n) "<<endl;cin>>ch;}while(ch=='y'||ch=='Y');}(3)查询功能:实现查询余额功能。
void ATM::information() //查询{cout<<"=================================================="<<endl;cout<<"您当前所剩余额为: "<<cnsm.get_money()<<endl; //必须声明友元才能用cnsm 调用其成员函数cout<<"=================================================="<<endl;}(4)更改密码:实现密码更改功能,对于密码要有2次验证。