當前位置:編程學習大全網 - 編程語言 - C++課程設計:評學管理

C++課程設計:評學管理

#include<iostream>

#include<iomanip>

#include<fstream>

#include<string>

using namespace std;

#define max 100;

class student

{

public:

student *next;

public:

string name;//姓名

long num;//學號

int x,y,z;//數學,語文,英語

int AA;//總分

void play(){cout<<name<<"學生的學號是"<<num<<",數學:"<<x<<",語文:"<<y<<",英語:"<<z<<",總分:"<<AA<<endl;};

student(string sname,long snum,int sx,int sy,int sz)

{

name=sname;

num=snum;

x=sx;

y=sy;

z=sz;

}

};

class cla

{

public:

cla()//構造函數

{

stu=0;

sload();

}

~cla()//析構函數

{

student *p;

p=stu;

while(p)

{

p=p->next;

delete stu;

stu=p;

}

stu=0;

}

void sadd(); //添加

void sremove(); //刪除

void samend(); //修改

void ssearch(); //查詢

void staxis(); //排序

void ssave(); //保存

void sload(); //讀取

//排序函數

void pxh();

void psx();

void pyw();

void pyy();

void pAA();

private:

student *stu; //頭接點

};

void cla::sadd()//添加

{

student *q;

string name1;

long num1;

int x1,y1,z1;

system("cls");

cout<<"\n **增加的學生** \n"<<endl;

cout<<"請輸入學生的(中間用空格間隔) "<<endl;

cout<<"姓名 學號 數學成績語文成績英語成績:"<<endl;

cin>>name1>>num1>>x1>>y1>>z1;

q=new student(name1,num1,x1,y1,z1);

q->next=0;

q->AA=x1+y1+z1;

if(stu)

{

student *t;

t=stu;

if(t->num==num1)

{

cout<<"學號已存在,請重新輸入"<<endl;

return;

}

while(t->next)

{

if(t->num==num1)

{

cout<<"學號已存在,請重新輸入"<<endl;

return;

}

t=t->next;

}

t->next=q;

}

else

{

stu=q;

}

cout<<"輸入完畢"<<endl;

}

void cla::sremove()//刪除

{

system("cls");

int num1;

cout<<"\n** 刪除學生信息 **\n";

cout<<"請輸入想要刪除學生的學號:";

cin>>num1;

//查找要刪除的結點

student *p1,*p2;

p1=stu;

while(p1)

{

if(p1->num==num1)

break;

else

{

p2=p1;

p1=p1->next;

}

}

//刪除結點

if(p1!=NULL)//若找到結點,則刪除

{

p1->play();

cout<<"確定刪除嗎?[Y/N]"<<endl;

char c;cin>>c;

if(toupper(c)!='Y') return;

if(p1==stu) //若要刪除的結點是第壹個結點

{

stu=p1->next;

delete p1;

}

else //若要刪除的結點是後續結點

{

p2->next=p1->next;

delete p1;

}

cout<<"找到學號為"<<num1<<"的學生,並刪除\n";

}

else //未找到結點

cout<<"未找到想要刪除的學生!\n";

}

void cla::samend()//修改

{

system("cls");

long num1;

cout<<"\n** 修改學生信息 **\n";

cout<<"輸入要修改學生的學號";

cin>>num1;

//查找要修改的結點

student *p1,*p2;

p1=stu;

while(p1)

{

if(p1->num==num1)

break;

else

{

p2=p1;

p1=p1->next;

}

}

if(p1!=NULL)

{

cout<<"學號是"<<num1<<"的學生的信息"<<endl;

cout<<"姓名 "<<p1->name<<"數學"<<p1->x<<"語文"<<p1->y<<"英語"<<p1->z<<endl;

cout<<"請輸入修改後的信息:姓名 數學成績語文成績英語成績"<<endl;

cin>>p1->name>>p1->x>>p1->y>>p1->z;

p1->AA=p1->x+p1->y+p1->z;

cout<<"修改成功"<<endl;

}

else //未找到接點

cout<<"未找到!\n";

}

void cla::ssearch()//查詢

{

system("cls");

cout<<"\n** 查詢學生信息 **\n"<<endl;

cout<<"請輸入查詢方式:"<<endl;

cout<<"1.按學號查詢"<<endl;

cout<<"2.按姓名查詢"<<endl;

cout<<"3.返回"<<endl;

char c; cin>>c;

switch (c)

{

case '1':

{

long num1;

cout<<"要查詢的學號"<<endl;

cin>>num1;

//查找要查詢的結點

student *p1,*p2;

p1=stu;

while(p1)

{

if(p1->num==num1)

break;

else

{

p2=p1;

p1=p1->next;

}

}

if(p1!=NULL)

{

cout<<"學號是"<<num1<<"的學生的信息"<<endl;

cout<<"姓名:"<<p1->name<<" 數學:"<<p1->x<<" 語文:"<<p1->y<<" 英語:"<<p1->z<<endl;

cout<<"查詢完畢...";

}

else //未找到接點

cout<<"未找到!\n";

break;

}

case '2':

{

string name1;

cout<<"要查詢的學生姓名"<<endl;

cin>>name1;

//查找要查詢的結點

student *p1,*p2;

p1=stu;

while(p1)

{

if(p1->name==name1)

break;

else

{

p2=p1;

p1=p1->next;

}

}

if(p1!=NULL)

{

cout<<name1<<"的學生的信息"<<endl;

cout<<"學號:"<<p1->num<<" 數學:"<<p1->x<<" 語文:"<<p1->y<<" 英語:"<<p1->z<<endl;

cout<<"查詢完畢...";

}

else //未找到接點

cout<<"未找到!\n";

break;

}

case '3': return;

}

}

void cla::pxh() //按學號排序

{

student *p1,*p2;

int n;

p1=stu;

n=1;

while(p1->next)

{ n++; p1=p1->next; }

cout<<"***有"<<n<<"條信息..."<<endl;

int i;

p1=stu;

for(i=1;i<n;i++)

{

p1=stu;

if (p1->num>p1->next->num) // 如果頭結點大於第二個的

{

p2=p1->next;

p1->next=p1->next->next;

p2->next=p1; //頭結點交換

stu=p2;

}

p1=stu;

while(p1->next->next) //中間的交換

{

p2=p1;

p1=p1->next;

if(p1->num>p1->next->num)

{

p2->next=p1->next;

p1->next=p1->next->next;

p2->next->next=p1;

p1=p2->next; //交換

}

}

}

p1=stu;

do

{

p1->play();

p1=p1->next;

}while(p1);

}

void cla::psx()//按數學成績排序

{

student *p1,*p2;

int n;

p1=stu;

n=1;

while(p1->next)

{ n++; p1=p1->next; }

cout<<"***有"<<n<<"條信息..."<<endl;

int i;

p1=stu;

for(i=1;i<n;i++)

{ p1=stu;

if (p1->x>p1->next->x) // 如果頭結點大於第二個的

{ p2=p1->next;

p1->next=p1->next->next;

p2->next=p1; //頭結點交換

stu=p2;

}

p1=stu;

while(p1->next->next) //中間的交換

{ p2=p1;

p1=p1->next;

if(p1->x>p1->next->x)

{

p2->next=p1->next;

p1->next=p1->next->next;

p2->next->next=p1;

p1=p2->next; //交換

}

}

}

p1=stu;

do

{ p1->play();

p1=p1->next;

}while(p1);

}

void cla::pyw()//按語文成績排序

{

student *p1,*p2;

int n;

p1=stu;

n=1;

while(p1->next)

{ n++; p1=p1->next; }

cout<<"***有"<<n<<"條信息..."<<endl;

int i;

p1=stu;

for(i=1;i<n;i++)

{ p1=stu;

if (p1->y>p1->next->y) // 如果頭結點大於第二個的

{ p2=p1->next;

p1->next=p1->next->next;

p2->next=p1; //頭結點交換

stu=p2;

}

p1=stu;

while(p1->next->next) //中間的交換

{ p2=p1;

p1=p1->next;

if(p1->y>p1->next->y)

{

p2->next=p1->next;

p1->next=p1->next->next;

p2->next->next=p1;

p1=p2->next; //交換

}

}

}

p1=stu;

do

{ p1->play();

p1=p1->next;

}while(p1);

}

void cla::pyy()//按英語成績排序

{

student *p1,*p2;

int n;

p1=stu;

n=1;

while(p1->next)

{ n++; p1=p1->next; }

cout<<"***有"<<n<<"條信息..."<<endl;

int i;

p1=stu;

for(i=1;i<n;i++)

{ p1=stu;

if (p1->z>p1->next->z) // 如果頭結點大於第二個的

{ p2=p1->next;

p1->next=p1->next->next;

p2->next=p1; //頭結點交換

stu=p2;

}

p1=stu;

while(p1->next->next) //中間的交換

{ p2=p1;

p1=p1->next;

if(p1->z>p1->next->z)

{

p2->next=p1->next;

p1->next=p1->next->next;

p2->next->next=p1;

p1=p2->next; //交換

}

}

}

p1=stu;

do

{ p1->play();

p1=p1->next;

}while(p1);

}

void cla::pAA()//按總分排序

{

student *p1,*p2;

int n;

p1=stu;

n=1;

while(p1->next)

{ n++; p1=p1->next; }

cout<<"***有"<<n<<"條信息..."<<endl;

int i;

p1=stu;

for(i=1;i<n;i++)

{ p1=stu;

if (p1->AA>p1->next->AA) // 如果頭結點大於第二個的

{ p2=p1->next;

p1->next=p1->next->next;

p2->next=p1; //頭結點交換

stu=p2;

}

p1=stu;

while(p1->next->next) //中間的交換

{ p2=p1;

p1=p1->next;

if(p1->AA>p1->next->AA)

{

p2->next=p1->next;

p1->next=p1->next->next;

p2->next->next=p1;

p1=p2->next; //交換

}

}

}

p1=stu;

do

{ p1->play();

p1=p1->next;

}while(p1);

}

void cla::staxis()//排序

{

system("cls");

char c;

cout<<"請選擇以何種方式排序:"<<endl;

cout<<"1……以學號排序"<<endl;

cout<<"2……以數學成績排序"<<endl;

cout<<"3……以語文成績排序"<<endl;

cout<<"4……以英語成績排序"<<endl;

cout<<"5……以總分排序"<<endl;

cout<<"6……返回"<<endl;

cout<<"請選擇(1-6)"<<endl;

cin>>c;

switch (c)

{

case '1':pxh(); break;

case '2':psx(); break;

case '3':pyw(); break;

case '4':pyy(); break;

case '5':pAA(); break;

case '6':return;

}

}

void cla::ssave() //保存到文件

{

system("cls");

char c;

cout<<"\n保存學生信息(將覆蓋原文件),是否繼續?[Y/N]:"; cin>>c;

if(toupper(c)!='Y') return;

ofstream tfile("date.txt",ios_base::binary);

student *p=stu;

while(p)// 寫入文件

{

tfile<<p->name<<"\t"<<p->num<<"\t"<<p->x<<"\t"<<p->y<<"\t"<<p->z;

tfile<<endl;

p=p->next;

}

tfile.close();

cout<<"保存完畢..."<<endl;

}

void cla::sload() //讀取

{

student *p;

p=stu;

while(p)

{

stu=p->next;

delete p;

p=stu;

}

ifstream tfile("date.txt",ios_base::binary);

string name1;

long num1;

int x1,y1,z1;

tfile>>name1>>num1>>x1>>y1>>z1;

while(tfile.good())

{

//創建學生接點

student *s;

s=stu;

s=new student(name1,num1,x1,y1,z1);

s->next=0;

s->AA=x1+y1+z1;

if(stu) //若已經存在結點

{

student *p2;

p2=stu;

while(p2->next) //查找尾結點

{

p2=p2->next;

}

p2->next=s; //連接

}

else //若不存在結點(表空)

{

stu=s; //連接

}

tfile>>name1>>num1>>x1>>y1>>z1;

}

tfile.close();

cout<<"\n學生信息已經裝入...\n";

}

void main()

{

char c;

cla a;

do

{

cout<<"\n 學 生 成 績 管 理 系 統 \n";

cout<<"**************************************\n";

cout<<" 作者:軟件工程06110119:zgjxwl \n";

cout<<" 1……增加學生 \n";

cout<<" 2……刪除學生 \n";

cout<<" 3……修改學生 \n";

cout<<" 4……查詢學生信息 \n";

cout<<" 5……排序 \n";

cout<<" 6……保存信息 \n";

cout<<" 7……讀取信息 \n";

cout<<" 8……退出 \n";

cout<<"**************************************\n";

cout<<"請選擇(1-8):";

cin>>c;

switch(c)

{

case '1': a.sadd();break;

case '2': a.sremove();break;

case '3': a.samend();break;

case '4': a.ssearch();break;

case '5': a.staxis();break;

case '6': a.ssave();break;

case '7': a.sload();break;

}

}while(c!='8');

}

  • 上一篇:c語言程序設計基礎葉文珺版答案
  • 下一篇:SAP是什麽意思啊?
  • copyright 2024編程學習大全網