第 23 页 共 28页
SUB *ptr,*ptr2; ptr=subj; 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; } } return head; }
void *insert()//插入课程信息 { SUB *ptr,*subj; int size=sizeof(SUB); char ch,ch1; while(ch!='0') { subj=(SUB *)malloc(size); ptr=subj; printf(\输入要插入的课程信息:\\n\ printf(\请输入课程编号:\ printf(\请输入课程名称:\ printf(\请输入课程性质:\ printf(\请输入总学时:\ printf(\请输入授课学时:\ printf(\请输入实践或上机学时:\ printf(\请输入学分:\ printf(\请输入开课学期:\ myInsert(subj); printf(\添加完毕,新信息存入文件中\\n\ printf(\继续插入请按回车\\n\ printf(\结束添加课程按 0: [ ]\\b\\b\ ch1=getchar(); //将回车键赋给CH1,
否则subj->term输完后输入的回车键会赋给CH,因此用CH1填补。 ch=getchar();
第 24 页 共 28页
} return head; }
void *del() //删除课程 { SUB *p1,*p2; char ch,ch1; int num; while(ch!='0') { printf(\输入想要删除的课程编号:[ ]\\b\\b\\b\\b\\b\ scanf(\ 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\ printf(\结束删除课程按 0: [ ]\\b\\b\ ch1=getchar(); //将回车键赋给CH1,
否则num输完后再输入的回车键会赋给CH,因此用CH1填补。 ch=getchar(); printf(\删除完毕,新信息存入文件中\\n\ system(\ } return head; system(\}
第 25 页 共 28页
void choose()//选新课程--学生选课函数 { SUB *p,*q; int a[5]; int num,total=0,i=0,j; printf(\输入要选修的课程的编号,编号之间以空格分开\\n\ scanf(\ printf(\如果确认输入完要选修的课程的编号,请输入0: [ ]\\b\\b\ while(num!=0) { for(p=head;p;p=p->next) if(p->num==num) { total=total+p->score; a[i]=num; i++; } scanf(\ } if(total<60) { printf(\选修总学分为%d,未达到60,选修失败!\\n\ system(\ } else { FILE *fp; fp=fopen(\ for(j=0;jnext) if(q->num==a[j]) fprintf(fp,\
q->name,q->kind,q->stime,q->ttime,q->etime,q->score,q->term); fclose(fp); printf(\选修成功!****\\n\ printf(\您选修的课程总学分为%d,课程分别为:\\n\ printf(\课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期\\n\ for(j=0;jnext) if(q->num==a[j]) printf(\
第 26 页 共 28页
q->num,q->name,q->kind,q->stime,q->ttime,q->etime,q->score,q->term); printf(\以上信息全部保存在'3.txt'中\\n\ } system(\}
void search() //课程信息查询 { int a,num; int t=1; char type[10]; SUB *ptr;
L1:system(\ printf(\请选择查询方式*************\\n\ printf(\按课程性质查找\\n\ printf(\按学分查找\\n\ printf(\退出查找\\n\ printf(\ printf(\ scanf(\ switch(a) { case 1:printf(\请输入要查找的课程的性质:\ scanf(\ printf(\课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期\\n\ for(ptr=head;ptr;ptr=ptr->next) if(strcmp(type,ptr->kind)==0) { printf(\
ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term); t=0; } if(t) printf(\未找到!\\n\ t=1; system(\ goto L1; case 2:printf(\输入要查找的课程的学分:\ scanf(\ printf(\课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期\\n\ for(ptr=head;ptr;ptr=ptr->next) if(ptr->score==num)
第 27 页 共 28页
{ printf(\
ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term); t=0; } if(t) printf(\未找到!\\n\ t=1; system(\ goto L1; case 3:break; } }
void Mangers() { int n,w=1,flag=0,i=3; char s[8]; char password[7]=\ do { printf(\ scanf(\ if(!strcmp(s,password)) //进行密码匹配验证 { flag=1; break; } else { printf(\ i--; } } while(i>0); if(!flag) { printf(\ //输入密码超过了3次!! exit(0); //自动退出 } do { system(\ puts(\管理员菜单*******************\\n\\n\