#include <iostream.h〉
#include <iomanip。h>
#include <fstream〉
#include 〈vector〉
#include 〈malloc。h〉
#include 〈stdlib.h〉
#include 〈string〉
#include 〈process。h〉
#include <stdio.h〉
#define LEN sizeof(struct student)
using namespace std;
int n=0; //定义一个全局变量统计学生人数
struct student//定义一个学生信息的结构体
{
char name[20]; //用来存放姓名的
char sex[20]; //用来存放性别的
char yuanxi[20];//用来存放院系的
long int id; //用来存放学号的
int score[4]; //用来存放分数的
int total; //用来存放总分数的
struct student *next;
};
vector 〈student〉 stu;
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 int num);//指针函数*cancel()用来删除考生信息。
student *find(student *head,long int num); //指针函数*find()用来查考生信息.
void inorder(student *head);//定义inorder()函数将考生的总分从大到小排列并输出
void average( student *head);//求学生成绩的平均分的函数
void save(student *head);//保存函数
student *Read();//读取函数
private:
student *p1,*p2,*p3,*head,st;
};
Information::Information() //构造函数
{
cout〈〈" ******************************************************************************\n”;
cout〈〈” —-—-----——-———-——————-——〈〈欢迎您使用学生信息管理系统〉>——-—-—-—-————————-——————\n”;
cout〈<" ******************************************************************************\n\n”;
}
Information::~Information() //构造函数
{
cout〈〈" ******************************************************************************\n”;
cout<〈” -----——-—-—-—-—————-————<<谢谢您使用学生信息管理系统〉>———-———-—-—-—---—-—-——-—\n”;
cout<<” ******************************************************************************\n";
}
student *Information::creat(void) //定义一个指向struct student的结构体指针函数*creat()用来增加学生信息。
{
char ch[20];n=0; //用来存放姓名的
p1=p2=(student *)malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元
cout〈〈" --———--—-————<〈请建立学生考试信息表,在姓名处输入 ! 结束输入.〉>-—-----——-———-"〈〈endl;
cout〈〈”姓名:";
cin〉〉ch;
head=NULL; //给指针head赋初值
while (strcmp(ch,"!”)!=0) //调用字符比较函数strcmp()用来判断是否继续输入
{
char str[10];
int flag=0;
p1=(student *)malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元
strcpy(p1—〉name,ch); //将循环结构前面输入的姓名复制到结构体名为p1的数组name中
cout〈<” 性别:”;
cin〉〉p1-〉sex;
cout〈〈"院系:” ;
cin>>str;
cout〈〈" 学号(9位):”;
do{
cin〉〉str;
if(atol(str)〉999999999 || atol(str)<1)
cout〈〈”对不起,请正确输入!\n”;
else
{
p1-〉id=atol(str); flag=1;
}
}while(flag==0);
flag=0; 字符串函数详解
cout〈〈” 语文成绩:”;
do{
cin〉>str;
if(atoi(str)>100 || atoi(str)<1)
cout〈〈”对不起,请输入1—100之间的数字!!\n”;
else
{
p1—>score[0]=atoi(str); flag=1;
}
}while(flag==0);
flag=0;
cout<<" 外语成绩:";
do{
cin>〉str;
if(atoi(str)〉100 || atoi(str)〈1)
cout<〈"对不起,请输入1—100之间的数字!!\n”;
else
{ p1—〉score[1]=atoi(str); flag=1;}
}while(flag==0);
flag=0;
cout〈〈” 数学成绩:";
do{
cin>〉str;
if(atoi(str)〉100 || atoi(str)<1)
cout〈〈”对不起,请输入1-100之间的数字!!\n”;
else
{ p1->score[2]=atoi(str); flag=1;}
}while(flag==0);
flag=0;
cout〈<” C++成绩:”;
do{
cin〉〉str;
if(atoi(str)〉100 || atoi(str)<1)
cout〈〈”对不起,请输入1—100之间的数字!!\n”;
else
{ p1-〉score[3]=atoi(str); flag=1;}
}while(flag==0);
flag=0;
p1-〉total=p1-〉score[0]+p1->score[1]+p1—〉score[2]+p1-〉score[3];//计算总分
if(n==0)head=p1;//如果是输入第一组学生考试信息就将指针p1赋给指针head
else p2-〉next=p1;//否则将p1赋给p2所指结构体的next指针
p2=p1;//将指针p1赋给指针p2
n++; //将n的值加1
cout〈〈” 姓名:”;
cin>〉ch;//将输入的姓名存放到字符数组ch中
}
p2—〉next=NULL;//将p2所指结构体的next指针重新赋空值
return (head);//将输入的第一组学生考试信息返回
}
void Information::output(student *head) //定义output()函数将学生的信息从头指针所指内容开始输出
{
if(head==NULL) cout<〈" 这是一个空表,请先输入考生成绩。\n”;
else{
cout<<”——-——-——-————-———-———————-—-———-—————-——-——-———---—-—--————---—--———--———-————-\n”;
cout〈〈” *学生成绩信息表*\n";
cout〈〈"—--—--————————-——------————————---——————-—-——--————-—--———-——-—-———-—-—-——-————\n”;
cout<〈”学号 姓 名 性别 院系 语文 英语 数学 C++ 平均成绩 总分\n”;
cout<〈"—-———-——-—---—---—-—-——-—-———-—————--———-—-————————————-—----—-————-——-———-—---\n”;
p1=head;//将头指针赋给p
do
{
cout〈<setw(8)〈〈p1-〉id
〈〈setw(9)〈<p1->name
<〈setw(8)〈<p1-〉sex
〈<setw(13)〈〈p1—>score[0]
〈〈setw(16)〈<p1-〉score[1]
<〈setw(10)<〈p1-〉score[2]
〈<setw(9)〈〈p1-〉score[3]
<〈setw(6)〈〈p1—〉total/4。0
〈<setw(11)<〈p1—〉total〈<endl;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论