《最新OOP实验报告.doc》由会员分享,可在线阅读,更多相关《最新OOP实验报告.doc(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateOOP实验报告一、面向对象的程序设计实验报告小组编号: 第九组 小组成员: 于灏 肖年浩 杨海兰 张旭阳 实验题目:实验十二:综合练习(二) 实验时间: 2015年6月26日 任课教师: 刘颖健 评阅老师: Student-student_number:long int -name:string-age:int-sex:char-grade:double+ displ
2、ay()+alter()+set_student_number(n:long int):void+ get_student_number():long int+ set_name(n:string ):void+ get_name():string void set_age(int a)age=a; int get_age()return age; void set_sex(char s)sex=s; char get_sex()return sex; void set_grade(double g)grade=g; double get_grade()return grade;一、 实验内容
3、 建立班级管理类(ClassManagement),包含一个长度可变的一维学生类(Student)对象数组, 班级管理类对外提供的服务包括但不仅限于: 从指定的磁盘文件中读取学生信息(学号、姓名、年龄、性别、成绩),建立并初始化学生对象数组; 按照学号查询某个学生的信息; 编辑修改某个学生的信息; 按照学号升序排列后,更新保存学生信息的磁盘文件。 二、程序设计思路建立两个类Manage和Student,其中这两个类是包含的关系,即在Manage has Student的对象数组.Student 内各种函数修改和访问私有成员。在Management 类里面实现各种功能。三、UML类图Manage
4、-p:student*+show()+find(long int number):int+change()+get(number:long int,na:string,ag:int,se:char,gra:double)+out(onumber:long int,ona:string,oag:int,ose:char,ogra:double)+sort()四、小组成员分工于灏 肖年浩:程序中各个函数的设计编写代码;杨海兰 张旭阳:类中对象的设计五、源程序代码#include#include#include#includeint n;/导入学生个数using namespace std;/*学生
5、类*/class Student public: void display();/输出学生信息 void alter();/修改学生信息 long int get_student_number()return student_number;/获取学生号码 void set_student_number(long int n)student_number=n; void set_name(string n)name=n; string get_name()return name; void set_age(int a)age=a; int get_age()return age; void se
6、t_sex(char s)sex=s; char get_sex()return sex; void set_grade(double g)grade=g; double get_grade()return grade; private: string name;/学生姓名 long int student_number;/学号 int age;/年龄 char sex;/性别 double grade;/成绩;/*输出学生信息*/void Student:display() coutstd:leftsetw(6)name std:leftsetw(8)student_number std:l
7、eftsetw(5)age std:leftsetw(5)sex std:leftsetw(5)gradeendl;/*修改学生信息*/void Student:alter() int m; coutplease chose which do you want to changeendl 1 name 2 student_number 3 age 4 sex 5 grade 6 all 0 eixtm; while(m) coutplease enter new date:name;break; case 2:cinstudent_number;break; case 3:cinage;bre
8、ak; case 4:cinsex;break; case 5:cingrade;break; case 6:cinnamestudent_numberagesexgrade; default:coutenter date error!endl; coutplease chose which do you want to changeendl 1 name 2 student_number 3 age 4 sex 5 grade 6 all 0 eixtm; /*管理类*/class Manage public: Manage() fstream file(student.dat); if(!
9、file) cerrfile open errorn;/输出数据个数 coutit has n studentsendl; p=new Studentn; /*创建中转数组*/ long int numbern; string nan; int agn;char sen; double gran; /*/ for(int i=0;inumberinaiagiseigrai; pi.set_student_number(numberi); pi.set_name(nai); pi.set_age(agi); pi.set_sex(sei); pi.set_grade(grai); file.cl
10、ose(); /构造函数,初始学生数据 void show();/输出学生信息 int find(long int number);/查找 void change();/修改 void sort();/排序 void get_student() long int num; coutplease input the student number(-1 cancle)num; if(find(num) pfind(num)-1.display(); return ; coutcant find the studentendl; Manage() sort(); long int numbern;
11、string nan; int agn;char sen; double gran; /*导出数据*/ for(int i=0;in;i+) numberi=pi.get_student_number(); nai=pi.get_name(); agi=pi.get_age(); sei=pi.get_sex(); grai=pi.get_grade(); fstream outfile(student.dat); if(!outfile) cerrfile open errorendl; exit(1); outfilenendl; for(int i=0;in;i+) outfilenum
12、beri ; outfilenai ; outfileagi ; outfilesei ; outfilegrai ; outfileendl; outfile.close(); coutthe student information has been saved in new orderendl; private: int n; Student *p;/学生类指针;/*输出全部学生信息*/void Manage:show() int i; coutthe student are endl name number age sex gradeendl; for(i=0;in;i+) pi.dis
13、play();/*查找特定学生*/int Manage:find(long int num) for(int i=0;in;i+) if(num=pi.get_student_number() return i+1; return 0;/*修改学生信息*/void Manage:change() long int num; coutplease input the student number(-1 cancle)num; if(find(num) pfind(num)-1.display(); pfind(num)-1.alter(); return ; coutcant find the
14、studentendl;/*排序*/void Manage:sort() int k,j; Student temp; for(int i=0;in-1;i+) k=i; for(j=i+1;jpj.get_student_number() k=j; if(k!=i) temp=pi; pi=pk; pk=temp; /*主函数*/int main() int m; Manage manager; coutdata input succeedendl; coutPlease input the function you want to callendl 1.show 2.alter 3.sor
15、t 4.find 0.exitm; while(m) switch(m) case 1:manager.show();break; case 2:manager.change();break; case 3:manager.sort();break; case 4:manager.get_student();break; default:coutenter errorendl; coutPlease input the function you want to callendl 1.show 2.alter 3.sort 4.find 0.exitm; return 0;六、程序运行结果1.导入学生信息;2. 选项2,改变某个学生的信息;3. 选择某个信息,进行更改;4. 更改完成后,显示信息以确认修改是否成功;5. 修改成功,选择3,进行排序;6. 选择4,查找某一个学生信息;7. 查找成功,退出即可,文件中的信息也被改变。七、程序调试主要问题及解决方案访问性的判断出现问题,多次修改函数。八、 老师评阅意见 老师对设计思路提出了意见,根据老师的意见做出了相应的修改。-
限制150内