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

问题描述

用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();
}

解决方案

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

解决方案二:

稍微改了几个地方,没有出现未输入完闪退
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();
}

结果:

解决方案三:

又改了两个地方:
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();
}

时间: 2024-09-01 23:16:37

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

学生信息管理系统-c++语言课程设计任务选项

问题描述 c++语言课程设计任务选项 用c++语言编写学生信息管理系统 解决方案 http://wenku.baidu.com/link?url=u6qLhXbR7ZoieB8qD283ls-uBy-95oNz0JNQ--R7_PoL1PS0t1yn-V0T64CzvUFMwLHZ31ENgdLgW4MaUxGgjBcVpR6J55pgpOiic3kd7VS 解决方案二: http://blog.csdn.net/bdmh/article/details/6112631 有一个简单的学生成绩管理

验证码-c语言,学生信息管理系统。看不懂错误提示??

问题描述 c语言,学生信息管理系统.看不懂错误提示?? #include #include #include #include #include #define N 100 typedef struct student { int num; //学号,姓名,年龄,性别,出生年月,地址,电话, char name[18]; char sex; int age; int y, m; int tel; char add[30]; char mail[20]; int res; int stu; } S

Winform学生信息管理系统各子窗体剖析(3)_C#教程

先来补充一下学生信息管理系统登录窗体,在完成的过程中总是遇到各种各样的问题,对于登录窗体的设计还是存在着一些弊端,那就是需要登录学生信息管理系统时如果输入的数据出错不必一个个删除,就需要在窗体上再添加一个清空写入数据的button控件,将其属性Text改为重置.还有一个与登录窗口设计的属性AcceptButton将其改为确定按钮的唯一名字(也就是button1),因此在按下回车键后我们也能登录到学生信息管理系统主页面相对应的CancelButton将其改为取消按钮的唯一名字(也就是button2

基础-双向动态链表存在学生信息!删除第一个学生信息时程序崩溃?

问题描述 双向动态链表存在学生信息!删除第一个学生信息时程序崩溃? //输入学生信息后,凡是删除第一个学生的信息程序都会崩溃?? #include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; #define LEN sizeof(struct Student) struct Student //完全可以把结构当成类,只是访问权限不一样 { long num;//学号 cha

C语言有谁编过一个简单的系统吗?学生信息管理系统 求助!用C++编程

问题描述 C语言有谁编过一个简单的系统吗?学生信息管理系统 求助!用C++编程 各项功能说明 (1)学生基本信息的录入和保存: 这部分的功能主要包括信息的录入和保存和总分.平均分的计算,首先按程序提示输入所要输入的学生人数,接着是分别输入有关学生的相关信息包括学号.姓名.年龄.性别以及学生各科成绩的分数等.在录入数据的同时,系统将对信息的合法性进行检验(学号范围为100~200.姓名不限.年龄为15~50岁.性别可输入m或f.各科成绩均限定在0~100之间),若用户录入了不合法的数据系统将会作出

c++ c语言-用双向链表实现学生信息管理系统

问题描述 用双向链表实现学生信息管理系统 老师布置的课设作业,要求用双向链表实现学生信息管理系统,学生信息包括学号,姓名,年龄,入学日期,电话等,实现增删改操作..大神教教我吧,c++和java都可以,拜托 解决方案 学生信息管理系统汇编实现C语言实现学生信息管理系统用单链表实现学生信息管理系统 解决方案二: http://download.csdn.net/detail/wangchunxia0620/3535737 解决方案三: http://blog.csdn.net/hopeyoukno

C语言综合实验1—学生信息管理系统

实验题目:学生信息管理系统 实验要求:用户可以选择1-7可以分别进行学生信息的查看.添加.删除,修改,计算平均成绩,保存,退出系统操作. 提示:用一个结构体类型表示学生信息 1 typedef struct node /*定义结构体*/ 2 { 3 int num; //学号 4 char name[15];//姓名 5 char sex[9]; //性别 6 int age; //年龄 7 int english; //英语成绩 8 int math; //数学成绩 9 int compute

编程c语言-求c++编写学生成绩管理系统

问题描述 求c++编写学生成绩管理系统 求c++编写学生成绩管理系统,要求可以增加,删除,修改查询,,功能 解决方案 http://www.doc88.com/p-698583418612.html 解决方案二: http://blog.csdn.net/sdliujiangbo/article/details/7693269http://wenku.baidu.com/link?url=CjxxWkRyzIFRCDHKjZnbxsv6O3GrmOb15SBHLP1ccXEdmuc7A6Ou05

编程c语言-学生信息管理系统。求解程序

问题描述 学生信息管理系统.求解程序 关于学生信息管理系统的一个程序,底下是部分代码,有点不太理解.不知道怎么补充.求大神指点. 解决方案 http://download.csdn.net/detail/NesTa_xP/482840 解决方案二: http://down.51cto.com/data/637096 解决方案三: http://blog.sina.com.cn/s/blog_707b645501010tbm.html 解决方案四: 小程序:学生信息管理系统--C语言版本学生信息管