sinat_34316634
sinat_34316634
2016-03-16 11:57
采纳率: 0%
浏览 2.8k

用C语言编写学生信息录入系统,没有输入完毕直接跳出是什么原因

#include /*标准输入/输出函数库*/
#include /*标准函数库*/
#include /*字符串函数库*/
//学生信息数据类型定义
typedef struct student
{
char name[20]; /*姓名*/
int num[10]; /*学号*/
char sex[10]; /*性别*/
float chinese[10]; /*语文成绩*/
float math[10]; /*数学成绩*/
float english[10]; /*英语成绩*/
float computer[10]; /*计算机成绩*/
struct student next;
}stu;
//主要处理函数定义;
stu *head=NULL;
stu *plaststu=NULL;
void print_menu_main();
void input_record() /
成绩录入子函数*/
{char a;
do
{
stu pnewstu=(stu)malloc(sizeof(stu));
system("cls");
printf(">请输入学生姓名(注:最大长度为十个字符):\n");
printf("姓名:");
scanf("%s",pnewstu->name);
printf("学号:");
scanf("%d",pnewstu->num);
printf("性别:");
scanf("%s",pnewstu->sex);
printf("语文成绩:");
scanf("%3.0f",pnewstu->chinese);
printf("数学成绩:");
scanf("%3.0f",pnewstu->math);
printf("英语成绩:");
scanf("%3.0f",pnewstu->english);
printf("计算机成绩:");
scanf("%3.0f",pnewstu->computer);
if(head==NULL)
{
plaststu=pnewstu;
head=pnewstu;
}
else
{
pnewstu->next=pnewstu;
plaststu=pnewstu;
}
printf("继续输入吗?");
scanf("%c",&a);
}
while(a=='Y');
print_menu_main();
}
void show_record() {
int key_b_in;
printf("欢迎进入成绩显示功能:");
scanf("%d",&key_b_in);
if(key_b_in==2) {system("cls");
print_menu_main();
} } /*成绩显示子函数*/
void search_record() {
int key_b_in;
printf("请问你要查询哪些信息呢:");
scanf("%d",&key_b_in);
if(key_b_in==3) {system("cls");
print_menu_main();
} } /*成绩查询子函数*/
void update_record() {
int key_b_in;
printf("请问你要更新哪些信息呢:");
scanf("%d",&key_b_in);
if(key_b_in==4) {system("cls");
print_menu_main();
} } /*成绩更新子函数*/
void delete_record() {
int key_b_in;
printf("请问你要删除哪些信息呢:");
scanf("%d",&key_b_in);
if(key_b_in==5) {system("cls");
print_menu_main();
} } /*成绩删除子函数*/
void calculate_record() {
int key_b_in;
printf("请问你要如何计算成绩呢:");
scanf("%d",&key_b_in);
if(key_b_in==6) {system("cls");
print_menu_main();
} } /*成绩计算子函数*/
void save_record() {
int key_b_in;
printf("请问你要保存哪些信息呢:");
scanf("%d",&key_b_in);
if(key_b_in==7) {system("cls");
print_menu_main();
} } /*成绩保存子函数*/
void exit_system () { exit(0);} /*退出系统子函数*/
//显示主菜单界面函数定义
void print_menu_main()
{
int key_b_in;
printf("======================================================================\n");
printf("|学生成绩管理系统\n");
printf("======================================================================\n");
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("|\n");
printf("======================================================================\n");
printf(">请选择:");
scanf("%d",&key_b_in);
switch(key_b_in)
{
case 1:input_record();break;
case 2:show_record();break;
case 3:search_record();break;
case 4:update_record();break;
case 5:delete_record();break;
case 6:calculate_record();break;
case 7:save_record();break;
case 8:exit_system();break;
default:printf("输入错误,请重输入!(注意:输入有效范围为1-8)\n");
}

}
//主函数
main()
{
print_menu_main();
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • cp887563
    cp887563 2016-03-16 12:20

    应该是出现错误了,重新试试看?

    点赞 评论
  • qq423399099
    小灸舞 2016-03-16 12:23

    稍微改了几个地方,没有出现未输入完闪退
    1.struct student next;改成了struct student next;
    2.stu pnewstu=(stu)malloc(sizeof(stu));改成了stu *pnewstu=(stu
    )malloc(sizeof(stu));

    #include<stdio.h>
    using namespace std;
    
    typedef struct student
    {
        char name[20]; /*姓名*/
        int num[10]; /*学号*/
        char sex[10]; /*性别*/
        float chinese[10]; /*语文成绩*/
        float math[10]; /*数学成绩*/
        float english[10]; /*英语成绩*/
        float computer[10]; /*计算机成绩*/
        struct student *next;
    }stu;
    //主要处理函数定义;
    stu *head=NULL;
    stu *plaststu=NULL;
    void print_menu_main();
    void input_record() /*成绩录入子函数*/
    {char a;
    do
    {
        stu *pnewstu=(stu*)malloc(sizeof(stu));
        system("cls");
        printf(">请输入学生姓名(注:最大长度为十个字符):\n");
        printf("姓名:");
        scanf("%s",pnewstu->name);
        printf("学号:");
        scanf("%d",pnewstu->num);
        printf("性别:");
        scanf("%s",pnewstu->sex);
        printf("语文成绩:");
        scanf("%3.0f",pnewstu->chinese);
        printf("数学成绩:");
        scanf("%3.0f",pnewstu->math);
        printf("英语成绩:");
        scanf("%3.0f",pnewstu->english);
        printf("计算机成绩:");
        scanf("%3.0f",pnewstu->computer);
        if(head==NULL)
        {
            plaststu=pnewstu;
            head=pnewstu;
        }
        else
        {
            pnewstu->next=pnewstu;
            plaststu=pnewstu;
        }
        printf("继续输入吗?");
        scanf("%c",&a);
    }
    while(a=='Y');
    print_menu_main();
    }
    void show_record() {
        int key_b_in;
        printf("欢迎进入成绩显示功能:");
        scanf("%d",&key_b_in);
        if(key_b_in==2) {system("cls");
        print_menu_main();
        } } /*成绩显示子函数*/
    void search_record() {
        int key_b_in;
        printf("请问你要查询哪些信息呢:");
        scanf("%d",&key_b_in);
        if(key_b_in==3) {system("cls");
        print_menu_main();
        } } /*成绩查询子函数*/
    void update_record() {
        int key_b_in;
        printf("请问你要更新哪些信息呢:");
        scanf("%d",&key_b_in);
        if(key_b_in==4) {system("cls");
        print_menu_main();
        } } /*成绩更新子函数*/
    void delete_record() {
        int key_b_in;
        printf("请问你要删除哪些信息呢:");
        scanf("%d",&key_b_in);
        if(key_b_in==5) {system("cls");
        print_menu_main();
        } } /*成绩删除子函数*/
    void calculate_record() {
        int key_b_in;
        printf("请问你要如何计算成绩呢:");
        scanf("%d",&key_b_in);
        if(key_b_in==6) {system("cls");
        print_menu_main();
        } } /*成绩计算子函数*/
    void save_record() {
        int key_b_in;
        printf("请问你要保存哪些信息呢:");
        scanf("%d",&key_b_in);
        if(key_b_in==7) {system("cls");
        print_menu_main();
        } } /*成绩保存子函数*/
    void exit_system () { exit(0);} /*退出系统子函数*/
    //显示主菜单界面函数定义
    void print_menu_main()
    {
        int key_b_in;
        printf("======================================================================\n");
        printf("|学生成绩管理系统\n");
        printf("======================================================================\n");
        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("|\n");
        printf("======================================================================\n");
        printf(">请选择:");
        scanf("%d",&key_b_in);
        switch(key_b_in)
        {
        case 1:input_record();break;
        case 2:show_record();break;
        case 3:search_record();break;
        case 4:update_record();break;
        case 5:delete_record();break;
        case 6:calculate_record();break;
        case 7:save_record();break;
        case 8:exit_system();break;
        default:printf("输入错误,请重输入!(注意:输入有效范围为1-8)\n");
        }
    }
    //主函数
    int main()
    {
        print_menu_main();
    }
    

    结果:
    图片说明

    点赞 评论
  • qq423399099
    小灸舞 2016-03-17 00:51

    又改了两个地方:
    1.结构体改了一下,成绩和学号没必要用数组
    2.scanf没有格式化输入scanf("%3.0f",XXXXXX);

     #include<stdio.h>
    using namespace std;
    typedef struct student
    {
        char name[20]; /*姓名*/
        int num; /*学号*/
        char sex[10]; /*性别*/
        float chinese; /*语文成绩*/
        float math; /*数学成绩*/
        float english; /*英语成绩*/
        float computer; /*计算机成绩*/
        struct student *next;
    }stu;
    //主要处理函数定义;
    stu *head=NULL;
    stu *plaststu=NULL;
    void print_menu_main();
    void input_record() /*成绩录入子函数*/
    {char a;
    do
    {
        stu *pnewstu=(stu*)malloc(sizeof(stu));
        system("cls");
        printf(">请输入学生姓名(注:最大长度为十个字符):\n");
        printf("姓名:");
        scanf("%s",pnewstu->name);
        printf("学号:");
        scanf("%d",&pnewstu->num);
        printf("性别:");
        scanf("%s",pnewstu->sex);
        printf("语文成绩:");
        scanf("%f",&pnewstu->chinese);
        printf("数学成绩:");
        scanf("%f",&pnewstu->math);
        printf("英语成绩:");
        scanf("%f",&pnewstu->english);
        printf("计算机成绩:");
        scanf("%f",&pnewstu->computer);
        if(head==NULL)
        {
            plaststu=pnewstu;
            head=pnewstu;
        }
        else
        {
            pnewstu->next=pnewstu;
            plaststu=pnewstu;
        }
        printf("继续输入吗?");
        scanf("%c",&a);
    }
    while(a=='Y');
    print_menu_main();
    }
    void show_record() {
        int key_b_in;
        printf("欢迎进入成绩显示功能:");
        scanf("%d",&key_b_in);
        if(key_b_in==2) {system("cls");
        print_menu_main();
        } } /*成绩显示子函数*/
    void search_record() {
        int key_b_in;
        printf("请问你要查询哪些信息呢:");
        scanf("%d",&key_b_in);
        if(key_b_in==3) {system("cls");
        print_menu_main();
        } } /*成绩查询子函数*/
    void update_record() {
        int key_b_in;
        printf("请问你要更新哪些信息呢:");
        scanf("%d",&key_b_in);
        if(key_b_in==4) {system("cls");
        print_menu_main();
        } } /*成绩更新子函数*/
    void delete_record() {
        int key_b_in;
        printf("请问你要删除哪些信息呢:");
        scanf("%d",&key_b_in);
        if(key_b_in==5) {system("cls");
        print_menu_main();
        } } /*成绩删除子函数*/
    void calculate_record() {
        int key_b_in;
        printf("请问你要如何计算成绩呢:");
        scanf("%d",&key_b_in);
        if(key_b_in==6) {system("cls");
        print_menu_main();
        } } /*成绩计算子函数*/
    void save_record() {
        int key_b_in;
        printf("请问你要保存哪些信息呢:");
        scanf("%d",&key_b_in);
        if(key_b_in==7) {system("cls");
        print_menu_main();
        } } /*成绩保存子函数*/
    void exit_system () { exit(0);} /*退出系统子函数*/
    //显示主菜单界面函数定义
    void print_menu_main()
    {
        int key_b_in;
        printf("======================================================================\n");
        printf("|学生成绩管理系统\n");
        printf("======================================================================\n");
        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("|\n");
        printf("======================================================================\n");
        printf(">请选择:");
        scanf("%d",&key_b_in);
        switch(key_b_in)
        {
        case 1:input_record();break;
        case 2:show_record();break;
        case 3:search_record();break;
        case 4:update_record();break;
        case 5:delete_record();break;
        case 6:calculate_record();break;
        case 7:save_record();break;
        case 8:exit_system();break;
        default:printf("输入错误,请重输入!(注意:输入有效范围为1-8)\n");
        }
    }
    //主函数
    int main()
    {
        print_menu_main();
    }
    
    
    点赞 评论

相关推荐