鱼C论坛

 找回密码
 立即注册
查看: 1798|回复: 15

C语言 学生管理系统

[复制链接]
发表于 2015-1-5 22:39:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 月光虾 于 2015-1-5 22:39 编辑

下面代码哪里错了
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>

#define LEN sizeof(struct xueshen)

struct xueshen
{
        int num;        //学号
        char *ming;   //姓名
        int shu;          //数学
        int nu;           //语文
        struct xueshen *next;
};
struct xueshen *scan();       //新建学生管理A


void print(struct xueshen *head);      //输出学生信息
int n;                      //全局变量
void main()
{
        struct xueshen *jigou;
        char select;              //选择变量
        jigou=NULL;
        while(1)
        {
                printf("欢迎进入学生管理系统。\n");
                printf("A(新建学生信息) D(删除) I(插入) M(修改) Q(查询) P(全部名单) E(退出)\n");
                
                scanf("%c",&select);
                
                switch(select)
                {
                case 'a':
                case 'A':jigou=scan(); break;     //新建学生信息a
                case 'd':
        //        case 'D':jigou=del(jigou); break;   //删除学生信息d
                case 'm':
        //        case 'M':jigou=modify(jigou); break; //修改学生信息m
                case 'q':
        //        case 'Q':query(jigou); break;  //查询学生信息q
                case 'i':
        //        case 'I':jigou=insert(jigou);break;  //插入学生信息i
                case 'p':
                case 'P':print(jigou);break;   //打印全部学生信息p
                case 'e':
                case 'E':exit(0); break;
                
                default:printf("选择错误,重新选择。\n"); //break;
                }

                printf("\n");
                
        }
                system("pause");                
}

struct xueshen *scan()  //创建函数
{
        struct xueshen *head;
        struct xueshen *p1,*p2;
        
        p1=p2=(struct xueshen *)malloc(LEN);  //创建第一个结构点
        head=p1;
        
        printf("学号:");
        scanf("%d",&p1->num);
    printf("姓名:");
        scanf("%s",&p1->ming);
        printf("数学成绩:");
        scanf("%d",&p1->shu);
        printf("语文成绩");
        scanf("%d",&p1->nu);
        head=NULL;
        while(p1->num)
        {
                n++;
                if(n==1)
                {
                        head=p1;
                }
                else
                {
                        p2->next=p1;                         
                }
                p2=p1;
                p1=(struct xueshen *)malloc(LEN);   //创建新结点给p1
                printf("学号:");
                scanf("%d",&p1->num);
                printf("姓名:");
             scanf("%s",&p1->ming);
                printf("数学成绩:");
                scanf("%d",&p1->shu);
                printf("语文成绩:");
                scanf("%d",&p1->nu);
        }
        p2->next=NULL;
        return head;
}

void print(struct xueshen *head)     //打印函数
{

        struct xueshen *p1;
        p1=head;

                printf("\n共有%d位学生名单。\n",n);
                do
                {
                        printf("\n学号%d\n姓名%s\n数学成绩%d\n语文成绩%d\n",p1->num,p1->ming,p1->shu,p1->nu);
                        p1=p1->next;         //赋下一个地址
                }while(p1);        
}




输入没问题,输出报错。

输入没问题,输出报错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-1-5 22:39:33 | 显示全部楼层
先谢谢各位大神来这里看看,指点指点,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-5 23:30:46 | 显示全部楼层
@kklloo 来看看,很久没用vc了:cry
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-5 23:40:48 | 显示全部楼层
版主大人指点指点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-5 23:43:28 | 显示全部楼层
百日维新 发表于 2015-1-5 23:30
@kklloo 来看看,很久没用vc了


版主大人指点指点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-6 00:08:40 | 显示全部楼层
struct xueshen
{
        int num;        //学号
        char ming[50];   //姓名
        int shu;          //数学
        int nu;           //语文
        struct xueshen *next;
};

不要把姓名定义成指针,改成char[50]就ok了:big
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-6 00:28:27 | 显示全部楼层
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>

#define LEN sizeof(struct xueshen)

struct xueshen
{
        int num;        //学号
        char ming[50];   //姓名
        int shu;          //数学
        int nu;           //语文
        struct xueshen *next;
};
struct xueshen *scan();       //新建学生管理A


void print(struct xueshen *head);      //输出学生信息
int n;                      //全局变量
void main()
{
        struct xueshen *jigou;
        char select;              //选择变量
        jigou=NULL;
        while(1)
        {
                printf("欢迎进入学生管理系统。\n");
                printf("A(新建学生信息) D(删除) I(插入) M(修改) Q(查询) P(全部名单) E(退出)\n");
                scanf("%c",&select);
                
                switch(select)
                {
                getchar();
                getchar();
                getchar();
                case 'a':
                case 'A':jigou=scan(); break;     //新建学生信息a
                case 'd':
        //        case 'D':jigou=del(jigou); break;   //删除学生信息d
                case 'm':
        //        case 'M':jigou=modify(jigou); break; //修改学生信息m
                case 'q':
        //        case 'Q':query(jigou); break;  //查询学生信息q
                case 'i':
        //        case 'I':jigou=insert(jigou);break;  //插入学生信息i
                case 'p':
                case 'P':print(jigou);break;   //打印全部学生信息p
               
                case 'e':
                case 'E':exit(0); break;
                
                default:printf("选择错误,重新选择。\n"); //break;
                }

                printf("\n");
                
        }
                system("pause");                
}

struct xueshen *scan()  //创建函数
{
        struct xueshen *head;
        struct xueshen *p1,*p2;
        
        p1=p2=(struct xueshen *)malloc(LEN);  //创建第一个结构点
        head=p1;
        
        printf("学号:");
        scanf("%d",&p1->num);
        printf("姓名:");
        scanf("%s",&p1->ming);
        printf("数学成绩:");
        scanf("%d",&p1->shu);
        printf("语文成绩:");
        scanf("%d",&p1->nu);
        
        head=NULL;
        while(p1->num)
        {
                n++;
                if(n==1)
                {
                        head=p1;
                }
                else
                {
                        p2->next=p1;                         
                }
                p2=p1;
                p1=(struct xueshen *)malloc(LEN);   //创建新结点给p1
                    printf("学号:");
                    scanf("%d",&p1->num);
                    printf("姓名:");
                    scanf("%s",&p1->ming);
                    printf("数学成绩:");
                    scanf("%d",&p1->shu);
                    printf("语文成绩:");
                    scanf("%d",&p1->nu);
              //  printf("\n学号%d\n姓名%s\n数学成绩%d\n语文成绩%d\n",*p1->num,p1->ming,p1->shu,p1->nu);
                
        }
        p2->next=NULL;
        return head;
}

void print(struct xueshen *head)     //打印函数
{

        struct xueshen *p1;

              p1=head;

                printf("\n共有%d位学生名单。\n",n);

                while(p1)
                {
                        printf("\n学号%d\n姓名%s\n数学成绩%d\n语文成绩%d\n",p1->num,p1->ming,p1->shu,p1->nu);

                        p1=p1->next;         //赋下一个地址
              };        
}

是回车符号造成的,这个光荣的bug就交给你去解决的,相信以你的聪明才智不会让咋们失望的

是回车符号造成的,这个光荣的bug就交给你去解决的,相信以你的聪明才智不会让咋们失望的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-6 10:07:01 | 显示全部楼层

你还自己写了一个。  我看他那个可能是指针问题。如果用到指针的话。而且他只有一个图,我也看不出来什么。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-6 10:44:55 | 显示全部楼层
绝对是指针的问题,明显指到某禁区了!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-6 10:59:09 From FishC Mobile | 显示全部楼层
kklloo 发表于 2015-1-6 10:07
你还自己写了一个。  我看他那个可能是指针问题。如果用到指针的话。而且他只有一个图,我也看 ...

就是在他原来的地方调试:big
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-6 10:59:50 | 显示全部楼层
百日维新 发表于 2015-1-6 10:59
就是在他原来的地方调试

最开始打开没有代码 这会儿代开居然有了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-6 11:31:21 From FishC Mobile | 显示全部楼层
kklloo 发表于 2015-1-6 10:59
最开始打开没有代码 这会儿代开居然有了。

那怪我咯
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-6 12:01:49 | 显示全部楼层

%c手动加\0改成%s自动加\0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-6 13:31:56 | 显示全部楼层
月光虾 发表于 2015-1-6 12:01
%c手动加\0改成%s自动加\0

聪明
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-6 15:08:29 | 显示全部楼层
百日维新 发表于 2015-1-6 00:08
struct xueshen
{
        int num;        //学号

这是结构体吧,根本就没见到这一段有用到指针,如果用结构体的话可以使用结构体数组,每一个学生使用一套信息,而且char mign[50],这里不用改变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-6 15:33:59 | 显示全部楼层
734543358 发表于 2015-1-6 15:08
这是结构体吧,根本就没见到这一段有用到指针,如果用结构体的话可以使用结构体数组,每一个学生使用一套 ...

请看楼主的源码,这里原来是char *ming :big
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 14:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表