class-谁能帮我写下排序函数呀,程序有一大半是别人帮写的,最好能直接写上去,感激不尽

by admin on 2020年1月22日

澳门新葡亰平台官网 1澳门新葡亰平台官网 2

学生学籍成绩管理系统 《求一个保存 帮忙插入一下的呢 ,谢谢大家 保存在txt,可以提取显示》
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;

谁能帮我写下排序函数呀,程序有一大半是别人帮写的,最好能直接写上去,感激不尽
#include
#include

澳门新葡亰平台官网 3

struct student
{

class student

#include <iomanip>
#include <iostream>
#include <fstream>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
#define NULL 0
int const N=20;
#define LEN sizeof(struct
student)
using namespace std;  
void Menu();
void Pass();
int n=0;       //定义一个全局变量统计职工人数
//—————>定义一个职工信息的结构体
struct student
{
澳门新葡亰平台官网,char name[N];        //用来存放姓名
char sex[N];        //用来存放性别
long id;           //用来存放编号
float paid[3];   //用来存放工资
int total;       //用来存放总工资
struct student *next;
};
//————–>职工类
class Information
{
public:
Information() ;       //构造函数.
~Information() ;     //析构函数.
student *creat();   //建立链表
void output(student
*head);         //显示职工信息
int count(student
*head);          //定义函数count()统计职工总数
student *insert(student*head);    //指针函数*insert()用来添加职工信息.
student *cancel(student *head,long id);    //指针函数*cancel()用来删除职工信息.
student *find(student *head,long id);     //指针函数*find()用来查找职工信息.
student *modify(student *head,long id);  //指针函数*modife()用来修改职工的信息.
void paixu(student
*head);              //定义paixu()函数将职工的总额从大到小排列并输出
void average(student
*head);           //定义职工工资平均值的函数
void save(student
*head);             //保存文件信息
student *Read();                     //读取文件信息
private:
student *p1,*p2,*p3,*head,st;
};
Information::Information()
{cout<<”
******************************************************************************n”;
cout<<”
————————<<欢迎您使用职工工资管理系统>>————————n”;
cout<<”
******************************************************************************nn”;
}
//——————>作者的信息和提示
void zuozhe()
{
cout<<“nttt本程序制作者
:nntttfangfangffnntttQQ : 609540184”;
cout<<“nntttMade By
VC6.0++nnttt2007年7月18日nnttt按<Enter>键进入登陆界面!!”;
cout<<“nnttt如果需要对原来的信息进行操作,则先选择0读取文件信息n”<<endl;
}
Information::~Information()
{ cout<<”
******************************************************************************n”;
cout<<”
————————<<谢谢您使用职工工资管理系统>>————————n”;
cout<<”
******************************************************************************n”;
}
//————>建立链表信息
student *Information::creat(void)
{//定义一个指向struct
student的结构体指针函数*creat()用来录入职工信息.
char ch[N];n=0;       //用来存放职工姓名
p1=p2=(student *)malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元

char name[12]; /// 姓名
char id[10]; /// 学号
float Cppnum; /// c++分数
float Snum; /// 数学分数
float Enum; /// 英语分数
float tiyu;

{

cout<<”
————-<<请建立职工信息表,在姓名处键以 #
结束输入!>>————–“<<endl;
cout<<”
姓名:”;
cin>>ch;
head=NULL;      //给指针head赋初值
while (strcmp(ch,”#”)!=0)
{     //调用字符比较函数strcmp()用来判断是否继续输入
p1=(student *)malloc(LEN);         //调用malloc()函数用来开辟一个新的存储单元
strcpy(p1->name,ch);              //将循环结构前面输入的姓名复制到结构体名为p1的数组name中
cout<<”
性别:”;
cin>>p1->sex;
cout<<”
编号:”;
cin>>p1->id;
while((p1->id)<0||(p1->id)>100000)     //判断输入的编号是否有效(100000个)
{
cout<<”
对不起您的输入错误!请重新输入(>0<1000000): “;
cin>>p1->id;
}
cout<<”
基本工资:”;
cin>>p1->paid[0];
while((p1->paid[0])<0||(p1->paid[0])>100000)      //判断输入的分数是否有效(>=0
<=100000)
{
cout<<”
对不起您的输入错误!请重新输入(>0<100000): “;
cin>>p1->paid[0];
}
cout<<”
加班工资:”;
cin>>p1->paid[1];
while((p1->paid[1])<0||(p1->paid[1])>100000)      //判断输入的分数是否有效(>=0
<=100000)
{
cout<<”
对不起您的输入错误!请重新输入(>0<100000): “;
cin>>p1->paid[1];
}
cout<<”
其他奖金:”;
cin>>p1->paid[2];
while((p1->paid[2])<0||(p1->paid[2])>100000)      //判断输入的分数是否有效(>=0
<=100000)
{
cout<<”
对不起您的输入错误!请重新输入(>0<100000): “;
cin>>p1->paid[2];
}
p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2];       //计算总额

float number; /// 总分
float average; ///平均分
student *next;
};
///////////——-定义类———————–////////////
class stud{

int number;
char name[20];
char sex[6];

if(n==0)head=p1;      //如果是输入第一组职工信息就将指针p1赋给指针head
else p2->next=p1;    //否则将p1赋给p2所指结构体的next指针
p2=p1;              //将指针p1赋给指针p2
n++;               //将职工人数n的值加1
cout<<“n
姓名:”;
cin>>ch;         //将输入的姓名存放到字符数组ch中
}
p2->next=NULL; //将p2所指结构体的next指针重新赋空值
return (head);//将输入的第一组职工信息返回
}
//—————>定义output()函数将职工的信息从头指针所指内容开始输出
void
Information::output(student *head)
{
system(“cls”);
if(head==NULL) cout<<”
这是一个空表,请先输入职工信息!n”;
else{
cout<<“——————————————————————————-n”;
cout<<”
*职工工资信息表*n”;
cout<<“——————————————————————————-n”;
cout<<“|编 号|    
|姓 名|   |性别|   |基本工资|   |加班工资|  |其他奖金|    
|总额|n”;
cout<<“——————————————————————————-n”;
p1=head;   //将头指针赋给p
do
{
cout<<setw(6)<<p1->id
<<setw(10)<<p1->name
<<setw(10)<<p1->sex
<<setw(10)<<p1->paid[0]
<<setw(10)<<p1->paid[1]
<<setw(12)<<p1->paid[2]
<<setw(12)<<p1->total<<endl;
cout<<“——————————————————————————-n”;
p1=p1->next;          //将下一组职工信息的next指针赋给p
}while(p1!=NULL);    //若指针p非空则继续,目的是把所有的职工信息都传给指针p然后输出.
}
}
//————>统计职工人数的函数
int Information::count(struct student *head)     //定义函数count()统计职工总数
{
if(head==NULL)return(0);                       //若指针head为空返回值为0
else return(1+count(head->next));             //函数的递归调用
}
//———–>添加职工的成绩的函数
student *Information::insert( student *head)
//插入新结点定义一个指向struct
student的结构体指针函数*insert()用来添加职工信息.
{
system(“cls”);
cout<<“t—————-<<请输入新增职工成绩信息>>—————-n”<<endl;
p1=(student *)malloc(LEN);      //使p1指向插入的新结点
cout<<”
编号:”;
cin>>p1->id;
while((p1->id)<0||(p1->id)>100000)
{
cout<<”
对不起您的输入错误!请重新输入(>0<100000): “;
cin>>p1->id;         //将输入的编号存放到p1所指结构体的数组id中
}
cout<<”
姓名:”;
cin>>p1->name;     //将输入的姓名存放到结构体名为p1的数组name中
cout<<”
性别:”;
cin>>p1->sex;
cout<<”
基本工资:”;
cin>>p1->paid[0];
while((p1->paid[0])<0||(p1->paid[0])>100000)
{
cout<<”
对不起您的输入错误!请重新输入(>0<100000): “;
cin>>p1->paid[0];     //将输入的基本工资存放到p1所指结构体的数组paid中
}
cout<<”
加班工资:”;
cin>>p1->paid[1];
while((p1->paid[1])<0||(p1->paid[1])>100000)
{
cout<<”
对不起您的输入错误!请重新输入(>0<100000): “;
cin>>p1->paid[1];    //将输入的加班工资存放到p1所指结构体的数组paid中
}
cout<<”
其他奖金:”;
cin>>p1->paid[2];
while((p1->paid[2])<0||(p1->paid[2])>100000)
{
cout<<”
对不起您的输入错误!请重新输入(>0<100000): “;
cin>>p1->paid[2];   //将输入的其他奖金存放到p1所指结构体的数组paid中
}
p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2];//计算总分

student *p1,*p2,*head;
public:
~stud()/////—-析构函数————————
{
while{
p1=head->next;
delete head;
head=p1;
}
}
///————成员函数————

char old[20];
char place[6];

p2=head;         //将头指针赋给p2
if(head==NULL)  //若没调用次函数以前的头指针head为空
{
head=p1;p1->next=NULL;
}        //则将p1赋给头指针head并将p1所指结构体成员指针next赋空值
else
{
while((p1->id>p2->id)&&(p2->next!=NULL))
{
p3=p2;        //p3指向原p2指向的结点
p2=p2->next;
}           //p2后移一个结点
if(p1->id<=p2->id)
{
if(head==p2)
{
p1->next=head;
head=p1;
}       //插入到第一个结点之前
else
{
p3->next=p1;
p1->next=p2;
}    //插入到p3所指结点之后
}
else
{
p2->next=p1;
p1->next=NULL;
}  //插入到尾结点之后
}
n++;  //将职工人数加1
cout<<“t—————-<<你输入的职工信息已经成功插入>>—————-“<<endl;
return (head);
}
//————>删除职工信息
student *Information::cancel(student *head,long id)   //定义一个指向struct
student的结构体指针函数*delete()用来删除考生信息.
{
system(“cls”);
if(head==NULL)      //若调用次函数以前的头指针head为空
{
return(head);
}
else
{
p1=head;        //否则将头指针赋给p1
while(id!=p1->id&&p1->next!=NULL)  
//寻找要删除的结点当p1所指的职工编号不是输入的职工编号并且p1所指的next指针不为空
{
p2=p1;
p1=p1->next;
}                    //p2指向原p1指向的结点p1后移一个结点
if(id==p1->id)      //如果输入的职工编号是p1所指的职工编号//结点找到后删除
{
if(p1==head) head=p1->next;  
//如果head指针和p1指针相等则将下一个结点赋给指针head

void output(student head); // 输出学生成绩
student
input(student *head); // 增加学生记录
student del(student head, char*p); // 删除记录
student find(student head,char *p,int &n); //
查找学生记录(可查找多个同名数据)
student stat(student head); //排序统计学生总分
friend void total(student*head);//统计学生总分
friend void pingjun(student*head);//统计平均分
student insert(student head); //按学生总分插入记录
student clear(student head); // 删除当前表
void Inputs(student *p); //用于添加数据的子函数
};//—————————————————-

char ment[20];
char clas[10];
public:

else
p2->next=p1->next;           //否则将p1所指结点赋给p2所指结点将要删除的职工信息跳过去
cout<<”
删除编号为”<<id<<“的职工n”;
n–;               //将职工人数减1
}
return(head);     //将头指针返回
}
}
/**************************修改职工数据**************************/
student *Information::modify(student *head,long id)
{
system(“cls”);
cout<<“t—————-<<请输入须修改的职工工资信息>>—————-n”<<endl;
p1=(student *)malloc(LEN); //使p1指向输入的结点
p1=head;                  //否则将头指针赋给p1
while(id!=p1->id&&p1->next!=NULL)
//寻找结点当p1所指的职工编号不是输入的职工编号并且p1所指的next指针不为空
{
p1=p1->next;        //p2指向原p1指向的结点p1后移一个结点
}          
if(id==p1->id)       //如果要查找的职工编号是p1所指的职工编号
{
cout<<“你需要修改的职工信息如下:n”;
cout<<“——————————————————————————n”;
cout<<“|编 号|  
|姓 名|   |性别|   |基本工资|  
|加班工资|    |其他奖金|    |总额|n”;
cout<<“——————————————————————————n”;
cout<<setw(6)<<p1->id
<<setw(10)<<p1->name
<<setw(10)<<p1->sex
<<setw(10)<<p1->paid[0]
<<setw(10)<<p1->paid[1]
<<setw(12)<<p1->paid[2]
<<setw(12)<<p1->total<<endl;
cout<<“——————————————————————————n”;
cout<<”
编号:”;
cin>>p1->id;
while((p1->id)<0||(p1->id)>100000)
{
cout<<”
对不起您的输入错误!请重新输入(>0<100000): “;
cin>>p1->id;       //将输入的编号存放到p1所指结构体的数组id中
}
cout<<”
姓名:”;
cin>>p1->name;    //将输入的姓名存放到结构体名为p1的数组name中
cout<<”
性别:”;
cin>>p1->sex;
cout<<”
基本工资:”;
cin>>p1->paid[0];
while((p1->paid[0])<0||(p1->paid[0])>100000)
{
cout<<”
对不起您的输入错误!请重新输入(>0<100000): “;
cin>>p1->paid[0];  //将输入的基本工资存放到p1所指结构体的数组paid中
}
cout<<”
加班工资:”;
cin>>p1->paid[1];
while((p1->paid[1])<0||(p1->paid[1])>100000)
{
cout<<”
对不起您的输入错误!请重新输入(>0<100000): “;
cin>>p1->paid[1];  //将输入的加班工资存放到p1所指结构体的数组paid中
}
cout<<”
其他奖金:”;
cin>>p1->paid[2];
while((p1->paid[2])<0||(p1->paid[2])>100000)
{
cout<<”
对不起您的输入错误!请重新输入(>0<100000): “;
cin>>p1->paid[2];  //将输入的其他奖金存放到p1所指结构体的数组paid中
}
p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2];  //计算总分

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
stud::Studentmassage()
{
cin=new Student;
cin->Next=new Student;
End=Head->Next;
in.open(“sort.txt”);
if
cout<<“这是一个新系统,无学生信息。请先输入。”< else
{
while)
{
End->ReadFile;
if(End->name[0]==’’)break;
End->Next=new Student;
End=End->Next;
}
in.close();
cout<<“tt读取学生信息成功!”<<endl;
}
}

student *next;

}
else
cout<<”
需要修改的信息中没有编号为”<<id<<“的职工.nn”; //没有想要修改的结点信息
getchar();
return(head);
}
//————>查找职工信息
student *Information::find(student *head,long id)
//定义一个指向struct
student的结构体指针函数*find()用来查找职工信息.
{
system(“cls”);
if(head==NULL)    //若调用次函数以前的头指针head为空
{
cout<<”
这是一个空表,请先输入职工信息!n”;
return(head);
}
else
{
p1=head;        //否则将头指针赋给p1
while(id!=p1->id&&p1->next!=NULL)
//寻找结点当p1所指的职工编号不是输入的职工编号并且p1所指的next指针不为空
{
p1=p1->next;     //p2指向原p1指向的结点p1后移一个结点
}
if(id==p1->id)  //如果要查找的职工编号是p1所指的职工编号
{
cout<<“——————————————————————————n”;
cout<<“|编 号|    
|姓 名|   |性别|   |基本工资|   |加班工资|  |其他奖金|    
|总额|n”;
cout<<“——————————————————————————n”;
cout<<setw(6)<<p1->id
<<setw(10)<<p1->name
<<setw(10)<<p1->sex
<<setw(10)<<p1->paid[0]
<<setw(10)<<p1->paid[1]
<<setw(12)<<p1->paid[2]
<<setw(12)<<p1->total<<endl;
cout<<“——————————————————————————n”;
}
else
cout<<“信息中没有编号为”<<id<<“的职工.n”; //结点没找到
return(head);
}
}
//————定义paixu()函数将职工的工资总额从大到小排列并输出
void
Information::paixu(student *head)
{
system(“cls”);
int i,k,m=0,j;
student *p[N];//定义一个指向struct student的结构体指针数组p

////———用于添加数据的子函数——-///////
void stud::Inputs(student*p)
{
cout< cin>>p->name >>p->id;
cin >>p->Cppnum;
while(cin.fail{
cerr<<“您的输入有误,请重新输入”< cin.clear ();
cin.sync ();
cin>>p->Cppnum;
}

char* getname(){ return name;}
int getnumber(){ return number;}
void input()
{
cout<<“ttt按提示输入:”< cout>number;
cout<<“tt输入姓名: “; cin>>name;
cout<<“tt输入性别: “; cin>>sex;
cout<<“tt输入年龄: “; cin>>old;

if(head!=NULL)//如果头指针是空则继续
{ m=count(head);
cout<<“——————————————————————————n”;
cout<<”
*职工工资统计表*n”;
cout<<“——————————————————————————n”;
cout<<“|编号|    |姓名|  
|性别|  |基本工资|  |加班工资|  |其他奖金|    |总额|  
|名次|n”;
cout<<“——————————————————————————n”;
p1=head;
for(k=0;k<m;k++)
{
p[k]=p1;
p1=p1->next;
}
for(k=0;k<m-1;k++) //选择排序法
for(j=k+1;j<m;j++)
if(p[k]->total<p[j]->total)
{
p2=p[k];
p[k]=p[j];
p[j]=p2;
} //从大到小排列的指针
for(i=0;i<m;i++)
{
cout<<setw(6)<<p[i]->id
<<setw(8)<<p[i]->name
<<setw(9)<<p[i]->sex
<<setw(10)<<p[i]->paid[0]
<<setw(10)<<p[i]->paid[1]
<<setw(10)<<p[i]->paid[2]
<<setw(10)<<p[i]->total
<<setw(10)<<i+1<<endl;
cout<<“——————————————————————————n”;
}
}
}
//————>求各工资的平均值的函数
void
Information::average(student *head)
{
int k,m;
float arg1=0,arg2=0,arg3=0;
if(head==NULL)//如果头指针是空则继续
{
cout<<”
这是一个空表,请先输入职工信息!n”;
}
else
{
m=count(head);
p1=head;
for(k=0;k<m;k++)
{
arg1+=p1->paid[0];
arg2+=p1->paid[1];
arg3+=p1->paid[2];
p1=p1->next;
}
arg1/=m;arg2/=m;arg3/=m;
cout<<”
*各项工资的平均值*n”;
cout<<“——————————————————————————n”;
cout<<“tt基本工资的平均值:  “<<setw(4)<<arg1
<<“n”<<“tt加班工资的平均值:  “<<setw(4)<<arg2
<<“n”<<“tt奖金的平均值:  “<<setw(4)<<arg3<<“n”;
cout<<“——————————————————————————n”;
}
}
//——————->保存函数.
void
Information::save(student *head)
{
system(“cls”);
    ofstream out(“data”,ios::out);
    out<<count(head)<<endl;
    while(head!=NULL)
{   out<<head->name<<“t”
    <<head->id<<“t”<<“t”
    <<head->sex<<“t”
    <<head->paid[0]<<“t”
    <<head->paid[1]<<“t”
    <<head->paid[2]<<“t”
    <<head->total<<endl;      
    head=head->next;
}  
}
//———————————>读取文件的信息
student *Information::Read()
{  
system(“cls”);
int i=0;
    p1=p2=( student *)malloc(LEN);
    head=NULL;  
    ifstream in(“data”,ios::out);
    in>>i;
    if(i==0){cout<<” data
文件中的数据为空,请先输入数据!”<<endl; return 0;}  
    else {
  cout<<“n原文件已保存的信息如下:n”;
  cout<<”
………………………………………………………………………………………………”<<endl;
  cout<<“|姓
名|    |编 号|     |性别|  |基本工资|  |加班工资|   |其他奖金|    
|总额|n”;
        cout<<”
………………………………………………………………………………………………”<<endl;
        for(;i>0;i–)
{  
  p1=(student *)malloc(LEN);
        in>>st.name>>st.id>>st.sex
        >>st.paid[0]>>st.paid[1]>>st.paid[2]>>st.total;
        strcpy(p1->name,st.name);
        p1->id=st.id;
        strcpy(p1->sex,st.sex);
        p1->paid[0]=st.paid[0];
        p1->paid[1]=st.paid[1];
        p1->paid[2]=st.paid[2];
        p1->total=st.total;
        if(n==0)head=p1;      //如果是输入第一组职工信息就将指针p1赋给指针head
        else
p2->next=p1;    //否则将p1赋给p2所指结构体的next指针
        p2=p1;              //将指针p1赋给指针p2
        n++;               //将n的值加1
  //显示读入数据
        cout<<”
“<<p1->name<<“t”
        <<p1->id<<”
t”
        << p1->sex <<”
t”
        << p1->paid[0]
<<” t”
        << p1->paid[1]
<<” t”
        << p1->paid[2]
<<” t”
        << p1->total<<endl;
        cout<<”
………………………………………………………………………………………………”<<endl;
}
cout<<”
数据已经成功读取完毕!nn”<<endl;
    p2->next=NULL;
    

cin>>p->Snum;

cout<<“tt输入籍贯: “; cin>>place;
cout<<“tt输入系别: “; cin>>ment;

while(cin.fail{

cout<<“tt输入班级: “; cin>>clas;
}
void output()
{
cout<<“学生基本信息如下:”< cout}
};
class school
{
public:
school()
{
head=new student;
head->next=NULL;
}

cerr<<“您的输入有误,请重新输入”< cin.sync ();
cin.clear ();
cin>>p->Snum;
}
cin>>p->Enum;
while(cin.fail{

void input();

cerr<<“您的输入有误,请重新输入”< cin.clear ();
cin.sync ();
cin>>p->Enum;
}

void mend();

cin>>p->tiyu ;
while(cin.fail{

void del();
int find(student **p,int num);
void found();

cerr<<“您的输入有误,请重新输入”< cin.clear ();
cin.sync ();
cin>>p->tiyu ;
}

void show();

total; //计算出总分

void count();
char mainmenu();
private:

pingjun;//计算平均分
}
////////—–输出学生成绩—————–/////////////////////
void stud::output (student head)
{
p1=head;
while{
cout<name<id<Cppnum<Snum <Enum<tiyu
<number<average< p1=p1->next ;
}
}
/////////————插入学生成绩记录——–////////////////
student
stud::insert(student *head)
{

student *head;
};
int school::find(student **p1,int num)//子查找函数
{
student *p;

p1=new student;
Inputs; //调用子函数 增加数据
p2=head;
student* p3=NULL;
while((p2->number < p1->number ) && p2->next !=NULL){

p=head;
while(p->next)
{
=p;
if( (p->next)->getnumber
return 1;
p=p->next;
}
return 0;

p3=p2;
p2=p2->next;
}
if(p2->number > p1->number){

}
void school::input() //录入函数
{
student *p,*p2=NULL;
p=head;
int n;
while(p->next)
p=p->next;
while
{
p2=new student;

p1->next=p2;
if // 若当前值是最小的
return p1;
p3->next =p1;
return head;
}
else {
p2->next=p1;
p1->next=NULL;
return head;
}

p2->input();
p->next=p2;

}
//////———-清空数据————/////////////
student* stud::clear(student*head)
{
while{

p2->next=NULL;

p1=head->next ;
delete head;
head=p1;
}
return head;
}
//////////———–排序统计函数———–/////////////////
student *stud::stat(student *head)
{
p2=head;
p1=p2->next;
while(p2->next){ //冒泡泡法, 呵呵`~~~

p=p->next;
cout<<“ttt按1继续,按0返回 : “;

if(p2->number > p1->number){ // 把头指针指向当前比较小的节点
p2->next=p1->next;

cin>>n;
}
}
void school::found() //查找函数
{

p1->next=head;

student *p;
int num=1;
cout<<“按编号查找: “;
cout<<“ttt输入编号: “;
cin>>num;
if(!find(&p,num) )
{
cout<<“tt找不到你要查找的内容!”< return;
}
(p->next)->output();
}
void school::del() //删除函数
{
student *p,*p2;

head=p1; // 把用于比较的两个指针复位

int num;
cout<<“ttt输入编号: “;

//p2=head;

cin>>num;
if( !find(&p,num) )
{
cout<<“tt找不到你要删除的内容!”< return;
}
(p->next)->output();
p2=p->next;
p->next=p2->next;
delete p2;
}
void school::show() //显示函数
{
student *p;

p1=p2->next ;
}
else{ // 指向下一个节点
p2=p2->next ;
p1=p2->next ;
}//——————————————-
}
cout<<“当前表以按学生总分排序成功”<<endl;

p=head;
while(p->next)
{

return head;
}
/////———–删除记录———–//////////////////////
student* stud::del (student *head,char *p)
{
p1=head;
p2=NULL;

(p->next)->output();
p=p->next;
}
}
void school::mend() //修改函数
{
student *p;

while(strcmp(p1->name ,p)&& p1->next !=NULL){
p2=p1;
p1=p1->next ;
}

int num=1;
cout<<“ttt输入编号: “;
cin>>num;
if( !find(&p,num) )
{
cout<<“tt找不到你要修改的内容!”< return;
}
(p->next)->output(); (p->next)->input();
}
char school::mainmenu() //主选菜单函数
{
char n[6];
cout<<“————————欢迎进入学籍管理系统————————”< cin>>n;
return n[0];
}
void main() //主函数
{
school pp;
int k=1;

if(!strcmp(p1->name ,p)){

char n;
while
{
n=pp.mainmenu();
switch
{
case ‘1’:; break;
case ‘2’:pp.input(); break;
case ‘3’:pp.found(); break;
case ‘4’:pp.mend(); break;
case ‘5’:pp.del(); break;
case ‘7’:pp.show(); break;
case ‘0’:
break;
}
}

if
head=p1->next;
else
p2->next=p1->next ;
cout<<“删除成功,OK”<<endl;
delete p1;
}
else
cout<<” 没找到姓名”<<p<<“的学生.n”; //结点没找到

}

return head ;
}
///////———-统计总分—————///////////////
void total(student *p)
{

p->number = p->Cppnum + p->Snum + p->Enum+p->tiyu;

}
//////———计算平均分————-////////////////
void pingjun(student *p)
{
p->average=(p->Cppnum+p->Snum+p->Enum+p->tiyu)/3;
}

///////————-查找函数———-///////////////////
student* stud::find (student *head,char *p,int& n)
{
p2=head;
while(strcmp(p2->name ,p) !=0 && p2->next !=NULL)
p2=p2->next ;
if(0==strcmp(p2->name,p)){
cout<name<id<Cppnum<Snum <Enum <number
<average<<endl;
n++;
return p2;
}
else if{
system;
cout<<“对不起,没有您要查找的学生数据”<<endl;
}

return NULL;

}
///////—————-增加学生记录———–////////////////////////////
student *stud::input (student *head)
{
p1=new student;
p2=head;
Inputs; //调用子函数 增加数据

if(head ==NULL){
head=p1;
p1->next =NULL;
return head;
}

while(p2->next !=NULL)
p2=p2->next;
p2->next=p1;
p1->next=NULL;
return head;
}
//———– 输出错误 ———–//////////
void error()
{
cout<<“错误,这还是一张空表,请输入数据”<<endl;
getch();
}

///////////////////————main函数——–//////////////////———–
int main()
{
stud stus;
student *head=NULL;
student *pd; //临时指针, 用于查找函数
char choice; //用于存放用户的选择项
char name[10]; //查找,删除记录的 key

while{
system;
cout<<“┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓”;
cout<<“┃**************** ☆ 学 生 学 籍 成 绩 管 理
系 统 ☆ **************┃”;
cout<<“┃********** ★★★★★ ★★★★★★★ ★★★★★
*********** ┃”;
cout<<“┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫”;
cout<<“┃****************★ ☆ 1.增加学生成绩 ☆
★****************┃”;
cout<<“┃****************★ ☆ 2.显示学生成绩 ☆
★****************┃”;
cout<<“┃****************★ ☆ 3.排序统计成绩 ☆
★****************┃”;
cout<<“┃****************★ ☆ 4.查找学生成绩 ☆
★****************┃”;
cout<<“┃****************★ ☆ 5.删除学生成绩 ☆
★****************┃”;
cout<<“┃****************★ ☆ 6.插入学生成绩 ☆
★****************┃”;
cout<<“┃****************★ ☆ 7.清空所有数据 ☆
★****************┃”;
cout<<“┃****************★ ☆ 8.安全退出系统 ☆
★****************┃”;

cout<<“┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛”;
cout<<” 请输入您的选择:”;
cout<<endl;

int n=0; //计数器,用于在查找时计算有没有同名学生
cin>>choice;
fflush; //清空缓冲区

if(choice==’8′){ //安全退出
cout<<“谢谢使用,再见”< exit;
}//————————————————
switch{
case ‘1’:
head=stus.input ;
break;//————————————————
case ‘2’:
if(head==NULL){
error();
break;
}
cout stus.output ;
getch();
break;//————————————————
case ‘3’:
if(head==NULL){
error();
break;
}
head=stus.stat;
getch();
break;//————————————————
case ‘4’:
if(head ==NULL){
error(); //调用函数输出错误信息
break;
}
cout cin>>name;
pd=head;
cout< while{ // 循环调用函数, 用于输出多个的同名学生成绩
pd=stus.find (pd,name,n);
if
break;
pd=pd->next ;
//指针指向当前以找到的下一个节点,用于查找多个同名学生
}
getch();
break;//————————————————
case ‘5’:
if(head==NULL){
error();
break;
}
cout<<“请输入想要删除学生姓名”< cin>>name;
head=stus.del(head,name);
getch();
break;//————————————————
case ‘6’:
if(head==NULL){
error();
break;
}
head=stus.stat ;
head=stus.insert;
break;//———————————————–
case ‘7’:
if(head==NULL){
error();
break;
}
head=stus.clear;
cout<<“删除表成功~”<<endl;
getch();
break;//———————————————–
default :
cout<<” 对不起,您的输入有误,请重新输入。n”;
getch();
break;
}//——————————————————
}
getch();
return 0;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图