最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

C语言程序设计“学生选课”

来源:动视网 责编:小OO 时间:2025-10-06 10:19:04
文档

C语言程序设计“学生选课”

#include#include#includetypedefstructsubjects{intnum;charname[20];charkind[10];intstime;intttime;intetime;intscore;intterm;structsubjects*next;}SUB;SUB*create_form(){SUB*head,*tail,*p;intnum,stime,ttime;intetime,score,term;charname[20],kind[10];ints
推荐度:
导读#include#include#includetypedefstructsubjects{intnum;charname[20];charkind[10];intstime;intttime;intetime;intscore;intterm;structsubjects*next;}SUB;SUB*create_form(){SUB*head,*tail,*p;intnum,stime,ttime;intetime,score,term;charname[20],kind[10];ints
#include

#include

#include

typedef struct subjects

{

 int num;

 char name[20];

 char kind[10];

 int stime;

 int ttime;

 int etime;

 int score;

 int term;

 struct subjects *next;

}SUB;

 

SUB *create_form()

{

 SUB *head,*tail,*p;

 int num,stime,ttime;

 int etime,score,term;

 char name[20],kind[10];

 int size=sizeof(SUB);

head=tail=NULL;

printf("输入选修课程信息:\\n");

 scanf("%d %s %s %d %d %d %d %d",&num,&name,&kind,&stime,&ttime,&etime,&score,&term);

 while(num!=0){

  p=(SUB *)malloc(size);

p->num=num;

strcpy(p->name,name);

strcpy(p->kind,kind);

p->stime=stime;

p->ttime=ttime;

p->etime=etime;

p->score=score;

p->term=term;

 if(head==NULL)

  head=p;

 else

tail->next=p;

 tail=p;

 scanf("%d %s %s %d %d %d %d %d",&num,&name,&kind,&stime,&ttime,&etime,&score,&term);

 }

tail->next=NULL;

 return head;

}

 

void savefile(SUB *head)

{

 SUB *p;

 FILE *fp;

 fp=fopen("subjects.txt

fprintf(fp,"\课程编号  课程名称  课程性质  总学时  授课学时  实验或上机学时  学分  开课学期\\n");

for(p=head;p;p=p->next)

fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\\n",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);

 fclose(fp);

}

 

void savefileadd(SUB *head)

{

 SUB *p;

 FILE *fp;

 fp=fopen("subjectsadd.txt

 fprintf(fp,"课程编号  课程名称  课程性质  总学时  授课学时  实验或上机学时  学分  开课学期\\n");

for(p=head;p;p=p->next)

fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\\n",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);

 fclose(fp);

}

 

void savefiledel(SUB *head)

{

 SUB *p;

 FILE *fp;

 fp=fopen("subjectsdel.txt

 fprintf(fp,"课程编号  课程名称  课程性质  总学时  授课学时  实验或上机学时  学分  开课学期\\n");

for(p=head;p;p=p->next)

fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\\n",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);

 fclose(fp);

}

void prin(SUB *head)

{

 SUB *ptr;

 if(head==NULL){

  printf("没有此门课程记录!\\n");

  return;

 }

 printf("课程编号  课程名称  课程性质  总学时  授课学时  实践或上机学时  学分  开课学期\\n");

for(ptr=head;ptr;ptr=ptr->next)

printf("%5d%12s%9s%9d%9d%11d%11d%7d\\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);

}

void search(SUB *head)

{

 int a,num;

 int t=1;

 char type[10];

 char ch='a',ch1;

 SUB *ptr;

 

 

while(ch!=' '){

  printf("若要按课程性质查找请输入1,若要按学分查找请输入2:\\n");

  scanf("%d",&a);

  switch(a){

  case 1:printf("请输入要查找的课程的性质:\\n");

   scanf("%s",type);

   printf("课程编号  课程名称  课程性质  总学时  授课学时  实践或上机学时  学分  开课学期\\n");

for(ptr=head;ptr;ptr=ptr->next)

if(strcmp(type,ptr->kind)==0){

     

printf("%5d%12s%9s%9d%9d%11d%11d%7d\\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);

           t=0;

    }

    if(t) printf("未找到!\\n");

    t=1;

   break;

  case 2:printf("输入要查找的课程的学分\\n");

   scanf("%d",&num);

   printf("课程编号  课程名称  课程性质  总学时  授课学时  实践或上机学时  学分  开课学期\\n");

for(ptr=head;ptr;ptr=ptr->next)

if(ptr->score==num){

printf("%5d%12s%9s%9d%9d%11d%11d%7d\\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);

                    t=0;

    }

    if(t) printf("未找到!\\n");

    t=1;

  

 }

printf("继续查找请按回车键,结束请按空格键:\\n");

 ch1=getchar();                              //将回车键赋给CH1,否则CASE里面最后输入的回车键会赋给CH,因此用CH1填补。

 ch=getchar();

 }

}

 

SUB *insert(SUB *head)

{

 SUB *ptr,*ptr2,*subj;

 int size=sizeof(SUB);

 char ch='a',ch1;

 while(ch!=' '){

      subj=(SUB *)malloc(size);

      ptr=subj;

      printf("输入要插入的课程信息:\\n");

scanf("%d%s%s%d%d%d%d%d",&subj->num,subj->name,subj->kind,&subj->stime,&subj->ttime,&subj->etime,&subj->score,&subj->term);

       

if(head==NULL){

         head=ptr;

head->next=NULL;

    }

       else{

for(ptr2=head;ptr2;ptr2=ptr2->next)

if(ptr2->next==NULL){

ptr2->next=subj;

subj->next=NULL;

             break;

       }

    }

    printf("继续插入请按回车,结束请按空格:\\n");

    ch1=getchar();                      //将回车键赋给CH1,否则subj->term输完后输入的回车键会赋给CH,因此用CH1填补。

    ch=getchar();

    }

 return head;

}

  

SUB *del(SUB *head)

{

 SUB *p1,*p2;

 char ch='a',ch1;

 int num;

 while(ch!=' '){

  printf("输入想要删除的课程编号:\\n");

     scanf("%d",&num);

if(head->num==num){

      p2=head;

head=head->next;

      free(p2);

  }

     if(head==NULL)

      return NULL;

     p1=head;

p2=head->next;

     

while(p2){

if(p2->num==num){

p1->next=p2->next;

       free(p2);

    }

     else p1=p2;

p2=p1->next;

  }

  printf("继续删除请按回车,结束请按空格:\\n");

  ch1=getchar();                       //将回车键赋给CH1,否则num输完后再输入的回车键会赋给CH,因此用CH1填补。

  ch=getchar();

 }

 return head;

}

 

void choose(SUB *head)

{

 SUB *p,*q;

 int a[5];

 int num,total=0,i=0,j;

 printf("输入要选修的课程的编号,编号之间以空格分开,输完后以0结束\\n");

scanf("%d",&num);

 while(num!=0){

for(p=head;p;p=p->next)

if(p->num==num){

total=total+p->score;

    a[i]=num;

    i++;

   }

   scanf("%d",&num);

 }

if(total<60) printf("选修总学分未达到60,选修失败!\\n");

 

else {

  printf("选修成功!\\n");

  printf("您选修的课程为:\\n");

for(j=0;jfor(q=head;q;q=q->next)

if(q->num==a[j])

    

printf("%s ",q->name);

 printf("\\n");

printf("***********************************\\n");

printf("***********************************\\n");

printf("***********************************\\n");

printf("***********************************\\n");

   

    }

}

void main()

{

 SUB *head=create_form();

 savefile(head);

 prin(head);

 search(head);

 head=insert(head);//注意此处的必要性函数insert的的返回值重新赋给head!

 savefileadd(head);

 printf("修改后的信息为:\\n");

 prin(head);

 head=del(head);       //注意此处的必要性,数del的的返回值重新赋给head!

 savefiledel(head);

 printf("修改后的课程信息为:\\n");

 prin(head);

 choose(head);

}

文档

C语言程序设计“学生选课”

#include#include#includetypedefstructsubjects{intnum;charname[20];charkind[10];intstime;intttime;intetime;intscore;intterm;structsubjects*next;}SUB;SUB*create_form(){SUB*head,*tail,*p;intnum,stime,ttime;intetime,score,term;charname[20],kind[10];ints
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top