1、 目 录第1章 题目与概要设计11.1题目的内容与要求1 1.2概要设计1第2章 详细设计22.1主模块22.2菜单模块32.3输入模块32.4选择输出模块4第3章 调试分析5第4章 执行结果6参考文献10附 录(程序清单)10I沈阳航空航天大学课程设计报告 第1章 题目与概要设计第1章 题目与概要设计1.1题目的内容与要求主要内容: 假定有6门选修课程,每门课程有课程编号,课程名称,课程性质,总学时,授课时间,实验或上机学时,学分,开课学期等信息。试设计一个选修课程管理程序,功能包括:1.课程信息录入功能;2.课程信息浏览功能;3.查询功能:可按学分,课程性质进行对课程查询;4.选修课程排序
2、功能。可按学分由小到大对所有选修课程进行课程排序输出。 设计要求:1.采用文本菜单界面选择相应功能;2.课程信息以磁盘文件保存。1.2概要设计 本程序主要分为五个模块(见功能模块图1.1),主模块,菜单模块,输入模块,浏览模块,选择输出模块。主模块:定义变量,控制程序的运行。显示模块:给出六个菜单项的内容和输出提示。输入判断模块:判断输入的数字是否符合条件。选择输出模块:根据输入的正确数字实现菜单功能。管理程序输入模块菜单模块主模块 选择性输出模块浏览模块 图1.1 功能模块图23沈阳航空航天大学课程设计报告 第2章 详细分析第2章 详细设计2.1主模块控制整个程序的运行,控制菜单操作,通过,
3、实现各项功能,流程如图2.1所示。 开始输入m 结束结束排序按性质查按学分浏览录入M=0M=5M=4M=3M=2M=1判断m选择输入m输出菜单结束按学分查输入m排序按性质查xingzhi查录入浏览开始菜单输入m录入统计删除退出输入m结束修改 图2.1 主模块流程图 注释:定义课程信息结构体数组xubject6,定义变量m=0。输入运用if语句执行选择操作。2.2菜单模块 开始输出菜单 结束2.3输入模块编译运行程序,屏幕显示三个菜单项的内容和输入提示。YN 结束 开始输入建立链表并储存入文件 是否输入课程信息 图2.3 输入模块流程图2.4选择输出模块输入m 开始对m判断选择功能对m判断选择功
4、能结束程序显示所有课程信息按学分排序按性质查询按学分查询开始对m判断输入m是否继续查询 结束沈阳航空航天大学课程设计报告 第3章 调试分析第3章 调试分析本次课设在调试运行时一共发现了4个问题1. 在建立结构体时非法定义结构体。2. 编写函数,当函数结束时未能及时释放指针。3. 在书写程序过程中大量运用花括号,在几个模块之中都出现了花括号括错问题。4. 事先定义了许多变量,但是没有用。虽然,定义变量对程序没有影响,但是为了让程序更清晰合理 ,在调试完成后进行了删除。沈阳航空航天大学课程设计报告 第4章执行结果第4章 执行结果 运行操作及结果:菜单显示如下。输入1,录入课程信息显示如下录入课程信
5、息后输入2,对课程进行浏览。浏览完毕输入3,对课程按学分查询并输入学分范围。查询完毕输入4对课程按性质查询并输入课程性质。查询完毕输入5对课程按学分从小到大进行排序。最后输入0,结束程序。沈阳航空航天大学课程设计报告 参考文献参考文献1 张长海,陈娟. C语言课程设计M . 北京:高等教育出版社,20042 谭浩强. C语言程序设计(第4版)M.清华大学出版社,20103 谭浩强. C程序设计题解与上机指导.清华大学出版社,20054 网冠科技 时尚编程百例 机械工业出版社,20025 网冠科技 Visual C+6.0基础培训百例 机械工业出版社,2006沈阳航空航天大学课程设计报告 附录附
6、 录(程序清单)代码#include#include#include#include#define N 6struct XUANXIUKEchar name30;int num;char quality100;float time;float class_time;float test_time;float credit;char date50;struct XUANXIUKE *next;subjectN;typedef struct XUANXIUKE XXK;void caidan()printf( *请选择相应功能* n);printf( 1.录入课程信息.n);printf( 2.课
7、程信息浏览.n);printf( 3.按学分对课程进行查询.n);printf( 4.按课程性质对课程进行查询.n);printf( 5.按学分大小从小到大对课程进行排序.n);printf( 0.结束程序.n);printf(请输入要实现功能的编号n);XXK *create()int i;FILE *fp;XXK *head,*p1;head=NULL;fp=fopen(D:subject.dat,wb);if (fp=NULL)printf(无法建立文件n);exit(0);fclose(fp);printf(请输入课程的编号 名称 课程性质 总学时 授课学时 上级或实验学时 学分 学期
8、:n);for(i=0;inum,p1-name,p1-quality,&p1-time,&p1-class_time,&p1-test_time,&p1-credit,p1-date);fwrite(p1,sizeof(XXK),1,fp);p1-next=head;head=p1;getchar();fclose(fp);caidan();return(head);void liulan()FILE *fp;XXK *pstu;int i;fp=fopen(D:subject.dat,rb);if (fp=NULL)printf(无法打开文件n);exit(0);fclose(fp);ps
9、tu=(XXK *)malloc(N*sizeof(XXK);fread(pstu,sizeof(XXK),N,fp);printf(n *对课程进行浏览* n);printf(课程的编号 名称 性质 总学时 授课学时 上机或实验学时 学分 开学学期:n);for(i=0;iN;i+)printf( %-4d %-8s %-8s %.1f %.1f %.1f %.1f %-10sn,pstui.num,pstui.name,pstui.quality,pstui.time,pstui.class_time,pstui.test_time,pstui.credit,pstui.date);fcl
10、ose(fp);free(pstu);caidan();void xuefen()FILE *fp;XXK *pstu;int i;fp=fopen(D:subject.dat,rb);if (fp=NULL)printf(无法打开文件n);exit(0);fclose(fp); pstu=(XXK *)malloc(N*sizeof(XXK);fread(pstu,sizeof(XXK),N,fp);float min,max;printf(*请输入学分下限和上限*na b n);scanf(%f %f,&min,&max);getchar();printf(n *对课程按照学分进行查询*
11、n);printf(课程的编号 名称 性质 总学时 授课学时 上机或实验学时 学分 开学学期:n);for(i=0;iN;i+)if(pstui.credit=min)printf( %-4d %-8s %-8s %.1f %.1f %.1f %.1f %-10sn,pstui.num,pstui.name,pstui.quality,pstui.time,pstui.class_time,pstui.test_time,pstui.credit,pstui.date);fclose(fp);free(pstu);caidan();void xingzhi()FILE *fp;XXK *pst
12、u;int i,n=0;fp=fopen(D:subject.dat,rb);if (fp=NULL)printf(无法打开文件n);exit(0);fclose(fp);pstu=(XXK *)malloc(N*sizeof(XXK);fread(pstu,sizeof(XXK),N,fp);printf(*请输入课程性质*n);char xingzhi100;scanf(%s,xingzhi);getchar();char a100=(xiaoji);char b100=(yuanji);for(i=0;i6;i+)n=strcmp(xingzhi,pstui.quality);if(n=
13、0)break;elsen=1;while(n=1)printf(没有该性质的课程,请重新输入:n);scanf(%s,xingzhi);getchar();for(i=0;i6;i+)n=strcmp(xingzhi,pstui.quality);if(n=0)break;elsen=1;printf(n *对课程按照学科性质查询* n);printf(课程的编号 名称 性质 总学时 授课学时 上机或实验学时 学分 开学学期:n);for(i=0;iN;i+)if(!(strcmp(xingzhi,pstui.quality)printf( %-4d %-8s %-8s %.1f %.1f
14、%.1f %.1f %-10sn,pstui.num,pstui.name,pstui.quality,pstui.time,pstui.class_time,pstui.test_time,pstui.credit,pstui.date);fclose(fp);free(pstu);caidan();void paixu()FILE *fp;XXK *pstu;int i,j;fp=fopen(D:subject.dat,rb);if (fp=NULL)printf(无法打开文件n);exit(0);fclose(fp);pstu=(XXK *)malloc(N*sizeof(XXK);fr
15、ead(pstu,sizeof(XXK),N,fp);XXK pstu1;printf(n *对课程按照学分从小到大排序* n);printf(课程的编号 名称 性质 总学时 授课学时 上机或实验学时 学分 开学学期:n);for(j=0;jN-1;j+)for(i=0;ipstui+1.credit)pstu1=pstui;pstui=pstui+1;pstui+1=pstu1;for(i=0;iN;i+)printf( %-4d %-8s %-8s %.1f %.1f %.1f %.1f %-10sn,pstui.num,pstui.name,pstui.quality,pstui.tim
16、e,pstui.class_time,pstui.test_time,pstui.credit,pstui.date);fclose(fp);free(pstu);caidan();void main () int n=0;XXK *head;char m;printf(n *欢迎进入学生选修课程管理系统* n);caidan();scanf(%c,&m);getchar();while(m!=0&m!=1&m!=2&m!=3&m!=4&m!=5)printf(输入有误,请重新输入:n);scanf(%c,&m);getchar();while(m!=0)if(m=1)head=create(
17、);printf(-如需进行其他功能请输入要实现的功能的编号-n);scanf(%c,&m);getchar();while(m!=0&m!=1&m!=2&m!=3&m!=4&m!=5)printf(输入有误,请重新输入:n);scanf(%c,&m);getchar();if(m=2)liulan();printf(-如需进行其他功能请输入要实现的功能的编号-n);scanf(%c,&m);getchar();while(m!=0&m!=1&m!=2&m!=3&m!=4&m!=5)printf(输入有误,请重新输入:n);scanf(%c,&m);getchar();if(m=3)xuefe
18、n();printf(-如需进行其他功能请输入要实现的功能的编号-n);scanf(%c,&m);getchar();while(m!=0&m!=1&m!=2&m!=3&m!=4&m!=5)printf(输入有误,请重新输入:n);scanf(%c,&m);getchar();if(m=4)xingzhi();printf(-如需进行其他功能请输入要实现的功能的编号-n);scanf(%c,&m);getchar();while(m!=0&m!=1&m!=2&m!=3&m!=4&m!=5)printf(输入有误,请重新输入:n);scanf(%c,&m);getchar();if(m=5)pa
19、ixu();printf(-如需进行其他功能请输入要实现的功能的编号-n);scanf(%c,&m);getchar();while(m!=0&m!=1&m!=2&m!=3&m!=4&m!=5)printf(输入有误,请重新输入:n);scanf(%c,&m);getchar();if(m=0)break;课程设计总结: 这次课程设计,我获益良多。当拿到课设任务书时,我感觉到这次课设任务不简单,它用到了我去年几乎所有的知识。但是,并没有逻辑上的难度,所以我很快就整理了思路,列出大体框图。之后去图书馆查阅资料并进行记录。最后,用三天时间对程序进行编写和调试。在让老师初次检查中,指导老师指出了我的
20、不足。之后我有对程序进行不断完善,最后在指导老师的指导下完成了课设任务。在编写程序的过程中我的体会很多作为学习计算机的学生,我们应具备严谨的的逻辑思维,这样才能使我们更好的学习计算机。我也意识到在今后的学习过程中,我们应该多多学习一些对我们学习有益的知识,这对我们的学习有足够大的意义,因为学习到了足够的知识,我们在未来的学习和工作中便会感到更加轻松,这对于提高我们的学习和工作效率意义重大。最后,在这次课程设计过程中,我感受到了自主学习的重要性,我会在以后的学习过程中,继续采用自主学习的方法,使我的学习更加轻松。最后,非常感谢指导老师的帮助和学校给予我的这次实践机会。指导教师评语:指导教师(签字): 年 月 日课程设计成绩