课程管理系统设计.docx
《课程管理系统设计.docx》由会员分享,可在线阅读,更多相关《课程管理系统设计.docx(20页珍藏版)》请在冰豆网上搜索。
课程管理系统设计
学院
面向对象程序设计课程设计报告
题目:
课程管理系统设计
专业班级:
学生组长:
小组成员:
指导教师:
分数:
2014年6月10日
任务书
学号
姓名
专业班级
学号
姓名
学号
姓名
课程设计
题目
课程管理系统设计
课程设计任务
课程设计内容
∙假定有n门课程,每门课程有课程编号、课程名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期等信息,学生可以按要求(如学分不得少于60)自由选课。
任务流程
∙分析任务要求,设计方案;
∙画出系统功能模块图;
∙提出方案的可行性、优缺点,进行完善;
∙安排小组成员的分工协作计划,对系统软件模块进行划分;
∙完成软件设计,进行汇总调试;
∙按规定格式,撰写并打印设计报告。
进度计划
∙查阅资料,确定及完善设计方案
∙画出系统功能图
∙安排小组成员的分工协作进行软件设计
∙调试程序
∙撰写、打印设计报告
指导
教师
评语
指导教师签字:
年月日
目录
1、总体设计...............................................................................................................4
1、设计任务目的................................................................................................... 4
2、设计任务要求 .................................................................................................. 4
3、设计任务意义.................................................................................................. 4
4、设计方案选取与论证 .......................................................................................5
5、模块划分与任务安排....................................................................................... 6
二、软件设计 .............................................................................................................. 6
1、课程信息录入模块的软件设计.......................................................................7
2、课程信息浏览模块的软件设计....................................................................... .7
3、课程信息查询模块的软件设计.................................................................... 8
三、系统实现及调试过程.......................................................................................... 9
四、结论..................................................................................................................... 12
五、致谢 .................................................................................................................... 13
六、参考文献 ............................................................................................................ 13附录一、程序代码.................................................................................................... 14
附录二、成绩评定表..................................................................................................23
一、总体设计
1、设计任务目的
1. 巩固和加深学生对C语言课程的基本知识的理解和掌握
2. 掌握C语言编程和程序调试的基本技能
3. 利用C语言进行基本的软件设计
4. 掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力
2、设计任务要求
试设计一选修课程系统,使之能提供以下功能:
(1)系统以菜单方式工作;
(2)课程信息录入功能(课程信息用文件保存)——输入;
(3)课程信息浏览功能——输出;
(4)查询功能:
(至少一种查询方式)——算法;
(5)按学分查询;
(6)按课程性质查询;
(7)学生选修课程(可选项)。
3、设计任务意义
通过课程设计的实践环节的教学,可以加深学生对课堂所学基础知识的掌握与理解,提高学生对所学内容的综合运用能力;同时也可以通过查询相关资料,培养学生自学能力、接受新知识的能力,提高学习兴趣;增强学生程序设计能力,掌握编程技巧,并可培养学生实际上机调试程序的能力。
“理论与实践”相结合,使学生得到很好的锻炼,为以后学习、工作打下坚实的基础。
4、设计方案选取与论证
系统的主要使用对象是需要选课的学生。
学生在选课是首先要录入各个课程的详细信息,。
系统还需要随学生选课的变化来浏览和查询学生的总体选课情况课程信息。
系统功能模块图
由于题目要求将学生的选课信息用结构体形式输入,并写入文件中,所以应提供文件的输入输出等操作:
在过程中需有录入、浏览、查询学生选课信息等操作,顾应分别建立个功能模块;另外还应提供键盘式选择菜单实现程序运行。
5、模块划分与任务安排
根据小组成员情况,对系统软件模块进行划分,安排小组成员的分工协作计划。
分配情况如下:
课程信息录入模块;PPT演讲
查询选课信息模块;论文撰写
浏览选课信息模块;PPT制作
2、软件设计
软件设计主函数流程图main()
主函数流程图
主函数设计地比较简洁,只是提供一个主菜单,switch语句将整个程序分为三个大的功能。
管理员的功能一共有三个功能:
录入,浏览,查询,运用字符串处理函数处理密码的问题,用一个switch语句实现函数的调用。
1.课程信息录入模块的软件设计()
课程信息录入模块
课程信息录入模块:
以附加的方式打开文件course.txt,调用insert函数并通过printf输入语句输入需要的课程数,根据课程数录入课程的详细信息。
2. 课程信息浏览模块的软件设计()
课程信息浏览模块
课程信息浏览模块:
主要用管理员中的“浏览选课信息”,调用的是browser函数,以只读的方式打开文件course.txt,,将所有的课程信息输出,即将course.txt文件里面的内容全部输出。
3.课程信息查询模块的软件设计()
课程信息查询模块
课程信息查询模块主要用于管理员功能中的“查询选课信息”,查询模块共分为两个查询方法:
按课程性质查找和按学分查找。
在“课程信息查询模块”程序最后的switch语句中,每一个case语句就是一种查询方法。
调用search函数以只读的方式打开文件course.txt,然后选择按学分或者课程性质查询。
3、系统实现及调试过程
通过使用这个学生课程管理系统软件,可以轻松的管理学生课程信息,你可以对学生课程信息按照现实界面进行信息录入,浏览,查询,等功能。
调试中的问题和解决办法:
问题:
文件在打开和保存时有问题。
解决方法:
调整文件的打开方式,从原来的单纯的w+修改为添加一个if语句,
当没有文件时执行w+的操作,否则执行r+,避免了原存储文件被覆盖的问题。
调试过程:
首先运行程序,出现程序的主菜单,按“1”进入录入选课信息操作,如图所示:
若输入的选课门数:
2。
然后自行进行选课的录入过程,录入选课信息结束。
如图所示:
按“2”进行选课信息的浏览功能,所图所示:
按3进行选课信息的查询操作,选择1按学分查询,即可查询该学分的选课课程信息,如图所示:
按1返回主菜单后,按3进行选课信息的查询操作,选择2按课程性质查询,即可查询该条件的选课课程信息,如图所示:
4、结论
1、对C语言的编程实践有所认识。
2、在遇到程序调试不通过时,会通过缩小范围的分析来锁定问题所在。
3、 通过这次实验,熟悉了从自然语言转换成C++语言再转换为流程图的过程。
4、 在程序中设定合适的全局变量,可以简化程序的编写难度。
5、运用函数可以减少编写时的代码量,也使程序条理清晰。
6、通过本次C语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。
随着实验的成功与报告的完成,有点微微的成就感使人难忘。
伴随着学习的深入,我发现高深的东西还有很多很多,等待着我自己去挖掘。
对C语言的学习,我会加倍努力。
5、致谢
经过几天的课程设计,我学会了很多东西。
这次课程设计的成功完成离不开同学和老师的帮助。
当自己在编程中遇到困难的时候,有同学们共同商量,相互协助,献计献策,使我能够比较分析各种方案,找出解决问题的方法;当在课程设计过程中遇到模棱两可的问题,同学们能过各抒己见,尊重他人见解,使我能够综合各种观点,取长补短,虚心借鉴,是程序做得更尽人意;当遇到我们都无法解决的问题时,有辅导老师耐心讲解,详细地指出了程序中的错误,不仅帮我解决了当前编程中的问题,而且使我加深了对C语言的认识,为以后的学习铺平了道路。
感谢他们,他们不仅是我收获了更多的知识,丰富了学习经验,而且使我养成了“严谨治学”的学习态度,使我拥有了面对困难的勇气,并且体会到了浓浓的师生情,体会到了同窗之间难以忘怀的友谊。
这必定是我人生中一笔宝贵的财富,再次感谢他们!
六、参考文献
【1】 C语言程序设计实例精粹
【2】 C语言课程设计案例精编
【3】 C语言实战105例
【4】 《C程序设计(第三版)》 谭浩强 著 清华大学出版
【5】 《C语言程序设计——实验指导 课程设计 习题解答》 高涛 陆丽娜 著 西安交通大出
版
附录(程序代码)
#include
#include
#include
structcourse
{
intnum;
charname[20];
charkind[10];
inttime;
intttime;
intetime;
intmark;
intterm;
};
structstudent
{
intsnum;
intcnum;
charcname[20];
};
/*课程信息录入*/
voidinsert()
{
voidmain();
FILE*fp;
structcoursec;
intcount;
inti;
if((fp=fopen("course.txt","a+"))==NULL)
{
printf("cannotopenfile\n");
}
printf("\n请输入课程门数:
\n");
scanf("%d",&count);
printf("课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期:
\n");
for(i=0;i{
scanf("%d%s%s%d%d%d%d%d",&c.num,&c.name,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term);
fprintf(fp,"%d%s%s%d%d%d%d%d\n",c.num,c.name,c.kind,c.time,c.ttime,c.etime,c.mark,c.term);
}
fclose(fp);
main();
}
/*课程信息浏览*/
voidbrowser()
{
voidmain();
FILE*fp;
structcoursec;
inta;
if((fp=fopen("course.txt","r"))==NULL)
{
printf("\nCannotopencourse!
\n");
}
printf("课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期:
\n");
for(;!
feof(fp);)
{
fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.num,&c.name,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term);
printf("%5d%12s%9s%9d%9d%11d%11d%11d\n",c.num,c.name,c.kind,c.time,c.ttime,c.etime,c.mark,c.term);
}
fclose(fp);
printf("\n1-返回主菜单;2-退出选课系统\n");
scanf("%d",&a);
if(a==1)
main();
else
exit(0);
}
/*课程信息查询*/
voidsearch()
{
voidmain();
FILE*fp;
structcoursec;
intscore;
charkind[10];
inta;
intb;
printf("1.按学分查询,2.按课程性质查询.\n");
printf("请选择查询方式,输入选项数字:
");
scanf("%d",&b);
if(b==1)
{
printf("\n请输入您要查询的学分:
\n");
scanf("%d",&score);
if((fp=fopen("course.txt","r"))==NULL)
{
printf("\nCannotopencourse!
\n");
}
printf("课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期:
\n");
for(;!
feof(fp);)
{
fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.num,&c.name,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term);
if(c.mark==score)
printf("%5d%12s%9s%9d%9d%11d%11d%11d\n",c.num,c.name,c.kind,c.time,c.ttime,c.etime,c.mark,c.term);
}
}
elseif(b==2){
printf("\n请输入您要查询的课程性质:
\n");
scanf("%s",&kind);
if((fp=fopen("course.txt","r"))==NULL)
{
printf("\nCannotopencourse!
\n");
}
printf("课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期:
\n");
for(;!
feof(fp);)
{
fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.num,&c.name,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term);
if(strcmp(c.kind,kind)==0)
printf("%5d%12s%9s%9d%9d%11d%11d%11d\n",c.num,c.name,c.kind,c.time,c.ttime,c.etime,c.mark,c.term);
}
}
else{
printf("输入错误!
");
exit
(1);
}
fclose(fp);
printf("\n1-返回主菜单;2-退出选课系统\n");
scanf("%d",&a);
if(a==1)
main();
else
exit(0);
}
/*统计选课情况*/
voidxuanke_information()
{
voidmain();
inttotal=0;
inta;
FILE*fp;
structstudents;
if((fp=fopen("student.txt","r"))==NULL)
{
printf("\nCannotopenstudent!
\n");
}
printf("学号课程编号课程名称\n");
for(;!
feof(fp);)
{
fscanf(fp,"%d%d%s\n",&s.snum,&um,&ame);
total++;
printf("%7d%9d%13s\n",s.snum,um,ame);
}
printf("\n选课学生总人数为:
%d人",total);
fclose(fp);
printf("\n1-返回主菜单;2-退出选课系统\n");
scanf("%d",&a);
if(a==1)
main();
else
exit(0);
}
/*学生选修课程*/
voidxuan_ke()
{
voidmain();
structstudents;
structcoursec;
inta;
FILE*fp;
printf("\n请输入您的学号及您要选择的课程编号:
");
scanf("%d%d",&s.snum,&um);
if((fp=fopen("course.txt","r"))==NULL)
{
printf("\nCannotopencourse!
\n");
}
for(;!
feof(fp);)
{
fscanf(fp,"%d%s%s%d%d%d%d%d\n",&c.num,&c.name,&c.kind,&c.time,&c.ttime,&c.etime,&c.mark,&c.term);
if(um==c.num)
break;
}
fclose(fp);
if((fp=fopen("student.txt","a+"))==NULL)
{
printf("\nCannotopenstudent!
\n");
}
fprintf(fp,"%d%d%s\n",s.snum,um,c.name);
fclose(fp);
printf("\n1-返回主菜单;2-退出选课系统\n");
scanf("%d",&a);
if(a==1)
main();
else
exit(0);
}
/*主菜单*/
voidmain()
{
intn,w=0;
printf("********************************************************************************\n");
printf("学生选课系统菜单\n");
printf("********************************************************************************\n");
printf("1-录入选课信息\n");
printf("2-浏览选课信息\n");
printf("3-查询选课信息\n");
printf("4-统计选课情况\n");
printf("5-进入选课操作\n");
printf("0-退出选课系统\n");
printf("********************************************************************************\n");
printf("请选择输入选项前数字:
");
scanf("%d",&n);
do
{
if(n>5||n<0)
{
printf("\n输入错误!
请重新输入!
\n");
scanf("%d",&n);
}
elsew=1;
}while(w==0);
switch(n)
{
case1:
insert();break;
case2:
browser();break;
case3:
search();break;
case4:
xuanke_information();break;
case5:
xuan_ke();break;
case0:
exit(0);
}
return;
}
面向对象程序设计课程设计成绩评定表
序号
评价指标
满分值
得分
1
任务书及设计要求全面、准确
10
2
方案的选择及其论证充分、合理
10
3
基本原理框图的设计思路正确、有新意
10
4
各功能模块的程序设计
15
5
系统的安装调试,基本功能的实现
25
6
作品的扩展功能与创新
10
7
报告结构合理、规范,条理清晰
10
8
课程设计过程中的学习态度认真、出勤率高
10
总评
教师评语:
指导教师年