学生成绩管理系统.docx

上传人:b****6 文档编号:5816308 上传时间:2023-01-01 格式:DOCX 页数:10 大小:199.69KB
下载 相关 举报
学生成绩管理系统.docx_第1页
第1页 / 共10页
学生成绩管理系统.docx_第2页
第2页 / 共10页
学生成绩管理系统.docx_第3页
第3页 / 共10页
学生成绩管理系统.docx_第4页
第4页 / 共10页
学生成绩管理系统.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

学生成绩管理系统.docx

《学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统.docx(10页珍藏版)》请在冰豆网上搜索。

学生成绩管理系统.docx

学生成绩管理系统

一:

源代码

#include

#include

#include

#include

using namespace std;

class CData

{

public:

CData(){};

virtual int comparename(CData &) =0;

virtual void show()=0;

virtual ~CData(){};

};

class CNode

{

public:

CNode(){pdata=0;pnext=0;}

CNode(CNode &n);

void inputdata(CData *pd){pdata=pd;}

void shownode(){pdata->show();}

CData *getdata(){return pdata;}

friend class CList;

private:

CData *pdata;

CNode *pnext;

};

CNode:

:

CNode(CNode &n)

{

pdata=n.pdata;

pnext=n.pnext;

}

 

class CList

{

public:

CList(){phead=0;}

~CList(){deletelist();}

void addnode(CNode *pnode);

void deletelist();

CNode *deletenode(CNode *pnode);

CNode *lookup(CData &data);

CNode *getlisthead(){return phead;}

void showlist();

CNode *getnext(CNode *pnode);

private:

CNode * phead;

};

void CList:

:

addnode(CNode *pnode)

{

if(phead==0)

{

phead=pnode;

pnode->pnext=0;

return;

}

else

{

pnode->pnext=phead;

phead=pnode;

}

}

void CList:

:

deletelist()

{

CNode *p1,*p2;

p1=phead;

while(p1)

{

delete p1->pdata;

p2=p1;

p1=p1->pnext;

delete p2;

}

}

CNode *CList:

:

deletenode(CNode *pnode)

{

CNode *p1,*p2;

    p1=phead;

while(p1!

=pnode&&p1->pnext!

=0)

{

p2=p1;

p1=p1->pnext;

}

if(p1==phead)

{

phead=phead->pnext;

return pnode;

}

p2->pnext=p1->pnext;

return pnode;

}

CNode *CList:

:

lookup(CData &data)

{

CNode *p1=phead;

while(p1)

{

if(p1->pdata->comparename(data)==0)

return p1;

        p1=p1->pnext;   

}

return 0;

}

void CList:

:

showlist()

{

if(phead==0)

cout<<"对不起,没有任何记录.\n";

else

{

CNode *p=phead;

    while(p)

{

    p->pdata->show();

    p=p->pnext;

}

}

}

CNode *CList:

:

getnext(CNode *pnode)

{

CNode *p=pnode;

p=p->pnext;

    return p;

}

class Student:

public CData

{

private:

char s_class[17];

char s_num[17];

char s_name[17];

double ele_technique;

double c_program;

double mul_technique;

    double col_english;

double sen_math;

double col_gym;

double marx_economy;

double average;

public:

    Student();

virtual int comparename(CData &);

void show();

void set(char *c,char*n,char *nam,double e,double cp,

double m,double ce,double sm,double cg,double mar,double aver);

};

Student:

:

Student()

{

strcpy(s_class,"\0");

strcpy(s_num,"\0");

strcpy(s_name,"\0");

ele_technique=0;

c_program=0;

mul_technique=0;

col_english=0;

sen_math=0;

col_gym=0;

marx_economy=0;

}

int Student:

:

comparename(CData &data)

{

Student &temp=(Student &)data;

return strcmp(s_name,temp.s_name);

}

void Student:

:

show()

{

cout<

cout<

    cout<

    cout<

}

void Student:

:

set(char *c,char*n,char *nam,double e,double cp,double m,double ce,double sm,double cg,double mar,double aver)

{

strcpy(s_class,c);

strcpy(s_num,n);

strcpy(s_name,nam);

ele_technique=e;

c_program=cp;

mul_technique=m;

col_english=ce;

sen_math=sm;

col_gym=cg;

marx_economy=mar;

average=aver;

}

void print()

{

cout<

cout<

    cout<

    cout<

}

void display(CList &stulist)

{

    print();

stulist.showlist();

cout<

cout<<"按任意键返回主菜单";

getchar();getchar();

}

void add(CList &stulist)

{

CNode *p;

Student *s;

char c[17],n[17],nam[17];

double e,cp,m,ce,sm,cg,mar;float aver;

cout<<"请输入姓名(输入0结束):

";

cin.ignore();

cin.getline(nam,17);

while(strcmp(nam,"0"))

{

cout<<"输入学号:

";cin.getline(n,17);

cout<<"输入班级:

";cin.getline(c,17);

cout<<"输入电子技术成绩:

";cin>>e;

        cout<<"输入C++成绩:

";cin>>cp;

cout<<"输入多媒体技术成绩:

";cin>>m;

cout<<"输入大学英语成绩:

";cin>>ce;

cout<<"输入高等数学成绩:

";cin>>sm;

cout<<"输入大学体育成绩:

";cin>>cg;

cout<<"输入马克思政治经济学成绩:

";cin>>mar;

aver=((e+cp+m+ce+sm)*0.8/5+cg*0.15+mar*0.05);

s=new Student;

s->set(c,n,nam,e,cp,m,ce,sm,cg,mar,aver);

p=new CNode;

p->inputdata(s);

stulist.addnode(p);

cout<<"记录添加成功."<

        cout<<"请输入姓名(输入0结束):

";

    cin.ignore();

    cin.getline(nam,17);

}

void lookup(CList &stulist)

{

CNode *plook;

char name[17];

cout<<"请输入你要查找的姓名(输入0结束):

";

cin.ignore();

cin.getline(name,17);

while(strcmp(name,"0"))

{

Student s;

s.set("0","0",name,0,0,0,0,0,0,0,0);

plook=stulist.lookup(s);

    if(plook)

{

    print();

    plook->shownode();

}

    else

    cout<<"对不起,在学生记录中查找不到"<

cout<<"请输入你要查找的姓名(输入0结束):

";

    cin.getline(name,17);

}

}

void deletes(CList &stulist)

{

CNode *plook;

char name[17];

cout<<"请输入要删除的记录的学生姓名(输入0结束):

";

cin.ignore();

cin.getline(name,17);

while(strcmp(name,"0"))

{

Student s;

s.set("0","0",name,0,0,0,0,0,0,0,0);

plook=stulist.lookup(s);

if(plook)

{

print();

    plook->shownode();

stulist.deletenode(plook);

cout<

}

        else

    cout<<"对不起,在学生记录中查找不到"<

cout<<"请输入要删除的记录的学生姓名(输入0结束):

";

    cin.getline(name,17);

}

}

void storefile(CList &stulist)

{

ofstream outfile("student.dat",ios:

:

binary);

if(!

outfile)

{

cout<<"数据文件打开错误,数据存入文件失败!

"<

return;

}

CNode *p;

Student *s;

p=stulist.getlisthead();

    while(p)

{

s=(Student *)p->getdata();

outfile.write((char *)s,sizeof(Student));

p=stulist.getnext(p);

}

outfile.close();

}

void loadfile(CList &stulist)

{

ifstream infile("student.dat",ios:

:

binary);

if(!

infile)

{

cout<<"没有数据文件!

"<

return;

}

CNode *p;

Student *s;

while(!

 infile.eof())

{

s=new Student;

infile.read((char *)s,sizeof(Student));

p=new CNode;

p->inputdata(s);

stulist.addnode(p);

}

stulist.deletenode(p);

infile.close();

}

void operate(CList &stulist)

{   

int choice;

do

{

system("cls");

cout<<"                         →欢迎进入学生成绩管理系统←\n";

cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"

<<"                          1.输出所有学生成绩记录\n"

        <<"                          2.增加学生成绩记录\n"

    <<"                          3.删除学生成绩记录\n"

    <<"                          4.查询学生成绩记录\n"

    <<"                          0.退出学生能够成绩管理系统\n"

<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";

    cout<<"提示:

按0-4进行选择您要的服务";

cin>>choice;

cout<

switch(choice)

{case 1:

display(stulist);break;

     case 2:

add(stulist);break;

     case 3:

deletes(stulist);break;

     case 4:

lookup(stulist);break;

 case 0:

storefile(stulist);break;

     default:

cout<<"输入错误,请重新输入您的选择:

";

}    

}while(choice!

=0);

}

int main()

{

CList stulist;

loadfile(stulist);

operate(stulist);

cout<<"谢谢使用学生成绩管理系统,再见!

";

return 0;

}

二:

运行结果

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

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1