1、xxxxxxxxxxxxx高级程序设计 C+课程设计题 目: 院 系: 专业年级: 学生姓名: 学号: 指导教师: XXXX 年 XX 月 XX 日简单学籍管理系统需求分析随着计算机的发展,越来越多的学校有自己的学籍管理系统。这样更方便数据的长期保存,更适用于数据的集中处理。通过这个简单的学籍管理系统,可以添加新成员的基本信息,通过其姓名,学号,班级等信息查询这个人的基本信息。可以很方便的进行数据修改,以及数据删除。本系统主要是通过二进制的文件读取,进行输入,输出,以及修改,删除等基本功能。一共涉及到两个类,第一个类是 person 类,主要是成员数据,只有一个添加数据的公有接口。主要是方便第
2、 2 个类 student 对其的继承,继承它的所有成员函数及其成员数据。Person 类的数据成员1 姓名2 性别系统功能包括:1 添加函数概要设计class personpublic: void add();protected:char name10;char sex3;这个类设计得很简单,因为它包含 student 类的基本信息,通过公有继承,直接应用person 类的成员函数及其变量。其中的数据成员含义如下:用户姓名:用 name 字符数组来表示,或者直接使用 string 类型的变量来存放用户性别:用 sex 字符数组来表示,或者直接使用 string 类型的变量来存放为了对 per
3、son 类的信息进行必要的操作,最主要是添加函数:void add();/主要是输入姓名,性别的基本信息。为了实现学生管理系统的基本功能,主要是通过建立一个 student 类的成员函数来实现它。所以每个 student 类的成员函数都非常重要,它直接影响要功能的实现。class student:public person/继承 person 类public: void add();void add2();void addban();void del();void change();void menue();void reader();void searchname();void search
4、ban();void searchnumber();void disp();private:int number;char xibie10;int ban;/定义学号 系别 班级;其中数据成员的含义如下:number: 用来存放一个学生的学号。xibie:用来存放一个学生的系别。ban:用来存放一个学生的班级。其中的成员函数解释如下:void add();/写入函数void add2();/写入函数void addban();/增加班void del();/删除函数void change();/改变函数void menue();/主菜单void reader();/次菜单void search
5、name();/查询姓名void searchban();/查询班级void searchnumber();/查询学号void disp();/显示类体外定义了一个比较函数bool comp(char s1,char s2);/比较两个字符串相等详细设计Person 类的实现void add()/写入函数coutname;coutsex;Student 类的实现void student:disp()/显示coutnumber;/输入学号coutxibie;/输入系别coutban;/输入班级void student:add2()/写入函数student a;a.add();fstream fi
6、le(“student.txt“,ios:binary|ios:out|ios:app); /二进制打开文件,指针指向文件尾file.write(char*)/把类信息写入文件file.close(); /关闭文件void student:searchname()/按姓名查询coutname2;student a;fstream file(“student.txt“,ios:binary|ios:in);/二进制打开文件,指针在文件头file.read(char*) /读取类信息while(!file.eof() /判断文件指针是否到文件尾if(comp(a.name,name2) /判断输入
7、的字符是否与文件重点一样a.disp(); /如一样的话,显示信息file.read(char*)/如果指针没到文件尾,继续读取file.close(); /关闭文件void student:searchban()/按班级查询coutban2; /输入年龄student a; /第一个学生类的对象fstream file(“student.txt“,ios:binary|ios:in); /二进制打开文件。指针在文件头file.read(char*) /读取类信息while(!file.eof() /判断指针是否在文件尾if(a.ban=ban2) /判断输入年龄是否与文件中的年龄一样a.di
8、sp(); /如果一样的话,显示信息file.read(char*) /如果指针没到文件尾,继续读取file.close(); /关闭文件void student:searchnumber()/按学号查询coutnumber2; /输入学号student a; /第一个学生类的对象fstream file(“student.txt“,ios:binary|ios:in); /二进制打开文件。指针在文件头file.read(char*) /读取类信息while(!file.eof() /判断指针是否在文件尾if(a.number=number2) /判断输入的学号是否与文件中的一样a.disp(
9、); /如一样的话,显示信息file.read(char*)/如果指针没到文件尾,继续读取file.close(); /关闭文件void student: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)+sizeof(read_x
10、ibie); /一个人的信息的长度strcpy(name,“); /删除用空字符和 0 来代表的,strcpy(sex,“);ban=0;number=0;strcpy(xibie,“);fstream file(“student2.txt“,ios:binary|ios:in); /二进制打开文件。指针在文件头coutn;/输入第几个学生file.seekp(n-1)*recsize,ios:beg);/指向功能file.write(name,10);/把空字符写入文件file.write(sex,3);file.write(char*)file.write(char*)file.write
11、(xibie,10);file.close();coutn;coutc;coutb;while(b=y)a.add2();coutb;void student:menue() coutx1;/输入选项switch(x1)/主菜单选择case 1:a.add2 ();break;case 2:a.change();break;case 3:a.del();break;case 4:do a.reader();coutx2;switch(x2)case 1:a.searchname();break;case 2:a.searchban();break;case 3:a.searchnumber()
12、;break;while(x2!=4);break;case 5:a.addban();break;while(x1!=6);个人体会通过这次课程设计,我更加深刻的知道了我们学的 c+和我们的生活密切相连,所以更应该注意平时上课各种小知识点的积累。然后上机具体操作的情况又与笔试有很大的不同,因为通过键盘操作,更容易出错。所以我们平时在学习的时候,就应该做到边学边编,如果很久没有接触到 c+的编译环境,就会出现不知道从何如手。另外,程序的变化太大拉,它需要我们拓展课外知识,所以仅靠在课堂上的时间学好它是不现实的。有很多小的技巧,以及编程思想需要我们自己去领悟,这要求我们要有很好的自学能力。比如说这次变成如果没有掌握好用 2 进制的方式输入文件的话,就很难编出能实现功能的程序编程最重要的是思路清晰,条理清楚,只有思路比较清楚的条件下,进展才比较顺利。并且,在编译过程中遇到的错误也要耐心去修改,并且记住这相应的错误代码,以便以后遇到相同的情况,知道怎么修正。