2023年C语言课程设计说明书.docx
2023年C语言课程设计说明书 一 问题描述与分析 假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开学学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计学生选修课程系统,使之能提供以下功能: 1课程信息录入功能(课程信息用文件保存) 2课程信息浏览功能 3排序:按总学时排序 4查询功能:按开学学期查询 5课程修改,删除(可选项) 二 总体设计 根据题目要求,定义结构体类型如下: struct subjects char no10; char name20; char kind20; int stime; /*总学时*/ int ttime; /*授课学时*/ int etime; /*实验或上机学时*/ float score; int term; subN; 三 详细设计 1)存储结构的选择 在这个程序中,我们选择用结构体数组来存储课程,即顺序存储结构 Struct subjects subN 2)系统初始化 这个模块的主要功能是得到初始的课程。为了实现“一次输入,多次使用”,我们用文件来保存课程。第一次运行本程序需从键盘输入所有课程并保存到文件中,以后运行就可以从文件中读取数据,直接使用了。这样既可以减少输入的麻烦,更重要的是使本程序可以连续运行,每次运行都可以使用上一次保存的结果。 void newfile() int i; FILE *fp; if(fp=fopen("sub.dat","wb")=NULL) printf("文件建立失败!请重新运行程序。n"); exit(0); printf("请输入课程门数"); scanf("%d",&num); for(i=0;i 3)课程浏览功能 按课程编号进行浏览 void read1() FILE *fp; num=0; fp=fopen("sub.dat","r"); if(fp=NULL) printf("文件打开失败!请重新运行程序。n"); exit(0); while(!feof(fp) fread(&subnum,1,sizeof(struct subjects),fp); num+; num-; fclose(fp); printf("现在共有%d门课程,初始数据为:n",num); output(); 3 4)排序 按总学时排序:使用改进的起泡法排序。 void sortstime() int i,j,flag; struct subjects temp; for(i=0;i flag=0; for(j=0;j if(subj.stime temp=subj; subj=subj+1; subj+1=temp; flag=1; if(flag=0) break; printf("排序后的课程为:n"); output(); 4 5)查找(总学时) 按开学学期查询,查找用顺序查找法。 void find() int i,cterm; printf("请输入要查找课程的开学学期:n"); getchar(); scanf("%d",&cterm); i=findterm(cterm); if(i=-1) printf("要查找的学期不存在:n"); else printf("查找到的课程信息为:n"); printf("课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,总学分,开学学期:n"); printf("=n"); printf("%st%-10st%st%dt%dt%dt%.1ft%dt",subi.no,subi.name,subi.kind,subi.stime,subi.ttime,subi.etime,subi.score,subi.term); printf("n"); int findterm(int cterm) int i; for(i=0;i return i; return -1; 6)参考文献 C语言指导书。 7)心得体会 通过对课程精心设计,我从中获得了不少东西: 1.我知道一些自己不太熟悉的知识,比如文件系统中的好多知识; 2.从中懂得了合作的重要性,这是以前没注意的; 3.也锻炼了自己的思维能力,可以把一整块东西分成若干个小块来处理; 4.在锻炼的同时,自己得到了一种满足感。 C语言课程设计说明书 C语言英汉转换机课程设计说明书 课程设计说明书 课程设计说明书格式说明 ug课程设计说明书 油罐课程设计说明书 protel课程设计说明书 泵站课程设计说明书 proe课程设计说明书 法兰课程设计说明书