C/C++南京邮电大学《算法与数据结构设计》任务书[2023-10-30]

C/C++南京邮电大学《算法与数据结构设计》任务书[2023-10-30]

2023年10月

一、算法与数据结构设计要求

算法与数据结构设计是对专业基础课《数据结构》和《算法分析与设计》课程知识的进一步巩固并加强解决实际问题的能力。
算法与数据结构设计的目的是通过实践,一方面使学生加深对课内所学的有关数据的逻辑结构和存储表示、数据结构的选择和应用、算法的设计和时空效率分析等课程基本内容的理解;另一方面,在程序设计方法、高级语言编程环境以及程序的调试和测试方面受到比较系统和严格的训练。通过实践提高同学们自己学习、查阅资料、独立分析问题和解决问题的能力。
在两周的课程设计中,要通过查阅相关资料、与同学讨论、老师辅导答疑,设计算法,上机调试并运行程序,完成实践报告。教师在最后对学生进行答辩。
算法与数据结构设计在OBE教学理念指导下对毕业要求指标点的支撑关系如下图所示:

二、算法与数据结构设计课题内容及课题分配

本次算法与数据结构设计的题目包含A组和B组,每组各1道题目,每位同学需完成A组和B组中各一道题目,题目分配如下:

A组(算法设计题)

题目A1:无向图遍历问题

给定无向图G,输入起始端点和结束端点,利用深度优先搜索或者广度优先搜索给出所有路径。

题目A2:有向图的回路判断问题

给定一个有向图G,设计算法判断G中是否存在回路。

题目A3:回文判断问题

写一个算法,判断依次读入的一个以@为结束符的字母序列,是否为形如‘序列1&序列2’模式的字符序列。其中序列1和序列2中都不含字符‘&’,且序列2是序列1的逆序列。例如,‘a+b&b+a’是属该模式的字符序列,而‘1+3&3-1’则不是。

题目A4:平衡二叉树的判定问题

给定一个二叉树,试设计算法判断该二叉树是否为二叉平衡树。

题目A5:字符串的最长公共子序列求解问题

已知两个字符串X和Y,其中X包含m个字符,Y包含n个字符,找出两者之间的最长公共子序列,即在X和Y中从左到右都出现的连续的最长字符串序列。例如,X=“ABCBDAB”,Y=“BCBDDAB”,则X和Y的最长公共子序列即为{“BCBD”},最长公共子序列可能不唯一。

B组(综合设计题)

源码联系UP主 -> https://space.bilibili.com/329101171

题目B1: 四则运算自测系统

(一)课题内容
设计一款四则运算的自测软件,可用于小学生的四则运算训练。
(二)课题要求
(1)训练题型包括填写结果、对错判断、选择题等。
(2)每次训练时,用户先进行选择,包括难度(如10以内、100以内、1000以内,带负数、带小数、运算数个数、是否允许带括号等)、题型(填写结果、对错判断、选择题)、题量(各类题目的个数)等,根据用户的选择,自动生成试题(10道题目为一组)。
(3)用户在软件系统中答题,并提交。
(4)系统根据用户提交结果进行评判、给分,并进行分析。
(5)每次训练完后,试题、试题答案、用户答案、结果及分析应保留到相应的文本文件中,供用户查看。
(6)要求支持加、减、乘、除混合的表达式计算。
【其他要求】
(1)变量、函数命名符合规范。
(2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。
(3)程序的层次清晰,可读性强。
(4)界面美观,交互方便。
(5)设计时可考虑一定的趣味性。
(6)可考虑设计提供多个用户的登录功能。

题目B2:学校宿舍管理系统

(一)课题内容
一所学校中包括若干个宿舍,每个宿舍中又有若干个床位,建立一个简单的学校宿舍管理程序能够对学生进行出入住和床位分配进行管理。
(二)课题要求
(1)初始化。建立一个包含3个宿舍的学校,其中1宿舍有2张床位,2宿舍有6张床位,3宿舍有8张床位;张三和李四住1宿舍,王五也要住1宿舍,此时,床位已满,于是将其调入2宿舍。
(2)入住。在列出的有空位的宿舍中,选择其一,入住。
(3)出校。选择某一宿舍中某个不再继续住校学生,将其调出宿舍。
(4)查询。查询每个宿舍中空床位数,入住学生数;查询整个学校的空床位数和入住学生数。
(5)采用友好的图形化操作界面。
【其他要求】
(1)变量、函数命名符合规范。
(2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。
(3)程序的层次清晰,可读性强。
(4)界面美观,交互方便。

【实现提示】
(1)可建立若干个不定长链表,每个链表代表一个宿舍,宿舍数可用n表示,床位数用m表示。
(2)判断宿舍是否住满,直接对m进行操作即可。

题目B3:电商存货管理系统

(一)课题内容
建立电商存货管理系统,要求每次出货时取进货时间最早且最接近保质期中止时间的货物。
(二)课题要求
(1)实现商品货物信息的进货录入功能;
(2)建立一个文件,包括至少5个种类的货物情况,能对商品信息进行扩充(追加),修改和删除以及简单的排序;
(3)实现商品货物信息的查询功能。
(4)实现商品货物信息过期报警功能。
(5)采用友好的图形化操作界面。
【其他要求】
(1)变量、函数命名符合规范。
(2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。
(3)程序的层次清晰,可读性强。
(4)界面美观,交互方便。

题目B4:基于哈希表的班级通讯录

(一)课题内容
针对同班同学信息设计一个通讯录,学生信息有姓名,学号,电话号码等。以学生姓名为关键字设计哈希表,并完成相应的建表和查表程序。
(二)课题要求
(1)姓名以汉语拼音形式,待填入哈希表的人名为某班的若干位同学,每个记录有下列数据项:电话号码、用户名、学号;
(2)哈希函数用除留取余数法构造,采用线性探测法或链地址解决冲突;
(3)可以插入、查找、删除并显示给定用户名的记录;
(4)在查找的过程中给出比较的次数,哈希表保存到文件中。
【其他要求】
(1)变量、函数命名符合规范。
(2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。
(3)程序的层次清晰,可读性强。
(4)界面美观,交互方便。

题目B5:简易家谱管理系统

(一)课题内容
家谱管理系统是查询家谱信息必不可少的一部分,利用家谱管理系统可以清楚的了解家族成员信息。该家谱管理系统是通过树来实现的。要求系统界面友好,易于操作。
(二)课题要求
(1)需要设置普通用户、超级管理员不同角色,不同角色登录后的权限各不相同,普通用户可以进行查询;超级管理员有对所有成员增加、删除和修改的权限。
(2)家谱中成员的信息中均应包含姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡)等 ,也可附加其它信息,并存储于文本文件中。
(3)查询功能。可按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息、所在辈分);按照出生日期查询成员名单。
(4)按出生日期对家谱中所有人排序。
(5)打开家谱时,提示当天生日的健在成员。
(6)输入任意两个姓名,能够查询这两个姓名之间的是否具有直系祖先后裔关系。
(7)以图形方式显示家谱。
【其他要求】
(1)变量、函数命名符合规范。
(2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。
(3)程序的层次清晰,可读性强。
(4)界面美观,交互方便。

三、考核及报告要求

1、考核标准:根据学生平时的上机出勤情况、为上机所作的准备情况、上机时的表现、程序的完成情况、报告的完成情况、验收答辩时的表现等综合打分。等级为:优秀、良好、中等、及格、不及格。
2、报告要求:请参考《算法与数据结构设计报告内容与格式建议版本》
3、验收答辩考核内容:
(1) 功能演示(界面友好性和功能完备性);
(2) 程序结构描述(如:选用的数据结构、功能模块结构关系、类与类之间的关系、函数调用关系、输入输出文件属性描述等);
(3) 测试数据的准备情况;
(4) 编程过程中遇到的典型问题及解决方案。

四、参考资料

[1] 王海艳等.数据结构 C语言[M].第1版.北京:人民邮电出版社,2017.
[2] 陈慧南.算法设计与分析:C++语言描述[M].北京:电子工业出版社,2006.
[3] 刘汝佳.算法竞赛入门经典[M].北京:清华大学出版社,2009.
[4] Thomas H. Cormen等著,潘金贵/顾铁成等译.算法导论[M].第2版.北京:机械工业出版社,2006.
[5] 郭嵩山等.国际大学生程序设计竞赛例题解 [M].北京:电子工业出版社,2007.

源码联系UP主 -> https://space.bilibili.com/329101171

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值