课程设计.docx
《课程设计.docx》由会员分享,可在线阅读,更多相关《课程设计.docx(12页珍藏版)》请在冰豆网上搜索。
课程设计
《程序设计语言》课程设计说明书
学生在线答疑排队模拟
系、部:
计算机与信息科学系
学生姓名:
指导教师:
职称讲师
专业:
班级:
完成时间:
2011年6月7日
摘要
本次课程设计要求设计学生在线答疑排队模拟系统,来使我们进一步提高设计能力和编程的能力,用所掌握的知识为实际应用服务。
学生在线答疑排队模拟实际上是一个排队问题。
学生在排队过程中,主要重复两件事:
(1)学生进入系统,排到等待队列等待答案。
(2)老师从等待队列中取出排在最前面的一位同学的信息,该学生开始答疑,并从队列中被删除。
此次课程设计用到了while语句、switch语句和条件语句,还用到了EnQueue()、AnsQ()、PrintQ()函数以及结构体、数组等。
此系统首先要定义学生信息的存储结构,再设计功能函数EnQueue(),来处理新生加入的情况,接下来设计功能函数Ansq()处理答疑情况,然后设计功能函数PrintQ()查看正在排队的同学的信息。
本次课程设计的目的是培养我们综合运用所学知识,发现,提出,分析和解决实际问题的能力和锻炼我们的实践能力。
通过这次课程设计使我们懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
关键词:
课程设计;学生在线排队模拟;int;char;while;switch结构;if…else…;break
ABSTRACT
ThiscoursedesignrequirementsdesignstudentsonlineFAQqueuingsimulationsystem,tomakeourfurtherimprovethedesignabilityandtheabilityofprogramming,withknowledgeforpracticalapplicationservices.
StudentsonlineFAQqueuingsimulationisactuallyaqueuingproblems.Studentsinlineprocess,mainrepeattwothings:
(1)thestudentsintothesystem,rowtowaitqueuewaitingforananswer.
(2)theteacherfromwaitqueueoutinthefrontrowaclassmateofinformation,thestudentsbegantoanswer,andfromthequeueisremoved.
Thecoursedesigntheuseofthestatement,aswitchandhavestatements,stilluseconditionalstatementtoEnQueue(),AnsQ(),PrintQ()functionandstructurebody,array,etc.Thissystemmustfirstdefinethestudents'informationstoragestructuredesign,andfunctionalfunctionEnQueue(),todealwiththenewstudentstojoin,thenextAnsq()functiondesignprocessing,andthenanswerdesignPrintQ()functionarelininguptoseethestudentsinformation.
Thiscourseisdesignedtrainingwecomprehensiveuseknowledge,tofind,toputforward,analysisandtheabilitytosolvepracticalproblemsandexerciseourabilityofpractice.Throughthiscoursedesignthatweunderstandthetheoryandpracticeoftheimportanceofjusttheoryknowledgeisnotenough,onlythetheoreticalknowledgewhichstudiesandthepracticeup,todrawconclusionsfromthetheory,canreallyforthesocialservice,soastoimprovetheirpracticalabilityandtheabilityofindependentthinking.
Keywords:
coursedesign;studentonlinequeuingsimulation;int;char;while;switchstructure;if...else...;break
目录
摘要2
ABSTRACT3
1.课程设计要求5
1.1编写程序的要求5
1.2课程设计报告的要求5
2.学生在线答疑排队模拟系统6
2.1学生在线答疑排队系统功能6
2.2系统设计思路6
2.3测试7
3.课程设计体会10
4.源代码11
参考文献14
1.课程设计要求
C语言课程设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计题目的要求,分析、设计、编调试和测试程序及编写实践报告。
1.1编写程序的要求
编写C语言程序,有以下要求:
(1)程序应符合题目要求,正确完成题目所要求的每一个功能。
(2)程序应具有良好的可读性和可维护性。
(3)符合C语言程序设计的书写风格。
(4)运用结构化程序设计的方法编写程序。
(5)用户界面要友好。
1.2课程设计报告的要求
课程设计报告应能够反映学生完成课程设计题目的全部要求,包括对课程设计题目要求的分析、应用程序的设计、程序的测试过程以及程序的运行情况等,因此,编写课程设计报告是课程设计的一个重要环节。
课程设计报告应该符合下面的要求:
(1)报告内容完整、观点正确。
(2)层次分明、语言流畅,准确说明课程设计的内容。
(3)算法的描述要符合规范要求。
2.学生在线答疑排队模拟系统
2.1学生在线答疑排队系统功能
要求程序输出选择菜单项,包括:
(1)排队;
(2)答疑;
(3)查看正在排队的学生名单;
(4)退出。
然后根据用户选择的菜单选项,调用相应的功能处理函数。
2.2系统设计思路
(1)设计学生在线答疑排队模拟程序的主函数main(),打印输出主控程序菜单选项,并接收用户的选择项。
(2)定义学生信息(学号、姓名)的数据存储结构,学号规定为8个字节,姓名规定最多15个字节。
(3)设计学生在线答疑排队模拟程序的功能函数EnQueue(),处理新学生加入排队的情况。
(4)设计学生在线答疑排队模拟程序的功能函数AnsQ(),处理队列中第1个学生出队答疑的情况。
(5)设计学生在线答疑排队模拟程序的功能函数PrintQ(),输出队列中所有正在排队的学生信息。
(6)当用户退出答疑程序时,检查队列是否为空。
如仍有学生排队,提示已下班。
2.3测试
图1.1菜单选择项
图1.2实现功能函数EnQueue()
图1.3实现功能函数AnsQ()
图1.4实现功能函数PrintQ()
图1.5实现退出功能
3.课程设计体会
C语言是一种广泛使用的程序设计语言,它具有表达能力强、代码质量高和可移植性好等特点。
C语言程序设计的目的是培养我们的程序设计思想、掌握程序设计的基本方法,为我们以后的课程打下坚实的基础。
因此,我们要好好学习C语言这门课程,以适应社会的发展。
此次课程设计使我进一步理解了教材的内容,巩固了基本概念,更熟练的应用了相关的知识。
而上机操作也有利于培养我的程序设计风格,逐步提高我的程序设计能力、实际操作能力和编程水平,同时也增强了我的实际动手能力。
编程是一件很枯燥的事,但我还是尽自己的努力完成了。
当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。
又经过几天的努力,终于把程序完成了,尽管程序还是有很多错误和漏洞,不过还是很高兴的。
无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C语言的一次实践作业,自己进步的证明。
通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
通过这一次的实践学习,我对C语言有了进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,再有通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。
同时,在收获的基础上,我也发现了我在学习C语言上的一些不足之处。
自己对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针……通过这次课程设计之后,我把前面所学过的知识又重新温故了一遍。
所以,我要加把劲,争取把这些问题解决掉。
在以后的学习上,我会有针对性的去做题,不留疑点。
在以后的练习中,我会努力的去把握重点,突破难点,掌握典型例题,掌握解题的思路、技巧和方法,不断提高我的答题速度和正确性。
在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。
4.源代码
#include
#include
#include
#include
typedefstruct
{
charnum[8];
charname[12];
}datatype;
typedefstructQnode
{
datatypedata;
structQnode*next;
}Qnode;
typedefstruct
{
Qnode*front;
Qnode*rear;
}LinkQueue;
LinkQueue*lq;
voidEnQueue(datatype*stu)
{
Qnode*qn;
qn=(Qnode*)malloc(sizeof(Qnode));
strcpy(qn->data.num,stu->num);
strcpy(qn->data.name,stu->name);
qn->next=NULL;
lq->rear->next=qn;
lq->rear=qn;
}
voidAnsQ()
{
Qnode*p;
if(lq->front==lq->rear)
{
printf("没有排队的同学!
\n");
return;
}
p=lq->front->next;
printf("本次答疑同学为:
\n学号姓名");
printf("\n%s%s\n",p->data.num,p->data.name);
lq->front->next=p->next;
if(lq->rear==p)lq->rear=lq->front;
free(p);
}
voidPrintQ()
{
Qnode*p;
if(lq->rear==lq->front)
{
printf("没有同学排!
\n");
return;
}
else
{
p=lq->front->next;
while(p!
=NULL)
{
printf("%s%s\n",p->data.num,p->data.name);
p=p->next;
}
}
}
voidmain()
{
intsel,flag=1;
Qnode*qn;
datatype*stu;
lq=(LinkQueue*)malloc(sizeof(LinkQueue));
qn=(Qnode*)malloc(sizeof(Qnode));
qn->next=NULL;
lq->front=lq->rear=qn;
while(flag==1)
{
printf("\n----欢迎进入答疑系统----\n");
printf("--------------------------\n");
printf("1.排队\n");
printf("2.答疑\n");
printf("3.查看排队同学名单\n");
printf("0.退出\n");
printf("--------------------------\n");
printf("请选择(0--3):
");
scanf("%d",&sel);
switch(sel)
{
case1:
printf("\n新同学排队\n");
printf("请输入:
\n学号姓名\n");
stu=(datatype*)malloc(sizeof(datatype));
scanf("%s%s",stu->num,stu->name);
EnQueue(stu);break;
case2:
printf("\n队列中第1个同学答疑\n");
AnsQ();break;
case3:
printf("\n正在排队的所有同学如下:
\n");
printf("学号姓名\n");
PrintQ();break;
case0:
printf("\n退出答疑模拟程序\n");
if(lq->front->next!
=NULL)
printf("\n已到下班时间,还在排队的同学请下次再来!
\n");
flag=0;break;
}
}
}
参考文献
[1]恰汗·合孜尔.C语言程序设计[第三版].北京:
中国铁道出版社,2010.1~288
[2]恰汗·合孜尔.C语言程序设计习题集与上机指导[第三版].北京:
中国铁道出版社,2010.