C语言课程设计报告
[程序]
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(); } return head; system(\}
20
C语言课程设计报告
) 选修课程模块
选修课程模块采用插入链表的操作:
选新课程 printf(\输入要选修的课程的编号\\n\printf(\如果确认输入完要选修的课程的编号,请输入0\ 程序对输入的信息进行查找判断 printf(“选修成功! \\n\printf(\以上信息全部保存在'my_sub.txt'中\\n\
[程序]
void choose() //选新课程 { SUB *p,*q;
21
(十
C语言课程设计报告
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 {
Int FILE,fp; FILE *fp; fp=fopen(\ for(j=0;jnext) if(q->num==a[j]) fprintf(fp,\>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(\
me,q->kind,q->stime,q->ttime,q->etime,q->score,q->term);
printf(\以上信息全部保存在'my_sub.txt'中\\n\ }
22
C语言课程设计报告
}
(十一) 读取文件模块
读取文件模块是用来读出文件内容,并将内容输出到内存中,当输入文件名时,就能打开指定的文件,当输入all_sub.txt时,打开所有课程信息的文件,当输入my_sub.txt时,就是浏览学生选修的课程信息。
读取文件 system(\
printf(\请输入课程信息所在的文件名称:\!feof(fp) c=fgetc(fp))=='\\n' !feof(fp) newSub=(SUB*)malloc(sizeof(SUB)); fscanf(fp,&newSub->num,newSub->name,newSub->kind,&newSub->stime,&newSub->ttime,&newSub->etime,&newSub->score,&newSub->term); myInsert(newSub); fclose(fp);
[程序]
void readfile() //阅读文件 {
23
C语言课程设计报告
void *myInsert(SUB*);
SUB *newSub; //新课程 int num,stime,ttime,etime; int score,term;
char c,name[20],kind[10],fname[20]; FILE *fp;
fp=fopen(\ while(!feof(fp)) {
newSub=(SUB*)malloc(sizeof(SUB));
fscanf(fp,\->kind,&newSub->stime,&newSub->ttime,&newSub->etime,&newSub->score,&newSub->term);
myInsert(newSub); }
fclose(fp);
}(十二) 保存文件模块
保存文件模块共分为两个子程序,分别是将修改的信息保存到all_sub.txt和my_sub.txt文件中: [程序
void savefile() //保存文件 {SUB *p;
FILE *fp;fp=fopen(\if(fp==NULL)exit(0);
printf(\课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学分 开课学期\\n\for(p=head;p;p=p->next)
fprintf(fp,\->stime,p->ttime,p->etime,p->score,p->term); fclose(fp);
printf(\创建后的信息已放入'2.txt'文件中\\n\system(\
void savefile1() //保存文件 {
SUB *p; FILE *fp;
fp=fopen(\if(fp==NULL)exit(0); for(p=head;p;p=p->next)
fprintf(fp,\->stime,p->ttime,p->etime,p->score,p->term); fclose(fp);
24