新一届校园十大青年评比开始了!每一位在校学生可通过网上评比系统,为自己认为优秀的学生提名与投票。请开发一个用于该需求的系统,满足下列基本功能: (1)提名优秀学生与投票。 (2)查看提名学生的基本信息。 (3)显示各提名学生的票数。 (4)显示排行榜。 (1)采用散列存储,存放提名学生的相关信息。 (2)设计哈希函数和冲突解决方法。 (3)提名学生至少包括以下信息:姓名、票数、个人基本信息(如:班级、专业、年级、突出事迹等)。 (4)设计输入提名学生信息的界面。 (5)完成基本功能。 (6)界面友好,操作简单。 (7)设计足够多的测试用例。 (8)查看指定学生的票数。 (9)按序显示各提名学生票数。 在本数据结构课程设计中,任务是开发一个用于校园十大优秀青年评比的系统。系统的主要功能包括提名学生、投票、查看提名学生信息、显示票数、显示排行榜等。以下是基于这些要求的详细知识点: 1. **散列存储**:散列存储是一种高效的数据存储方式,通过哈希函数将数据映射到固定大小的数组(哈希表)中。在这个系统中,散列存储用于存放提名学生的相关信息,使得数据查找和更新速度快。 2. **哈希函数**:哈希函数是散列存储的关键,它将输入(这里是学生的姓名拼音)转化为数组索引。在这个设计中,哈希函数设计为`hash(key) = key % hashlength`,其中`key`是学生姓名拼音ASCII码的累加和,`hashlength`是哈希表的长度。 3. **冲突解决**:由于哈希函数可能出现不同的输入映射到同一个索引,因此需要解决冲突的方法。这里采用了开放定址线性探测法,当冲突发生时,通过`s=s++`寻找下一个空位。 4. **数据结构**:设计了一个名为`student`的结构体,包含了学生的姓名、票数、班级、专业、年级和突出事迹等信息,以便存储提名学生的详细资料。 5. **投票系统类** (`votesystem`):这个类是系统的核心,包含哈希表、当前元素数量、表长等成员变量,以及初始化哈希表、哈希函数、处理冲突、查找、插入、投票、显示哈希表、按索引显示票数和显示排行榜等成员函数。 6. **用户登录系统**:为了限制投票次数,引入了用户登录系统。设计了一个`user`结构体,包含用户名和权限次数,用户权限初始设置为4次投票。 7. **系统模块划分**:系统分为选手信息模块、用户登录模块、投票模块、查询得票模块、前十排行模块和退出系统模块,这些模块共同构成了系统的各个部分。 8. **ADT(抽象数据类型)**:定义了两个ADT,即`student`和`user`,并设计了一个投票系统类`votesystem`,这些ADT提供了对数据的操作接口。 9. **算法设计**:具体实现了`student`和`user`结构体的定义,以及`votesystem`类中各个基本操作的算法,如插入、查找、投票和显示等功能。 10. **测试用例**:为了确保系统的正确性和可靠性,需要设计足够多的测试用例,覆盖各种可能的情况,如正常提名、投票、冲突处理、查看信息和显示排行榜等。 通过以上设计,本系统能够满足校园十大优秀青年评比的需求,提供一个易于操作且功能完善的平台,使得学生们可以方便地提名和投票,同时系统能有效地管理和展示相关数据。
剩余21页未读,继续阅读
- lexrajewcal2016-06-01报告写得不错,代码还是有些错的地方
- 粉丝: 14
- 资源: 34
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助