《学生信息管理系统(面向对象设计c++)》由会员分享,可在线阅读,更多相关《学生信息管理系统(面向对象设计c++)(14页珍藏版)》请在金锄头文库上搜索。
1、/*2014/05/27学生信息管理系统源码(面向对象设计c+)for act_head*/一、#ifndef _ACT_H#define _ACT_H#includestd.husing namespace std;class Actprivate:int top;/数组下表指示器Student std1000;public:void add();void display();void del();void query();Student *querybynum(long num);Student *querybyname(char name);void modif();ostream& o
2、perator( ostream& os, Student& t ) long num;string name;/!/char name50;/error!char sex,c=y;int age;int tag; num=t.getnum();name=t.getname(); sex=t.getsex();age=t.getage();tag=t.gettag();os num name sex age tag operator.istream& operator( istream& is, Student& t ) long num;char name50;char sex,c=y;in
3、t age;int tag; isnumnamesexagetag; t.setnum(num);t.setname(name);t.setsex(sex);t.setage(age);t.settag(); return is ;void Act:add()Student s,s1;long num;char name50;char sex,c=y;int age;int tag;ofstream file(std.txt,ios:app);/追加!不同于ate!打开一个输出文件用于在文件尾添加数据while(1)couts;cinnumnamesexage; s.setnum(num);s
4、.setname(name);s.setsex(sex);s.setage(age);s.settag();files;cout学生信息添加成功n;coutc;if(c=n|c=N)break;file.close();void Act:display()top=-1;Student s1000,s1;/sn,n不能太大!ifstream file(std.txt);/fstream file(d:std.txt,ios_base:out);while(1)/file.read(char*)&s,sizeof(s);/file.read(reinterpret_cast(&s),sizeof(
5、s); files1;if(!file.eof()break;/安排位置要注意,以防多输出随机数据top+;couttt第top+1个学生信息:(学号、姓名、性别、年龄、标识符)nendl;couttts1endl;stop=s1; file.close();void Act:query()int c2;Student* s;/一个临时的指针cout1 按学号来查询:endl;cout2 按姓名来查询:endl;coutc2;switch(c2)case 1:coutnum;s=querybynum(num);if(s=NULL)cout在文件中不含有该生信息.endl;elsecoutset
6、w(10)学号setw(10)姓名setw(10)性别setw(10)年龄endl;cout-tdisplay();break;case 2:coutname;s=querybyname(name);if(s=NULL)cout在文件中不含有该生信息.endl;elsecoutsetw(10)学号setw(10)姓名setw(10)性别setw(10)年龄endl;cout-tdisplay();break;default:cout输入有误!请重新输入!n;break;/根据指定学号进行查找Student *Act:querybynum(long num)int top=-1;Student
7、s;/couthehes;while(!file.eof()/file.read(char*)&s,sizeof(s); files; top+;/couts.getnum()hejooun;stdtop=s; file.close ();/coutheheendl;for(int i=0;is;if(!file)break;top+;stdtop=s; file.close();for(int i=0;i=top;i+)if(strcmp(stdi.getname(),name)=0&stdi.gettag()=0)return &stdi;return NULL;/找不到,返回一个NULL
8、值void Act:modif()long num;char name50;char sex;int age;Student* s;char yn;/y or n cout请输入要修改学生的学号: num;s=querybynum(num);if(s=NULL)cout在数据库中不含有该生信息.endl;elsecout学生的学号是否需被修改?(y/n)yn;if(yn=Y|yn=y)cout请输入学生的新学号:num;s-setnum(num);cout学生的姓名是否需被修改?(y/n)yn;if(yn=Y|yn=y)cout请输入学生的新姓名:name;s-setname(name);co
9、ut学生的性别是否需被修改?(y/n)yn;if(yn=Y|yn=y)cout请输入学生的新性别:sex;s-setsex(sex);cout学生的年龄是否需被修改?(y/n)yn;if(yn=Y|yn=y)cout请输入学生的新年龄:age;s-setage(age);cout学生信息修改完毕,修改后的信息如下:nnn;coutsetw(10)学号setw(10)姓名setw(10)性别setw(10)年龄endl;cout-tdisplay();/file*s/error!/老师,文件的输出,修改后的数据该如何输出,指针不是很会用诶 ofstream file(std.txt); for(int i=0;i=to