《程序设计基础》课程设计任务书一、课程设计教学目的及基本要求1. 了解并掌握程序设计基础的设计方法,具备初步的独立分析和设计能力;2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、调试等基本方法和技能;3. 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4. 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;5. 独立完成或分组完成;6. 题材不限,或从参考题目中任选一题;7. 仅限用C语言编写程序;8. 5月15日前完成。
9.有三份课程设计样例,格式可以参照,不能抄袭!10.允许分小组完成,每组最多3人组成,每人分别都要提交自己的课程设计报告,并填写附录文件“10计科《程序设计基础》课程设计分组情况.xls”。
11.同一个题目不能超过6个小组选作,“整个专业分组表”请两个班班长一起汇总,4月20日前发我信箱fjaucslls@。
12.每个同学设计报告命名“学号姓名.doc”,5月15日前“按班级”打一个压缩包发我信箱。
二、课程设计步骤1. 问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?(而不是怎么做?)限制条件是什么?2. 逻辑设计:对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。
逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图;3. 详细设计:定义相应的存储结构并写出各函数的伪码算法。
在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。
详细设计的结果是对数据结构和基本操作作出进一步的求精,写出数据存储结构的类型定义,写出函数形式的算法框架;4. 程序编码:把详细设计的结果进一步求精为程序设计语言程序。
同时加入一些注解和断言,使程序中逻辑概念清楚;5. 程序调试与测试:采用自底向上,分模块进行,即先调试低层函数。
能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。
调试正确后,认真整理源程序及其注释,形成格式和风格良好的源程序清单和结果;6. 结果分析:程序运行结果包括正确的输入及其输出结果和含有错误的输入及其输出结果。
算法的时间、空间复杂性分析;7. 编写课程设计报告。
三、参考题目1. 【设计题目】运动会分数统计【问题描述和基本要求】任务:参加运动会有n个学校,学校编号为1……n。
比赛分成m个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=20)功能要求:1) 可以输入各个项目的前三名或前五名的成绩;2) 能统计各学校总分,3) 可以按学校编号或名称、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
5) 数据存入文件并能随时查询6) 规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。
(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;2. 【设计题目】飞机订票系统【问题描述和基本要求】通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;3. 【设计题目】文章编辑【问题描述和基本要求】输入一页文字,程序可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。
存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章;4. 【设计题目】纸牌游戏【问题描述和基本要求】编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的直到以52为基数的翻过,输出:这时正面向上的牌有哪些?5. 【设计题目】宿舍管理查询软件【问题描述和基本要求】1)为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:A. 采用交互工作方式B. 建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(冒泡、选择、插入排序等任选一种)2) 查询菜单: (用二分查找实现以下操作)A. 按姓名查询B. 按学号查询C. 按房号查询3) 打印任一查询结果(可以连续操作)6. 【设计题目】地图着色问题【问题描述和基本要求】已知中国地图,对各省进行着色,要求相邻省所使用的颜色不同,并保证使用的颜色总数最少。
利用矩阵存储图,相邻省份为1,不相邻省份为0。
用a,b,c,d....表示该省份的颜色,最后输出每个省的颜色。
【实现说明】利用矩阵存储图,30个省份为30X30的矩阵。
7. 【设计题目】校园导航问题【问题描述和基本要求】设计你的学校的平面图,至少包括10个以上的场所,每两个场所间可以有不同的路,且路长也可能不同,找出从任意场所到达另一场所的最佳路径(最短路径)。
1、基本要求:1)设计校园平面图,在校园景点选10个左右景点。
以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等有关信息。
2)为来访客人提供图中任意景点相关信息的查询。
3)为来访客人提供任意景点的问路查询,即查询任意两个景点之间的一条最短路径。
2、实现提示:一般情况下,校园的道路是双向通行的,可设计校园平面图是一个无向网。
顶点和边均含有相关信息。
8. 【设计题目】集合运算【问题描述和基本要求】设有两个用单链表表示的集合A、B,其元素类型是int且以非递减方式存储,其头结点分别为a、b。
要求下面各问题中的结果集合同样以非递减方式存储,结果集合不影响原集合。
1、基本要求:⑴编写集合元素测试函数IN_SET,如果元素已经在集合中返回0,否则返回1;⑵编写集合元素输入并插入到单链表中的函数INSERT_SET,保证所输入的集合中的元素是唯一且以非递减方式存储在单链表中;⑶编写集合元素输出函数,对建立的集合链表按非递增方式输出;⑷编写求集合A、B的交C=A∩B的函数,并输出集合C的元素;⑸编写求集合A、B的并D=A∪B的函数,并输出集合D的元素;⑹求集合A与B的对称差E=(A-B)∪ (B-A) 的函数,并输出集合D的元素;⑺设计一个菜单,具有输入集合元素、求集合A、B的交C、求集合A、B的并D、求集合A与B的对称差E、退出等基本的功能。
测试数据:由读者自定,但集合A、B的元素个数不得少于16个。
9. 【设计题目】矩阵的操作【问题描述和基本要求】设有两个矩阵A=(aij)m×n,B=(bij)p×q1.基本要求:⑴编写矩阵输入函数INPUT_MAT,通过该函数完成矩阵的输入并返回保存矩阵的数组和对应矩阵的行数、列数。
(不能使用全局变量)⑵编写矩阵输出函数OUTPUT_MA T,通过该函数完成矩阵的输出。
⑶求矩阵的转置,矩阵的转置A’=(a ji)n×m,转置前输出原矩阵,转置后输出转置矩阵。
⑷求矩阵A、B的和。
矩阵A和B能够相加的条件是:m=p,n=q;矩阵A和B如果不能相加,请给出提示信息;若能够相加,则求和矩阵C并输出C。
C=A+B=(c ij)m×n,其中c ij=a ij+b ij⑸求矩阵A、B的差。
矩阵A和B能够相减的条件是:m=p,n=q;矩阵A和B如果不能相减,请给出提示信息;若能够相减,则求差矩阵C并输出C。
C=A-B=(c ij)m×n,其中c ij=a ij-b ij⑹求矩阵A、B的积。
矩阵A和B能够相乘的条件是:p=n;矩阵A和B如果不能相乘,请给出提示信息;若能够相乘,则求积矩阵D并输出D。
D=A×B=(d ij)m×q,其中d ij=∑a ik×b kj,k=1,2,……,n⑺设计一个菜单,具有求矩阵的转置、求矩阵的和、求矩阵的积、退出等基本的功能。
在求矩阵的和或求矩阵的积时要求能够先提示输入两个矩阵的,然后再进行相应的操作。
·10. 【设计题目】数据汇总【问题描述和基本要求】在数据处理中经常需要对大量数据进行汇总,将相同关键字记录的某些数据项的值叠加起来,生成一个分类汇总表。
1、问题描述:假设某超级市场销售有m种商品(假设商品的编号为1,2,3,┅┅,m),有n台前台收款机(假设收款机的编号为1,2,3,┅┅,n)进行收款,以记录的形式提供给计算机,每个记录表示某台收款机的一种商品一次交易的数量和销售额。
记录由4个域组成:收款机编号、商品编号、销售数量、销售金额。
构造一个结构体类型,每次销售数据以一个结构体变量保存在一个数据文件中。