没有合适的资源?快使用搜索试试~ 我知道了~
校园十大优秀青年评比数据结构课程设计报告书.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 147 浏览量
2022-06-08
12:04:09
上传
评论 1
收藏 1.57MB DOCX 举报
温馨提示
试读
21页
。。。
资源推荐
资源详情
资源评论
1.问题的描述和分析
1.1 问题描述
新一届校园十大青年评比开始了!每一位在校学生可通过网上评比系统,为
自己认为优秀的学生提名与投票。请开发一个用于该需求的系统,满足下列
基本功能:
(1)提名优秀学生与投票。
(2)查看提名学生的基本信息。
(3)显示各提名学生的票数。
(4)显示排行榜。
一.基本要求:.
(1)采用散列存储,存放提名学生的相关信息。
(2)设计哈希函数和冲突解决方法。
(3)提名学生至少包括以下信息:姓名、票数、个人基本信息(如:班级、专
业、年级、突出事迹等)。
(4)设计输入提名学生信息的界面。
(5)完成基本功能。
(6)界面友好,操作简单。
(7)设计足够多的测试用例。
(8)查看指定学生的票数。
(9)按序显示各提名学生票数。
二.较高要求
(1)限制每人的投票次数。
(2)按软件要求,扩充其他功能。
(3)实现数据的后效验,即不接收非法数据。
1.2 问题分析
(1)用哈希表存储提名学生相关信息。
每位选手即学生的基本信息含有多个属性,为此可根据学生信息建立结构
体,如下:struct student{
char name[20];//姓名的拼音
int studentnum;//学号
int number;//票数
int Class;//班级
char major[30];//专业
char grade[10];//年级
char achievement[200];//突出事迹
};
1
(2)设计哈希函数,并用开放定址线性探测法处理冲突。哈希函数根据姓名拼
音的 ascll 码来设计,hash(key)=key%hashlength,其中 k 为姓名所有拼音的 ascll
码值的累加和,hashlength 为表长。因此需储存学生姓名的拼音。
(3)设计一个投票系统类:votesystem
class votesystem{
private:
student *st;
int count;//当前元素个数
int hashlength;//哈希表长
public:
votesystem() {st=NULL;count=0;hashlength=0;}
~votesystem() {delete []st;count=0;}
void HashTable(int n);//初始化哈希表
int Hash(char *name);//哈希函数
void collision(int &s){s=s++;}//开放定址线性探测法处理冲突
int hashfind(char *name,int&k);//查找
void inserthash(char*name);//插入
int vote(char*name);//投票
void display();//显示哈希表
void showvote(int k); //按哈希表下标显示票数
void showrank();//显示排行榜
};
(4)加入用户登录系统,所以同时构造用户 user 的结构体;
结构体中需要有用户姓名和用户权限次数的数据。
struct user{
char username[20];
int root;
user(){root=4;}
};
2.概要设计
2.1 系统模块划分
2 / 21
评比系统
界面模块
用户登录
模块
选手信息
模块
查询得票
模块
投票模块
前十排行
模块
退出系统
模块
图 2-1 系统模块图
2.2 ADT(抽象数据类型)描述
1.
为了满足程序功能的设计,定义了两个结构体;
分别是学生选手 student 和登录用户 user;
2.
定义了投票系统类 class votesystem;
3.详细设计
3.1 ADT 基本操作算法设计
3.1.1
struct student{
char name[20];//姓名的拼音
int studentnum;//学号
int number;//票数
int Class;//班级
char major[30];//专业
char grade[10];//年级
char achievement[200];//突出事迹
};
struct user{
3 / 21
};
3.1.2
class votesystem{
private:
student *st;
int count;//当前元素个数
int hashlength;//哈希表长
public:
void collision(int &s){s=s++;}//开放定址线性探测法处理冲突
int hashfind(char *name,int&k);//查找
void inserthash(char*name);//插入
int vote(char*name);//投票
void showvote(int k); //按哈希表下标显示票数
void showrank();//显示排行榜
};
(2)处理流程设计
剩余20页未读,继续阅读
资源评论
- 一帆风顺7122023-06-12发现一个超赞的资源,赶紧学习起来,大家一起进步,支持!
- m0_738831102023-06-08发现一个超赞的资源,赶紧学习起来,大家一起进步,支持!
xxpr_ybgg
- 粉丝: 6520
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功