| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 501 人关注过本帖
标题:求教 学生成绩管理系统出错
只看楼主 加入收藏
congcongjoy
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-7-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
求教 学生成绩管理系统出错
小弟刚做了个学生成绩管理系统  编译无错误   但是运行的时候连选择函数都不能  特来求教  望高手解释  代码如下:
#include <stdio.h>
#include <stdlib.h>
#define N 20
#define M 100
struct score
{
    int scr1;
    int scr2;
    int scr3;
    int scr4;
    float avg;
    int total;
};
struct student
{
    char num[10];
    char name[10];
    char sex[2];
    int age;
    struct score scr;
};
int x=0;
int input(struct student *s);
int insert(struct student *s);
int sort(struct student *s);
int find(struct student *s);
int delet(struct student *s);
int output(struct student *s);
void main()
{
    int i=1;
    struct student stu[M];
    printf("* * * * * * * * * * * * * * *学生成绩管理系统* * * * * * * * * * * * * * * *\n");
    printf("请按数字键选择需要的操作:\n");
    printf("                             1.输入学生信息\n");
    printf("                             2.插入学生信息\n");
    printf("                             3.对学生信息进行排序\n");
    printf("                             4.查找学生信息\n");
    printf("                             5.删除学生信息\n");
    printf("                             6.输出所有学生信息\n");
    for(i;;)
    {
        i=getchar();
        switch(i)
        {
        case 1:
            system("cls");
            i=input(stu);
            break;
        case 2:
            system("cls");
            i=insert(stu);
            break;
        case 3:
            system("cls");
            i=sort(stu);
            break;
        case 4:
            system("cls");
            i=find(stu);
            break;
        case 5:
            system("cls");
            i=delet(stu);        
            break;
        case 6:
            system("cls");
            i=output(stu);
            break;
        }
    }
}
int input(struct student *s)
{
    int i;
    for(i=0;i<N;i++,s++)
    {
        printf("请输入%d个学生的信息:\n学号 姓名 性别 年龄 四科成绩\n",N+1);
        scanf("%s%s%s%d%d%d%d%d",s->num,s->name,s->sex,s->age,s->scr.scr1,s->scr.scr2,s->scr.scr3,s->scr.scr4);
        s->scr.total=s->scr.scr1+s->scr.scr2+s->scr.scr3+s->scr.scr4;
        s->scr.avg=s->scr.total/4.0;
    }
    printf("输入1返回主菜单,输入0退出");
    return(i=getchar());
}
int insert(struct student *s)
{
    int i=1,j;
    struct student s1;
    printf("输入要插入的学生信息:\n学号 姓名 性别 年龄 四科成绩\n");
    for(i;;)
    {
        scanf("%s%s%s%d%d%d%d%d",s1.num,s1.name,s1.sex,s1.age,s1.scr.scr1,s1.scr.scr2,s1.scr.scr3,s1.scr.scr4);
        for(i=0;i<N;i++)
        {
            if(s1.num<s[i].num)
            {
                for(j=N-1;j>=i;j--)
                {
                    s[j+1]=s[j];
                }
                s[i]=s1;
            }
        }
        printf("继续插入输入1,放弃插入输入0");
        i=getchar();
        x++;
    }
    printf("输入1返回主菜单,输入0退出");
    return(i=getchar());
}
int sort(struct student *s)
{
    int i,j;
    struct student s2;
    printf("请选择排序的要求:\n1.按学号\n2.按总成绩\n");
    i=getchar();
    switch(i)
    {
    case 1:
        for(i=0;i<N-1;i++)
        {
            for(j=0;j<N-1-i;j++)
            {
                if(s[j].num>s[j+1].num)
                {
                    s2=s[j];
                    s[j]=s[j+1];
                    s[j+1]=s2;
                }
            }
        }
        break;
    case 2:
        for(i=0;i<N-1;i++)
        {
            for(j=0;j<N-1-i;j++)
            {
                if(s[j].scr.total>s[j+1].scr.total)
                {
                    s2=s[j];
                    s[j]=s[j+1];
                    s[j+1]=s2;
                }
            }
        }
        break;
    }
    printf("%-8学号%-8姓名%-8性别%-8年龄%-8数学%-8中文%-8英文%-8体育%-8平均成绩%-8总成绩");
    for(i=0;i<N;i++)
    {
        printf("%-8s%-8s%-8s%-8d%-8d%-8d%-8d%-8d%-8.2f%-8d",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].scr.scr1,s[i].scr.scr2,s[i].scr.scr3,s[i].scr.scr4,s[i].scr.avg,s[i].scr.total);
    }
    printf("输入1返回主菜单,输入0退出");
    return(i=getchar());
}
int find(struct student *s)
{
    int i=1;
    char f[10];
    for(i;;)
    {
        printf("输入要查找的学生学号或姓名\n");
        scanf("%s",f);
        for(i=0;i<N;i++)
        {
            if(f==s[i].num||f==s[i].name)
            {
                printf("%-8学号%-8姓名%-8性别%-8年龄%-8数学%-8中文%-8英文%-8体育%-8平均成绩%-8总成绩");
                printf("%-8s%-8s%-8s%-8d%-8d%-8d%-8d%-8d%-8.2f%-8d",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].scr.scr1,s[i].scr.scr2,s[i].scr.scr3,s[i].scr.scr4,s[i].scr.avg,s[i].scr.total);
            }
        }
        printf("继续查询输入1,放弃查询输入0");
        i=getchar();
    }
    printf("输入1返回主菜单,输入0退出");
    return(i=getchar());
}
int delet(struct student *s)
{
    int i=1,j;
    char f[10];
    for(i;;)
    {
        printf("输入要删除的学生学号或姓名\n");
        scanf("%s",f);
        for(i=0;i<N;i++)
        {
            if(f==s[i].num||f==s[i].name)
            {
                for(j=i+1;j<N;j++)
                {
                    s[j-1]=s[j];
                }
            }
        }
        printf("继续删除输入1,放弃删除输入0");
        i=getchar();
        x--;
    }
    printf("输入1返回主菜单,输入0退出");
    return(i=getchar());
}
int output(struct student *s)
{
    int i;
    printf("所有学生信息:");
    printf("%-8学号%-8姓名%-8性别%-8年龄%-8数学%-8中文%-8英文%-8体育%-8平均成绩%-8总成绩");
    for(i=0;i<N+x;i++)
    {
        printf("%-8s%-8s%-8s%-8d%-8d%-8d%-8d%-8d%-8.2f%-8d",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].scr.scr1,s[i].scr.scr2,s[i].scr.scr3,s[i].scr.scr4,s[i].scr.avg,s[i].scr.total);
    }
    printf("输入1返回主菜单,输入0退出");
    return(i=getchar());
}
搜索更多相关主题的帖子: 管理系统 include insert 学生成绩 input 
2011-07-29 01:19
congcongjoy
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-7-29
收藏
得分:0 
求教育啊
2011-07-29 01:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
getchar()返回的是按鍵的ASCII碼,你按的是字符'1',不是數值1,因此switch中應檢測'1'、'2'、'3'……

授人以渔,不授人以鱼。
2011-07-29 02:22
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
收藏
得分:5 
同意楼上 lz的getchar()的得到的是字符 而不是整形值
2011-07-29 09:25
Magic_Q
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:23
专家分:102
注 册:2011-7-27
收藏
得分:5 
for(i;;)
    {
        i=getchar();
        switch(i)
        {
        case '1':
            system("cls");
            i=input(stu);
            break;
        case '2':
            system("cls");
            i=insert(stu);
            break;
        case '3':
            system("cls");
            i=sort(stu);
            break;
        case '4':
            system("cls");
            i=find(stu);
            break;
        case '5':
            system("cls");
            i=delet(stu);        
            break;
        case '6':
            system("cls");
            i=output(stu);
            break;
        }
    }
2011-07-29 11:06
congcongjoy
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-7-29
收藏
得分:0 
灰常感谢几位童鞋的热心帮助
2011-07-29 13:45
快速回复:求教 学生成绩管理系统出错
数据加载中...
 
   



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

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