| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 437 人关注过本帖
标题:求教:向程序中添加学生信息后,进入查看成绩菜单,程序为什么停止工作
只看楼主 加入收藏
zyuce
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2012-11-25
结帖率:100%
收藏
 问题点数:0 回复次数:1 
求教:向程序中添加学生信息后,进入查看成绩菜单,程序为什么停止工作
程序代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define NULL 0
#define length sizeof(struct student)
struct score
{
    float Chinese,Math,English;
};
struct student
{
    char Name[20];
    int Num;
    struct score Score;
    float Allscore;
    char Sex;
}stu[300],yuanshi[300],change;
int input;
int n=0;
/*函数声明*/
void load();
void save();
int add();
int del();
void numSort();
void nameSort();
void chineseSort();
void mathSort();
void englishSort();
void allscoreSort();
void fenshuduanSort();
void youxiuSort();
void bujigeSort();
int Menu();
int chakan();
/*主函数*/
int main()
{
    for(;;)
    {
    input=Menu();
    switch(input)
    {
    case(1):{break;}
    case(2):{
        int b=0;
        while(b!=1&&b!=2)
        {
            printf("1.增加学生\n");
            printf("2.删除学生\n");
            printf("请选择:");
            scanf("%d",&b);
        }
        if(b==1)
        {
            add();
            break;
        }
        else if(b==2)
        {
            n=del();
        }
        break;
            }
    case(3):
        {
            chakan();
            break;
        }
    }
    }
    return 0;
}
/*主菜单*/
int Menu()
{
    printf("**************************************************************************\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("*******                    欢迎使用成绩管理系统!                  *******\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("*******                                                            *******\n");
    printf("**************************************************************************\n\n");
    printf("                           1.读取/保存文件\n");
    printf("                           2.增加/删除\n");
    printf("                           3.查看成绩\n");
    printf("                           0.退出\n");
    printf("     请选择:");
    scanf("%d",&input);
    while(input!=1&&input!=2&&input!=3&&input!=0)
    {
        printf("输入有误!请重新输入\n");
        getchar();
        input=Menu();
    }
    return(input);
}
/*增加学生*/
int add()
{
    int i;
    for(i=n;;i++)
    {
        printf("请输入第%d位学生姓名,输入end停止输入\n",n+1);
        scanf("%s",&stu[i].Name);
        if(strcmp(stu[i].Name,"end")==0)
        {
            break;
        }
        printf("请输入该学生学号\n");
        scanf("%d",&stu[i].Num);
        getchar();
        printf("请输入该学生性别,男.m,女.w\n");
        scanf("%c",&stu[i].Sex);
        printf("请输入该学生语文,数学,英语考试成绩,用空格分开\n");
        scanf("%f%f%f",&stu[i].Score.Chinese,&stu[i].Score.Math,&stu[i].Score.English);
        stu[i].Allscore=stu[i].Score.Chinese+stu[i].Score.Math+stu[i].Score.English;
        n=n+1;
    }
    return(0);
}
/*删除学生*/
int del()
{
    char delname[20];
    int i,j;
    printf("请输入要删除的学生姓名\n");
    scanf("%s",&delname);
    for(i=0;i<n;i++)
    {
        if(strcmp(stu[i].Name,delname)==0)
        {
            for(j=i+1;j<n;j++)
            {
                stu[j-1]=stu[j];
                n=n-1;
                break;
            }
        }
        else
        {
            printf("不存在该学生!\n");
            return(n);
        }
    }
    printf("删除成功!\n");
    return(n);
}
/*查看成绩菜单*/
int chakan()
{
    int i,j,c=100;
    while(c!=1&&c!=2&&c!=3&&c!=4&&c!=5&&c!=6&&c!=7&&c!=8&&c!=0)
    {
        printf("Name              Sex    Num    Chinese    Math    English    Allscore\n");
        for(i=0;i<n;i++)
        {
            printf("%-15s%-5s%-5d%-5f%-5f%-5f%-5f\n",stu[i].Name,stu[i].Sex,stu[i].Num,stu[i].Score.Chinese,stu[i].Score.Math,stu[i].Score.English,stu[i].Allscore);
        }
        printf("----------------------------------------------------------------------\n");
        printf("*****          1.按学号排序\n");
        printf("*****          2.按姓名排序\n");
        printf("*****          3.按语文成绩排序\n");
        printf("*****          4.按数学成绩排序\n");
        printf("*****          5.按英语成绩排序\n");
        printf("*****          6.按总成绩排序\n");
        printf("*****          7.查看优秀成绩单\n");
        printf("*****          8.查看不及格成绩单\n");
        printf("*****          0.返回主菜单\n");
        printf("请选择:");
        scanf("%d",&c);
        getchar();
    }
    switch(c)
    {
    case(1):
        {
            numSort();
            break;
        }
    case(2):
        {
            nameSort();
            break;
        }
    case(3):
        {
            chineseSort();
            break;
        }
    case(4):
        {
            mathSort();
            break;
        }
    case(5):
        {
            englishSort();
            break;
        }
    case(6):
        {
            allscoreSort();
            break;
        }
    case(7):
        {
        }
    case(8):
        {
        }
    case(0):
        {
        }
    }
    return 0;
}
/*按学号排序*/
void numSort()
{
    int i,j,z=100;
    while(z!=1&&z!=2)
    {
        printf("*****          1.升序\n");
        printf("*****          2.降序\n");
        printf("请选择:");
        scanf("%d",&z);
    }
    switch(z)
    {
    case(1):
        {
            for(i=0;i<n;i++)
            {
                for(j=i;j<n-1;j++)
                {
                    if(stu[j].Num>stu[j+1].Num)
                    {
                        change=stu[j];
                        stu[j]=stu[j+1];
                        stu[j+1]=change;
                    }
                }
            }
        }
    case(2):
        {
            for(i=1;i<n;i++)
            {
                for(j=i;j<n-1;j++)
                {
                    if(stu[j].Num<stu[j+1].Num)
                    {
                        change=stu[j];
                        stu[j]=stu[j+1];
                        stu[j+1]=change;
                    }
                }
            }
        }
    }
}
void nameSort()
{
}
void chineseSort()
{
}
void mathSort()
{
}
void englishSort()
{
}
void allscoreSort()
{
}

图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 菜单 English Chinese 
2012-11-26 15:37
lxsjzbd
Rank: 4
来 自:河北省
等 级:业余侠客
帖 子:97
专家分:258
注 册:2012-3-31
收藏
得分:0 
第一:
struct
{
    float chinese;
    float math;
    float english;
} ;
第二:
scanf("%s",stu[i].Name);
第三:
printf("%-15s%-5c%-5d%-5f%-5f%-5f%-5f\n",stu[i].Name,stu[i].Sex,.........);
另外我看你用switch case用的提心吊胆的,除了有int b=0那句,其他的都不用大括号,另外所有的case后边都不用小括号  虽然没影响。
其他的爱莫能助了

[ 本帖最后由 lxsjzbd 于 2012-11-27 09:38 编辑 ]
2012-11-27 09:36
快速回复:求教:向程序中添加学生信息后,进入查看成绩菜单,程序为什么停止工作 ...
数据加载中...
 
   



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

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