24小时热门版块排行榜    

查看: 349  |  回复: 2
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

乐活人生

铜虫 (小有名气)

[求助] 有个小麻烦 请找出来错误 并改过来 谢谢

这是学生成绩管理系统  但查询排序和删除功能没有用 请完善一下
#include
#include
using namespace std;
// 数据结构
struct guanli
{
     char xuehao[20];
     char xingming[20];
     char sex[20];
     char jiguan[20];
     float c,e,w,zong,pingjun;
     guanli *link;
};

//输入数据
guanli * shuru(int num)
{
     cout << "共需输入 " << num << " 条记录:\n";

        guanli *head,*p,*tail;
         head = new guanli;
         tail = head;
         for(int i=0;i          {
             cout << "\n请输入第 " << i+1 << "条记录:\n";
                 p=new guanli;
                 cout << "学号: ";
                 cin >> p->xuehao;
                 cout << "姓名: ";
                 cin >> p->xingming;
                 cout << "性别: ";
                 cin >> p->sex;
                 cout << "籍贯: ";
                 cin >> p->jiguan;
                 cout << "成绩(eg. 20.5 30.5 40): ";
                 cin >> p->c >> p->e >> p->w;
                 p->link = NULL;

                // 添加节点
                 tail->link = p;
                 tail = p;
     }

        return head;
}

void jisuanzong(guanli *head)
{
         guanli *p = head->link;

        if(p!=NULL)
         {
                 p->zong = p->c + p->e + p->w;//计算总成绩平均成绩
                 p->pingjun = p->zong/3.0;// 计算最高成绩
     }
}
//输出最高总成绩
void zuigao(guanli *head)
{
         guanli *p = head->link,*m = head->link;
         while (p)
         {
                         if((m->c+m->e+m->w) < (p->c+p->e+p->w)) m = p;
                 p=p->link;
     }

        cout << m->xuehao << '\t' << m->xingming << '\t' << m->sex << '\t' << m->jiguan << '\t' <c+m->e+m->w<< endl;
}

//C单科平均成绩
void allc(guanli *head)
{
         guanli *p = head->link;
         float a = 0.0;
         while (p)
         {
                 a += p->c;
                 p = p->link;
     }
         cout << "C单科平均成绩: " << a << endl;
}

//英语单科平均成绩
void alle(guanli *head)
{
         guanli *p = head->link;
         float a = 0.0;
         while (p)
         {
                 a += p->e;
                 p = p->link;
     }
         cout << "英语单科平均成绩: " << a << endl;
}

//物理单科平均成绩
void allw(guanli *head)
{
         guanli *p = head->link;
         float a = 0.0;
         while (p)
         {
                 a += p->w;
                 p = p->link;
     }
         cout << "物理单科平均成绩: " << a << endl;
}

//C最高成绩
void czuigao(guanli *head)
{
         guanli *p = head->link,*m = head->link;
         while (p)
         {
             if (m->c < p->c) m = p;
             p = p->link;
         }
         cout << m->xuehao << '\t' << m->xingming << '\t' << m->c << endl;
}

//英语最高成绩
void ezuigao(guanli *head)
{
         guanli *p = head->link,*m = head->link;
         while (p)
         {
             if (m->e < p->e) m = p;
             p = p->link;
         }
         cout << m->xuehao << '\t' << m->xingming << '\t' << m->e << endl;
}

//物理最高成绩
void wzuigao(guanli *head)
{
         guanli *p = head->link,*m = head->link;
         while (p)
         {
             if (m->w < p->w) m = p;
             p = p->link;
         }
         cout << m->xuehao << '\t' << m->xingming << '\t' << m->w << endl;
}

//用姓名查询
void chaxingming(guanli *head,char *name)
{
         guanli *p = head->link;
         while(p && strcmp(p->xingming,name)!=0) p=p->link;
         if (p) cout << p->xuehao << '\t' << p->xingming << '\t' << p->sex << '\t' << p->jiguan << '\t' << endl;
}

//用学号查询
void chaxuehao(guanli *head,char *id)
{
         guanli *p = head->link;
         while(p!=NULL && strcmp(p->xuehao,id)!=0) p=p->link;
         if (p) cout << p->xuehao << '\t' << p->xingming << '\t' << p->sex << '\t' << p->jiguan << '\t' << endl;
}

// 排序
guanli* paixu(guanli *head)
{
         guanli *p = head->link;
         guanli *q, *tail, *temp;
         while (p && p->link) { tail = p; p = p->link; }

        float y = p->zong, t = 0.0;
         p = head->link;
         for (p = head->link; p && p!=tail; p = p->link)
         {
             for (q = p->link; q; q = q->link)
             {
                 if (q->zong > p->zong) { temp = p; p = q; q = temp; }
             }
         }

        return head;
}

// 删除
void shanchu(guanli *head,char *name)
{
         guanli *p = head->link;
         guanli *n = head;
         while (p)
         {
             if (0==strcmp(p->xingming,name))
             {
                 n->link = p->link;
                 delete p;   
             }
             else
             {
                 p = p->link;
                 n = n->link;
             }
         }
}

// 主函数
void main()
{      int a,b,c,d;char *e,*f,*g;

        cout<<"|---------------------------------------------------------|"<         cout<<"|                    学生成绩管理系统                     |"<         cout<<"|---------------------------------------------------------|"<                 cout<<"|-输入信息(1)  计算成绩(2)  查询信息(3)  排序(4)  删除(5)-|"<                 cout<<"|---------------------------------------------------------|"<                 cout<<"请输入序号进行相应的操作:"<                 cin>>a;
                switch(a)
                {
                case 1:
                        {
                        cout<<"输入多少学生的信息(输入个数):";
                                cin>>b;
               guanli *p;
               p = shuru(b);

          while (p && p->link)
                  {
                 p = p->link;
                 cout << "\n学号: " << p->xuehao
                 << "\n姓名: " << p->xingming
                 << "\n性别: " << p->sex
                 << "\n籍贯: " << p->jiguan
                 << "\nC成绩: "<< p->c <<"\tE成绩: " << p->e << "\tW成绩: " << p->w << endl;
                  }
                        }break;

                case 2:
                        {
             cout<<"输入多少学生的信息(输入个数):";
                                cin>>b;
               guanli *p;
               p = shuru(b);
               jisuanzong(p);

                           cout<<"|---------------------------------------------------------------------------|"<                            cout<<"|总成绩最高者(1)--C语言成绩最高者(2)--英语成绩最高者(3)--物理成绩最高者(4)--|"<                            cout<<"|---------------------------------------------------------------------------|"<                            cout<<"输入序号进行相应的操作:";
                           cin>>c;
                           switch(c)
                           {
                           case 1:zuigao(p);break;
                           case 2:czuigao(p);break;
                           case 3:ezuigao(p);break;
                           case 4:wzuigao(p);break;
                           }
                        }break;

                case 3:
                        {
               cout<<"输入多少学生的信息(输入个数):";
                                cin>>b;
               guanli *p;
               p = shuru(b);

               cout<<"|---------------------------------------|"<                            cout<<"|       学号查询(1)      姓名查询(2)    |"<                            cout<<"|---------------------------------------|"<                cout<<"输入序号进行相应的操作:";
                           cin>>d;
                           switch(d)
                           {
                           case 1:
                                   {
                                   cout<<"要查询学生学号是:";
                                   cin>>e;
                   chaxuehao(p,e);
                                   }break;

                           case 2:
                                   {
                                   cout<<"要查询学生名字:";
                                   cin>>f;
                   chaxingming(p,f);
                                   }break;
                           }
                        }break;
                case 4:
                        {

               cout<<"输入多少学生的信息(输入个数):";
                                cin>>b;
               guanli *p,*m;
               p = shuru(b);

                                m=paixu(p);
              cout<<"---------排序(按总成绩)-----------"<                 while (m && m->link)
                                {
                 m = m->link;
                 cout << "\n学号: " << m->xuehao
                 << "\n姓名: " << m->xingming
                 << "\n性别: " << m->sex
                 << "\n籍贯: " << m->jiguan
                 << "\nC成绩: "<< m->c <<"\tE成绩: " << m->e << "\tW成绩: " << m->w << endl;
                                }
                        }break;

                case 5:
                        {
                                cout<<"-------删除(按姓名)--------"<
               cout<<"输入多少学生的信息(输入个数):";
                                cin>>b;
               guanli *p;
               p = shuru(b);

                           cout<<"输入要删除的学生:";
                                   cin>>g;

                                shanchu(p,g);
                        }break;
                }
                }
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

乐活人生

铜虫 (小有名气)

但排序和删除还有查找都不行啊

[ 发自手机版 http://muchong.com/3g ]
3楼2012-06-29 00:01:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 3 个回答

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖


感谢参与,应助指数 +1
jjdg: 金币+1, 感谢参与 2012-06-29 00:15:32
就我昨天那code,你几乎没改啥啊
在main函数里面写个while loop,输入不是0的时候再switch,
然后针对每个case分别处理一下就行了.
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2012-06-28 23:53:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见