C语言实习指导书.docx
《C语言实习指导书.docx》由会员分享,可在线阅读,更多相关《C语言实习指导书.docx(13页珍藏版)》请在冰豆网上搜索。
C语言实习指导书
《高级语言程序设计实习》
实习指导书
高级语言程序设计课题组编
管理学院
2013年8月
目录
一、实习目的:
2
二、实习基本要求:
3
三、适用专业:
4
四、实习的一般步骤(及时间安排):
4
五、实习报告:
4
六、实习任务5
七、注意事项:
7
一、实习目的:
高级语言程序设计实习是信息管理与信息系统专业必修的实践教学课程之一。
本课程的目的在于使学生通过课程设计的综合训练,培养学生实际分析问题、编程和动手能力,最终目标是通过这种形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务。
结合《高级语言程序设计》课程,本课程着重培养学生基本问题的解决能力,了解程序设计的技巧和方法、掌握C语言的基本内容及程序设计的基本方法与编程技巧,并能够运用VC等集成开发工具编写一些综合程序,为以后继续学习打下基础。
本实习具有如下特点:
(1)涵盖了C语言的重要基础知识。
(2)结合了实际应用的要求,使该课程实习既涵盖知识点,又接近工程实际需要。
通过激发学习兴趣,调动学生主动学习的积极性,并引导他们根据实际编程要求,训练学生实际分析问题的能力以及编程能力,并养成良好的编程习惯。
(3)每个实习项目均给出要求与提示,为学生创造独立思考的条件。
学生在吃透要求的前提下,完全可以设计出自己的应用程序。
(4)提供六个综合实习项目,以期进一步锻炼学生的动手能力。
允许学生1-3人组合队伍分工合作,以培养团队精神。
另外,在实际编程中,为了提高编程质量,希望学生在书写代码时,对空行、空格和注释严格按要求处理,以建立良好的编程风格。
二、实习基本要求:
1.要充分认识实习对自己的重要性,认真做好设计前的各项准备工作。
2.既要虚心接受老师的指导,又要充分发挥主观能动性。
结合课题,独立思考,努力钻研,勤于实践,勇于创新。
3.独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。
4.无论在实验室上机或是在图书馆查资料都要严格遵守规章制度,学生有事离校必须请假。
实习期间,无故缺席按旷课处理;缺席时间达四分之一以上者,其成绩按不及格处理。
5.在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、按量完成实习。
6.小组成员之间,分工明确,但要保持联系畅通,密切合作,培养良好的互相帮助和团队协作精神。
三、适用专业:
适用于信息管理与信息系统专业。
四、实习的一般步骤(及时间安排):
实习为13-19周,大体分五个阶段:
1)选题与搜集资料:
每人选择一题(或2~3人为一小组进行选题),进行实习课题的资料搜集。
(第13-14周周三上午)
2)分析与概要设计:
根据搜集的资料,进行程序功能与数据结构分析,并选择合适的数据结构、并在此基础上进行实现程序功能的算法设计。
(第15-16周周三上午和周五下午)
3)程序设计:
运用掌握C语言编写程序,实现所程序的各个模块功能。
(第17周周五下午、第18周周一至周三下午)
4)调试与测试:
自行调试程序,成员交叉测试程序,并记录测试情况。
(第18周周四全天)
5)设计报告:
编写设计报告(第18周周五全天)
6)验收与交设计报告。
(第19周周一上午)
五、实习报告:
1、需求分析。
2、概要设计:
包括抽象数据类型与算法。
3、详细设计
掌握实习的每个步骤,在此基础上设计出所要求的数据结构,功能模块和完整的主程序。
4、调试分析
调试过程中所做的工作,设计的测试用例等。
5、测试结果
输入数据和输出数据示例。
6、说明(如果有)。
六、实习任务
C语言的组成是函数调用,所以实习的重点是函数。
函数设计的难点是选择函数类型及其参数的传递方式。
数据类型及程序控制方式是C语言的基础;数组、指针和结构的使用技术是编程的核心技术,也是程序设计人员必备的知识,因此本课程设计特意加强这方面的训练。
本课程设计共选择了六个实习课题,这些课题及其简要说明如下:
1.学生成绩管理系统;
主要功能:
(1)能完成对学生成绩的录入、修改
(2)能统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序
(3)能查询学生成绩,不及格科目及学生名单
(4)能输出学生的成绩单
2、设计一个简单计算器
要求:
能完成基本的加、减、乘、除计算,系统界面不做强制要求。
3、图书信息管理系统设计
图书信息包括:
登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
试设计一图书信息管理系统,使之能提供以下功能:
(1)图书信息录入功能(图书信息用文件保存)
(2)图书信息浏览功能
(3)查询和排序功能:
(至少一种查询方式)
(4)按书名查询
(5)按作者名查询
4、学生信息管理系统设计
学生信息包括:
学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
试设计一学生信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)学生信息录入功能(学生信息用文件保存)
(3)学生信息浏览功能
(4)查询、排序功能
(5)按学号查询
(6)按姓名查询
5、算24游戏
主要功能:
(1)能罗列出四张牌用四则运算凑成24的游戏。
(2)凑不成给出提示。
6、五子棋
应用C语言编写程序在计算机上实现二人对弈五子棋功能。
一方执黑棋,一方执白棋,轮流走棋,每方都试图在游戏结束前让自己的棋子五子相连,首先实现五子相连的一方获胜。
主要功能:
(1)程序执行过程中,要求棋盘、棋子时时可见
(2)光标移动与落子
(3)判断胜负
(4)系统帮助
七、注意事项:
1.素材可从以上给出的范围中选择,如有选同样内容的同学,程序不能完全相同,否则以不及格计。
2.最后要上交的内容有:
实习报告。
3.时间安排:
每学期最后两周。
4.具体上机地点均在实训楼五楼管理学院中心实验室。
参考样例:
例1:
五子棋游戏
五子棋是起源于中国古代的传统黑白棋种之一,亦有“连五子”、“五子连”、“串珠”、“五目碰”、“五格”等多种称谓。
五子棋是一种训练人逻辑思维严密性的好游戏。
设计目的:
用C语言实现一个简单的五子棋游戏,掌握C语言图形函数的调用,包括:
坐标定位;颜色设置(背景颜色和文本颜色设置),线条颜色、填充颜色;画线、画圆、画矩形函数,图形屏幕和文字屏幕的清除,从键盘获取键值等。
通过程序训练,使学生对C语言有更深刻的了解,掌握五子棋游戏开发的基本原理,从而为以后的程序开发奠定基础。
功能描述:
能进行基本的五子棋操作,程序能实现界面的初始化功能、下棋功能、胜负判断功能和帮助功能。
(1)初始化功能,程序初始化屏幕和棋盘,
(2)实现下棋操作,程序能实现下棋操作,在下棋过程中能随时退出。
(3)胜负判断。
程序能对下棋的结果进行判断,分出胜负,并显示获胜信息。
(4)显示帮助信息,程序能提示玩家轮到哪方下棋了。
功能模块说明:
程序包括4个子模块,分别是初始化模块、功能控制模块、下棋操作模块和帮助模块,各个模块的功能描述如下:
●初始化模块:
初始化屏幕信息,包括显示欢迎信息、操作方法和初始化键盘。
●功能控制模块:
该模块是各个功能函数的集合,主要是被其他模块调用,包括画棋子、胜负判断、行棋转换等功能。
●下棋操作模块:
该模块用于执行下棋操作。
●帮助模块:
该模块主要用于显示帮助信息,提示轮到哪方下棋。
例2:
学生成绩管理系统
学生成绩管理系统是一个教育单位的得力助手,它利用计算机对学生成绩进行统一管理,实现学生成绩信息管理工作流程的系统化、规范化和自动化,提高工作效率。
设计目的:
训练学生了解信息系统的开发流程,熟悉C语言的文件和单链表的各种基本操作,该项目涉及结构体、单链表、文件等方面的知识。
通过本程序的训练,使读者能对C语言的文件操作有一个更深刻的了解,掌握利用单链表存储结构实现对学生成绩管理的原理。
功能描述:
成绩管理系统可以利用单链表实现,它由如下五大功能模块组成:
主控函数执行流程:
输入记录模块:
输入记录模块主要完成将数据存入单链表中的工作。
在此学生成绩管理系统中,记录可以从以二进制形式存储的数据文件中读入,也可以从键盘逐个输入学生记录。
学生记录由学生的基本信息和成绩信息字段构成。
当从数据文件中读入记录时,它就是在以记录为单位存储的数据文件中,将记录逐条复制到单链表中。
查询记录模块:
查询记录模块主要实现在单链表中按学号或姓名查找满足相关条件的学生记录。
在查询函数中,l为指向保存了学生成绩信息的单链表的首地址的指针变量。
为了遵循模块编码的原则,我们将在单链表中进行的指针等为操作设计成了一个单独的函数。
更新记录模块:
主要实现了对学生记录的修改、删除、插入和排序操作,因此学生记录是以单链表的结构形式存储的,所以这些操作都是在单链表中完成。
●修改记录
需要对单链表中的目标结点的数据域中的值进行修改,它分为两步完成。
第一步,输入要修改的学号,输入后调用定位函数Locate()在单链表中逐个对节点数据域中的学号字段的值进行比较,直到找到该学号的学生记录;第二步,若找到该学生记录,修改除学号之外的各个字段的值,并将存盘标记变量saveflag置1,表示已经对记录进行了修改,但还没有执行存盘操作。
●删除记录
删除记录操作完车工删除指定学好或姓名的学生记录,它也分两步完成,第一步,输入需要修改的学号或姓名,输入后调用定位函数Locate()在单链表中逐个对节点数据域中的学号字段的值进行比较,直到找到该学号的学生记录,返回指向该学生记录的节点指针;第二步,若找到该学生记录,将该学生记录所在的节点的前驱节点的指针域指向目标节点的后继节点。
●插入节点
插入记录操作完成在指定学号的随后位置插入新的学生记录。
首先,它要求用户输入某个学生的学号,新的记录将插入在该学生记录之后;然后,提示用户输入一条新的学生记录的信息,这些信息保存在新节点的数据域中;最后,将该节点插入在位置学号之后。
●排序记录
有关排序的算法很多,如冒泡排序、插入排序等,针对单链表结构的特点,我们采用插入排序算法实现按总分的从高到低对学生记录进行排序没,排序完成之后,按顺序给名次字段赋值。
统计记录模块:
统计模块比较简单,主要通过循环读取指针变量P所指向的当前节点的数据域中的各字段的值,并对各个成绩字段进行逐个判断的形式,完成了单科最高分学生的查找和各科不及格人数的统计。
输出记录模块
调用fwrite函数,将信息写出温江,调用disp函数将学生成绩信息输出到屏幕。
例3:
学生信息管理系统
由于学生人数的变化,学生的信息也随之变化,使得学生信息的管理工作繁重,而且手工管理效率极低。
为了跟上时代潮流,规范管理,提高学生信息的管理水平和管理效率。
为学校提供方便、快捷、准确的学生信息管理,开发一个“学生信息管理系统”
设计目的:
本系统通过管理学生信息的录入,输出,添加,删除的的整个过程,以供学校学生信息管理。
本系统能够维护学生的各种信息,提高了人员的工作效率。
主控函数执行流程:
输入记录模块:
输入记录模块主要完成将数据存入单链表中的工作。
在此学生信息管理系统中,记录可以从以二进制形式存储的数据文件中读入,也可以从键盘逐个输入学生记录。
学生记录由学生的基本信息和成绩信息字段构成。
当从数据文件中读入记录时,它就是在以记录为单位存储的数据文件中,将记录逐条复制到单链表中。
查询记录模块:
查询记录模块主要实现在单链表中按学号或姓名查找满足相关条件的学生记录。
在查询函数中,l为指向保存了学生信息的单链表的首地址的指针变量。
为了遵循模块编码的原则,我们将在单链表中进行的指针等为操作设计成了一个单独的函数。
更新记录模块:
主要实现了对学生记录的修改、删除、插入和排序操作,因此学生记录是以单链表的结构形式存储的,所以这些操作都是在单链表中完成。
●修改记录
需要对单链表中的目标结点的数据域中的值进行修改,它分为两步完成。
第一步,输入要修改的学号,输入后调用定位函数Locate()在单链表中逐个对节点数据域中的学号字段的值进行比较,直到找到该学号的学生记录;第二步,若找到该学生记录,修改除学号之外的各个字段的值,并将存盘标记变量saveflag置1,表示已经对记录进行了修改,但还没有执行存盘操作。
●删除记录
删除记录操作完车工删除指定学好或姓名的学生记录,它也分两步完成,第一步,输入需要修改的学号或姓名,输入后调用定位函数Locate()在单链表中逐个对节点数据域中的学号字段的值进行比较,直到找到该学号的学生记录,返回指向该学生记录的节点指针;第二步,若找到该学生记录,将该学生记录所在的节点的前驱节点的指针域指向目标节点的后继节点。
●插入节点
插入记录操作完成在指定学号的随后位置插入新的学生记录。
首先,它要求用户输入某个学生的学号,新的记录将插入在该学生记录之后;然后,提示用户输入一条新的学生记录的信息,这些信息保存在新节点的数据域中;最后,将该节点插入在位置学号之后。
●排序记录
有关排序的算法很多,如冒泡排序、插入排序等,针对单链表结构的特点,我们采用插入排序算法实现按学号的从高到低对学生记录进行排序没,排序完成之后,按顺序给名次字段赋值。
输出记录模块
调用fwrite函数,将信息写出温江,调用disp函数将学生成绩信息输出到屏幕。