| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 790 人关注过本帖
标题:学生选课管理系统弄了几天了 还是不行!!求高手帮忙找下错
只看楼主 加入收藏
aki2087
Rank: 1
等 级:新手上路
帖 子:12
专家分:1
注 册:2010-10-29
结帖率:50%
收藏
已结贴  问题点数:15 回复次数:8 
学生选课管理系统弄了几天了 还是不行!!求高手帮忙找下错
求高手先帮我把输入和输出的那个链表修改下。后面删除的方便的话帮忙想想
老师教到链表跳的太快了 没学的好
求高手帮忙了 。
已经弄了3天还是运行老出错,输入的时候老是输入乱码或是进入错误的循环。怎么回事啊?求解释。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define LEN sizeof(struct student)
struct student
{int num;
char name[20];
char kind[10];
in socer;
struct student *next;
};
 void mune()
 {
 printf("************************************\n");
 printf("如果录入信息,请选择1\n");
 printf("如果浏览信息,请选择2\n");
 printf("如果按学号查询课程,请选择3\n");
 printf("如果想进行选课,请选择4\n");
 printf("如果需要删除信息,请选择5\n");
 printf("如果想退出,请选择0\n");
 printf("*************************************\n");
 }  

struct student *scan(FILE*fp)
{struct student *head;                 
 struct student *p1,*p2,*p3;
 int n;
n=0;
p1=p2=(struct student*)malloc(LEN);  
printf("输入:学号   姓名   科目   学分\n");
scanf("%d,%s,%s,%d",&(*p1).num,(*p1).name,(*p1).kind,&(*p1).socer);
fprintf(fp,"%d,%s,%s,%d\n",(*p1).num,(*p1).name,(*p1).kind,(*p1).socer);
head=NULL;
while(p1->num!=0)
{n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(struct student*)malloc(LEN);
printf("请输入数据:");
 scanf("%d",&p1->num);              //输入课程号
 if(p1->num!=0)   
 {
scanf("%s,%s,%d",(*p1).name,(*p1).kind,&(*p1).socer);
  fprintf(fp,"%d,%s,%s,%d\n",(*p1).num,(*p1).name,(*p1).kind,(*p1).socer);
 }
 p2->next=NULL;
 fclose(fp);
return(head);
 }
}
void print(struct student*head)     //将输入的内容显示在屏幕上
{
 struct student*p1;
 if(head!=NULL)
  p1=head;
 else
     goto end;
printf("学号   姓名   科目   学分\n");
do
{printf("%d,%s,%s,%d\n",(*p1).num,(*p1).name,(*p1).kind,(*p1).socer);
 p1=p1->next;  
}
while(p1!=NULL);
end:;
}
void search_num(struct student*head)
{
int i,n=0;
struct student*p1;
p1=head;
printf("请输入学生学号\n");
scanf("%d",&i);
while(p1!=NULL)
 {if((i%p1->num)==0)         //用num函数进行数字的比较
{printf("学号   姓名   科目   学分\n");
printf("%d,%s,%s,%d\n",(*p1).num,(*p1).name,(*p1).kind,(*p1).socer);
         //如果相同,输出课程信息
   n++;}
    p1=p1->next;}
 if(n==0)
  printf("无结果\n");
}
void choose(struct student*head)    //选课函数
{
 struct student*p1;
char k[20];
 float s=0;                             //s为所选课程的学分总数,K为所选课程
的课程编号
 if(head!=NULL)         
 {p1=head;
    while(s<60)                         //判断选课是否结束
    {
   p1=head;
   printf("请输入选择课程的课程编号:");
      gets(k);
      while(p1!=NULL)                   //当遍历一遍链表之后,循环结束
   {
   if(strcmp(k,p1->kind)==0)                //当找到对应的课程编号后,输出课
程信息(需要修改)
   {s=s+(float)p1->socer;
printf("学号   姓名   科目   学分\n");
printf("%d,%s,%s,%d\n",(*p1).num,(*p1).name,(*p1).kind,(*p1).socer);
       printf("选课成功!\n");
    break;}
    else
     p1=p1->next;
    if(p1==NULL)     //链表走到最后,则没有找到相应课程
     printf("没有这门课程\n");
   }
    }
    printf("学分达到要求\n");
 }
}
/*void del(struct student*head)  //删除信息(这个还只做到一半)
{
     struct student*p1;
     int k;
    printf("输入需要删除信息的学生学号\n");
scanf("%d"&k);*/



 void main()
{ struct student*head;
 FILE*fp;
 int k;
 fp=fopen("课程list.txt","a+");
loop:mune();                           //goto循环的开始位置
 printf("请输入你的操作:\n");
  scanf("%d",&k);
 if(k!=0)
 {switch(k)                         //利用switch语句实现菜单式工作
 {   case 1:head=scan(fp);break;
     case 2:print(head);break;
     case 3:search_num(head);break;
     case 4:choose(head);break;
  default:printf("操作不存在");}
 goto loop;}    //利用goto语句实现循环
}
搜索更多相关主题的帖子: 学生 老师 
2010-12-30 09:55
aki2087
Rank: 1
等 级:新手上路
帖 子:12
专家分:1
注 册:2010-10-29
收藏
得分:0 
求大家帮帮忙。谢谢啦

我也玩会深沉。
  学好软件
2010-12-30 10:12
九品绅士
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:59
专家分:199
注 册:2010-3-26
收藏
得分:3 
其实这种程序并不难,建议LZ先把主函数与各个子函数的构架先做好,然后就是一步一步调试完善各项功能...
2010-12-30 10:47
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:3 
还是框架问题

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-12-30 10:52
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:3 
以下是引用vandychan在2010-12-30 10:52:13的发言:

还是框架问题
....
2010-12-30 11:23
aki2087
Rank: 1
等 级:新手上路
帖 子:12
专家分:1
注 册:2010-10-29
收藏
得分:0 
太泛了。问了下,说是在结构体中定义了五个数但只输入输出了四个数。。所以有乱码。。那请问应该具体怎么修改下输入和输出的地方啊。。

我也玩会深沉。
  学好软件
2010-12-30 14:40
aki2087
Rank: 1
等 级:新手上路
帖 子:12
专家分:1
注 册:2010-10-29
收藏
得分:0 
向老师问了下原来scanf后面不能加逗号。。现在疑惑的就是如何用链表读取文件。。了。。请各位指教。。

我也玩会深沉。
  学好软件
2010-12-31 13:27
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:3 
我这里有一个  不过是C++的  楼主如果想要C语言的
+我QQ 553069938  其实都一样  楼主可以自己该
链表类.rar (1.59 KB)

                                         
===========深入<----------------->浅出============
2010-12-31 14:29
Aec
Rank: 1
来 自:山东省日照市
等 级:新手上路
帖 子:6
专家分:6
注 册:2011-1-5
收藏
得分:3 
回复 楼主 aki2087
原本老实说选课系统是学长做的很难相信,现在觉得:不要怕,好好努力咱也行.....

新手,蜕变。
2011-01-05 20:54
快速回复:学生选课管理系统弄了几天了 还是不行!!求高手帮忙找下错
数据加载中...
 
   



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

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