程序例题:C语言做的一个学生选课系统
来源:优易学  2011-12-10 17:05:00   【优易学:中国教育考试门户网】   资料下载   IT书店

  这是这几天我用C做的一个简易的学生选课系统.其实是我们的1道程序实践考试题,我想请大家看看,帮我提些建议.
  #include<stdio.h>
  #include<stdlib.h>
  int N1,N2,kk1,kk2,kk3;
  struct couse * head1;
  struct student * head2;
  struct couse//课程信息结构体
  {
  int num1;
  char name1[20];
  int score;
  int nelepeo;//课程已选人数
  int Melepeo;//课程人数上限
  struct couse * next;
  };
  struct student//学生信息结构体
  {
  int num2;
  char name2[20];
  int nelenum[50];//已选课程编号
  int nelen;//已选课程数量
  struct student * next;
  };
  void Ms()
  {
  for(kk1=0;kk1<1100;kk1++)
  for(kk2=0;kk2<1200;kk2++)
  for(kk3=0;kk3<1200;kk3++);
  }
  void keyboardc()//录入课程子函数(从键盘录入)
  {
  struct couse *p1,*p2;
  N1=0;
  p1=p2=(struct couse*)malloc(sizeof(struct couse));
  printf("课程编号\t课程名称\t学分\t课程人数上限\n");
  scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo);
  p1->nelepeo=0;
  head1=NULL;
  while(p1->num1!=0)
  {
  N1=N1+1;
  if(N1==1)head1=p1;
  else p2->next=p1;
  p2=p1;
  p1=(struct couse * )malloc(sizeof(struct couse));
  scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo);
  p1->nelepeo=0;
  }
  p2->next=NULL;
  }
  void filec()//录入键盘子函数(从文件录入)
  {
  FILE * fp;
  char filepath[20];
  struct couse *p1,*p2;
  N1=0;
  printf("输入要读入的文件路径:");
  getchar();
  gets(filepath);
  if((fp=fopen(filepath,"r"))==NULL)
  {
  printf("找不到%s文件!\n",filepath);
  exit(0);
  }
  p1=p2=(struct couse*)malloc(sizeof(struct couse));
  fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);
  head1=NULL;
  while(!feof(fp))
  {
  N1=N1+1;
  if(N1==1)head1=p1;
  else p2->next=p1;
  p2=p1;
  p1=(struct couse * )malloc(sizeof(struct couse));
  fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);
  }
  p2->next=NULL;
  }
  void inputc()//录入课程主函数
  {
  int i;
  printf("\t\t\t录入课程信息\n");
  printf("\n1.从键盘录入\n");
  printf("2.从文件录入\n");
  printf("3.返回主菜单\n");
  printf("请选择(1~3):\n");
  scanf("%d",&i);
  switch(i)
  {
  case(1):keyboardc();break;
  case(2):filec();break;
  case(3):break;
  }
  }
  void insertc(struct couse *incouse)//课程管理子函数(增加课程)
  {
  struct couse *p0,*p1,*p2;
  p1=head1;
  p0=incouse;
  if(head1==NULL)
  {
  head1=p0;
  p0->next=NULL;
  }
  else
  {
  while((p0->num1 > p1->num1) && (p1->next!=NULL))
  {
  p2=p1;
  p1=p1->next;
  }
  if(p0->num1 <= p1->num1)
  {
  if(head1==p1) head1=p0;
  else p2->next=p0;
  p0->next=p1;
  }
  else
  {
  p1->next=p0;
  p0->next=NULL;
  }
  }
  N1=N1+1;
  }
  void delc(int num1)//课程管理子函数(删除课程)
  {
  struct couse *p1,*p2;
  if(head1==NULL)
  {
  printf("\n没有课程,无法删除!\n");
  goto end;
  }
  p1=head1;
  while(num1!=p1->num1 && p1->next!=NULL)
  {
  p2=p1;
  p1=p1->next;
  }
  if(num1==p1->num1)
  {
  if(p1==head1) head1=p1->next;
  else p2->next=p1->next;
  printf("已删除该编号课程!\n");
  N1=N1-1;
  }
  else printf("无该编号的课程!\n");
  end:;
  }

[1] [2] [3] [4] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训