《程序设计基础》课程设计任务书.docx
- 文档编号:23207010
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:21
- 大小:46.14KB
《程序设计基础》课程设计任务书.docx
《《程序设计基础》课程设计任务书.docx》由会员分享,可在线阅读,更多相关《《程序设计基础》课程设计任务书.docx(21页珍藏版)》请在冰豆网上搜索。
《程序设计基础》课程设计任务书
《程序设计基础》课程设计任务书
一、课程设计教学目的及基本要求
1.了解并掌握程序设计基础的设计方法,具备初步的独立分析和设计能力;
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、调试等基本方法和技能;
3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;
5.独立完成或分组完成;
6.题材不限,或从参考题目中任选一题;
7.仅限用C语言编写程序;
8.课程设计于4月1日前完成,并将组织答辩。
9.有二份课程设计样例,格式可以参照,不能抄袭!
10.允许分小组完成,每组最多2人组成,每人分别都要提交自己的课程设计报告,并注明自己所承担的部分”。
11.同一个题目不能超过5个小组选作,“整个专业分组表”请各班班长一起汇总,3月2日前发我信箱jsjxy_lm@。
二、课程设计步骤
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×q
1.基本要求:
⑴编写矩阵输入函数INPUT_MAT,通过该函数完成矩阵的输入并返回保存矩阵的数组和对应矩阵的行数、列数。
(不能使用全局变量)
⑵编写矩阵输出函数OUTPUT_MAT,通过该函数完成矩阵的输出。
⑶求矩阵的转置,矩阵的转置A’=(aji)n×m,转置前输出原矩阵,转置后输出转置矩阵。
⑷求矩阵A、B的和。
矩阵A和B能够相加的条件是:
m=p,n=q;矩阵A和B如果不能相加,请给出提示信息;若能够相加,则求和矩阵C并输出C。
C=A+B=(cij)m×n,其中cij=aij+bij
⑸求矩阵A、B的差。
矩阵A和B能够相减的条件是:
m=p,n=q;矩阵A和B如果不能相减,请给出提示信息;若能够相减,则求差矩阵C并输出C。
C=A-B=(cij)m×n,其中cij=aij-bij
⑹求矩阵A、B的积。
矩阵A和B能够相乘的条件是:
p=n;矩阵A和B如果不能相乘,请给出提示信息;若能够相乘,则求积矩阵D并输出D。
D=A×B=(dij)m×q,其中dij=∑aik×bkj,k=1,2,……,n
⑺设计一个菜单,具有求矩阵的转置、求矩阵的和、求矩阵的积、退出等基本的功能。
在求矩阵的和或求矩阵的积时要求能够先提示输入两个矩阵的,然后再进行相应的操作。
·
10.【设计题目】数据汇总
【问题描述和基本要求】在数据处理中经常需要对大量数据进行汇总,将相同关键字记录的某些数据项的值叠加起来,生成一个分类汇总表。
1、问题描述:
假设某超级市场销售有m种商品(假设商品的编号为1,2,3,┅┅,m),有n台前台收款机(假设收款机的编号为1,2,3,┅┅,n)进行收款,以记录的形式提供给计算机,每个记录表示某台收款机的一种商品一次交易的数量和销售额。
记录由4个域组成:
收款机编号、商品编号、销售数量、销售金额。
构造一个结构体类型,每次销售数据以一个结构体变量保存在一个数据文件中。
2、基本要求:
⑴编写实现将数据记录插入到数据文件的最后的函数;
⑵编写以收款机为单位的数据分类处理函数。
构造n个单链表,每个链表保存一台收款机的销售记录,这n个单链表的头指针存放在一个指针数组中,通过数组的下标就可以知道是哪台收款机。
读取数据文件的记录,将所有的销售记录(数据文件中的全部记录)分解插入到n个单链表;
⑶编写以商品为单位的数据分类处理函数。
构造m个单链表,每个链表保存一种商品的销售记录,这m个单链表的头指针存放在一个指针数组中,通过数组的下标就可以知道是哪种商品。
读取数据文件的记录,将所有的销售记录(数据文件中的全部记录)分解插入到m个单链表;
⑷统计每台收款机的销售总额;
⑸以收款机为单位,将所有收款机按销售总额的非递减顺序构造一个单链表并输出;
⑹以商品为单位,统计每种商品的销售总额;
⑺以商品为单位,将所有销售的商品按销售总额的非递减顺序构造一个单链表并输出;
⑻设计一个菜单,具有上述要求的所有功能、退出系统等最基本的功能。
11.【设计题目】图书借阅管理系统
【问题描述和基本要求】主要分为两大功能:
1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书);
2)会员管理(增加会员、查询会员、删除会员、借书信息);
12.【设计题目】学生成绩管理
【问题描述和基本要求】实现功能:
输入、输出、插入、删除、查找、追加、读入、显示、保存、拷贝、排序、索引、分类合计、退出。
13.【设计题目】活期储蓄帐目管理
【问题描述和基本要求】活期储蓄处理中,储户开户、销户、存入、支出活动频繁,系统设计要求:
1)能比较迅速地找到储户的帐户,以实现存款、取款记账;
2)能比较简单,迅速地实现插入和删除,以实现开户和销户的需要。
14.【设计题目】joseph环
(一)
【问题描述和基本要求】
编号是1,2,……,n的n个人按照顺时针方向围坐一圈,一开始任选一个正整数作为报数上限(开始)值m(m<n),从第s(s<n)个人开始沿顺时针方向顺序报数,报到m时停止报数,报m的人出列,然后在从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。
设计一个程序来求出出列顺序。
实现要求:
⑴利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。
输入数据:
建立输入处理输入数据,输入m、n、s的初值和每个人的编号,建立单循环链表。
输出形式:
建立一个输出函数,将正确的序列输出。
⑵利用顺序表存储结构模拟此过程,按照出列的顺序输出各个人的编号。
输入数据:
建立输入处理输入数据,输入m、n、s的初值和每个人的编号,建立单循环链表。
输出形式:
建立一个输出函数,将正确的序列输出。
测试数据:
m的初值为20,n=7,7个人的密码依次为3,1,7,2,4,7,4,首先m=6,则正确的输出是什么?
15.【设计题目】joseph环
(二)
【问题描述和基本要求】
编号是1,2,……,n的n个人按照顺时针方向围坐一圈,一开始任选一个正整数作为报数上限(开始)值m(m<n),从第s(s<n)个人开始沿逆时针方向顺序报数,报到m时停止报数,报m的人出列,然后在从他在逆时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。
设计一个程序来求出出列顺序。
实现要求:
⑴利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。
输入数据:
建立输入处理输入数据,输入m、n、s的初值和每个人的编号,建立单循环链表。
输出形式:
建立一个输出函数,将正确的序列输出。
⑵利用顺序表存储结构模拟此过程,按照出列的顺序输出各个人的编号。
输入数据:
建立输入处理输入数据,输入m、n、s的初值和每个人的编号,建立单循环链表。
输出形式:
建立一个输出函数,将正确的序列输出。
测试数据:
m的初值为25,n=7,7个人的密码依次为3,1,7,2,4,7,4,首先m=6,则正确的输出是什么?
16.【设计题目】通讯录的制作
【问题描述和基本要求】
第一个模块——主函数main()的功能是:
根据选单的选项调用各函数,并完成相应的功能。
第二个模块——Menu()的功能是:
显示英文提示选单。
第三个模块——Quit()的功能是:
退出选单。
第四个模块——Create()的功能是:
创建新的通讯录。
第五个模块——Add()的功能是:
在通讯录的末尾,写入新的信息,并返回选单。
第六个模块——Find()的功能是:
查询某人的信息,如果找到了,则显示该人的信息,如果未找到,则提示通讯录中没有此人的信息,并返回选单。
第七个模块——Alter()的功能是:
修改某人的信息,如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。
第八个模块——Delete()的功能是:
删除某人的信息,如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。
第九个模块——List()的功能是:
显示通讯录中的所有记录。
;
设计要求:
1)每条信息至包含:
姓名(NAME)、性别(GENDER)、电话(TEL)、城市(CITY)邮编(EIP)几项。
2)作为一个完整的系统,应具有友好的界面和较强的容错能力
17.【设计题目】图书管理系统
【问题描述和基本要求】
设计一个计算机管理系统完成图书管理基本业务。
1)每种书的登记内容包括书号、书名、著作者、现存量和库存量;
2)对书号建立索引表(线性表)以提高查找效率;
3)系统主要功能如下:
*采编入库:
新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;
*借阅:
如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;
*归还:
注销对借阅者的登记,改变该书的现存量。
【进一步完成内容】
1)系统功能的进一步完善;
2)索引表采用树表。
3)设计内容
4)程序流程图
5)源程序
6)软件测试报告(包括所用到的数据及结果)
18.【设计题目】队列及其操作
【问题描述和基本要求】在数据处理中经常需要对大量数据进行汇总,将相同关键字记录的某些数据项的值叠加起来,生成一个分类汇总表。
1、问题描述:
队列(Queue):
也是运算受限的线性表。
是一种先进先出(FirstInFirstOut,简称FIFO)的线性表。
只允许在表的一端进行插入,而在另一端进行删除。
队首(front):
允许进行删除的一端称为队首。
队尾(rear):
允许进行插入的一端称为队尾。
队列中没有元素时称为空队列。
在空队列中依次加入元素a1,a2,…,an之后,a1是队首元素,an是队尾元素。
显然退出队列的次序也只能是a1,a2,…,an,即队列的修改是依先进先出的原则进行的。
队列的链式存储结构简称为链队列,它是限制仅在表头进行删除操作和表尾进行插入操作的单链表。
需要两类不同的结点:
数据元素结点,队列的队首指针和队尾指针的结点,链队的基本形式如下:
2、基本要求:
⑴链队列基本操作的实现:
链队列的初始化,生成一个空链队列;链队列的撤消,即删除队列中的所有结点,仅留下指针结点;
⑵链队列的入队操作,即在已知队列的队尾插入一个元素e,即修改队尾指针;
⑶链队列的出队操作,即返回队首结点的元素值并删除队首结点;
⑷设计一个菜单,具有上述要求的所有功能、退出系统等最基本的功能。
19.【设计题目】背包问题的求解
(一)
【问题描述和基本要求】假设有一个能装入总体积为T的背包和n件体积分别为w1,w2,…,wn的物品,能否从n件物品中挑选若干件恰好装满背包,即使w1+w2+…+wn=T,要求找出所有满足上述条件的解。
例如:
当T=10,各件物品的体积{1,8,4,3,5,2}时,可找到下列4组解:
(1,4,3,2)
(1,4,5)
(8,2)
(3,5,2)。
问题提示:
可利用回溯法的设计思想来解决背包问题。
首先将物品排成一列,然后顺序选取物品装入背包,假设已选取了前i件物品之后背包还没有装满,则继续选取第i+1件物品,若该件物品"太大"不能装入,则弃之而继续选取下一件,直至背包装满为止。
但如果在剩余的物品中找不到合适的物品以填满背包,则说明"刚刚"装入背包的那件物品"不合适",应将它取出"弃之一边",继续再从"它之后"的物品中选取,如此重复,直至求得满足条件的解,或者无解。
20.【设计题目】背包问题的求解
(二)
【问题描述和基本要求】
假设有n件物品,这些物品的重量分别是W1,W2,…,Wn,物品的价值分别是V1,V2,…,Vn。
求从这n件物品中选取一部分物品的方案,使得所选中的物品的总重量不超过限定的重量W(W<∑Wi,i=1,2,┅,n),但所选中的物品价值之和为最大。
问题提示:
利用递归寻找物品的选择方案。
假设前面已有了多种选择的方案,并保留了其中总价值最大的方案于数组option[]中,该方案的总价值保存于变量max_value中。
当前正在考察新方案,其物品选择情况保存于数组eop[]中。
假设当前方案已考虑了i-1件物品,现在要考虑第i件物品:
当前方案已包含的物品的重量之和为tw;因此,若其余物品都选择是可能的话,本方案所能达到的总价值的期望值设为tv。
引入tv是当一旦当前方案的总价值的期望值也小于前面方案的总价值max_value时,继续考察当前方案已无意义,应终止当前方案而去考察下一个方案。
第i件物品的选择有两种可能:
①物品i被选择。
这种可能性仅当包含它不会超过方案总重量的限制才是可行的。
选中之后继续递归去考虑其余物品的选择;
②物品i不被选择。
这种可能性仅当不包含物品i也有可能找到价值更大的方案的情况。
21.【设计题目】走迷宫游戏
【问题描述和基本要求】
程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。
游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。
要求:
1)老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;
2)迷宫的墙足够结实,老鼠不能穿墙而过;
3)正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;
4)添加编辑迷宫功能,可修改当前迷宫,修改内容:
墙变路、路变墙;
5)找出走出迷宫的所有路径,以及最短路径。
利用序列化功能实现迷宫地图文件的存盘和读出等功能
22.【设计题目】简易文本编辑器
【问题描述和基本要求】
1)具有图形菜单界面;
2)查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除
3)可正确存盘、取盘;
4)正确显示总行数。
23.【设计题目】学生搭配问题
【问题描述和基本要求】一班有m个女生,有n个男生(m不等于n),现要开一个舞会.男女生分别编号坐在舞池的两边的椅子上.每曲开始时,依次从男生和女生中各出一人配对跳舞,本曲没成功配对者坐着等待下一曲找舞伴.
请设计一系统模拟动态地显示出上述过程,要求如下:
1)输出每曲配对情况
2)计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况.至少求出K的两个值.
3)尽量设计出多种算法及程序,可视情况适当加分
提示:
用队列来解决比较方便.
24.【设计题目】敢死队问题
【问题描述和基本要求】有M个敢死队员要炸掉敌人的一碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。
如果前一个战士没完成任务,则要再派一个战士上去。
现给每个战士编一个号,大家围坐成一圈,随便从某一个战士开始计数,当数到5时,对应的战士就去执行任务,且此战士不再参加下一轮计数。
如果此战士没完成任务,再从下一个战士开始数数,被数到第5时,此战士接着去执行任务。
以此类推,直到任务完成为止。
排长是不愿意去的,假设排长为1号,请你设计一程序,求出从第几号战士开始计数才能让排长最后一个留下来而不去执行任务。
要求:
至少采用两种不同的数据结构的方法实现。
如果采用三种以上的方法者,可加分。
25.【设计题目】猴子吃桃子问题
【问题描述和基本要求】有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。
用多种方法实现求出原来这群猴子共摘了多少个桃子。
要求:
1)采用数组数据结构实现上述求解
2)采用链数据结构实现上述求解
3)采用递归实现上述求解
4)如果采用4种方法者,适当加分
28.数制转换问题
任意给定一个M进
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计基础 程序设计 基础 课程设计 任务书