c语言问题100积分奖励

给您去年开始设计课程。希望能帮到你。

//学生信息管理系统。cpp:定义控制台应用程序的入口点。

//

#包含" stdafx.h "

# include & ltiostream & gt

# include & ltfstream & gt

# include & lt字符串& gt

# include & ltsstream & gt

# include & ltiomanip & gt

# include & ltvector & gt

# include & lt算法& gt

使用命名空间std

////////////////////////////////////////////////////////////////////////

班级学生{

string _ ID

字符串SequenceNumber

字符串名称;

int math_score,phys_score,math1_score,comp_score,engl _ score

公共:

弦与弦。ID();

弦与弦。SN();

弦与弦。name();

int & amp运算符[](int index);//运算符[]重载

};

//********************************

弦与弦。CStudent::ID(){

return _ ID

}

弦与弦。CStudent::SN(){

返回序列号;

}

弦与弦。CStudent::Name(){

返回名称;

}

int & ampc student::operator[](int index){

开关(索引)

{

案例0:

返回math _ score

打破;

案例1:

返回phys _ score

打破;

案例二:

return math 1 _ score;

打破;

案例三:

返回comp _ score

打破;

案例4:

返回engl _ score

打破;

默认值:

抛出“你必须给出不大于4且不小于0的指数!”;

打破;

}

}

/////////////////////////////////////////////////////////////////////////////

类别CCredit{

double math,phys,math1,comp,engl

公共:

CCredit();

双& amp运算符[](int index);//运算符[]重载

};

//**************************************************

CCredit::CCredit():math(7.0),phys(4.0),comp(4.0),math1(4.0),engl(6.0){}

双& ampCCredit::operator[](int index){

开关(索引)

{

案例0:

返回数学;

打破;

案例1:

返回phys

打破;

案例二:

return math 1;

打破;

案例三:

退货补偿;

打破;

案例4:

返回英语;

打破;

默认值:

抛出“你必须给出不大于4且不小于0的指数!”;

打破;

}

}

/////////////////////////////////////////////////////////////////////////////

班级管理学生{

受保护:

静态向量& lt学生& gt数据;//存储学生原始成绩。

void on brower();//浏览数据

void OnFind();//查找数据

void on invalidateinput(char *);//输入错误提示

void OnAddData();//添加数据

bool on save();//保存

cmanagementstudent * parent;

公共:

静态字符串标题[8];//课程名称

静态int wid[8];//打印宽度

cmanagementstudent(cmanagementstudent * p = 0):parent(p){ }

bool initial data();//将数据读入内存

虚拟void ShowMenu();//显示菜单

虚拟void do event(int ID);//响应用户输入

};

cmanagementstudent * pBase;

牡蛎&;操作员& lt& lt(ostream & ampos,const CStudent & ampst)

{

CStudent obj = st

os & lt& ltsetw(cmanagementstudent::wid[0])& lt;& ltobj。ID();

os & lt& ltsetw(cmanagementstudent::wid[1])& lt;& ltobj。SN();

os & lt& ltsetw(cmanagementstudent::wid[2])& lt;& ltobj。name();

os & lt& ltsetw(cmanagementstudent::wid[3])& lt;& ltobj[0];

os & lt& ltsetw(cmanagementstudent::wid[4])& lt;& ltobj[1];

os & lt& ltsetw(cmanagementstudent::wid[5])& lt;& ltobj[2];

os & lt& ltsetw(cmanagementstudent::wid[6])& lt;& ltobj[3];

os & lt& ltsetw(cmanagementstudent::wid[7])& lt;& ltobj[4];

返回OS;

}

///////////////////////////////////////////////////////////

向量& lt学生& gtcmanagement student::data;

string cmanagement student::title[8]= { "学号"、"序号"、"姓名"、"高等数学"、"普通物理"、"离散数学"、"计算机"、"英语" };

int cmanagement student::wid[8]= { 12,6,8,10,10,10,8,6 };

void cmanagementstudent::ShowMenu(){

cout & lt& ltendl

cout & lt& lt“* * * * * * * * * * * * * * * * * * * *学生成绩管理系统* * * * * * * * * * * * * * \ n”;

cout & lt& lt”1预览\t2查找\t3添加\t4保存\t0退出\ n”;

cout & lt& lt“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n”;

}

void cmanagementstudent::OnInvalidateInput(char * str){

cout & lt& ltstr & lt& ltendl

}

boolcmanagestudent::initial data()//用于初始化的变量数据。

{

ifstream fin(" score . txt ");

if(fin.fail()){

cout & lt& lt"找不到数据文件"

返回false

}

字符串s;//定义一个读取文件每一行的string对象。

getline(fin,s);//看标题行,没必要。

while(getline(fin,s)){

istringstream istr

学生街;

istr & gt& gtST . ID();

istr & gt& gtST . SN();

istr & gt& gt圣名();

for(int I = 0;我& lt5;i++)

istr & gt& gtST[I];

data . push _ back(ST);

}

fin . close();

返回true

}

void cmanagementstudent::OnAddData()

{

char ch

if(data.size () == 0)

{

{

学生街;

cout & lt& lt"请输入学生姓名:";

CIN & gt;& gt圣名()

cout & lt& lt"请输入学号:";

CIN & gt;& gtST . ID();

ST . SN()= 1;

for(int I = 0;我& lt5;i++)

{

cout & lt& lt"请输入"

CIN & gt;& gtST[I];

}

cout & lt& lt“输入是否正确?y表示肯定;r表示重新输入;n表示放弃\ n ";

CIN & gt;& gtch;

if(ch=='y ')

data . push _ back(ST);

} while(ch = = ' r ');

}

其他

{

做{

学生街;

ST . ID()= data[data . size()-1]。ID();

st.ID()[st.ID()。size()-1]++;

ST . SN()= data[data . size()-1]。SN();

st.SN()[st.SN()。size()-1]++;

cout & lt& lt"请输入学生姓名:";

CIN & gt;& gt圣名();

for(int I = 0;我& lt5;i++)

{

cout & lt& lt"请输入"

CIN & gt;& gtST[I];

}

cout & lt& lt“输入是否正确?y表示肯定;r表示重新输入;n表示放弃\ n ";

CIN & gt;& gtch;

if(ch=='y ')

data . push _ back(ST);

} while(ch = = ' r ');

}

}

bool cmanagementstudent::on save()

{

of stream fout(" score . txt ");

if(fout.fail()){

cout & lt& lt"无法保存"

返回false

}

for(int I = 0;我& lt8;i++)

fout & lt& lttitle[I]& lt;& lt" ";

fout & lt& ltendl

向量& lt学生& gt*迭代器it = data . begin();

而(它!=data.end()){

CStudent st = * it

fout & lt& ltST . ID();

fout & lt& lt" " " & lt& ltST . SN();

fout & lt& lt" " " & lt& lt圣名();

for(int I = 0;我& lt5;i++)

fout & lt& lt" " " & lt& ltST[I];

fout & lt& ltendl

it++;

}

fout . close();

返回true

}

void cmanagementstudent::do event(int ID){

开关(ID)

{

案例1:

on brower();

打破;

案例二:

OnFind();

打破;

案例三:

OnAddData();

打破;

案例4:

on save();

打破;

案例0:

cout & lt& lt”再见\ n”;

退出(0);

默认值:

OnInvalidateInput(" input 1,2,3,4,0 ");

打破;

}

}

/////////////////////////////////////////////////////////////

类CFind:public cmanagement student {

void on find name();

void onfindhhighscore();

void OnFindLowScore();

公共:

CFind(cmanagementstudent * p = 0):cmanagementstudent(p){ }

void ShowMenu();//显示菜单

void do event(int ID);//响应用户输入

};

//////////////////////////////////////////////////////////

void CFind::ShowMenu(){

cout & lt& ltendl

cout & lt& lt"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *";

cout & lt& lt”1按名称查找\t2查找高分\t3查找低分\t0退出\ n”;

cout & lt& lt“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n”;

}

void CFind::DoEvent(int ID)

{

开关(ID)

{

案例1:

on find name();

打破;

案例二:

onfindhhighscore();

打破;

案例三:

OnFindLowScore();

打破;

案例0:

cout & lt& lt”退出查找菜单\ n”;

pBase = parent

删除这个;

打破;

默认值:

OnInvalidateInput(" input 1,2,3,0 ");

打破;

}

}

void CFind::OnFindName(){

字符串名称;

cout & lt& lt"输入您要查找的学生的姓名:";

CIN & gt;& gt姓名;

向量& lt学生& gt*迭代器it = data . begin();

字符串tmp

bool first = true

而(它!=data.end()){

如果((*它)。Name()==name)

{

如果(第一)

{

for(int I = 0;我& lt8;i++)

cout & lt& ltsetw(wid[I])& lt;& lt标题[I];

cout & lt& ltendl

first = false

}

cout & lt& lt(*it)。name()& lt;& ltendl

}

it++;

}

}

void CFind::onfindhhighscore(){

字符串score _ name

cout & lt& lt”输入课程名称:“;

CIN & gt;& gtscore _ name

int num=0,index = 3;

while(index & lt;8)//计算用户进入了哪门课程。

{

if(标题[索引]= =分数_名称)

打破;

index++;

}

向量& lt学生& gt*迭代器it = data . begin();

if(index & gt;=8){

cout & lt& lt”课程名称不正确\ n”;

返回;

}

int分数;

cout & lt& lt"输入分数:";

CIN & gt;& gt分数;

bool first = true

而(它!=data.end()){

if((* it)[index-3]& gt;=分数){

如果(第一个){

first = false

for(int I = 0;我& lt8;i++)

cout & lt& ltsetw(wid[I])& lt;& lt标题[I];

cout & lt& ltendl

}

cout & lt& lt* it & lt& ltendl

num++;

}

it++;

}

cout & lt& lt" \n***已经"

}

void CFind::OnFindLowScore()

{

字符串score _ name

cout & lt& lt”输入课程名称:“;

CIN & gt;& gtscore _ name

int num=0,index = 3;

while(index & lt;8)//计算用户进入了哪门课程。

{

if(标题[索引]= =分数_名称)

打破;

index++;

}

向量& lt学生& gt*迭代器it = data . begin();

if(index & gt;=8){

cout & lt& lt”课程名称不正确\ n”;

返回;

}

int分数;

cout & lt& lt"输入分数:";

CIN & gt;& gt分数;

bool first = true

而(它!=data.end())

{

if((* it)[index-3]& lt;=分数)

{

如果(第一个){

first = false

for(int I = 0;我& lt8;i++)

cout & lt& ltsetw(wid[I])& lt;& lt标题[I];//输出每个符合条件的学生的信息。

cout & lt& ltendl

}

cout & lt& lt* it & lt& ltendl

num++;

}

it++;

}

cout & lt& lt" \n***已经"

}

/////////////////////////////////////////////

class c brower:public cmanagement student {

void OnOrigin();

void on average();

void OnScoreAnasys();

void on credit();

公共:

CB rower(cmanagementstudent * p = 0):cmanagementstudent(p){ }

void ShowMenu();//显示菜单

void do event(int ID);//响应用户输入

};

//////////////////////////////////////////////////////////////

void CBrower::ShowMenu(){

cout & lt& ltendl

cout & lt& lt"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

cout & lt& lt”1原始成绩\t2平均成绩\t3成绩分析\t4学分\t0退出\ n”;

cout & lt& lt“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n”;

}

void CBrower::DoEvent(int ID){

开关(ID){

案例1:

OnOrigin();

打破;

案例二:

on average();

打破;

案例三:

OnScoreAnasys();

打破;

案例4:

OnCredit();

打破;

案例0:

cout & lt& lt”退出预览菜单\ n”;

pBase = parent

删除这个;

打破;

默认值:

OnInvalidateInput ("input、、、");

打破;

}

}

void CBrower::OnOrigin(){

向量& lt学生& gt*迭代器it = data . begin();

for(int I = 0;我& lt8;i++)

cout & lt& ltsetw(wid[I])& lt;& lt标题[I];

cout & lt& ltendl

而(它!=data.end()){

cout & lt& lt* it & lt& ltendl

it++;

}

}

void CBrower::OnAverage()

{

向量& lt学生& gt*迭代器it = data . begin();

for(int I = 0;我& lt8;i++)

cout & lt& ltsetw(wid[I])& lt;& lt标题[I];

cout & lt& lt”平均分”;

而(它!= data.end())

{

double sum = 0;

for(int I = 3;我& lt8;i++)

{

sum+=(* it)[I-3];

}

cout & lt& lt* it & lt& lt" " " & lt& ltsum/5 & lt;& ltendl

it++;

}

cout & lt& ltendl

}

void CBrower::OnScoreAnasys()

{

向量& lt学生& gt*迭代器it = data . begin();

cout & lt& lt“* * * * * * * * * * * * * *个人成绩分析* * * * * * * * * * * * \ n”;

for(int I = 0;我& lt3;i++)

cout & lt& ltsetw(wid[I])& lt;& lt标题[I];

cout & lt& ltendl

而(它!= data.end())

{

cout & lt& lt(*it)。ID()& lt;& lt" ";

cout & lt& lt(*it)。SN()& lt;& lt" ";

cout & lt& lt(*it)。name()& lt;& lt" " " & lt& ltendl

int count _ good = 0;

int count _ bad = 0;

cout & lt& lt“优异的成绩”:

for(int I = 3;我& lt8;i++)

{

if((* it)[I-3]& gt;= 90)

{

cout & lt& lttitle[I]& lt;& lt":" & lt& lt(* it)[I-3]& lt;& lt" ";

count _ good++;

}

}

cout & lt& lt" \n一个* * * "

cout & lt& lt“不及格”:

for(int I = 3;我& lt8;i++)

{

if((* it)[I-3]& lt;= 60)

{

cout & lt& lttitle[I]& lt;& lt":" & lt& lt(* it)[I-3]& lt;& lt" ";

count _ bad++;

}

}

cout & lt& lt" \n一个* * * "

it++;

cout & lt& lt“-”& lt;& ltendl

}

}

void CBrower::OnCredit()

{

向量& lt学生& gt*迭代器it = data . begin();

for(int I = 0;我& lt8;i++)

cout & lt& ltsetw(wid[I])& lt;& lt标题[I];

cout & lt& ltendl

而(它!=data.end())

{

CCredit信用;

cout & lt& ltsetw(wid[0])& lt;& lt(*it)。ID()& lt;& ltsetw(wid[1]);

cout & lt& lt(*it)。SN()& lt;& lt" ";

cout & lt& ltsetw(wid[1])& lt;& lt(*it)。name()& lt;& ltsetw(wid[1]);

for(int I = 0;我& lt5;i++)

{

if((* it)[I]& gt;= 60)

cout & lt& ltcredit[I]& lt;& ltsetw(wid[I+4]);

其他

cout & lt& lt" 0 " & lt& ltsetw(wid[I+4]);

}

it++;

cout & lt& ltendl

}

}

void cmanagementstudent::on brower(){

pBase = new c brower(pBase);

}

void cmanagementstudent::OnFind()

{

pBase = new CFind(pBase);

}

//////////////////////////////////////////////

int main()

{

pBase = new cmanagementstudent;

if(pBase->;InitialData()){

int ID

while(1){

pBase->;ShowMenu();

CIN & gt;& gtID;

pBase->;do event(ID);

}

}

删除pBase

返回0;

}

你需要设置一个socre.txt来初步存储学生信息。

让我给你看一个例子。

学号姓名高等数学普通物理离散数学计算机英语

200611002陈小宝

200611003 3陈大龙81 83 97 85 73

200611004 4陈文83 49 79 82 80

200611005 5程正兴79 80 91 77 76

不懂可以问我。