面向对象程序设计实验报告
- 格式:doc
- 大小:366.00 KB
- 文档页数:29
一、实验目的1. 理解面向对象编程的基本概念,如类、对象、继承、封装、多态等。
2. 掌握面向对象编程的基本语法和常用操作。
3. 通过实验加深对面向对象编程的理解和应用。
二、实验环境1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 编程语言:C#三、实验内容1. 定义一个简单的类,并创建对象实例。
2. 在类中定义属性和方法,并演示其使用。
3. 使用继承实现类的扩展。
4. 使用封装保护类的内部数据。
5. 使用多态演示不同对象间的动态类型转换。
四、实验步骤1. 定义一个名为“Person”的类,包含以下属性和方法:- 属性:姓名(Name)、年龄(Age)、性别(Gender)- 方法:打印个人信息(PrintInfo)2. 创建“Person”类的对象实例,并演示属性和方法的使用。
3. 定义一个名为“Student”的类,继承自“Person”类,并添加以下属性和方法: - 属性:学号(StudentID)- 方法:打印学生信息(PrintStudentInfo)4. 创建“Student”类的对象实例,并演示属性和方法的使用。
5. 定义一个名为“Employee”的类,继承自“Person”类,并添加以下属性和方法:- 属性:工号(EmployeeID)、职位(Position)- 方法:打印员工信息(PrintEmployeeInfo)6. 创建“Employee”类的对象实例,并演示属性和方法的使用。
7. 定义一个名为“Manager”的类,继承自“Employee”类,并添加以下属性和方法:- 属性:部门(Department)- 方法:打印经理信息(PrintManagerInfo)8. 创建“Manager”类的对象实例,并演示属性和方法的使用。
9. 使用多态演示不同对象间的动态类型转换。
五、实验结果与分析1. 创建“Person”类和对象实例,并演示属性和方法的使用。
课程编号:面向对象程序设计实验报告实验1一.实验目的:加强我自己使用继承来实现Java类的能力二.实验内容:1.首先根据要求实现超类Product类。
以利于以后商品Coffee类,CoffeeBrewer类,Orderitem类的继承。
2.根据要求实现Coffee类,CoffeeBrewer类,Orderitem类。
3.实现如下类图:4.三.实验步骤:1.首先根据要求设计出一下的类图。
5.不同的类的具体要求如下(都要继承超类Product类)。
(1)C lass Producta.含有的变量:code;description;price;b.含有的方法:.public Product(String code,Stringdescription,double price)public String getCode().返回实例变量的code.∙public String getDescription().返回实例变量的variable description.∙public double getPrice().返回实例变量的 price.∙boolean equals(Object object). 重写方法 equals i在类Object里,如果他们的code是相等的,则产品对象是相等的。
∙String toString(). 重写方法toString 在类Object里.返回的格式如下:∙code_description_pricec.写完具体如下:publicclass Product {private String code;private String description;privatedouble price;public Product(String code,String description,double price) {this.code=code;this.description=description;this.price=price;}public String getCode() {return code;}public String getDescription() {return description;}publicdouble getPrice() {return price;}@Overridepublicboolean equals(Object a) {if (a instanceof Product) {if (((Product) a).code==this.getCode()) {returntrue;}else {returnfalse;}}returnfalse;}@Overridepublic String toString() {return (this.getCode()+"_"+this.getDescription()+"_"+this.getPrice());}}(2)c lass Coffeea.含有的变量:∙origin.∙roast.∙flavor.∙aroma.∙acidity.∙body.b.含有的方法:public Coffee(String code,String description,Doubleprice,String origin,String roast,String flavor,String aroma,String acidity,String body);∙public String getOrigin().返回实例变量的origin.∙public String getRoast().返回实例变量的roast.∙public String getFlavor().返回实例变量的flavor.∙public String getAroma().返回实例变量的aroma.∙public String getAcidity().返回实例变量的acidity.∙public String getBody().返回实例变量的body.∙String toString(). 重写方法 toString 在类Object里. 返回如下格式::code_description_price_origin_roast_flavor_aroma_acidi ty_bodyc.写完具体如下:publicclass Coffee extends Product {private String origin;private String roast;private String flavor;private String aroma;private String acidity;private String body;public Coffee(String code,String description,Double price,Stringorigin,String roast,String flavor,String aroma,String acidity,String body){ super(code, description, price);this.origin=origin;this.roast=roast;this.flavor=flavor;this.aroma=aroma;this.acidity=acidity;this.body=body;}public String getOrigin() {return origin;}public String getRoast() {return roast;}public String getFlavor() {return flavor;}public String getAroma() {return aroma;}public String getAcidity() {return acidity;}public String getBody() {return body;}@Overridepublic String toString() {returnthis.getCode()+"_"+this.getDescription()+"_"+this.getPrice()+"_"+thi s.getOrigin()+"_"+this.getRoast()+"_"+this.getFlavor()+"_"+this.getAroma()+"_"+ this.getAcidity()+"_"+this.getBody();}}(3)c lass CoffeeBrewera.含有的变量:model.∙waterSupply.∙numberOfCups.b.含有的方法:∙public CoffeeBrewer(String initialCode,∙ String initialDescription,∙ double initialPrice,∙ String initialModel,∙ String initialWaterSupply,∙ int initialNumberOfCups)∙public String getModel()。
一、实验目的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个正整数中的最大数。
一、实验目的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.掌握虚基类的定义及使用。
面向对象c 实验报告实验报告:面向对象C程序设计一、实验目的本次实验旨在通过设计一个面向对象的C程序,来加深对面向对象程序设计的理解,并实践C语言中面向对象的编程思想。
二、实验过程1. 设计类和对象:在C语言中,没有类的概念,但可以通过以下方式模拟类和对象。
- 定义一个结构体来表示一个类,结构体中包含该类的成员变量和成员函数指针。
- 定义一些函数来模拟类的成员函数,函数的第一个参数是结构体类型的指针,该指针指向当前对象。
2. 创建对象:定义一个结构体变量,该变量称为对象,通过调用构造函数来初始化对象的成员变量,将对象传递给成员函数。
3. 调用成员函数:使用对象调用该对象的成员函数,通过函数指针实现多态性。
4. 析构对象:在不再使用对象时,调用析构函数来释放对象占用的资源,避免内存泄漏。
5. 运行程序:编译并运行C程序,观察程序的输出结果。
三、实验结果在C语言中实现面向对象的程序设计,可以提供一种思路和方式来实现面向对象的编程思想。
通过将相关的数据和函数封装在一个表示类的数据结构中,并通过该数据结构的函数指针来调用成员函数,可以模拟出面向对象的效果。
四、实验总结通过本次实验,我对于C语言中如何实现面向对象编程有了进一步的理解。
尽管C语言本身没有类的概念,但通过结构体和函数指针的方式,我们可以模拟出类和对象的概念,并实现封装、继承和多态等面向对象的特性。
C语言中面向对象的编程思想可以使程序更加模块化、灵活和易于维护。
通过将相关的数据和函数封装在一个结构体中,我们可以将代码组织得更加清晰,降低代码的耦合度,提高代码的重用性。
此外,通过函数指针的方式来调用成员函数,可以实现多态性,使得代码更加灵活和可扩展。
当然,C语言中实现面向对象编程也存在一些限制和不足。
相比于面向对象编程语言,如C++和Java,C语言中的面向对象编程需要手动管理对象的生命周期,容易出现内存泄漏的问题。
此外,C语言中没有提供访问控制的特性,不同成员函数之间的访问权限不能进行限制。
面向对象程序设计实验报告【实验报告】面向对象程序设计一、引言面向对象程序设计是一种以对象为基础的软件开发方法,它将现实世界中的事物抽象成对象,并通过对象之间的交互来实现程序的功能。
本次实验旨在通过实践,加深对面向对象程序设计的理解,并掌握面向对象程序设计的基本原理和技巧。
二、实验目的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. 检查输出结果,确保图书管理系统的功能正常运行。
五、实验结果与分析经过实验,成功设计并实现了一个简单的图书管理系统。
该系统具备图书的增删改查功能,用户可以通过借书和还书操作实现对图书的借阅和归还。
经过多次测试,系统运行稳定,功能正常。
课程名称:面向对象程序设计设计题目:学生通讯录管理系统姓名:庞**班级:电子商务092学号: ************院系:信息学院网络技术系实验地点:综合楼六楼软件二室指导教师:罗**成绩:教师签字:设计时间: 2011/1/3-2011/1/7目录一.系统设计总说明 (3)1.1设计目的..........................................‥ (3)1.2设计要求 (3)1.3设计任务内容 (4)1.4系统功能间介 (4)1.5设计平台 (4)二.面向对象程序设计报告 (4)2.1需求分析 (4)2.2概要设计 (5)2.2.1整体设计 (5)2.2.2系统总体结构图 (5)2.3详细设计 (6)2.3.1录入功能设计 (6)2.3.2显示信息设计 (6)2.3.3添加功能设计 (7)2.3.4删除功能设计 (7)2.3.5查找功能设计 (8)2.3.6排序功能设计 (9)2.4显示功能界面 (10)2.5课程设计心得与体会 (15)2.6附录1:参考文献 (15)2.7附录2: 附注释的部分程序清单 (15)2.7.1头文件说明.................................‥ (15)2.7.2类、对象和函数声明 (16)2.7.3函数定义的主要部分 (16)2.7.4主函数 (17)一.系统设计总说明1.1设计目的《面向对象程序设计》是信息管理与信息系统专业的重要实践性课程。
课程实习作为独立的教学环节,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。
课程设计为学生提供了一个手脑并用、独立实践的机会。
目的在于培养学生分析问题和解决问题的能力,将课本的理论知识与实际应用问题进行有机结合,提高学生程序设计、程序调试及项目开发能力。
通过本课程设计的实践,全面总结C++课程学习中的数据类型、程序结构、数组、函数、类和对象、派生与继承、虚函数与多态性、运算符重载、c++语言的输入和输出、指针、结构体、读入文本等基本概念,熟悉并掌握其使用方法。
培养使用面向对象的程序设计方法编写计算机程序的能力。
所以完成本颗题目要求学生较强的设计能力,特别是要具有综合应用能力。
如何调程序也非常重要,通过这个程序可以学习到以前调试短程序没有的的经验。
该课程是要设计学生通讯录管理系统,改系统能够提高便捷与强大的信息查询功能;能够提高便捷与强大的信息添加、删除、查询、排序等功能;具有较强的灵活性及拓展性,能够存储一定数量的学生信息,并方便有效地进行数据操作和管理;可以提供数据存储的效率,保证数据的完整性和一致性。
总的来说设计学生通讯录管理系统是具有很有意义的,例如我们在以后工作单位中可以运用现在所学的东西来做某某单位的员工通讯录管理系统等等。
1.2设计要求1、分析课程设计题目的要求2、写出详细设计说明3、编写程序代码,调试程序使其能正确运行4、设计完成的软件要便于操作和使用5、设计完成后提交课程设计报告,课程设计报告内容包括:课程设计目的、设计任务与要求、设计说明书、设计成果和设计心得五个部分,具体要求见设计报告模板。
1.3设计内容设计一个学生通讯录理系统。
以本班同学的具体数据为背景,设计一个本班同学通讯录,能够实现通讯录编辑(添加、删除);按不同的项进行查找;对已存在的通讯录按不同的项排序;将通讯录写入文件;从文件读入通讯录。
其中通讯录至少应该有以下数据项:姓名,地址,电话,邮编,E-mail。
1.4系统功能简介A. 通讯录编辑(录入、显示、添加、删除、查找、排序、退出)。
B.按不同方式进行删除。
C. 按不同的项进行查找。
D. 对已存在的通讯录按不同的项排序。
E.退出通讯录管理系统。
1.5设计平台本系统是在windows环境下开发的,使用软件为Microsoft公司的Visual C++ 6.0,并采用了面向过程的技术。
二.面向对象程序设计报告2.1需求分析学生通讯录管理功能:1.录入功能录入信息:录入学生的信息,其信息包括姓名、地址、电话、邮编、电子邮件;2.显示功能显示信息:显示信息前要先录入学生信息,录入完毕后会显示学生的姓名、地址、电话、邮编、电子邮件;3.添加功能添加信息:想再添加学生的信息,其信息包括姓名、地址、电话、邮编、电子邮件;4.删除功能删除信息:<1>通过姓名删除学生的姓名、地址、电话、邮编、电子邮件这些信息。
<2>通过电子邮件这种方法删除学生的姓名、地址、电话、邮编、电子邮件这些信息。
若输入的姓名或电子邮件存在则执行删除功能,若不存在,则要重新输入,返回显示界面再次执行所选功能;5.查找功能查找信息: <1>按姓名查找 <2>按地址查找 <3>按电话查找6.排序功能排列信息:<1>按姓名排序 <2>按电话排序7.退出系统退出通讯录管理系统:当不想执行时,退出系统。
2.2概要设计2.2.1整体设计严格按照老师给予的要求,经需求分析,本系统共设计了六大功能模块,包括录入信息、显示信息、添加信息、删除信息、查找信息、对信息进行排序。
本系统涉及两个类:一个是通讯录(Address_list)类;一个是通讯录管理(Address_listmanage)类,用来管理通讯录信息,以实现各种函数。
通讯录(Address_list)类的功能在于设置学生基本信息,包括姓名、地址、电话、邮编、电子邮件;通讯录管理(Address_listmanage)类的功能在于实现对学生通讯录的相关操作,包括录入信息、显示信息、添加信息、删除信息、查找信息、对信息进行排序。
其中录入信息后要记得保存到“f:\\filetest.txt”文件中;从文件“f:\\filetest.txt”读入通讯录,显示学生通讯信息;实际录入的人数为N,再要添加学生通讯录信息的就要实现不仅要从文件“f:\\filetest.txt”读入原先录入的学生通讯录信息,还要把后来添加后得到的N(N++)个学生通讯录信息保存到“f:\\filetest.txt”文件;要实现删除功能,首先要从“f:\\filetest.txt”文件读入通讯录,运用不同的方法删除,删除后还要重新保存信息;从“f:\\filetest.txt”文件读入通讯录,按照姓名、地址或电话的方式进行查找显示到屏幕;按不同的方式进行排序。
2.2.2系统总体结构图2.3详细设计在整体设计部分大家了解到我所做的学生通讯录管理系统定义了通讯录(Address_list)类和通讯录管理(Address_listmanage)类这两个类,其中通讯录管理(Address_listmanage)类中要实现录入信息、显示信息、添加信息、删除信息、查找信息、对信息进行排序这六大主要功能,下面我将用图表、程序或文字来详细说明我是如何设计的,并能够实现其功能的。
①录入信息:实现关于学生信息(姓名、地址、电话、邮编、电子邮件)的录入。
输入学生人数(实际录入数N)—>录入第一个学生信息—>录入第二个学生信息—>录入第N个学生信息—>保存数据②显示信息:从文件“f:\\filetest.txt”读入通讯录,显示学生通讯信息。
设置好规定的宽度输出学生的“姓名”、“地址”、“电话”、“邮编”、“电子邮件”,这些文字只输出一次,接着循环,显示实际录入的学生信息,其宽度值与上相对应,这样结构就比较整齐。
相关程序代码为:void Address_listmanage::show(){int N;N=read();cout<<setw(8)<<"姓名"<<setw(8)<<"地址"<<setw(12)<<"电话"<<setw(8)<<"邮编"<<setw(12)<<"电子邮件"<<endl;for(int i=0;i<=N;i++)addr[i].print();}③添加信息:实际录入的人数为N,再要添加学生通讯录信息的就要实现不仅要从文件“f:\\filetest.txt”读入原先录入的学生通讯录信息,还要把后来添加后得到的N(N++)个学生通讯录信息保存到“f:\\filetest.txt”文件。
需要注意的是,因为原先实际录入人数为N,再添加的就是输入第(N+1)个学生的信息。
相关程序代码为:void Address_listmanage::add(){int N;N=read();string name;string address;string tele;string post_code;string e_mail;cout<<"请输入"<<N+1<<"个学生的信息"<<endl;cout<<"姓名: ";cin>>name;cout<<"地址: ";cin>>address;cout<<"电话: ";cin>>tele;cout<<"邮编: ";cin>>post_code;cout<<"电子邮件:";cin>>e_mail;addr[i]=Address_list(name,address,tele,post_code,e_mail);N++;//通讯录增加一个学生的信息save(N);}④删除信息:要实现删除功能,首先要从“f:\\filetest.txt”文件读入通讯录,运用不同的方法删除,删除后还要重新保存信息,否则显示的是原先的信息,没有体现出有删除这个功能。
删除功能的实现能重新放置好是通过,每删除一个学生的相关信息往后的学生的信息位置都要往前放置来实现的。
可以通过按姓名的方式删除的相关程序来说明:case 1: //按姓名的方式删除{cout<<"请输入想要删除的学生姓名:"<<endl;string name2;cin>>name2;for(i=0;i<N;i++)if(addr[i].getName()==name2){for(int k=i;k<N-1;k++){addr[i]=addr[k+1];}m--;cout<<"该学生通讯录上的信息已删除"<<endl;break;}save(m);if(i>N){cout<<"不存在该姓名,请重新输入。