&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(\
kind,&stime,&ttime,&etime,&score,&term); }
tail->next=NULL; return head; }
void savefile() //保存文件 {
SUB *p; FILE *fp;
fp=fopen(\ if(fp==NULL)exit(0);
printf(\课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学分 开课学期\\n\ for(p=head;p;p=p->next)
fprintf(fp,\
p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term); fclose(fp);
printf(\创建后的信息已放入'2.txt'文件中\\n\ system(\}
void savefile1() //保存文件 {
SUB *p; FILE *fp;
fp=fopen(\
16
if(fp==NULL)exit(0); for(p=head;p;p=p->next)
fprintf(fp,\
p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term); fclose(fp);
printf(\创建后的信息已放入'3.txt'文件中\\n\ system(\}
void readfile() //阅读文件 {
void *myInsert(SUB*); SUB *newSub; //新课程 int num,stime,ttime,etime; int score,term;
char cname[20],kind[10],fname[20]; FILE *fp;
fp=fopen(\ while(!feof(fp)) {
newSub=(SUB*)malloc(sizeof(SUB));
fscanf(fp,\nd,
&newSub->stime,&newSub->ttime,&newSub->etime,&newSub->score,&newSub->term);
myInsert(newSub); }
fclose(fp); }
void prin() //浏览所有课程 {
SUB *ptr; head=NULL; readfile(); if(head==NULL) {
printf(\ return; }
printf(\课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期\\n\
for(ptr=head;ptr;ptr=ptr->next)
17
{
printf(\
ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term); }
system(\}
void prin1() //浏览所有选修课程 {
SUB *ptr; FILE *fp;
if((fp=fopen(\ {
printf(\ choose(); }
printf(\课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期\ printf(\ while(!feof(fp)) {
ptr=(SUB*)malloc(sizeof(SUB));
fscanf(fp,\
&ptr->stime,&ptr->ttime,&ptr->etime,&ptr->score,&ptr->term);
printf(\
ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term); }
fclose(fp);
system(\}
void *myInsert( SUB *subj) //链表插入操作 {
SUB *ptr,*ptr2; ptr=subj;
if(head==NULL) {
head=ptr;
head->next=NULL; } else {
for(ptr2=head;ptr2;ptr2=ptr2->next)
18
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(); }
return head; }
void *del() //删除课程 {
SUB *p1,*p2; char ch,ch1; int num;
while(ch!='0') {
19
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(\}
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) {
20