24小时热门版块排行榜    

查看: 986  |  回复: 4
本帖产生 1 个 博学EPI ,点击这里进行查看

乐活人生

铜虫 (小有名气)

[求助] 帮帮我 这是个学生成绩管理系统 有错误改一下

谁能帮我一下 看看哪里错了 改过来 谢谢
#include
#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(){
        guanli *head,*p,*tail;
        head=new guanli;
        tail=head;
        for(int i=0;i<3;i++){
                p=new guanli;
        cout<<"输入学号:";
        cin>>p->xuehao;
        cout<<"输入姓名:";
        cin>>p->xingming;
        cout<<"输入性别:";
        cin>>p->sex;
        cout<<"输入籍贯:";
        cin>>p->jiguan;
        cout<<"输入成绩:";
        cin>>p->c>>p->e>>p->w;
           tail->link=p;
           tail=p;}
        tail->link=NULL;
        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;
        if(p){
                if(m->zongzong) m=p;
                else ;
                p=p->link;}
        cout<xuehao<<'\t'<xingming<<'\t'<sex<<'\t'<jiguan<<'\t'<zong< void allc(guanli *head){
        guanli *p=head->link;float a=0;
        if(p!=NULL){
                a=a+p->c;
                p=p->link;}
        cout<
void alle(guanli *head){
        guanli *p=head->link;float a=0;
        if(p!=NULL){
                a=a+p->e;
                p=p->link;}
        cout< void allw(guanli *head){
        guanli *p=head->link;float a=0;
        if(p!=NULL){
                a=a+p->w;
                p=p->link;}
        cout< void czuigao(guanli *head){
        guanli *p=head->link,*m=head->link;
        if(m->cc){
           m=p;
               p=p->link;}
        cout<xuehao<<'\t'<xingming<<'\t'<c< void ezuigao(guanli *head){
        guanli *p=head->link,*m=head->link;
        if(m->ee){
           m=p;
               p=p->link;}
        cout<xuehao<<'\t'<xingming<<'\t'<e< void wzuigao(guanli *head){
        guanli *p=head->link,*m=head->link;
        if(m->ww){
           m=p;
               p=p->link;}
        cout<xuehao<<'\t'<xingming<<'\t'<w< void chaxinming(guanli *head,char x){
        guanli *p=head->link;
        while(p!=NULL&&(p->xingming)!="x"
                p=p->link;
cout<xuehao<<'\t'<xingming<<'\t'<sex<<'\t'<jiguan<<'\t'< void chaxuehao(guanli *head,char x){
        guanli *p=head->link;
        while(p!=NULL&&(p->xuehao)!="x"
                p=p->link;
cout<xuehao<<'\t'<xingming<<'\t'<sex<<'\t'<jiguan<<'\t'<
guanli* paixu(guanli *head){
        guanli *p=head->link;
        float y=p->zong,t=0;
        p=p->link;
        for(int i=0;i<9;i++){
                if(yzong) y=t;t=p->zong;p->zong=y;}
        return head;}
void shanchu(guanli *head,char x){
        guanli *p=head->link;guanli *n=head,*m;
        for(int i=0;i<10;i++){
                n->link=p;
                m=p->link;
        if(p->xingming=="x"
                delete p;}
        n->link=m;
}
void main(){
        guanli *p;
    p=shuru();
        cout<<"学号"<         for(int i=0;i<3;i++){
     p=p->link;
         cout<xuehao<xingming<sex<jiguan<c<e<w<

» 猜你喜欢

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

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

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
乐活人生: 金币+45, 博学EPI+1, ★★★很有帮助 2012-06-27 20:45:00
楼主的程序流程还算清晰,但是代码有不少问题
许多循环的地方应该用while/for,却用了if,体现在几个求最大值和平均分总分的函数中
排序的时候应该双循环排,需要2个指针,
前后数目不一致,有时候是3,有时候10,肯定出错
float初始化不要用整型的0,虽然不出错,但是不正规
格式上,写代码不要吝啬空白,在=,+等符号前后加上空白不会影响程序运行,但是可读性大大增强

ps.论坛帖代码最好用[code][/code]包围起来,否则可能会有表情符号出现

下面调试通过了
CODE:
#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->zong < p->zong) m = p;
                p=p->link;
    }

        cout << m->xuehao << '\t' << m->xingming << '\t' << m->sex << '\t' << m->jiguan << '\t' << m->zong << 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 chaxinming(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 && 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 > q->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;
                p = NULL;
            }
            else
            {
                p = p->link;
                n = n->link;
            }
        }
}

// 主函数
void main()
{
        guanli *p;
        p = shuru(2);

    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;
        }
}

运行结果:
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2012-06-27 20:40:46
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

墨绿色

金虫 (正式写手)

其实最好的验证方式是直接运行一下
行侠仗义
3楼2012-06-27 21:19:07
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

乐活人生

铜虫 (小有名气)

不正确啊

[ 发自手机版 https://muchong.com/3g ]
4楼2012-06-28 16:58:30
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

乐活人生

铜虫 (小有名气)

引用回帖:
2楼: Originally posted by libralibra at 2012-06-27 20:40:46
楼主的程序流程还算清晰,但是代码有不少问题
许多循环的地方应该用while/for,却用了if,体现在几个求最大值和平均分总分的函数中
排序的时候应该双循环排,需要2个指针,
前后数目不一致,有时候是3,有时候10,肯定出 ...

有错误啊  查询和排序删除都不行 这有一份 你看一下
5楼2012-06-28 18:12:41
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 乐活人生 的主题更新
信息提示
请填处理意见