用C++实现学生成绩管理系统(使用链表)
(1)学生成绩管理系统需求与功能分析学生成绩的录入、统计、查询、修改、删除、输出。画出功能结构图。(2)学生成绩管理系统的数据结构表序号成员名(字段名)数据类型长度字段含...
(1)学生成绩管理系统需求与功能分析
学生成绩的录入、统计、查询、修改、删除、输出。 画出功能结构图。
(2)学生成绩管理系统的数据结构表
序号 成员名(字段名) 数据类型 长度 字段含义
1 class_0 char 20 班级
2 num int 学号
3 name char 8 姓名
4 elec flaot 电子技术
5 c_prog float C++ 程序设计
6 media flaot 多媒体技术
7 eng float 大学英语
8 math float 高等数学
9 sport float 大学体育
10 polity float 马克思主义政治经济学
11 ave float 平均成绩
12 order int 名次
(3)学生成绩管理系统测试数据表
class_0 num name elec c_prog media eng math sport polity ave order
网络30331 3033101 马云飞 80 70 60 70 70 60 80
表中其余数据自己编造。
(5)使用链表编写程序(手写源程序代码,并给出注解)
定义链表结点
主函数main():定义链表头指针,调用录入、统计等函数对成绩表进行处理;
建立链表函数Create():输入班级到政治课成绩信息;
统计函数Statistic():计算平均成绩;
查询函数Lookup():查询指定学号学生成绩记录;
修改函数Modify():修改指定学号学生成绩记录;
删除函数Delete():删除指定学号学生记录;
输出函数Output():输出班级所有学生成绩记录;
插入函数Insert():按平均分顺序插入新结点。 展开
学生成绩的录入、统计、查询、修改、删除、输出。 画出功能结构图。
(2)学生成绩管理系统的数据结构表
序号 成员名(字段名) 数据类型 长度 字段含义
1 class_0 char 20 班级
2 num int 学号
3 name char 8 姓名
4 elec flaot 电子技术
5 c_prog float C++ 程序设计
6 media flaot 多媒体技术
7 eng float 大学英语
8 math float 高等数学
9 sport float 大学体育
10 polity float 马克思主义政治经济学
11 ave float 平均成绩
12 order int 名次
(3)学生成绩管理系统测试数据表
class_0 num name elec c_prog media eng math sport polity ave order
网络30331 3033101 马云飞 80 70 60 70 70 60 80
表中其余数据自己编造。
(5)使用链表编写程序(手写源程序代码,并给出注解)
定义链表结点
主函数main():定义链表头指针,调用录入、统计等函数对成绩表进行处理;
建立链表函数Create():输入班级到政治课成绩信息;
统计函数Statistic():计算平均成绩;
查询函数Lookup():查询指定学号学生成绩记录;
修改函数Modify():修改指定学号学生成绩记录;
删除函数Delete():删除指定学号学生记录;
输出函数Output():输出班级所有学生成绩记录;
插入函数Insert():按平均分顺序插入新结点。 展开
1个回答
展开全部
#include<iostream>
#include<fstream>
#include<string> //控制字符串的头文件
using namespace std;
class student//建立同学录的一个类
{
//头接点
public:
char name[20];
int num;
int age;
char sex;
double en;
double ma;
double com;
double ave;
student *next;
student *stu;
student(); //构造函数
void display()
{
cout<<"名字: "<<name<<" "<<"学号: "<<num<<" "<<"性别: "<<sex<<"年龄: "<<age<<"英语: "<<en<<" "<<"数学: "<<ma<<" "<<"计算机: "<<com<<endl;
}
student (char n[20],int nu, int ag, char se,double e,double m,double c,double av);
~ student ();
void Set();//添加
void Delete();//删除
void Alter();//修改
void List();//显示
void aver();
void ssearch();//查询
// void RearchN();
// void RearchNU();
void staxis(); //排序
void ssave(); //保存
void sload(); //读取
//排序函数
void pnumb();
void peng();
void pmat();
void pcomp();
friend void caozuo(int);
};
void student::aver()
{
double z;
z=en+ma+com;
ave=z/3;
}
student::student()//构造函数
{
strcpy(name, "nomame");
num=0;
sex='M';
age=0;
double en=0;
double ma=0;
double com=0;
double ave=0;
}
student::student (char n[20],int nu, int ag, char se,double e,double m,double c,double av)
{
strcpy(name, n);
num=nu;
sex=se;
age=ag;
en=e;
ma=m;
com=c;
ave=av;
}
student::~student(){};
student *s[50];
int i=0;
int j=0;
void student::Set()
{
cout<<"请输入姓名:"<<endl;
cin>>name;
cout<<"请输入学号:"<<endl;
cin>>num;
cout<<"请输入年龄:"<<endl;
cin>>age;
cout<<"请输入性别:"<<endl;
cin>>sex;
cout<<"请输入英语成绩:"<<endl;
cin>>en;
cout<<"请输入数学成绩:"<<endl;
cin>>ma;
cout<<"请输入计算机成绩:"<<endl;
cin>>com;
j++;
s[i]=new student(name,num, age, sex,en,ma,com,ave);
i++;
}
void student:: Delete() //(2)删除人员(Delete)
{
cout<<"请输入您要删除的学生姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
i--;
s[h]=s[h+1];
h++;
}
else cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!";
}
}
void student::Alter() //(3)修改数据(Alter)
{
cout<<"请输入您要修改的学生的姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
int nu;
int ag;
char se;
double e;
double m;
double c;
cout<<"请输入学号: "<<endl;
cin>>nu;
cout<<"请输入年龄:"<<endl;
cin>>ag;
cout<<"请输入性别:"<<endl;
cin>>se;
cout<<"请输入英语成绩:"<<endl;
cin>>e;
cout<<"请输入数学成绩:"<<endl;
cin>> m;
cout<<"请输入计算机成绩:"<<endl;
cin>>c;
s[h]->num=nu;
s[h]->age=ag;
s[h]->sex=se;
s[h]->en=e;
s[h]->ma=m;
s[h]->com=c;
cout<<"数据修改成功!";
break;
}
if (i == j)
{
cout<<"对不起!您要查询的学生不存在!"<<endl;
break;
}
}
}
void student::List() //(4)显示记录(List)
{
cout<<"本系统所有通讯录的数据如下:"<<endl;
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl;
for(int k=0;k<i;k++)
{
s[k]->display();
}
}
void student::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':
{ int n;
if(i==0)
{
cout<<"管理系统中没有输入数据!"<<endl; exit(0);
}
cout<<"请输入你要查询的学生的学号"<<endl;
cin>>n;
for(int j=0;j<i;j++)
{
if(s[j]->num==n)
{
cout<<"您要查询的学生是:"<<s[j]->name<<endl;
cout<<"年龄: "<<s[j]->age<<" "<<"性别: "<<s[j]->sex<<" "<<"英语:"<<s[j]->en<<" "<<"数学:"<<s[j]->ma<<" "<<"计算机:"<<s[j]->com<<"平均分:"<<endl;
break;
}
}
if (i == j)
{
cout<<"对不起!您要查询的学生不存在!"<<endl;
}
break;
}
case '2':
{ if(i==0)
{ cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl; exit(0); }
cout<<"请输入你要查询的学生姓名"<<endl;
cin>>name;
for(int j=0;j<i;j++)
{
if(strcmp(name,s[j]->name)==0)
{
cout<<"您要查询的学生是:"<<stu[j].name<<endl;
//cout<<"学号:"<<stu[j].num
cout<<"学号:"<<stu[j].num<<" "<<"年龄: "<<stu[j].age<<" "<<"性别: "<<stu[j].sex<<" "<<"英语:"<<stu[j].en<<" "<<"数学:"<<stu[j].ma<<" "<<"计算机:"<<stu[j].com<<"平均分:"<<endl;
break;
};
if (i == j)
{
cout<<"对不起!您要查询的学生不存在!"<<endl;
}
}
break;}
case '3':
return ;
}
}
void student::pnumb()//按学号排序
{
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->num) //中间的交换
{
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->display();
p1=p1->next;
}while(p1);
}
void student::pmat() //按数学成绩排序
{
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->ma>p1->next->ma) // 如果头结点大于第二个的
{ 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->ma>p1->next->ma)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{ p1->display();
p1=p1->next;
}while(p1);
}
void student::pcomp()//按语文成绩排序
{
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->com>p1->next->com) // 如果头结点大于第二个的
{
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->com>p1->next->com)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{
p1->display();
p1=p1->next;
}while(p1);
}
void student::peng()//按英语成绩排序
{
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->en>p1->next->en) // 如果头结点大于第二个的
{ 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->en>p1->next->en)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{ p1->display();
p1=p1->next;
}while(p1);
}
void student::staxis()//排序
{
char c;
cout<<"请选择以何种方式排序:"<<endl;
cout<<"1:以学号排序"<<endl;
cout<<"2:以英语成绩排序"<<endl;
cout<<"3:以数学成绩排序"<<endl;
cout<<"4:以计算机成绩排序"<<endl;
cout<<"5:返回"<<endl;
cout<<"请选择(1-5):"<<endl;
cin>>c;
switch (c)
{
case '1':pnumb(); break;
case '2':peng(); break;
case '3':pmat(); break;
case '4':pcomp(); break;
case '5':return;
}
}
void student::ssave() //保存到文件
{
char c;
cout<<"\n保存学生信息(将覆盖原文件),是否继续?[Y/N]:"; cin>>c;
if(toupper(c)!='Y') return;
ofstream tfile("date.txt",ios::binary);
student *p=stu;
while(p)// 写入文件
{
tfile<<p->name<<"\t"<<p->num<<"\t"<<p->en<<"\t"<<p->ma<<"\t"<<p->com<<"\t"<<p->ave;
tfile<<endl;
p=p->next;
}
tfile.close();
cout<<"保存完毕..."<<endl;
}
void student::sload() //读取
{
student *p;
p=stu;
while(p)
{
stu=p->next;
delete p;
p=stu;
}
ifstream tfile("date.txt",ios::binary);
char name1[20];
int num1;
char sex;
double en1,ma1,com1,ave1,age1;
tfile>>name1>>num1>>en1>>ma1>>com1>>ave1>>sex>>age1;
while(tfile.good())
{
//创建学生接点
student *s;
s=stu;
s=new student(name1,num1,age1,sex,en1,ma1,com1,ave1);
s->next=0;
s->ave=stu->ave;
if(stu) //若已经存在结点
{
student *p2;
p2=stu;
while(p2->next) //查找尾结点
{
p2=p2->next;
}
p2->next=s; //连接
}
else //若不存在结点(表空)
{
stu=s; //连接
}
tfile>>name1>>num1>>en1>>ma1>>com1>>ave1;
}
tfile.close();
cout<<"\n学生信息已经装入...\n";
}
void caozuo(int p)
{
student t;
switch(p)
{
case 0:t.Set();break;
case 1:t.Set();break;
case 2:t.Delete();break;
case 3:t.Alter();break;
case 4:t.List();break;
case 5:t.ssearch();//查询
case 6:t.staxis(); //排序
case 7:exit(0);break;
}
}
void main()
{
char w;
do
{
cout<<"请输入操作代码( 成绩录入/0 增加人员/1 删除人员/2 修改数据/3 显示记录/4 查询/5 排序/6 退出/7)"<<endl;
int a;
cin>>a;
caozuo(a);
cout<<"您想继续进行其他操作吗?(y/n)"<<endl;
cin>>w;
}while(w=='y');
} //利用while语句又回到了前面的循环
以前帮同学写的,贴出来供大家参考,稍微修改一下就行,希望对楼主有帮助,呵呵...
#include<fstream>
#include<string> //控制字符串的头文件
using namespace std;
class student//建立同学录的一个类
{
//头接点
public:
char name[20];
int num;
int age;
char sex;
double en;
double ma;
double com;
double ave;
student *next;
student *stu;
student(); //构造函数
void display()
{
cout<<"名字: "<<name<<" "<<"学号: "<<num<<" "<<"性别: "<<sex<<"年龄: "<<age<<"英语: "<<en<<" "<<"数学: "<<ma<<" "<<"计算机: "<<com<<endl;
}
student (char n[20],int nu, int ag, char se,double e,double m,double c,double av);
~ student ();
void Set();//添加
void Delete();//删除
void Alter();//修改
void List();//显示
void aver();
void ssearch();//查询
// void RearchN();
// void RearchNU();
void staxis(); //排序
void ssave(); //保存
void sload(); //读取
//排序函数
void pnumb();
void peng();
void pmat();
void pcomp();
friend void caozuo(int);
};
void student::aver()
{
double z;
z=en+ma+com;
ave=z/3;
}
student::student()//构造函数
{
strcpy(name, "nomame");
num=0;
sex='M';
age=0;
double en=0;
double ma=0;
double com=0;
double ave=0;
}
student::student (char n[20],int nu, int ag, char se,double e,double m,double c,double av)
{
strcpy(name, n);
num=nu;
sex=se;
age=ag;
en=e;
ma=m;
com=c;
ave=av;
}
student::~student(){};
student *s[50];
int i=0;
int j=0;
void student::Set()
{
cout<<"请输入姓名:"<<endl;
cin>>name;
cout<<"请输入学号:"<<endl;
cin>>num;
cout<<"请输入年龄:"<<endl;
cin>>age;
cout<<"请输入性别:"<<endl;
cin>>sex;
cout<<"请输入英语成绩:"<<endl;
cin>>en;
cout<<"请输入数学成绩:"<<endl;
cin>>ma;
cout<<"请输入计算机成绩:"<<endl;
cin>>com;
j++;
s[i]=new student(name,num, age, sex,en,ma,com,ave);
i++;
}
void student:: Delete() //(2)删除人员(Delete)
{
cout<<"请输入您要删除的学生姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
i--;
s[h]=s[h+1];
h++;
}
else cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!";
}
}
void student::Alter() //(3)修改数据(Alter)
{
cout<<"请输入您要修改的学生的姓名:"<<endl;
cin>>name;
for(int h=0;h<i;h++)
{
if(strcmp(name,s[h]->name)==0)
{
int nu;
int ag;
char se;
double e;
double m;
double c;
cout<<"请输入学号: "<<endl;
cin>>nu;
cout<<"请输入年龄:"<<endl;
cin>>ag;
cout<<"请输入性别:"<<endl;
cin>>se;
cout<<"请输入英语成绩:"<<endl;
cin>>e;
cout<<"请输入数学成绩:"<<endl;
cin>> m;
cout<<"请输入计算机成绩:"<<endl;
cin>>c;
s[h]->num=nu;
s[h]->age=ag;
s[h]->sex=se;
s[h]->en=e;
s[h]->ma=m;
s[h]->com=c;
cout<<"数据修改成功!";
break;
}
if (i == j)
{
cout<<"对不起!您要查询的学生不存在!"<<endl;
break;
}
}
}
void student::List() //(4)显示记录(List)
{
cout<<"本系统所有通讯录的数据如下:"<<endl;
if(i==0)
cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl;
for(int k=0;k<i;k++)
{
s[k]->display();
}
}
void student::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':
{ int n;
if(i==0)
{
cout<<"管理系统中没有输入数据!"<<endl; exit(0);
}
cout<<"请输入你要查询的学生的学号"<<endl;
cin>>n;
for(int j=0;j<i;j++)
{
if(s[j]->num==n)
{
cout<<"您要查询的学生是:"<<s[j]->name<<endl;
cout<<"年龄: "<<s[j]->age<<" "<<"性别: "<<s[j]->sex<<" "<<"英语:"<<s[j]->en<<" "<<"数学:"<<s[j]->ma<<" "<<"计算机:"<<s[j]->com<<"平均分:"<<endl;
break;
}
}
if (i == j)
{
cout<<"对不起!您要查询的学生不存在!"<<endl;
}
break;
}
case '2':
{ if(i==0)
{ cout<<"管理系统中没有录入数据或者数据已经被删除!"<<endl; exit(0); }
cout<<"请输入你要查询的学生姓名"<<endl;
cin>>name;
for(int j=0;j<i;j++)
{
if(strcmp(name,s[j]->name)==0)
{
cout<<"您要查询的学生是:"<<stu[j].name<<endl;
//cout<<"学号:"<<stu[j].num
cout<<"学号:"<<stu[j].num<<" "<<"年龄: "<<stu[j].age<<" "<<"性别: "<<stu[j].sex<<" "<<"英语:"<<stu[j].en<<" "<<"数学:"<<stu[j].ma<<" "<<"计算机:"<<stu[j].com<<"平均分:"<<endl;
break;
};
if (i == j)
{
cout<<"对不起!您要查询的学生不存在!"<<endl;
}
}
break;}
case '3':
return ;
}
}
void student::pnumb()//按学号排序
{
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->num) //中间的交换
{
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->display();
p1=p1->next;
}while(p1);
}
void student::pmat() //按数学成绩排序
{
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->ma>p1->next->ma) // 如果头结点大于第二个的
{ 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->ma>p1->next->ma)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{ p1->display();
p1=p1->next;
}while(p1);
}
void student::pcomp()//按语文成绩排序
{
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->com>p1->next->com) // 如果头结点大于第二个的
{
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->com>p1->next->com)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{
p1->display();
p1=p1->next;
}while(p1);
}
void student::peng()//按英语成绩排序
{
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->en>p1->next->en) // 如果头结点大于第二个的
{ 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->en>p1->next->en)
{
p2->next=p1->next;
p1->next=p1->next->next;
p2->next->next=p1;
p1=p2->next; //交换
}
}
}
p1=stu;
do
{ p1->display();
p1=p1->next;
}while(p1);
}
void student::staxis()//排序
{
char c;
cout<<"请选择以何种方式排序:"<<endl;
cout<<"1:以学号排序"<<endl;
cout<<"2:以英语成绩排序"<<endl;
cout<<"3:以数学成绩排序"<<endl;
cout<<"4:以计算机成绩排序"<<endl;
cout<<"5:返回"<<endl;
cout<<"请选择(1-5):"<<endl;
cin>>c;
switch (c)
{
case '1':pnumb(); break;
case '2':peng(); break;
case '3':pmat(); break;
case '4':pcomp(); break;
case '5':return;
}
}
void student::ssave() //保存到文件
{
char c;
cout<<"\n保存学生信息(将覆盖原文件),是否继续?[Y/N]:"; cin>>c;
if(toupper(c)!='Y') return;
ofstream tfile("date.txt",ios::binary);
student *p=stu;
while(p)// 写入文件
{
tfile<<p->name<<"\t"<<p->num<<"\t"<<p->en<<"\t"<<p->ma<<"\t"<<p->com<<"\t"<<p->ave;
tfile<<endl;
p=p->next;
}
tfile.close();
cout<<"保存完毕..."<<endl;
}
void student::sload() //读取
{
student *p;
p=stu;
while(p)
{
stu=p->next;
delete p;
p=stu;
}
ifstream tfile("date.txt",ios::binary);
char name1[20];
int num1;
char sex;
double en1,ma1,com1,ave1,age1;
tfile>>name1>>num1>>en1>>ma1>>com1>>ave1>>sex>>age1;
while(tfile.good())
{
//创建学生接点
student *s;
s=stu;
s=new student(name1,num1,age1,sex,en1,ma1,com1,ave1);
s->next=0;
s->ave=stu->ave;
if(stu) //若已经存在结点
{
student *p2;
p2=stu;
while(p2->next) //查找尾结点
{
p2=p2->next;
}
p2->next=s; //连接
}
else //若不存在结点(表空)
{
stu=s; //连接
}
tfile>>name1>>num1>>en1>>ma1>>com1>>ave1;
}
tfile.close();
cout<<"\n学生信息已经装入...\n";
}
void caozuo(int p)
{
student t;
switch(p)
{
case 0:t.Set();break;
case 1:t.Set();break;
case 2:t.Delete();break;
case 3:t.Alter();break;
case 4:t.List();break;
case 5:t.ssearch();//查询
case 6:t.staxis(); //排序
case 7:exit(0);break;
}
}
void main()
{
char w;
do
{
cout<<"请输入操作代码( 成绩录入/0 增加人员/1 删除人员/2 修改数据/3 显示记录/4 查询/5 排序/6 退出/7)"<<endl;
int a;
cin>>a;
caozuo(a);
cout<<"您想继续进行其他操作吗?(y/n)"<<endl;
cin>>w;
}while(w=='y');
} //利用while语句又回到了前面的循环
以前帮同学写的,贴出来供大家参考,稍微修改一下就行,希望对楼主有帮助,呵呵...
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询