鱼C论坛

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

C语言 学生管理系统

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

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

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

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

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

  4. #define LEN sizeof(struct xueshen)

  5. struct xueshen
  6. {
  7.         int num;        //学号
  8.         char *ming;   //姓名
  9.         int shu;          //数学
  10.         int nu;           //语文
  11.         struct xueshen *next;
  12. };
  13. struct xueshen *scan();       //新建学生管理A


  14. void print(struct xueshen *head);      //输出学生信息
  15. int n;                      //全局变量
  16. void main()
  17. {
  18.         struct xueshen *jigou;
  19.         char select;              //选择变量
  20.         jigou=NULL;
  21.         while(1)
  22.         {
  23.                 printf("欢迎进入学生管理系统。\n");
  24.                 printf("A(新建学生信息) D(删除) I(插入) M(修改) Q(查询) P(全部名单) E(退出)\n");
  25.                
  26.                 scanf("%c",&select);
  27.                
  28.                 switch(select)
  29.                 {
  30.                 case 'a':
  31.                 case 'A':jigou=scan(); break;     //新建学生信息a
  32.                 case 'd':
  33.         //        case 'D':jigou=del(jigou); break;   //删除学生信息d
  34.                 case 'm':
  35.         //        case 'M':jigou=modify(jigou); break; //修改学生信息m
  36.                 case 'q':
  37.         //        case 'Q':query(jigou); break;  //查询学生信息q
  38.                 case 'i':
  39.         //        case 'I':jigou=insert(jigou);break;  //插入学生信息i
  40.                 case 'p':
  41.                 case 'P':print(jigou);break;   //打印全部学生信息p
  42.                 case 'e':
  43.                 case 'E':exit(0); break;
  44.                
  45.                 default:printf("选择错误,重新选择。\n"); //break;
  46.                 }

  47.                 printf("\n");
  48.                
  49.         }
  50.                 system("pause");               
  51. }

  52. struct xueshen *scan()  //创建函数
  53. {
  54.         struct xueshen *head;
  55.         struct xueshen *p1,*p2;
  56.         
  57.         p1=p2=(struct xueshen *)malloc(LEN);  //创建第一个结构点
  58.         head=p1;
  59.         
  60.         printf("学号:");
  61.         scanf("%d",&p1->num);
  62.     printf("姓名:");
  63.         scanf("%s",&p1->ming);
  64.         printf("数学成绩:");
  65.         scanf("%d",&p1->shu);
  66.         printf("语文成绩");
  67.         scanf("%d",&p1->nu);
  68.         head=NULL;
  69.         while(p1->num)
  70.         {
  71.                 n++;
  72.                 if(n==1)
  73.                 {
  74.                         head=p1;
  75.                 }
  76.                 else
  77.                 {
  78.                         p2->next=p1;                        
  79.                 }
  80.                 p2=p1;
  81.                 p1=(struct xueshen *)malloc(LEN);   //创建新结点给p1
  82.                 printf("学号:");
  83.                 scanf("%d",&p1->num);
  84.                 printf("姓名:");
  85.              scanf("%s",&p1->ming);
  86.                 printf("数学成绩:");
  87.                 scanf("%d",&p1->shu);
  88.                 printf("语文成绩:");
  89.                 scanf("%d",&p1->nu);
  90.         }
  91.         p2->next=NULL;
  92.         return head;
  93. }

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

  96.         struct xueshen *p1;
  97.         p1=head;

  98.                 printf("\n共有%d位学生名单。\n",n);
  99.                 do
  100.                 {
  101.                         printf("\n学号%d\n姓名%s\n数学成绩%d\n语文成绩%d\n",p1->num,p1->ming,p1->shu,p1->nu);
  102.                         p1=p1->next;         //赋下一个地址
  103.                 }while(p1);        
  104. }
复制代码





输入没问题,输出报错。

输入没问题,输出报错。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-1-5 22:39:33 | 显示全部楼层
先谢谢各位大神来这里看看,指点指点,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-5 23:30:46 | 显示全部楼层
@kklloo 来看看,很久没用vc了:cry
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-5 23:40:48 | 显示全部楼层
版主大人指点指点
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


版主大人指点指点
小甲鱼最新课程 -> https://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
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  4. #define LEN sizeof(struct xueshen)

  5. struct xueshen
  6. {
  7.         int num;        //学号
  8.         char ming[50];   //姓名
  9.         int shu;          //数学
  10.         int nu;           //语文
  11.         struct xueshen *next;
  12. };
  13. struct xueshen *scan();       //新建学生管理A


  14. void print(struct xueshen *head);      //输出学生信息
  15. int n;                      //全局变量
  16. void main()
  17. {
  18.         struct xueshen *jigou;
  19.         char select;              //选择变量
  20.         jigou=NULL;
  21.         while(1)
  22.         {
  23.                 printf("欢迎进入学生管理系统。\n");
  24.                 printf("A(新建学生信息) D(删除) I(插入) M(修改) Q(查询) P(全部名单) E(退出)\n");
  25.                 scanf("%c",&select);
  26.                
  27.                 switch(select)
  28.                 {
  29.                 getchar();
  30.                 getchar();
  31.                 getchar();
  32.                 case 'a':
  33.                 case 'A':jigou=scan(); break;     //新建学生信息a
  34.                 case 'd':
  35.         //        case 'D':jigou=del(jigou); break;   //删除学生信息d
  36.                 case 'm':
  37.         //        case 'M':jigou=modify(jigou); break; //修改学生信息m
  38.                 case 'q':
  39.         //        case 'Q':query(jigou); break;  //查询学生信息q
  40.                 case 'i':
  41.         //        case 'I':jigou=insert(jigou);break;  //插入学生信息i
  42.                 case 'p':
  43.                 case 'P':print(jigou);break;   //打印全部学生信息p
  44.                
  45.                 case 'e':
  46.                 case 'E':exit(0); break;
  47.                
  48.                 default:printf("选择错误,重新选择。\n"); //break;
  49.                 }

  50.                 printf("\n");
  51.                
  52.         }
  53.                 system("pause");               
  54. }

  55. struct xueshen *scan()  //创建函数
  56. {
  57.         struct xueshen *head;
  58.         struct xueshen *p1,*p2;
  59.         
  60.         p1=p2=(struct xueshen *)malloc(LEN);  //创建第一个结构点
  61.         head=p1;
  62.         
  63.         printf("学号:");
  64.         scanf("%d",&p1->num);
  65.         printf("姓名:");
  66.         scanf("%s",&p1->ming);
  67.         printf("数学成绩:");
  68.         scanf("%d",&p1->shu);
  69.         printf("语文成绩:");
  70.         scanf("%d",&p1->nu);
  71.         
  72.         head=NULL;
  73.         while(p1->num)
  74.         {
  75.                 n++;
  76.                 if(n==1)
  77.                 {
  78.                         head=p1;
  79.                 }
  80.                 else
  81.                 {
  82.                         p2->next=p1;                        
  83.                 }
  84.                 p2=p1;
  85.                 p1=(struct xueshen *)malloc(LEN);   //创建新结点给p1
  86.                     printf("学号:");
  87.                     scanf("%d",&p1->num);
  88.                     printf("姓名:");
  89.                     scanf("%s",&p1->ming);
  90.                     printf("数学成绩:");
  91.                     scanf("%d",&p1->shu);
  92.                     printf("语文成绩:");
  93.                     scanf("%d",&p1->nu);
  94.               //  printf("\n学号%d\n姓名%s\n数学成绩%d\n语文成绩%d\n",*p1->num,p1->ming,p1->shu,p1->nu);
  95.                
  96.         }
  97.         p2->next=NULL;
  98.         return head;
  99. }

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

  102.         struct xueshen *p1;

  103.               p1=head;

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

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

  108.                         p1=p1->next;         //赋下一个地址
  109.               };        
  110. }
复制代码


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

是回车符号造成的,这个光荣的bug就交给你去解决的,相信以你的聪明才智不会让咋们失望的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

你还自己写了一个。  我看他那个可能是指针问题。如果用到指针的话。而且他只有一个图,我也看不出来什么。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-6 10:44:55 | 显示全部楼层
绝对是指针的问题,明显指到某禁区了!!!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

就是在他原来的地方调试:big
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

最开始打开没有代码 这会儿代开居然有了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

那怪我咯
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

%c手动加\0改成%s自动加\0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

聪明
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

这是结构体吧,根本就没见到这一段有用到指针,如果用结构体的话可以使用结构体数组,每一个学生使用一套信息,而且char mign[50],这里不用改变
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

请看楼主的源码,这里原来是char *ming :big
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-18 16:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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