| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1986 人关注过本帖
标题:c语言-修改学生成绩-模块有两个棘手问题,求各位help
只看楼主 加入收藏
廉价的咖啡
Rank: 2
来 自:湖北 荆门
等 级:论坛游民
威 望:2
帖 子:53
专家分:17
注 册:2014-10-9
结帖率:72.73%
收藏
已结贴  问题点数:50 回复次数:8 
c语言-修改学生成绩-模块有两个棘手问题,求各位help
//************************************|·修改学生成绩·|****************************************/
void mofsorc(struct allstudentinfo *p_student)
{
    int i,j,k,count;
    float sorc;
    char ch;
    char *tempname;

    count=sorcdatfile(p_student);
    if(!count)
    {
        printf(" 读取数据失败,请确认已成功录入或文件是否损坏!");
        getch();
        system("cls");
        return ;
    }
    tempname=(char *)malloc(20*sizeof(char));                                            //分配动态内存
    printf(" 请输入要修改成绩的学生姓名:");
    while(gets(tempname)!=NULL&&tempname[0]!='\0')
    {
        for(i=0;i<count;i++)
        {
            if(strcmp(tempname,p_student[i].student1.name))
            {
                continue;
            }
            else
            {
                printf(" 请选择要修改的科目成绩:1.大学语文 2.高等数学 3.大学英语 4.c程序设计 5    .java应用程序设计 6.媒体应用\n");
                scanf("%d",&j);
                fflush(stdin);
                if(j==1)
                {
                    printf(" 请重新输入%s的大学语文成绩:",tempname);
                    scanf("%f",&sorc);
                    p_student[i].student1.sorc[0]=sorc;
                    fflush(stdin);
                    //"w+b"读取或写入二进制文件,当指定文件存时建立新文件;当指定文件不存在时文件原有内容丢失
                    sorcfile=fopen(filename1,"w+b");
                    for(k=0;k<count;k++)
                    {
                        if(fwrite(&p_student[i].student1,sizeof(struct studentsorc),1,sorcfile)!=1)
                        {
                            free(tempname);
                            fclose(sorcfile);                                //写入时报关闭文件
                            printf("修改失败,返回.......");
                            getch();
                            system("cls");
                            return ;
                        }
                    }
                    free(tempname);
                    fclose(sorcfile);
                    printf("修改成功,返回......");
                    getch();
                    system("cls");
                    return ;
                }
                else if(j==2)
                {
                    printf(" 请重新输入%s的高等数学成绩:",tempname);
                    scanf("%f",&sorc);
                    p_student[i].student1.sorc[2]=sorc;
                    fflush(stdin);
                    //"w+b"读取或写入二进制文件,当指定文件存时建立新文件;当指定文件不存在时文件原有内容丢失
                    sorcfile=fopen(filename1,"w+b");
                    for(k=0;k<count;k++)
                    {
                        if(fwrite(&p_student[i].student1,sizeof(struct studentsorc),1,sorcfile)!=1)
                        {
                            free(tempname);
                            fclose(sorcfile);                                //写入时报关闭文件
                            printf("修改失败,返回.......");
                            getch();
                            system("cls");
                            return ;
                        }
                    }
                    free(tempname);
                    fclose(sorcfile);
                    printf("修改成功,返回......");
                    getch();
                    system("cls");
                    return ;
                }
                else if(j==3)
                {
                    printf(" 请重新输入%s的大学英语成绩:",tempname);
                    scanf("%f",&sorc);
                    p_student[i].student1.sorc[1]=sorc;
                    fflush(stdin);
                    //"w+b"读取或写入二进制文件,当指定文件存时建立新文件;当指定文件不存在时文件原有内容丢失
                    sorcfile=fopen(filename1,"w+b");
                    for(k=0;k<count;k++)
                    {
                        if(fwrite(&p_student[i].student1,sizeof(struct studentsorc),1,sorcfile)!=1)
                        {
                            free(tempname);
                            fclose(sorcfile);                                //写入时报关闭文件
                            printf("修改失败,返回.......");
                            getch();
                            system("cls");
                            return ;
                        }
                    }
                    free(tempname);
                    fclose(sorcfile);
                    printf("修改成功,返回......");
                    getch();
                    system("cls");
                    return ;
                }
                else if(j==4)
                {
                    printf(" 请重新输入%s的c程序设计成绩:",tempname);
                    scanf("%f",&sorc);
                    p_student[i].student1.sorc[4]=sorc;
                    fflush(stdin);
                    //"w+b"读取或写入二进制文件,当指定文件存时建立新文件;当指定文件不存在时文件原有内容丢失
                    sorcfile=fopen(filename1,"w+b");
                    for(k=0;k<count;k++)
                    {
                        if(fwrite(&p_student[i].student1,sizeof(struct studentsorc),1,sorcfile)!=1)
                        {
                            free(tempname);
                            fclose(sorcfile);                                //写入时报关闭文件
                            printf("修改失败,返回.......");
                            getch();
                            system("cls");
                            return ;
                        }
                    }
                    free(tempname);
                    fclose(sorcfile);
                    printf("修改成功,返回......");
                    getch();
                    system("cls");
                    return ;
                }
                else if(j==5)
                {
                    printf(" 请重新输入%s的java应用程序设计成绩:",tempname);
                    scanf("%f",&sorc);
                    p_student[i].student1.sorc[4]=sorc;
                    fflush(stdin);
                    //"w+b"读取或写入二进制文件,当指定文件存时建立新文件;当指定文件不存在时文件原有内容丢失
                    sorcfile=fopen(filename1,"w+b");
                    for(k=0;k<count;k++)
                    {
                        if(fwrite(&p_student[i].student1,sizeof(struct studentsorc),1,sorcfile)!=1)
                        {
                            free(tempname);
                            fclose(sorcfile);                                //写入时报关闭文件
                            printf("修改失败,返回.......");
                            getch();
                            system("cls");
                            return ;
                        }
                    }
                    free(tempname);
                    fclose(sorcfile);
                    printf("修改成功,返回......");
                    getch();
                    system("cls");
                    return ;
                }
                else if(j==6)
                {
                    printf(" 请重新输入%s的多媒体应用设计成绩:",tempname);
                    scanf("%f",&sorc);
                    p_student[i].student1.sorc[5]=sorc;
                    fflush(stdin);
                    //"w+b"读取或写入二进制文件,当指定文件存时建立新文件;当指定文件不存在时文件原有内容丢失
                    sorcfile=fopen(filename1,"w+b");
                    for(k=0;k<count;k++)
                    {
                        if(fwrite(&p_student[i].student1,sizeof(struct studentsorc),1,sorcfile)!=1)
                        {
                            free(tempname);
                            fclose(sorcfile);                                //写入时报关闭文件
                            printf("修改失败,返回.......");
                            getch();
                            system("cls");
                            return ;
                        }
                    }
                    free(tempname);
                    fclose(sorcfile);
                    printf("修改成功,返回......");
                    getch();
                    system("cls");
                    return ;
                }
                else
                {
                    printf("没有此科目,返回......");
                    free(tempname);
                    getch();
                    system("cls");
                    return ;
                }
            }
            }
            printf("没有找到%s的学习成绩,返回......",tempname);
            free(tempname);
            getch();
            system("cls");
            return ;
    }
    printf("输入有误,返回......");
    free(tempname);
    getch();
    system("cls");
    return ;
}

各位朋友你们好:
    这是一个修改学生成绩的c语言模块 ,我有两点无法理解,还请教各位指点一二
1,在这个修改模块中 一共有6们课程,我用的是结构体
struct studentinfo                                                //--学生个人信息结构
{
    char name [NAME];                                            //学生姓名
    char sex  [SEX];                                            //学生性别
    char birth [BIRTH];                                            //出生日期
    char adddr [ADDDR];                                            //学生地址
    char poto [POTO];                                            //联系电话
    char dak [DAK];                                                //邮政编码
    char school[SCHOOL];                                        //所在学校
};

struct studentsorc                                                //--学生成绩结构
{
    char name [NAME];                                            //学生姓名
    int ID;                                                        //学生学号
    float sorc[6];                                                //记录学生成绩
    float aver;                                                    //平均分
    float sum;                                                    //总分
};

struct allstudentinfo                                            //--学生全部结构  (用于存放学生的基本信息和成绩信息)
{
    struct studentinfo student;
    struct studentsorc student1;
};
中的struct studentsorc.sorc[6]来存储数据的,在这个模块中是
p_student[i].student1.sorc[1]=sorc;        存储语文
p_student[i].student1.sorc[2]=sorc;        存储数学               
p_student[i].student1.sorc[1]=sorc;        存储英语
p_student[i].student1.sorc[4]=sorc;        存储c语言
p_student[i].student1.sorc[4]=sorc;        存储java
p_student[i].student1.sorc[5]=sorc;        存储多媒体
怎么是这样存储的,难道不是按照数组的顺序0,1,2,3,4,5来一次存储各个分数吗?

2,在每个存储p_student[i].student1.sorc[1]=sorc; 数据中为什么还要在p_student[i].student1.sorc[1]加上一个=sorc这是什么意思,不了解
搜索更多相关主题的帖子: system return c语言 count 
2016-07-14 11:18
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:40 
我注意到
j==1,j==2,j==3...里面的内容大同小异,都是修改某一个成绩
但是所修改的score[i]却很无厘头,跟j没什么直接联系(看起来)。。。我虽然没看到完整的代码,但我感觉这里是错的吧

而且,j==1,j==2,j==3...有必要用if else吗?直接写成if(j<6&&j>=0)修改score[j]不就好了


[此贴子已经被作者于2016-7-14 11:42编辑过]


φ(゜▽゜*)♪
2016-07-14 11:25
廉价的咖啡
Rank: 2
来 自:湖北 荆门
等 级:论坛游民
威 望:2
帖 子:53
专家分:17
注 册:2014-10-9
收藏
得分:0 
回复 2楼 书生牛犊
我是将上面//·修改学生成绩·/模块中将问题都挑选出来的,并做了个简要的说明

就在这一刻,你的对手依旧不停的翻动书页。
2016-07-14 11:33
zx315
Rank: 5Rank: 5
来 自:广东
等 级:职业侠客
威 望:2
帖 子:86
专家分:378
注 册:2016-7-13
收藏
得分:10 
回复 楼主 廉价的咖啡
第1个问题,就是用 0 - 5 下标来赋值吧,别人写的代码也不一定就是对的~好像 score 还拼错了
第2个问题,不就是赋值吗?还是我没理解你的问题~~

Read The Fucking Source Code~
2016-07-14 11:41
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:0 
回复 3楼 廉价的咖啡
我大概扫过一遍,每组else if  的内容都基本一样,有区别的就是所修改的score[]
而我认为所修改的score【】位置也是错的
正如:
p_student[i].student1.sorc[0]=sorc;      j=1  存储语文
p_student[i].student1.sorc[2]=sorc;      j=2  存储数学              

p_student[i].student1.sorc[1]=sorc;      j=3  存储英语
p_student[i].student1.sorc[4]=sorc;     j=4   存储c语言
p_student[i].student1.sorc[4]=sorc;     j=5   存储java
p_student[i].student1.sorc[5]=sorc;     j=6   存储多媒体
怎么是这样存储的,难道不是按照数组的顺序0,1,2,3,4,5来一次存储各个分数吗?
存储英语和语文的居然在一个位置,C语言页和Java的在一个坐标,太侠了吧。

--------------------------------------
总之,我的想法是,这个程序应该是不能正确运行的,楼主可以自己试试运行完整程序,。


[此贴子已经被作者于2016-7-14 11:51编辑过]


φ(゜▽゜*)♪
2016-07-14 11:44
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
可以的话可以把代码贴全了,就你问的上面,上面几位朋友看法感觉差不多,或者你可以自己先改改看,如果是自己写的,应该不至于很难
2016-07-14 11:49
廉价的咖啡
Rank: 2
来 自:湖北 荆门
等 级:论坛游民
威 望:2
帖 子:53
专家分:17
注 册:2014-10-9
收藏
得分:0 
回复 5楼 书生牛犊
看来 c语言程序设计基础与项目实训 这本书的程序不能全信啊 我是说的,这还是头一次见到这样存储数据的  谢谢你的提醒  你这么一说我心里就有底了 也就明白了
    谢谢你的帮助

就在这一刻,你的对手依旧不停的翻动书页。
2016-07-14 12:01
廉价的咖啡
Rank: 2
来 自:湖北 荆门
等 级:论坛游民
威 望:2
帖 子:53
专家分:17
注 册:2014-10-9
收藏
得分:0 
回复 6楼 wanglianyi1
恩恩 好的 我自己柔和书本上的程序,谢谢你的帮助

就在这一刻,你的对手依旧不停的翻动书页。
2016-07-14 12:02
廉价的咖啡
Rank: 2
来 自:湖北 荆门
等 级:论坛游民
威 望:2
帖 子:53
专家分:17
注 册:2014-10-9
收藏
得分:0 
回复 4楼 zx315
恩恩 谢谢你的帮助 我现在明白书本上的项目案例是怎么一回事了

就在这一刻,你的对手依旧不停的翻动书页。
2016-07-14 12:03
快速回复:c语言-修改学生成绩-模块有两个棘手问题,求各位help
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018930 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved