《计算机程序设计基础(C语言)》课程设计任务书
院长(主任) 许建仁 教研室主任 杨忠宝 执笔人 李波 一、实习目的和要求
通过课程设计的实践环节的教学,可以加深学生对课堂所学基础知识的掌握与理解,提高学生对所学内容的综合运用能力;同时也可以通过查询相关资料,培养学生自学能力、接受新知识的能力,提高学习兴趣;增强学生程序设计能力,掌握编程技巧,并可培养学生实际上机调试程序的能力。“理论与实践”相结合,使学生得到很好的锻炼,为以后学习、工作打下坚实的基础。每个学生需要独立完成教师安排的设计题目或由学生自拟实际的设计题目,但是自拟题目需要经过指导教师批准方可生效。
二、实习内容
(一)数据结构类题目
1、用梯形法或辛普森法求解定积分的值
题目详述:
求一个函数f(x)在[a,b]上的定积分,其几何意义是求f(x)曲线和直线x=a,y=0,x=b所围成的曲边梯形面积。为了近似求出此面积,可将[a,b]区间分成若干个小区间,每个区间的宽度为(b-a)/n,n为区间个数。近似求出每个小的曲边梯形面积,然后将n个小面积加起来,就近似的到总的面积,既定积分的近似值。当n越大(即区间分的越小),近似程度越高。 算法分析:
数值积分常用的算法有:
1
路漫漫其修远兮,吾将上下而求索 -
梯形法:用小梯形代替小曲边梯形。 辛普森(Sinpson)法:在小区间范围内,用一条抛物线代替该区间的f(x),将(a,b)区间分成2n个小区间。 2、二分法求解非线性方程的根
题目详述:
用二分法求解非线性方程f(x)=0在指定区间[a,b]内的实根的功能。 算法分析:
从端点x0=a开始,以h为步长,逐步往后进行搜索。对于每一个子区间[xi,xi+h],如果f(xi)=0,那么xi为一个实根,并且从xi+h/2开始往后搜索。如果f(xi+1)=0,那么xi+1为一个实根,并且从xi+1+h/2开始往后搜索。如果f(xi)f(xi+1)>0,那么说明当前子区间内无实根,从xi+1开始往后搜索。如果f(xi)f(xi+1)<0,则说明当前子区间内有实根,这时要反复将子区间减半,直到发现一个实根,或者子区间长度划分到了小于预先给定的精度为止。 3、迷宫问题
题目详述:
迷宫用二维数组表示即可,其中0表示通路,1表示不通。如果有通路,要求找到至少一条从入口到出口的简单路径。 算法分析:
求解迷宫问题的简单方法是,从入口出发,沿某一方向进行搜索,若能走通,则继续向前走;否则沿原路返回,换一个方向再进行搜索,直到所有可能的通路都搜索到为止。如图3.6:
图3.6 迷宫图例
2
路漫漫其修远兮,吾将上下而求索 -
4、八皇后问题
题目详解:
八皇后问题是指求解如何在国际象棋棋盘上无冲突地放置八个皇后棋子。因为在国际象棋里,皇后的移动方式是横竖及交叉,所以在任意一个皇后所在位置的水平、竖直和斜45度线上都不能有其他皇后棋子的存在。一个完整无冲突的八皇后棋子分布成为八皇后问题的一个解如图3.7。 算法分析:
可用回溯法,逐次试探解决八皇后问题,调用函数在棋盘第一行第一列上放置棋子开始向下一行递归。每一步递归中,首先检测待放位置有没有冲突出现。如果没有冲突就放下棋子并进入下一层递归,否则检测该行的下一个位置。如果一行中都没有可以放置的位置,就退回上一层递归。最后如果本次放置成功,并且递归调用深度为7,就打印输出结果。
图3.7 八皇后图例
5、汉诺塔问题
题目详解:
汉诺塔是根据一个传说形成的一个问题:有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须遵循上述两条规则。问:如何移?最少要移动多少次?如图3.8。 算法分析:
3个步骤:第一,把A上的N-1个盘通过C移动到B;第二,把A上的最下面的盘移到C;第三,因为N-1个盘全在B上了,所以把B当做A;重复以上步骤。
3
路漫漫其修远兮,吾将上下而求索 -
图3.8 汉诺塔图例
6、约瑟夫环问题
题目详解:
n个小孩围成一圈,从第一个人开始报数,报到k的人退出圈子,下面的人继续从1开始报数……直到圈里空无一人为止。 算法分析:
这是一个典型的单循环链表问题。先建立链表,接着从第一个结点开始计数,将第k个结点删除,然后再从下一个节点开始计数,第k个结点删除……,直到链表为空为止。 7、一元多项式求和
题目详解:
把任意给定的两个一元多项式P(x),Q(x)输入计算机,计算它们的和并输出计算结果。 算法分析:
用单链表存储多项式的结构,每个结点存储一项的系数和指数,所以链表的结点结构应该含有三个成员:系数、指数、和后继的指针。先比较,再求和。 8、建立单向链表,实现增、删、改、查等操作 9、建立双向链表,实现增、删、改、查等操作 10、哈夫曼编码问题 题目详解:
4
路漫漫其修远兮,吾将上下而求索 -
哈夫曼编码是根据字符出现的频率对数据进行编码解码,以便于对文件进行压缩的一种方法,目前大部分有效地压缩算法(如MP3编码方法)都是基于哈夫曼编码的。 算法分析:
首先,定义哈夫曼树叶子结点的结构以及存放哈夫曼编码的结构体,然后做叶子结点初始化,接着构造哈夫曼树。构造哈夫曼树方法如图3.9:
图3.9 哈夫曼树
(二)绘图类题目(注意:绘图类程序可安装eaxyX插件,无须使用Turbo C环境)
1、曼德布洛特集的绘制
题目详解:
曼德布洛特集合是一种在复平面上组成分形的点的集合,以数学家本华·曼德博的名字命名,使用复二次多项式Zn+1=Zn2+c来进行迭代。如图3.10:
5
路漫漫其修远兮,吾将上下而求索 -
图3.10 曼德布洛特集
2、谢尔宾斯基三角的绘制
题目详解:
谢尔宾斯基三角形(英语:Sierpinski triangle)是一种分形,由波兰数学家谢尔宾斯基在1915年提出。它是自相似集的例子。它的豪斯多夫维是log(3)/log(2) ≈ 1.585。如图3.11:
图3.11 谢尔宾斯基三角
3、希尔伯特曲线的绘制 题目详解:
6
路漫漫其修远兮,吾将上下而求索 -
希尔伯特曲线是一种能填充满一个平面正方形的分形曲线(空间填充曲线),由大卫·希尔伯特在1891年提出。由于它能填满平面,它的豪斯多夫维是2。取它填充的正方形的边长为1,第n步的希尔伯特曲线的长度是2n-2-n。如图3.12:
图3.12 希尔伯特曲线
4、运行时钟的动画
题目详解:
实现一个时钟的绘制。在图形输出窗口中输出一个简易的时钟。如图3.13:
7
路漫漫其修远兮,吾将上下而求索 -
图3.13 简易时钟图例
5、模拟弹球的动画
题目详解:
小球从空中落下,弹起,再落下,弹起幅度越来越小,直至停下。 6、运动小车的动画
题目详解:
模拟小车,从左至右或从右至左运动,可以加速、匀速、减速。 7、火箭发射的动画
题目详解:
模拟火箭从下至上飞行,到空中停止。 8、卫星环绕地球的动画
题目详解:
地球的轨道椭圆,卫星围绕地球匀速运动。如图3.14:
图3.14 卫星环绕地球图例
8
路漫漫其修远兮,吾将上下而求索 -
9、动画地呈现满天星
题目详解:
绘制一个充满星星的夜空。星空绘制程序中,可使用结构体数组实现对星星数据的保存。星星可用画点函数画出来白色的点,并使用随机函数随机产生星星,对结构体中保存的星星进行移动。 10、动画地填充图形
题目详解:
绘制一个形状(圆,椭圆,矩形都可以),用线条动态地填充其内部,可以从中心填充,也可从一边填充。如图3.15:
图3.15 填充结果
(三)管理类题目 1、学生信息管理系统
(1) 学生基本信息包括:学号、姓名、性别、出生日期、身份证号(12位整数)、家庭住址、邮政编码、政治面貌、民族、所在学院、班级编号。
(2) 通过菜单选择实现:数据的录入、编辑、删除、查询、统计、保存、打印等功能。
(3) 使用文件完成数据的存取,要求每次运行某个功能模块时,将数据读入结构体中,并给用户提供保存选项,可以将结构体中的数据保存在文件中。 2、教务信息管理系统
(1) 学生基本信息包括:学号、姓名、班级。学生选课信息包括:课程编号、课程名称、平时成绩、期末成绩、总评成绩、学分、重修否等。
(2) 通过菜单选择实现:各种基本数据的录入、修改、删除、插入、查询、统计等功能。
9
路漫漫其修远兮,吾将上下而求索 -
(3) 统计模块包括:
① 统计每个学生各门功课的平均成绩,并按此成绩从高到低排序输出每个学生的各项成绩。
② 统计并输出各门功课的平均成绩和总平均成绩。 ③ 统计并输出每个学生已修学分。
④ 统计并输出不及格学生清单(学号、姓名、不及格的课程和成绩)。 3、图书信息管理系统
(1) 图书基本信息包括:分类号、图书编号、书名、作者、出版日期、ISBN、定价、馆藏数、借阅数等。
(2) 通过菜单选择实现:各种基本数据的录入、修改、插入、删除、查询和统计等功能。
(3) 统计模块包括:
① 统计馆藏书籍总数、已借出书籍总数、在馆书籍总数。 ② 统计馆藏书籍总金额、馆藏书籍的平均价格。 4、书店销售管理系统
(1) 图书信息包括:书名、出版序列号、编号、出版社、作者、定价、库存量、出版日期等。
(2) 通过菜单选择实现:各种基本数据的录入、修改、删除、查询和统计等功能。
(3) 统计模块包括:库存统计和销售情况统计。 5、学生公寓管理系统
(1) 公寓信息包括:房间号、面积、楼层数、基本设施、价格、应住人数、实住人数。学生信息包括:学号、姓名、所在学院、年级、入住日期、离开日期、房间号。
(2) 通过菜单选择实现:
① 入住:将入住学生相关信息添加到上述信息库中。 ② 查询:房源信息和入住学生信息。
③ 修改:对公寓信息和学生信息进行修改。 ④ 统计:公寓入住情况统计。
10
路漫漫其修远兮,吾将上下而求索 -
6、房屋中介管理系统
(1) 房屋信息包括:房屋编号、租买情况(出租、求租、出卖、求买)、房主姓名、房屋地址、价格、是否交易。
(2) 通过菜单选择实现:各种基本数据的录入、修改、插入、删除、查询和统计等功能。
(3) 统计模块包括:房屋信息统计和交易情况统计。 7、票务信息管理系统 8、餐厅信息管理系统 9、超市信息管理系统 10、旅馆信息管理系统
三、实习进程
实习为期1周或2周,实习期间每天利用半天时间查阅资料,另外半天到计算机房调试程序(上机的具体时间遵照机房的安排),实习最后一天对所设计的软件进行上机考核验收,考核合格者书写设计报告(电子版和打印版),实习结束的下周周一交给指导教师。
四、评分标准
通过程序实现、总结报告和学习态度综合考评,并结合学生的动手能力,独立分析解决问题的能力和创新精神。成绩分优、良、中、及格和不及格五等。 考核标准包括:
11
路漫漫其修远兮,吾将上下而求索 -
项 目 评分标准 无迟到、旷课、早退,设计期间没有在机房玩手机等情况,遵守纪律 无旷课,迟到、早退或设计期间有在机房玩手机等情况不超过1次 优(90-100) 良(80-89) 中(70-79) 及格(60-69) 分项成绩 备 注 出勤 (20%) 无旷课,迟到、早退或设计期间有在机房玩手机等情况不超过2次 无故旷课不超过1次,或迟到、早退、在机房玩手机等情况不超过3次 无故旷课2次及以上,或迟到、早退、在设计期间有在机房玩手机等情况超过3次 报告内容格式正确,设计内容新颖、完整,功能完善 报告内容格式正确,设计内容较新颖、完整,功能基本完善 不及格(<60) 优(90-100) 良(80-89) 报告 (40%) 报告内容格式基本正确,设计内容一般,中(70-79) 功能不够完善 报告内容格式有少量错误,设计内容不够全面,实现基本功能 及格(60-69) 报告内容格式有错误,设计内容不完整,不及格(<60) 部分功能没实现 设计思路非常清晰,有创意,对老师提出的问题回答准确、流畅 设计思路清晰,对老师提出的问题回答准确、较流畅 答辩 (40%) 设计思路较清晰,对老师提出的问题回答基本正确 设计思路基本正确,对老师提出的问题个别回答错误 设计思路模糊,对老师提出的问题回答错误较多 优(90-100) 良(80-89) 中(70-79) 及格(60-69) 不及格(<60) 课程设计总成绩(优、良、中、及格、不及格) 注:如有互相抄袭者,雷同者,取消成绩。
12
路漫漫其修远兮,吾将上下而求索 -
五、设计报告格式
参见《计算机程序设计基础(C语言)》指导书。
13
因篇幅问题不能全部显示,请点此查看更多更全内容