1、class personpublic: void add();protected: char name10;char sex3;这个类设计得很简单,因为它包含student类的基本信息,通过公有继承,直接应用person类的成员函数及其变量。其中的数据成员含义如下:用户姓名:用name字符数组来表示,或者直接使用string类型的变量来存放用户性别:用sex字符数组来表示,或者直接使用string类型的变量来存放为了对person类的信息进行必要的操作,最主要是添加函数:void add();/主要是输入姓名,性别的基本信息。为了实现学生管理系统的基本功能,主要是通过建立一个student类的
2、成员函数来实现它。所以每个student类的成员函数都非常重要,它直接影响要功能的实现。 class student:public person/继承 person 类 void add2(); void addban(); void del(); void change(); void menue(); void reader(); void searchname(); void searchban(); void searchnumber(); void disp();private: int number;char xibie10;int ban;/定义学号 系别 班级其中数据成员的含义
3、如下:number: 用来存放一个学生的学号。xibie:用来存放一个学生的系别。ban:用来存放一个学生的班级。其中的成员函数解释如下:/写入函数/增加班/删除函数/改变函数/主菜单/次菜单/查询姓名/查询班级/查询学号/显示类体外定义了一个比较函数bool comp(char s1,char s2);/比较两个字符串相等详细设计Person类的实现 void add()/写入函数 coutname;请输入性别:sex; Student类的实现void student:disp()/显示 cout姓名:name ;性别:sex班级:ban学号:number系别:xibienumber;/输入
4、学号请输入系别:xibie;/输入系别请输入班级 ban;/输入班级add2()/写入函数 student a; a.add(); fstream file(student.txt,ios:binary|ios:out|ios:app); /二进制打开文件,指针指向文件尾 file.write(char*)&a,sizeof(a);/把类信息写入文件 file.close(); /关闭文件searchname()/按姓名查询请输入所要查询的学生姓名: char name210;cinname2;in);/二进制打开文件,指针在文件头 file.read(char*)& /读取类信息 while
5、(!file.eof() /判断文件指针是否到文件尾 if(comp(a.name,name2) /判断输入的字符是否与文件重点一样 a.disp(); /如一样的话,显示信息 file.read(char*)&/如果指针没到文件尾,继续读取searchban()/按班级查询请输入所要查询的学生班级: int ban2;ban2; /输入年龄 /第一个学生类的对象 /二进制打开文件。指针在文件头file.eof() /判断指针是否在文件尾 if(a.ban=ban2) /判断输入年龄是否与文件中的年龄一样 /如果一样的话,显示信息 /如果指针没到文件尾,继续读取searchnumber()/按
6、学号查询请输入所要查询的学生编号: int number2;number2; /输入学号 if(a.number=number2) /判断输入的学号是否与文件中的一样del()/删除函数 static char read_name10; /定义静态变量 static char read_sex3; static int read_ban; static int read_number; static char read_xibie10; int n; int recsize=sizeof(read_name)+sizeof(read_sex)+sizeof(int)+sizeof(int)+s
7、izeof(read_xibie); /一个人的信息的长度 strcpy(name,); /删除用空字符和0来代表的, strcpy(sex, ban=0; number=0; strcpy(xibie,student2.txtendl请输入你要删除第几位学生的信息:n;/输入第几个学生 file.seekp(n-1)*recsize,ios:beg);/指向功能 file.write(name,10);/把空字符写入文件 file.write(sex,3); file.write(char*)&ban,sizeof(int);number,sizeof(int); file.write(xi
8、bie,10);该学生删除成功 /提示change() /修改函数 static int read_year; int n; fstream file(in|ios:out);请输入你要修改第几位学生的信息: /定位的位置输入你要修改的信息: student a;/定义学生对象 a.add(); /调用写入函数 file.write(char*)(&a),sizeof(a);/写入对象 file.close();/关闭文件该学生信息修改成功addban() int c; char b; char y;输入你要建立的班级c;输入这个班的成员继续,输入yb; while(b=y) a.add2()
9、;继续?输入ymenue() 1 添加学生信息 2 修改学生信息 3 删除学生信息 4 查询学生信息 5 新建班级 6 退出系统 reader()1 按姓名查询2 班级查询3 按学号查询4 退出 类外函数的实现bool comp(char s1,char s2) /比较文件中字符和输入的字符是否相同 int i=0; while(s1i!=0&s2i!s1i=s2i) i+; if(s1i= &s2i= return 1; else return 0;程序测试/* * 测试主函数*/ void main() int x1,x2; do a.menue();请输入操作号:x1;/输入选项 swi
10、tch(x1)/主菜单选择 case 1: a.add2 (); break; case 2: a.change(); case 3: a.del(); case 4: do a.reader(); coutx2; switch(x2) case 1: a.searchname(); break; case 2: a.searchban(); case 3: a.searchnumber(); while(x2!=4);break; case 5: a.addban(); while(x1!=6);个人体会通过这次课程设计,我更加深刻的知道了我们学的c+和我们的生活密切相连,所以更应该注意平时
11、上课各种小知识点的积累。然后上机具体操作的情况又与笔试有很大的不同,因为通过键盘操作,更容易出错。所以我们平时在学习的时候,就应该做到边学边编,如果很久没有接触到c+的编译环境,就会出现不知道从何如手。另外,程序的变化太大拉,它需要我们拓展课外知识,所以仅靠在课堂上的时间学好它是不现实的。有很多小的技巧,以及编程思想需要我们自己去领悟,这要求我们要有很好的自学能力。比如说这次变成如果没有掌握好用2进制的方式输入文件的话,就很难编出能实现功能的程序编程最重要的是思路清晰,条理清楚,只有思路比较清楚的条件下,进展才比较顺利。并且,在编译过程中遇到的错误也要耐心去修改,并且记住这相应的错误代码,以便以后遇到相同的情况,知道怎么修正。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1