东华理工大学长江学院
课程设计报告
课程设计题目:学生选修课程系统
学生学号: 09325208
学生姓名:
专 业:电子信息工程
指导教师:黄笑鹃、刘自强
20##年 1 月 6日
目录
目录... 1
一、设计目的与说明... 2
目的... 2
说明... 2
二、总体设计分析... 2
三、各功能模块分析... 3
3.1浏览模块... 3
3.2选课模块... 3
3.3删除选课模块... 4
3.4浏览自己所选的课程... 4
四、自己负责的功能模块分析... 4
4.1浏览可供选择的课程... 4
4.2选择选修课程... 7
五、结果分析... 9
【程序运行】... 9
【功能上的优点】... 9
【程序的缺点】... 10
六、设计总结... 10
七、致谢... 11
一、设计目的与说明
目的
1.加深对《C语言》课程所学知识的理解,进一步巩固C语言语法规则。学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力。
2.通过课程设计,提高自我的动手能力,加强自我的实践体会,对高级C语言这门课程做到理论与实践相结合的学习,真正的掌握所学知识。
说明
假定有n门课程,每门课程都有课程编号,课程名称等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供一下功能:
(1) 系统以菜单方式工作;
(2) 课程信息和学生信息的录入功能(课程信息有文件保 存)----输入;
(3) 课程信息浏览功能----输出;
(4) 查询功能(查询相应的选课情况);
(5)删除与修改已选的公选课;
二、总体设计分析
本课程设计主要分为以下四个功能模块:浏览所有课程、选择选修课程、删除所选修课程、浏览自己所选择的课程。
浏览所有课程:浏览本选课系统当中存在的所有可供选修的课程
选择选修课程:在可供选择的课程当中选择自己所要选择的课程
删除选修课程:在自己已经选择的课程当中删除所不需要或选错的课程
浏览自己所选择的课程:浏览自己所有已经选好的课程信息并进行确认
总体功能模块图
三、各功能模块分析
3.1浏览模块
本模块是要对所有的系统当中存在的课程浏览一遍,这样便于下面的选课环节。通过struct classes//可选修科目,int num; //选修课对应的代号,char name[20]; //选修课名称,在相应的函数当中输入相应的课程名称与代号,然后用classes *choice(classes *head)//选课,if (head==NULL) {s=new classes;head=new classes;head->next=p1;}
//第一次选课,在选课前,系统就会输出里面存在的所有课程名称,如果选用的功课已经被选,则会显示出剩下的课程的所有名称。
3.2选课模块
本模块是在浏览系统当中存在的所有课程之后,根据自己的需要,选择相应的课程。通过for(i=0;i<6;i++),if (cla[i].num==p1->num) strcpy(p1->name,cla[i].name);
//找到代号对应的课程,记录到学生已选课程,如果if (j==1) break;//代号对应课程存在,终止循环,else cout<<"输入有误,不存在该代号的科目,重新输入。"<<endl;//代号输入有误,提示重新输入。如果还需要继续选课,则for(n=0;n<5;n++)//继续选课,cout<<"是否继续选课?1/0:";cin>>jud;选课时则是重新上面的操作。
3.3删除选课模块
本模块是为了修改已选择的课程,当自己所选的课程出现错选或是多选时,可以通过本模块来删除多余的课程。通过classes *rechoice(classes *head)//修改已选科目,classes *p1,*p2;p1=p2=new classes;if (head==NULL) //提示还没选择课程,cout<<"还未选择任何科目。"<<endl; if (p1->next->num==p2->num) break;//找到待删结点,p1->next=p1->next->next;//删除该结点。这样就实现了删除已近多选或是错选的课程。
3.4浏览自己所选的课程
本模块是对于自己所有已经选好的课程进行浏览,最后进行浏览一遍,观察其时候有误,如有错误,则对其进行修改,如果没错,则对其进行确认。通过void inqury(classes *head)//查询已选科目,if (head==NULL) cout<<"还未选择任何科目。cout<<"已选科目如下:"<<endl;。经过浏览之后如果真确,则cout<<"提交成功!"<<endl;
四、自己负责的功能模块分析
4.1浏览可供选择的课程
源程序:
#include <iostream.h>
#include <string.h>
/**********************************************/
struct classes//可选修科目
{
int num; //选修课对应的代号
char name[20]; //选修课名称
classes *next;
}*s,cla[6]={
{178020,"计算机理论与基础"},
{193030,"高级C语言"},
{101030,"通信原理"},
{260050,"模拟电子技术与基础"},
{269060,"电路基础"},
{314070,"计算机系统结构"}};
//*s为链表尾结点
//cla[]为系统给定选修课程
//这里模拟直接给定选修科目
//实际情况可由系统提供
/**********************************************/
classes *choice(classes *head)//选课
{
int jud;
classes *p1,*p2;
p1=p2=new classes;
if (head==NULL) {s=new classes;head=new classes;head->next=p1;}
//第一次选课
else s->next=p1;//已选了部分科目
cout<<"今年可选选修科目如下:"<<endl;
for(int i=0;i<6;i++)//输出可选科目
运行结果截图:
4.2选择选修课程
源代码:
cout<<cla[i].num<<" "<<cla[i].name<<endl;
}
for(int n=0;n<5;n++)//第一次选择课程
{
int j=0;//用于判定课程代号是否存在
cout<<"请输入选定科目代号:";
cin>>p1->num;
p1->next=NULL;
for(i=0;i<6;i++)
{
if (cla[i].num==p1->num)
{
strcpy(p1->name,cla[i].name);
//找到代号对应的课程,记录到学生已选课程
j=1;break;
}
}
if (j==1) break;//代号对应课程存在,终止循环
else cout<<"输入有误,不存在该代号的科目,重新输入。"<<endl;
//代号输入有误,提示重新输入
}//输入五次有误,终止循环
for(n=0;n<5;n++)//继续选课
{
cout<<"是否继续选课?1/0:";
cin>>jud;
if (jud!=1) break;
p2=p1;
p1=new classes;
for(;;)
{
int j=0;
cout<<"请输入选定科目代号:";
cin>>p1->num;
p1->next=NULL;
for(i=0;i<6;i++)
{
if (cla[i].num==p1->num)
{
strcpy(p1->name,cla[i].name);
j=1;break;
}
}//输入五次有误,终止循环
if (j==1) break;
else cout<<"输入有误,不存在该代号的科目,重新输入。"<<endl;
}
p2->next=p1;
}
s=p1;//将尾结点记录
return head;//返回头结点
运行截图:
五、结果分析
【程序运行】
我所负责的模块的程序运行如上面的截图所示
【功能上的优点】
1.简洁明了的程序菜单。程序主要采用了四个模块组子菜单,相互独立又相互联系,巧妙相接,符合用户的使用习惯与思维。
2.人性化的程序提示语言,程序提示语言较人性化,不仅大多为祈使语句、疑问句,而且提示明确,具有较强的明确的指导作用。程序提示不仅层次分明,提示方式多样,而且提示信息井然有序,更加有利于用户顺利、准确地进行程序的操作。
3.智能化的模块设计。程序的智能化主要体现在减少了许多人工操作。如功能模块操作结束后,均会返回主菜单进行下一模板的运行,并提示是否再进行类似的操作,这样给用户带来了操作的方便,大大提高了学生选课的效率。
(6) 本程序达到了C语言课程设计题目的所有要求。即本程序(1)系统一菜单方式工作(2)课程信息和学生选课信息录入功能(课程信息用文件保存输入(3)课程信息浏览功能与此同时,程序各模块开发设计依据了程序的具体实际的使用情景,而有所改进,使其更具有实用性。
【程序的缺点】
1.程序虽然经过多次精简,但仅仅是形式上、小范围的精简,仍未得到本质上的精简,即未找到更加简单、更加高效、更加合理、更小占用的资源的算法。
2.程序功能仍然不够完善。例如信息表达方式不丰富,比较单一,缺少图片、音乐等元化表达方式。
六、设计总结
1. 通过该系统的课程设计分析,掌握了模块化设计的方法,理解和运用了结构化程序设计的思想和方法,掌握和提高了运用C语言进行程序设计的能力。
2. 对于一个较大的应用程序,我们一般不可能一次就设计出一个很完善的系统。通常要先设计满足基本要求的系统,然后再测试或者在使用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系统。
3.本次课程设计通过实践让我对C语言有了一个更加深入的理解,对C语言当中的基础知识有有了一个更加全面的认识。
4.本次课程设计是以小组的形式共同完成一个课题,在完成课题过程当中,我们互相协作,共同探讨,加强和锻炼了我们的团队协作精神。
七、致谢
本次课程设计能够顺利的完成首先要感谢我们的指导老师,黄笑鹃与刘自强,在做设计过程当中,他们给予我们耐心的指导与讲解,帮助我们排忧解难,其次要感谢我们队友之间的团结协作,才能够顺利完成本次课程设计。
东华理工大学长江学院
课程设计评分表
学生姓名: 班级:093252 学号:09325208
课程设计题目:学生选修课程系统
class=WordSection2 style='layout-grid:15.6pt'>第二篇:C语言课程设计论文要求
C语言课程设计论文要求
目录(顶部居中、小二号黑体加粗)(***目录为自动生成***)
论文(设计)题目(居中、小二号黑体加粗)
(空一行)
【内容摘要】(空二格,五号楷体加粗)内容(五号楷体,150-300字)
(空一行)
【关键词】 (空二格,五号楷体加粗)关键词内容(五号楷体、每两个关键词之间空一格,一般3—5个)
(内容摘要是对文章内容的简要概述,一般字数为150至300字;关键词应是文章的关键概念、词组,一般在3至5个,最多不超过8个。 “内容摘要”起首空两格,项目名称用5号楷体加粗,内容用5号楷体,1.5倍行距;“关键词”另起一行,起首空两格,项目名称用5号楷体加粗,内容用5号楷体,词间空一格。)
正文内容:除一、二、三级标题外,文字统一用小4号宋体,每段起首空两格,回行顶格,1.5倍行距;
正文文中标题:
一级标题:标题序号为“一、”,用4号黑体加粗,独占行,末尾不加标点;
二级标题:标题序号为“(一)”,用小4号黑体加粗,独占行,末尾不加标点;
三级标题:标题序号为“1、”,用小4号黑体加粗,若独占行,则末尾不加标点,若不独占行,标题后面须加句号;
四级标题:标题序号为“(1)”,用小4号宋体,其余要求与三级标题相同;
五级标题:标题序号为“①”,用小4号宋体,其余要求与三级标题相同。
注意:每级标题的下一级标题应各自连续编号。
(空一行)
一、(一级标题)(四号黑体加粗)独占行,末尾不加标点
(一)(二级标题)(小四号黑体加粗)独占行,末尾不加标点
1、(三级标题)(小四号黑体加粗)
(1)(四级标题)小四号宋体
(正文内容用小四号宋体、下同)
二、(一级标题)(四号黑体加粗)独占行,末尾不加标点
┋
(空一行)
结语(四号黑体加粗)(根据需要)
结语具体内容(用小四号宋体)
二、打印与装订
毕业论文(设计)统一用A4纸打印,行距1.5倍,页边距上、下、左、右均2.5厘米(设计论文全文应连续页码,从目录开始编写页码,目录为I、II样式,正文1、2、3样式)及左侧装订。装订内容及顺序包括:1、封面;2、目录;3、正文。