第0题 课程程序设计

来源:互联网 发布:人工智能机器 编辑:程序博客网 时间:2024/05/09 20:40

  不是很会写,只能写一个班级的。4个班级排序不出来。

#include<iostream>using namespace std;typedef struct student{ char no[4]; char name[32]; int score[6]; int total;}stu;typedef struct node{ stu data; struct node *prior,*next;}DLink;class list{private: DLink *L;public : void createList(); void displayLink(); void insert(); void del(); void modify(); void order();};void list::createList() //创建链表{ int i; DLink *p,*q; q=L; p=(DLink *)malloc(sizeof(DLink)); if(!p) { cout<<"内存分配失败!\n"; exit(0); } cout<<"输入学生学号!\n"; cin>>"%s",p->data.no; while(strcmp(p->data.no,"0000")) { cout<<"输入姓名:\n"; cin>>"%s",p->data.name; cout<<"依次输入数电 模电 英语 C++ 毛概 体育6门课程的成绩:\n"; for(i=0;i<6;i++) cin>>"%d",&p->data.score[i]; p->data.total=p->data.score[0]+p->data.score[2]; q->next=p; p->prior=q; p->next=L; L->prior=p; q=p; p=(DLink *)malloc(sizeof(DLink)); cout<<"输入学生学号:\n"; cin>>"%s",p->data.no; }} void list::displayLink() //显示学生表信息{ int i; DLink *p; p=L->next; cout<<"学号 姓名 语文 数学 英语 总分\n"; while(p!=L) { cout<<" %s ",p->data.no; cout<<" %s ",p->data.name; for(i=0;i<3;i++) cout<<"%d",p->data.score[i]; cout<<"%d\n",p->data.total; p=p->next; }}void list::insert() //在第i个位置插入学生信息{ int i; int j=1,k; DLink *p,*q; p=(DLink *)malloc(sizeof(DLink)); if(!p){ cout<<"内存分配失败!\n"; exit(0); } q=L; while(j<i&&q->next!=L) { j++; q=q->next; } if(q!=L) { cout<<"现在进行插入操作!输入学号:\n"; cin>>"%s",p->data.no; cout<<"输入姓名:\n"; cin>>"%s",p->data.name; cout<<"依次输入数电 模电 英语 C++ 毛概 体育6门课程的成绩:\n"; for(k=0;k<3;k++) cout<<"%d",&p->data.score[k]; p->data.total=p->data.score[0]+p->data.score[2]; p->next=q->next; q->next->prior=p; q->next=p; p->prior=p; }}void list::del() //删除操作{ char a[8]; DLink *p,*q; p=L->next; cout<<"输入要删除的学生的姓名:"; cin>>"%s",a; while(p!=L) { if(strcmp(a,p->data.name)==0) { p->prior->next=p->next; p->next->prior=p->prior; q=p; p=p->next; free(q); } else p=p->next; }}void list::modify() //修改学生成绩{ int b[3],i; DLink *p; p=L->next; char a[4]; cout<<"输入需要修改成绩的学生学号:\n"; cin>>("%s",a); while(p!=L) { if(strcmp(p->data.no,a)==0){ cin>>("依次输入修改后的数电 模电 英语 C++ 毛概 体育6门课程的成绩:\n"); for(i=0;i<3;i++) cin>>"%d",&b[i]; p->data.score[0]=b[0]; p->data.score[1]=b[1]; p->data.score[2]=b[2]; p->data.total=b[0]+b[1]+b[2]; break; } p=p->next; } if(p=L) cout<<"!\n";}void list::order() //按学生总分降序排列{ DLink *p,*q,*r; p=L->next; if(p!=L) { r=p->next; p->next=L; p=r; while(p!=L) { r=p->next; q=L; while(q->next!=L&&q->next->data.total>p->data.total) q=q->next; p->next=q->next; if(q->next!=L)q->next->prior=p; q->next=p; p->prior=q; p=r; } }}void main(){ list l; int n; cout<<"*******************************"<<endl; cout<<"1.创建"<<endl; cout<<"2.插入"<<endl; cout<<"3.删除"<<endl; cout<<"4.更改"<<endl; cout<<"5.排序"<<endl; cout<<"退出"<<endl; cout<<"*******************************"<<endl; cout<<"请输入您要选择的功能:"; cin>>n; do{ switch(n) { case 1: { l.createList(); l.displayLink(); break; } case 2: { l.insert(); l.displayLink(); break; } case 3: { l.del(); l.displayLink(); break; } case 4: { l.modify(); l.displayLink(); break; } case 5: { l.order(); l.displayLink(); break; } default: break; } }while(n>0&&n<6); cout<<"退出循环"<<endl;}


0 0
原创粉丝点击