24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 371  |  回复: 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的回帖

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的回帖

乐活人生

铜虫 (小有名气)

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

[ 发自手机版 http://muchong.com/3g ]
3楼2012-06-29 00:01:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 乐活人生 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 请问共同通讯和共同一作的认可度问题 10+4 psa1234 2026-04-01 9/450 2026-04-02 22:03 by god_tian
[考研] 材料调剂 +7 一样YWY 2026-04-02 7/350 2026-04-02 21:49 by dongzh2009
[考研] 275学硕081000服从调剂到其他专业,保不住本专业了 +7 一只小小水牛 2026-04-02 8/400 2026-04-02 14:23 by alice-2022
[考研] 301求调剂 +14 骆驼男人 2026-04-02 14/700 2026-04-02 14:08 by baoball
[考研] 材料化工340求调剂 +5 jhx777 2026-03-30 5/250 2026-04-02 12:45 by smileboy2006
[考研] 一志愿北交大材料工程总分358 +3 cs0106 2026-04-02 5/250 2026-04-02 11:37 by olim
[考研] 07生物学求调剂 一志愿同济大学359分 +3 LAMC. 2026-03-30 3/150 2026-04-02 10:26 by 18828373951
[考研] 377求调剂 +3 RASKIN 2026-04-02 3/150 2026-04-02 09:45 by zzchen2000
[考研] 275求调剂 +12 waltzh 2026-04-01 12/600 2026-04-01 21:44 by chyhaha
[考研] 食品学硕362求调剂 +3 xuanxianxian 2026-04-01 3/150 2026-04-01 21:05 by 啊李999
[考研] 求调剂0703 +5 周嘉尧 2026-03-31 8/400 2026-04-01 20:32 by ltltkkk
[考研] 286求调剂 +5 Sa67890. 2026-04-01 7/350 2026-04-01 19:50 by 6781022
[考研] 350求调剂 +7 阿佳~ 2026-03-31 7/350 2026-04-01 16:12 by yanflower7133
[考研] 一志愿 南京航空航天大学 ,080500材料科学与工程学硕 +10 @taotao 2026-03-31 11/550 2026-04-01 09:43 by xiayizhi
[考研] 339求调剂 +5 zjjkt 2026-03-31 5/250 2026-04-01 09:18 by JourneyLucky
[考研] 335求调剂 +3 321* 2026-03-31 4/200 2026-04-01 00:00 by 321*
[考研] 本科211生物医学工程085409求调剂339分 +7 里子木yy 2026-03-29 7/350 2026-03-31 14:35 by fmesaito
[考研] 332求调剂 +6 @MZB382400 2026-03-28 6/300 2026-03-30 16:57 by 无际的草原
[考研] 343求调剂 +6 爱羁绊 2026-03-29 6/300 2026-03-29 12:00 by 无际的草原
[考研] 药学105500求调剂 +3 Ssun。。 2026-03-28 3/150 2026-03-28 11:24 by lxf170613
信息提示
请填处理意见