学生信息管理系统面向对象设计c.docx

上传人:b****8 文档编号:9683201 上传时间:2023-05-20 格式:DOCX 页数:20 大小:17.92KB
下载 相关 举报
学生信息管理系统面向对象设计c.docx_第1页
第1页 / 共20页
学生信息管理系统面向对象设计c.docx_第2页
第2页 / 共20页
学生信息管理系统面向对象设计c.docx_第3页
第3页 / 共20页
学生信息管理系统面向对象设计c.docx_第4页
第4页 / 共20页
学生信息管理系统面向对象设计c.docx_第5页
第5页 / 共20页
学生信息管理系统面向对象设计c.docx_第6页
第6页 / 共20页
学生信息管理系统面向对象设计c.docx_第7页
第7页 / 共20页
学生信息管理系统面向对象设计c.docx_第8页
第8页 / 共20页
学生信息管理系统面向对象设计c.docx_第9页
第9页 / 共20页
学生信息管理系统面向对象设计c.docx_第10页
第10页 / 共20页
学生信息管理系统面向对象设计c.docx_第11页
第11页 / 共20页
学生信息管理系统面向对象设计c.docx_第12页
第12页 / 共20页
学生信息管理系统面向对象设计c.docx_第13页
第13页 / 共20页
学生信息管理系统面向对象设计c.docx_第14页
第14页 / 共20页
学生信息管理系统面向对象设计c.docx_第15页
第15页 / 共20页
学生信息管理系统面向对象设计c.docx_第16页
第16页 / 共20页
学生信息管理系统面向对象设计c.docx_第17页
第17页 / 共20页
学生信息管理系统面向对象设计c.docx_第18页
第18页 / 共20页
学生信息管理系统面向对象设计c.docx_第19页
第19页 / 共20页
学生信息管理系统面向对象设计c.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

学生信息管理系统面向对象设计c.docx

《学生信息管理系统面向对象设计c.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统面向对象设计c.docx(20页珍藏版)》请在冰点文库上搜索。

学生信息管理系统面向对象设计c.docx

学生信息管理系统面向对象设计c

/*

2014/05/27

学生信息管理系统源码(面向对象设计c++)

foract_head

*/

一、#ifndef_ACT_H

#define_ACT_H

#include"std.h"

usingnamespacestd;

classAct

{

private:

inttop;//数组下表指示器

Studentstd[1000];

public:

voidadd();

voiddisplay();

voiddel();

voidquery();

Student*querybynum(longnum);

Student*querybyname(charname[]);

voidmodif();

};

ostream&operator<<(ostream&os,Student&t)

{

longnum;

stringname;//!

//charname[50];//error!

charsex,c='y';

intage;

inttag;

num=t.getnum();

name=t.getname();

sex=t.getsex();

age=t.getage();

tag=t.gettag();

os<

returnos;

}

//Non-memberoverloaded>>operator.

istream&operator>>(istream&is,Student&t)

{

longnum;

charname[50];

charsex,c='y';

intage;

inttag;

is>>num>>name>>sex>>age>>tag;

t.setnum(num);

t.setname(name);

t.setsex(sex);

t.setage(age);

t.settag();

returnis;

}

voidAct:

:

add()

{

Students,s1;

longnum;

charname[50];

charsex,c='y';

intage;

inttag;

ofstreamfile("std.txt",ios:

:

app);//追加!

不同于ate!

打开一个输出文件用于在文件尾添加数据

while

(1)

{

cout<<"请输入一个学生信息:

(学号、姓名、性别(W:

代表女性woman,M:

代表男性man)、年龄)";

//file>>s;

cin>>num>>name>>sex>>age;

s.setnum(num);

s.setname(name);

s.setsex(sex);

s.setage(age);

s.settag();

file<

cout<<"学生信息添加成功\n";

cout<<"是否继续输入学生信息:

(Y/N)";

cin>>c;

if(c=='n'||c=='N')

break;

}

();

}

voidAct:

:

display()

{

top=-1;

Students[1000],s1;//s[n],n不能太大!

ifstreamfile("std.txt");

//fstreamfile("d:

\\std.txt",ios_base:

:

out);

while

(1)

{

//((char*)&s,sizeof(s));

//(reinterpret_cast(&s),sizeof(s));

file>>s1;

if(!

())

break;//安排位置要注意,以防多输出随机数据

top++;

cout<<"\t\t第"<

(学号、姓名、性别、年龄、标识符)\n"<

cout<<"\t\t"<

s[top]=s1;

}

();

}

voidAct:

:

query()

{

intc2;

Student*s;//一个临时的指针

cout<<"1按学号来查询:

"<

cout<<"2按姓名来查询:

"<

cout<<"\t\t请选择:

\n";

cin>>c2;

switch(c2)

{

case1:

cout<<"请输入要查询的学生的学号:

";

longnum;

cin>>num;

s=querybynum(num);

if(s==NULL)

cout<<"在文件中不含有该生信息..."<

else

{cout<

cout<<"----------------------------------------------------------\t"<

s->display();

break;

}

case2:

cout<<"请输入要查询的学生的姓名:

";

charname[50];

cin>>name;

s=querybyname(name);

if(s==NULL)

cout<<"在文件中不含有该生信息..."<

else

cout<

cout<<"----------------------------------------------------------\t"<

s->display();

break;

default:

cout<<"输入有误!

请重新输入!

\n";

break;

}

}

//根据指定学号进行查找

Student*Act:

:

querybynum(longnum)

{

inttop=-1;

Students;

//cout<<"hehe"<

ifstreamfile("std.txt");

//file>>s;

while(!

())

{

//((char*)&s,sizeof(s));

file>>s;

top++;

//cout<

std[top]=s;

}

();

//cout<<"hehe"<

for(inti=0;i<=top;i++)

if(std[i].getnum()==num)

return&std[i];

returnNULL;//找不到,返回一个NULL值

}

Student*Act:

:

querybyname(charname[])

{

inttop=-1;

Students;

ifstreamfile("std.txt",ios:

:

binary);

while

(1)

{

file>>s;

if(!

file)

break;

top++;

std[top]=s;

}

();

for(inti=0;i<=top;i++)

if(strcmp(std[i].getname(),name)==0&&std[i].gettag()==0)

return&std[i];

returnNULL;//找不到,返回一个NULL值

}

voidAct:

:

modif()

{

longnum;

charname[50];

charsex;

intage;

Student*s;

charyn;//yorn

cout<<"请输入要修改学生的学号:

"<

cin>>num;

s=querybynum(num);

if(s==NULL)

cout<<"在数据库中不含有该生信息..."<

else

{

cout<<"学生的学号是否需被修改?

(y/n)"<

cin>>yn;

if(yn=='Y'||yn=='y')

{

cout<<"请输入学生的新学号:

"<

cin>>num;

s->setnum(num);

}

cout<<"学生的姓名是否需被修改?

(y/n)"<

cin>>yn;

if(yn=='Y'||yn=='y')

{

cout<<"请输入学生的新姓名:

"<

cin>>name;

s->setname(name);

}

cout<<"学生的性别是否需被修改?

(y/n)"<

cin>>yn;

if(yn=='Y'||yn=='y')

{

cout<<"请输入学生的新性别:

"<

cin>>sex;

s->setsex(sex);

}

cout<<"学生的年龄是否需被修改?

(y/n)"<

cin>>yn;

if(yn=='Y'||yn=='y')

{

cout<<"请输入学生的新年龄:

"<

cin>>age;

s->setage(age);

}

cout<<"学生信息修改完毕,修改后的信息如下:

\n\n\n";

cout<

cout<<"----------------------------------------------------------\t"<

s->display();

//file<<*s//error!

//老师,文件的输出,修改后的数据该如何输出,指针不是很会用诶

ofstreamfile("std.txt");

for(inti=0;i<=top;i++)

{

//if(std[i].gettag()==0)//只有没删除的才存盘!

file<

}

();

}

}

voidAct:

:

del()

{

longnum;

Students,*p=NULL;

intk=0,i;

charyn;

ifstreamfile("std.txt");

while

(1)

{

cout<<"请输入要删除学生的学号:

\n";

cin>>num;

inttop=-1;

while(!

())

{

file>>s;

top++;

std[top]=s;

}

();

for(inti=0;i<=top;i++)

if(std[i].getnum()==num)

{

k=i;

break;

}

if(k<0)

{

cout<<"输入有误!

\n";

}

else

{

for(i=k;i

{

std[i]=std[i+1];

}

top--;

}

ofstreamfile("std.txt");

for(i=0;i

file<

cout<<"删除成功!

\n";

//for(i=0;i

//std[i]->diplay();

();

cout<<"是否继续删除?

(y/n):

\n";

cin>>yn;

if(yn=='n'||yn=='N')

break;

}

}

#endif/*_ACT_H*/

二、#ifndef_HEADER_H

#define_HEADER_H

#include

#include

#include

#include

#endif/*_HEADER_H*/

三、

/*

2014/05/27

学生信息管理系统

forstd_head

*/

#ifndef_STD_H

#define_STD_H

#include"header.h"

usingnamespacestd;

classStudent

{

private:

longnum;

charname[50];

charsex;

intage;

inttag;//定义标志位——0:

未删除;1:

已删除

public:

voidsetnum(longn);

voidsetname(charname[]);

voidsetsex(charsex);

voidsetage(intage);

voidsettag();//此处不用参数,写在具体的函数体内,不需要用户知道

longgetnum();

char*getname();//一定不能写成chargetname()

chargetsex();

intgetage();

intgettag();

voiddisplay();

//voidadd(longnum,charname[],charsex,intage);

voiddel();

};

voidStudent:

:

setnum(longn)

{

//this->num=n;//this指针存在于类的成员函数中,指向被调用函数所在的类实例的地址。

num=n;

}

voidStudent:

:

setname(charname[])

{

strcpy(this->name,name);

//strcpy(name,nam);

}//!

voidStudent:

:

setsex(charsex)

{

this->sex=sex;//只是因为参数跟类成员变量重名了,得加this

}

voidStudent:

:

setage(intage)

{

this->age=age;

}

 

voidStudent:

:

settag()

{

this->tag=0;

}

longStudent:

:

getnum()

{

returnnum;

}

char*Student:

:

getname()

{

returnname;

}//!

charStudent:

:

getsex()

{

returnsex;

}

intStudent:

:

getage()

{

returnage;

}

intStudent:

:

gettag()

{

returntag;

}

voidStudent:

:

display()

{

cout<

cout<<"----------------------------------------------------------\t"<

}

/*voidStudent:

:

add(longnum,charname[],charsex,intage)

{

this->num=num;

strcpy(this->name,name);

this->sex=sex;

this->age=age;

this->tag=0;

}*/

voidStudent:

:

del()

{

this->tag=1;

}

 

#endif/*_STD_H*/

四、

/*

2014/05/27

学生信息管理系统

forstd_head

*/

#ifndef_UI_H

#define_UI_H

#include"header.h"

#include"act.h"

classUi

{

public:

voidmenu();

private:

intc;

};

voidUi:

:

menu()

{

intc;

Actdb;

while

(1)

{

cout<<"\n\n";

cout<<"\t******●欢迎进入济南大学学生信息管理系统******"<

cout<<"\t****●添加学生信息,请按1****"<

cout<<"\t****●显示学生信息,请按2****"<

cout<<"\t****●查询学生信息,请按3****"<

cout<<"\t****●修改学生信息,请按4****"<

cout<<"\t****●删除学生信息,请按5****"<

cout<<"\t****●退出系统,请按0****"<

cout<<"请选择您要进行的操作:

"<

cin>>c;

switch(c)

{

getchar();

case1:

db.add();

break;

case2:

db.display();

break;

case3:

db.query();

break;

case4:

db.modif();

break;

case5:

db.del();

break;

 

case0:

exit(0);

break;

default:

cout<<"输入有误!

请重新输入!

\n"<

break;

}

}

}

 

#endif/*_UI_H*/

五、

/*

2014/05/27

学生信息管理系统

*/

#include

#include"ui.h"

usingnamespacestd;

 

intmain()

{

Uia;

a.menu();

return0;

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2