C程序设计课程设计报告
选题名称: 学生选修课程系统设计 系(院): 计 算 机 工 程 系 专 业: 嵌入式软件系统设计方向 班 级: 嵌入式1091 姓 名: XXX 学 号: XXXXXXXXXX 指导教师: XXX 学年学期: 2008 ~ 2009 学年 第 1 学期
2009 年 12 月 28 日
1
设计任务书
课题 名称 学生选课管理系统 1. 调研并熟悉学生选课管理系统的基本功能、数据流程与工作规程; 设计 2. 学习学生选课管理系统相关算法和基于TC集成环境的编程技术; 目的 3. 通过实际编程加深对基础知识的理解,提高实践能力; 4. 学习开发资料的收集与整理,学会撰写课程设计报告。 ; 实验 1. 微型电子计算机(PC)环境 2. 安装Windows操作系统,T C开发工具。 1. 利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,注意材料收集与整理; 2. 在第17周末之前完成预设计,并请指导教师审查,通过后方可进行下一步工作; 任务 3. 系统以菜单方式工作,学生选课录入功能(学生选课用文件保存)输入学生要求 选课浏览功能 输出查询和排序功能:(至少一种查询方式) 算法按学分查询和按课程性质查询等,学生选课删除、修改功能(任选项)。 4. 结束后,及时提交设计报告(含纸质稿、电子稿),要求格式规范、内容完整、结论正确,正文字数不少于3000字(不含代码)。 工作进度计划 序号 1 起止日期 2009.12.20~2009.12.20 工 作 内 容 在预设计的基础上,进一步查阅资料,完善设计方案,形成书面材料。 设计总体方案,构建、绘制流程框图,编写代码,上机调试。 2 3 4 200912. 21~2009.06.22 2009.12.23~2009.12.25 测试程序,优化代码,增强功能,撰写设计报告。 2009.12.26~2009.12.27 提交软件代码、设计报告,参加答辩,根据教师反馈意见,修改、完善设计报告。 指导教师(签章):
年 月 日
2
摘要:
C语言课程设计和现代计算机技术的实际应用相结合,是我们在本阶段学完理论课程之后对自己该方面的能力的一次很好的检验,从开始的算法思路到运行调试后的美观的图形界面以及另人兴奋的可用程序,都是一个很好的学习和锻炼的过程。使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。使我们体会到自身知识和能力能在实际中的应用和发挥。不但可以激发创新意识,还可以开发创造能力、培养沟通能力。这次学生选修课系统管理设计时间虽然仅有一个星期,但确实使我受益非浅。通过学生选修课系统管理设计我丰富了计算机操作经验,更加深了对C语言的了解,熟悉了其环境,更增强了对Turbo C的使用技巧。
C语言是在国内外广泛使用的一种计算机语言 。语言功能丰富、表达能力强、使用灵活方便、既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件。同时,我觉得C语言应该是操作和理论相结合的课程,在不断地编写中去思考,两者是不可分割的。我们在编写一个较大的程序时应该把它分开成几个小程序来看,这样会容易得多。
关键词:学生选修课系统管理;C语言课程设计;计算机技术;模块化程序设计;信息录入;浏览信息;选课;查询
3
目 录
1.设计目的 ........................................................................................................................................... 5 2.总体设计 ........................................................................................................................................... 5
2.1首先实现学生选修课程系统主菜单 ......................................................................................... 5 2.2其次实现模块化语句设计.......................................................................................................... 7
总结 ...................................................................................................................................................... 11 致谢 ............................................................................................................................. 12 参考文献 ..................................................................................................................... 13
4
《C语言程序设计课程设计报告》
C语言课程设计报告
1.设计目的
设计学生选修课程管理系统:
假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供以下功能: 1.1系统以菜单方式工作
1.2课程信息录入功能(课程信息用文件保存)--输入 1.3课程信息浏览功能--输出
1.4查询功能:(至少一种查询方式)--算法 1.4.1按学分查询 1.4.2按课程性质查询
1.4.3学生选修课程(可选项)
2.总体设计
实现过程和步骤提示:
2.1首先实现学生选修课程系统主菜单
2.1.1功能说明:程序首先显示学生选修课程系统界面,并等待用户输入命令(见图1-1所示)。假如用户输入3,程序将在学生选修课程系统的显示屏上输出运算结果(见图1-2所示)。 制作人:
黄江彬&黄赛男 ========================学生选修课管理系统====================== ********************************************************************* 1:录入课程信息 2:选课 3:浏览课程信息 4:查询 0:exit ********************************************************************* please make a choice! 图1-1
5
《C语言程序设计课程设计报告》
0,chinese,wenke,40,30,10,20,1 1,maths,like,60,60,0,60,1 2,english,wenke,50,50,0,50,1 3,chemistry,like,40,10,30,50,1 4,physics,like,60,50,10,60,1 5,history,wenke,70,30,40,50,1 Press any key to exit! 图1-2
2.1.2学生选修课程系统主菜单程序代码:
main () {
char choice;
printf(\" 制作人:\\n\");
printf(\" 黄江彬&黄赛男\\n\"); printf(\"========================学生选课管理系统=======================\\n\");
printf(\"*********************************************************************\\n\"); printf(\"1:录入课程信息 2:选课\\n\"); printf(\"\\n\"); printf(\"\\n\");
printf(\"3:浏览课程信息 4:查询\\n\"); printf(\"\\n\"); printf(\"\\n\");
printf(\" 0:exit\\n\"); printf(\"\\n\");
printf(\"*********************************************************************\\n\"); printf(\" please make a choice!\\n\"); do {
choice=getchar();getchar(); switch(choice) {
case '1':function1();break; case '2':function2();break; case '3':function3();break; case '4':function4();break; case '0':exit(0); } }
while(1); }
2.1.3学生选修课程系统主菜单实现提示:
(1).打印出学生选修课程系统主菜单只需使用”printf”就可以。
6
《C语言程序设计课程设计报告》
(2)利用switch语句区分 1,2,3,4 的不同情况进行运算输出。 (3)在主菜单的基础上,实现模块程序的工作。
2.2其次实现模块化语句设计
2.2.1模块化语句1-课程信息录入
2.2.1.1功能说明:把字符变量的值输出到指针变量fp所指文件。 2.2.1.2录入课程信息程序代码
int function1() {
FILE *fp; /* 文件类型指针变量 */ char string [30];
if((fp=fopen(\"F:\\\\C3exe\\\\file1.txt\ /*文件file1.txt的路径,在程序中要写成\"F:\\\\C3exe\\\\file1.txt\",用\"\\\\\"表示\"\\\" */| {
printf(\"can't open file\"); exit(1); }
while(strlen(gets(string))>0) {
fputs(string,fp); /*fputs 函数有一个返回值。如果此函数执行成功则返回非负值;若失败则返回EOF */ fputs(\"\\n\ }
fclose(fp); }
2.2.1.3录入课程信息程序实现提示:
(1)从标准输入文件输入字符串到string字符数组,再用fputs函数把此字符串送入file1.txt文件中。
(2)由于fputs函数不会在输出一个字符串之后加上一个“\\n”字符,为了在从磁盘中取出数据时能区分各字符串,要在存入时使用fputs函数输出一个“\\n”。
(3)由于输入循环的控制条件是字符串的长度不为0,所以结束输入操作的方法是在最后一行只输入一个Enter键。 2.2.2模块化语句2-选课
2.2.2.1功能说明:学生可按要求自由选课,总学分不得少于60,当所选课程总分大于60分时,输出\"选课成功!\";否则重新选择。当执行此程序时显示屏上输出运算结果(见图1-4所示)。 请输入您要选择的课程代号: 0 2 选课成功! 图1-3 2.2.2.2选课程序代码
7
《C语言程序设计课程设计报告》
struct XK /* 结构体,也称为集合数据类型,用于将不同数据组织在一个名字
下 */
{
int num;
char name[10]; char type[10]; int sumtime; int teachtime; int practisetime; int score; int term; }kecheng[10]; int function2() {
struct XK kecheng[3]={{0,\"chinese\ { 1,\"maths\ {2,\"english\ int sum=0,i,n,j; for(i=0;i<=10;i++) {
printf(\"请输入您要选择的课程代号:\"); scanf(\"%d\ for(j=0;j<=10;j++) {
if(kecheng[j].num==n) {
sum=sum+kecheng[j].score; if(sum>=60)
printf(\"选课成功!\"); exit(1); } else {
continue; } } } }
2.2.1.3选课程序实现提示:
(1)输入要选择的课程代号,当所选的课程学分和大于六十时选课成功。 (2)凡需使用结构体类型数据的,都必须在程序中自己定义。 2.2.3模块化语句3-浏览课程信息
2.2.3.1功能说明:将数据文件file1.txt的数据读回程序并输出到显示屏幕上。当
8
《C语言程序设计课程设计报告》
执行此程序时显示屏上输出运算结果(见图1-4)。 0,chinese,wenke,40,30,10,20,1 1,maths,like,60,60,0,60,1 2,english,wenke,50,50,0,50,1 3,chemistry,like,40,10,30,50,1 4,physics,like,60,50,10,60,1 5,history,wenke,70,30,40,50,1 Press any key to exit! 图1-4 2.2.3.2浏览课程信息程序代码
int function3() {
FILE *fp; /*文件类型指针变量*/ char string [30];
if((fp=fopen(\"F:\\\\C3exe\\\\file1.txt\ /*文件file1.txt的路径,在程序中要写成\"F:\\\\C3exe\\\\file1.txt\",用\"\\\\\"表示\"\\\" */| {
printf(\"can't open file\"); exit(1); }
while(fscanf(fp,\"%s\")!=EOF) /*fscanf函数能够控制应读入的数据 */ printf(\"%s\\n\"); fclose(fp); exit(1); }
2.2.3.3浏览课程信息程序实现提示:
(1)本程序中file1.txt是用\"只读\"方式打开的,因此,文件操作方式为\"r\"。 (2)在运行过程中只需输入Enter键即可执行该程序。
2.2.4模块化语句4-查询
2.2.4.1功能说明:学生可按学分查询,可查询任一学分包含的所有课程。当执行此程序时显示屏上输出运算结果(见图1-5所示)。 请输入要查询的学分: 30 0,chinese,wenke,40,10,30,30,1 Press any key to exit! 图1-5 2.2.4.2查询程序代码
struct Student /*结构体声明 */
{
int num;
9
《C语言程序设计课程设计报告》
char name[20]; char type[20]; int sumtime; int teachtime; int practisetime; int score; int term; } score[10]; int function4() {
struct Student score[10]={{0,\"chinese\ {1,\"maths\
{2,\"english\ int i,n;
for(i=0;i<10;i++) {
printf(\"请输入要查询的学分:\"); scanf(\"%d\ if(score[i].score==n);
printf(\"%5d%9s%9s%5d%5d%5d%5d%5dime,score[i].teachtime,score[i].practisetime,score[i].score,score[i].term); exit(1); } }
2.2.4.3查询程序实现提示:
(1)声明一个结构体类型,并不意味系统将分配一段内存空间来存放各数据项成员。
(2)运行时只需输入要查询学分即可。
10
《C语言程序设计课程设计报告》
总结
经过一个多星期的C语言课程设计,我们在老师的指导下,共同努力,顺利完成该课程设计,感觉自己收获不少!
首先是强化了C语言的知识,文件本来上课是没有上的,但这个课程设计里面两个模块语句是用文件,因为要达到这样的功能,使用文件相当方便,但不容易理解,所以在这方面我花了很多的时间看课本和参考课外书,使C语言的知识强化了不少。
其次是学会对简单系统进行分析,刚拿到题目时,感觉非常盲目,没有思路,无从下手。但我们多方收集资料,力求先对学生选修课程管理系统有个初步认识,进而去理解学生选修课程管理系统的工作原理,最后产生自己的设计方案。当所有准备工作搞定后,我们顺利设计了学生选修课程系统。
另外也培养了团队合作意识,像这种课程设计,由于要自学许多函数的使用,对初学者来说是个很大的工程,在设计过程中,合作精神必不可少。单凭一个人的力量是不能完成的,毕竟一个人学的很有限。每个人掌握的不同。我相信:态度决定一切,只有努力才有收获。所以我们坚持团队合作,分工明确,有多种方案共同研究拍板,有了问题大家共同探讨,极大提高了开发效率。一个礼拜中,我们有过山穷水尽的困惑;有过柳暗花明的惊喜;有过唇枪舌剑的辩论;有过相互鼓励的安慰。一个礼拜的时间我们经历了很多,也收获了很多。与其说它是体力与脑力的作业,不如说它是合作精神和毅力的考验。经过这次课程设计,我不仅学到了很多知识和技能,而且我们学会了如何合作。
更重要的是,这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了C语言的重要性。这个学生选修课程管理系统都是在自己知识范围内完成的,所以界面清晰简单,可能不是很好看,但绝对实用!从这里我也得到一个体会,做一个程序,或者开发一个软件,应该着重从它的后台制作入手,不能做出一个中看不中用的程序或者软件。相信这次的课程设计为我以后继续从事计算机工作打了一个小小的开头。
一个礼拜的挣扎,绞尽脑汁终于带着麻木的手指和大脑脱出那堆“泥潭”。现在的心情是如鱼得水,干涩的眼睛前方是万里晴空。终于,所有的努力即将化成了一个个铅字,打印机“滋滋”的声音仿佛已经宛如天籁般悦耳地在耳畔响起。此时此刻,真想把一切抛上天空。高呼:“出来了!我的成果即将出来了!”,心里也在默默的感慨着:“有志者,事竟成,破釜沉舟,百二秦关终归楚。苦心人,天不负,卧薪尝胆,三千越甲可吞吴。”
最后感谢任永峰老师的淳淳教诲,感谢同伴的积极帮忙,我的程序终于顺利完成了,接下来的就是写报告收尾了,看着自己的劳动成果写起报告来特有劲,特有灵感。
很感谢这次的课程设计,它使我更加深刻地体会到多看专业书的重要性,只有掌握了一定量的专业知识才能得心应手地解决诸多问题;另外,做任何事都要有耐心,不要一遇到困难就退缩;在学习和工作中要时刻谨记“团结”二字,它好比通向成功的铺路石,不可或缺。
人生的道路是曲折的,但正是因为曲折人生才光彩夺目,在人生的路上,总遇到重重困难,但正是因为困难我们才变的更坚强。今后的路还很长,面对困难,让我们用行动去俘虏它吧!
11
《C语言程序设计课程设计报告》
致谢
在课程设计报告即将完成之际,我想向曾经给我帮助和支持的人们表示衷心的感谢。
首先要感谢我的老师任永峰,他在学习和设计方面给了我大量的指导,并为我们提供了良好的设计环境,让我学到了知识,掌握了设计的方法,也获得了实践锻炼的机会。他严谨的治学态度、对我的严格要求以及为人处世的坦荡将使我终身受益。除此之外,他对我生活的关心和照顾也使得我得以顺利完成设计。在此祝愿他身体健康,全家幸福!
再者感谢淮阴工学院、计算机工程系提供的实践机会,信息与网络中心的各位老师提供的良好的实验环境,正是在这样良好的实验环境中我才得以成功地完成我的课程设计。
另外感谢嵌入式1091的兄弟姐妹,是你们给我带来了欢乐,是你们让我知道了什么是手足情深。
感谢生我养我的父母,他们给了我无私的爱,我深知他们为我求学所付出的巨大牺牲和努力,而我至今仍无以为报。我一直感恩,感恩于我可以拥有一个如此温馨的家庭,让我所有的一切都可以在你们这里得到理解与支持,得到谅解和分担。我爱你们,爱我们的家!祝福他们,以及那些给予我关爱的长辈,祝他们幸福、安康!
感谢我的同伴,在设计过程中,合作精神必不可少。单凭一个人的力量是不能完成的,毕竟一个人学的很有限。正是因为她和我的团结合作我们的课程设计才得以成功地完成。
感谢参考文献的原作者,是他们的书籍指引着我不断前进,帮助我解决了课程设计中的诸多难题。
最后感谢所有给过我帮助,给我提供过帮助的所有人员和机构。
一个人的成长绝不是一件孤立的事,没有别人的支持与帮助绝不可能办到。我感谢可以有这样一个空间,让我对所有给予我关心、帮助的人说声“谢谢”!今后,我会继续努力,好好工作!好好学习!好好生活!
12
《C语言程序设计课程设计报告》
参考文献
1.《C语言程序设计教程》(第二版) 谭浩强 张基温 唐永炎 编 高等教育出版社
2. 《C语言程序设计教程》(第三版) 谭浩强 张基温 编 高等教育出版社,2006
3.《C语言教程:模块化程序设计》(第二版) 美国David M.Coolopy 编 罗铁庚 译
4.《TurboC实用大全》徐金梧、杨德斌、徐科著 北京机械工业出版社,1996 5.《C语言程序实践教程》徐晓 匡泰 涂嘉庆 等编著 电子工业出版社 2006
13
指导教师评语
学号 选题 名称 序号 1 2 3 评价内容 考勤记录、学习态度、工作作风与表现。 自学情况: 上网检索机时数、文献阅读情况(笔记)。 论文选题是否先进,是否具有前沿性或前瞻性。 成果验收: 4 是否完成设计任务;能否运行、可操作性如何等。 报告的格式规范程度、是否图文并茂、语言规5 范及流畅程度;主题是否鲜明、重心是否突出、论述是否充分、结论是否正确;是否提出了自己的独到见解。 6 文献引用是否合理、充分、真实。 答辩情况: 7 自我陈述、回答问题的正确性、用语准确性、逻辑思维、是否具有独到见解等。 合计 姓名 班级 权重(%) 5 10 5 得分 20 30 5 25 指导教师(签章): 年 月 日
因篇幅问题不能全部显示,请点此查看更多更全内容