学生信息系统代码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include
#include
#define NULL 0
#define LEN sizeof(struct student)
using namespace std;
struct student
{
int num;
char name[20];
char sex[5];
float math;
float english;
int order;
struct student *next;
};
int n;
int male=0;
int famale=0;
struct student *creat(void)
{
struct student*head,*p1,*p2;
n=0;
p1=p2=new student;
cout<<"请输入学生的基本信息:(学号输入0结束输入)"<cout<<"学号"<<"姓名"<<"性别"<<"数学"<<"英语"<cin>>p1->num>>p1->name>>p1->sex>>p1->math>>p1->english;
}
p2 ->next=NULL;
if(head==NULL)
{
cout<<"创建失败,请重建:"<head=creat();
}
return head;
}

//输出链表的函数
void print(struct student*head)
{
cout<<"此时学生基本信息的内容为:"<cout<<"学号"<<"姓名"<<"性别"<<"数学"<<"英语"<<"总分"<struct student *p;
p=head;
if(head!=NULL)
do
{
cout<<" "<sum<name<< setw(5)<setw(5)<math<english<math+p->english<p=p->next;
}while(p!=NULL);
}
//链表结点的删除操作
struct student*del(struct student*head)
{
if(n==0){cout<<"无学生可删除"<int num;
cout<<"请输入要删除的序号:(输入0结束)";
cin>>num;
while(num!=0)
{
struct student *p1,*p2;
p1=head;
while(num!=p1->num&&p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(num==p1->num)
{
if(p1==head)
{
if(strcmp(p1->sex,"男")==0)male--;
else famale--;
head=p1->next;
}
else
{
if(strcmp(p1->sex,"男")==0)male--;
else famale--;
p2->next=p1->next;
}
cout<n--;
}
else cout<<"未找到此数据!"<cout<<"请输入要删除的序号(输入0结束)";
cin>>num;
}
if(n==0){cout<<"此时学生信息表已空!"<return head;
}
//插入结点
struct student*insert(struct student*head)
{
struct student *stu;
stu=new student;
cout<<"请输入学生的基本信息:(学号输入0结束输入)"<cout<<"学号"<<"姓名"<<"性别"<<"数学"<<"英语"<cin>>stu->num>>stu->name>>stu->sex>>stu->math>>stu->english;
while(stu->num!=0)
{
if(strcmp(stu->sex,"男")==0)male++;
else famle++;
n++;
struct student *p0,*p1,*p2;
p1=head;
p0=stu;
if(head==NULL)
{
head=p0;
po->next=NULL;
}
else
{
while(po->num>p1->num&&p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(p0->numnum)
{
if(head==p1){head=p0;}
else p2->next=p0;
po->next=p1;
}
else
{
p1->next=p0;
po->next=NULL;
}
}
stu=new student;
cin>>stu->num>>stu->name>>stu->sex>>stu->math>>stu->english;
}
return head;
}
return head;
}
//根据学

号查找
void SearchNum(struct student*head)
{
int num;
struct student *p;
p=head;
cout<<"请输入要查找的学生的学号:";
cin>>num;
while(p->num==num)
{
cout<<"该生的信息为:"<cout<<"名次"<<"学号"<<"姓名"<<"性别"<<"数学"<<"英语"<<"总分"<cout<<" "<order<num<name<sex<math<english<math+p->english<}
else cout<<"无该生!"<}
//根据姓名查找
void SearchName(struct student*head)
{
struct student*p;
p=head;
char name[20];
cout<<"请输入要查找的学生的姓名:";
cin>>name;
e3hile(strcmp(p-name,name)!=0&7p->next!=NULL)
{
p=p->next;
}
if(strcmp(p->name,name)==0)
{
cout<<"该生的信息为:"<cout<<"名次"<<"学号"<<"姓名"<<"性别"<<"数学"<<"英语"<<"总分"<cout<<" "<order<num<name<sex<math<english<math+p->english<}
else cout<<"无该生!"<}
//按成绩排序
struct student *sort(struct student*head)
{
struct student*p1,*p2,*p0;
float max;
char temp[20];
int NO=0;
p0=head;
p2=head;
p1=p2->next;
max=(p2->math+p2->english);
while(p0->next!=NULL)
{
while(p1!=NULL)
{
if((p1->math+p1->english)>max)
{
max=(p1->marh+p1->english);
p2=p1;
}
p1=p1->next;
};

p2->order=++NO;
max=p2->order;
p2->order=p0->order;
p0->order=max;
max=p2->num;
p2->num=p0->num;
po->num=max;
max=p2->math;
p2->math=p0->math;
po->math=max;
max=p2->english;
p2->english=p0->english;
po->english=max;
strcpy(temp,p2->name);
strcpy(p2->name,p0->name);
strcpy(p0->name,temp);
strcpy(temp,p2->sex,p0->sex);
strcpy(p2->sex,p0->sex);
strcpy(p0->sex,temp);
po=po->next;
p2=p0;
p1=p2->next;
max=(p2->math+p2->english);
}
if(po->next==NULL)p2->order=++NO;
return head;
//链表的输出
void print2(struct student*head)
{}
cout<<"班级学生的基本信息及名次为:"<cout<<"名次"<<"学号"<<"姓名"<<"性别"<<"数学"<<"英语"<<"总分"<struct sudent *p;
p=head;
int No=1;
if(head!=NULL)
do {
cout<<" "<num<name<sex<math<english<math+p->english<p=p->next;
No++;
}\
while(p!=NULL);
cout<}
//主函数
int main()
{
struct sudent *head;
int a;
cout<cout<<"1.输出学生信息并按总成绩排序"<cout<<"2.根据学号来查询学生信息"<cout<<"3.

根据姓名来查找学生信息"<cout<<"4.删除学生(删除后自动排序)"<cout<<"5.添加学生(添加后自动排序)"<cout<<"6.计算总人数及男女生人数"<cout<<"0.结束程序"<while(a)
{
cout<<"请输入操作序号:";
cin>>a;
if(1==0)cout<<"已经退出程序!"<if(a>6)cout<<"无该选项,请从0~6中选择"<switch(a)
{
case 1:head=creat();head=sort(head);print2(head);break;
case 2:SearchNum(head);break;
case 3:SearchName(head);break;
case 4:head=del(head);head=sort(head);print2(head);break;
case 5:head=insert(head);head=sort(head);print2(head);break;
case 6:cout<<"此时总人数"<famale<<"人"<}
}
return 0;
}







相关文档
最新文档