版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文格式为Word版,下载可任意编辑——校园十大优秀青年评比测验报告测验课名称:数据布局测验测验名称:校园十大优秀青年评比班级:20220613学号:16姓名:施洋时间:2022-5-25
一、问题描述新一届校园十大青年评比开头了!每一位在校学生可通过网上评比系统,为自己认为优秀的学生提名与投票。请开发一个用于该需求的系统,得志以下根本功能:
(1)提名优秀学生与投票。
(2)查看提名学生的根本信息。
(3)显示各提名学生的票数。
(4)显示排行榜。
根本要求:
(1)采用散列存储,存放提名学生的相关信息。
(2)设计哈希函数和冲突解决方法。
(3)提名学生至少包括以下信息:姓名、票数、个人根本信息(如:班级、专业、年级、突出事迹等)。
(4)设计输入提名学生信息的界面。
(5)完成根本功能。
(6)界面友好,操作简朴。
(7)设计足够多的测试用例。
(8)查看指定学生的票数。
二、数据布局设计1)用哈希表存储提名学生相关信息。
每位选手即学生的根本信息含有多个属性,为此可根据学生信息建立布局体,如下:
structstudent{charname[40];//姓名的拼音+学号intnumber;//票数intClass;//班级charMajor[50];//专业charGrade[10];//年级charHonour[100];//突出事迹};
(2)设计哈希函数,并用开放定址线性探测法处理冲突。
(3)设计一个投票系统类:votesystemclassvotesystem{private:
student*stu;
intcount;//当前元素个数
intsizeindex;//哈希表长public:
votesystem(){stu=NULL;count=0;sizeindex=0;}
~votesystem(){delete[]stu;count=0;}
voidInitHashTable(intn);//初始化哈希表
intHash(char*name);//哈希函数
voidcollision(ints){s=s++;}//开放定址线性探测法处理冲突
intsearch(char*name,intk);//查找
voidinsert(char*name);//插入
intvote(char*name);//投票
voiddisplay();//显示哈希表
voidshowvote(intk);//按哈希表下标显示票数
voidshowrank();//显示排行榜};三、算法设计votesystem成员函数细致设计:
(1)哈希函数Hash根据实现要点提示设计哈希函数intvotesystem::Hash(char*name)//哈希函数{
char*p=name;
intkey=0;
while(*p)
{
key+=int(*p);
p++;
}
returnkey%sizeindex;}
(2)查找函数search
Step1:对指定的选手调用哈希函数求值
Step2:用开放定址线性探测法处理冲突,在哈希表中查找k=Hash(name);//哈希函数定位while(stu[k].name[0]!="\0"strcmp(stu[k].name,name))
collision(k);//处理冲突
Step3:若找到返回1;否那么返回0if(!strcmp(stu[k].name,name))return1;//找到
elsereturn0;
(3)插入函数insert
Step1:调用查找函数search,找到插入信息的位置
Step2:按照提名学生信息例如格式输入学生的信息voidvotesystem::insert(char*name){ints;chara[2];search(name,s);cout提名学生信息格式如下:\n
\t班级:2\n
\t专业:软件工程\n
\t年级:二\n
\t突出事迹:全国三好学生\n;strcpy(stu[s].name,name);cout班级:\t;cinstu[s].Class;cout专业:\t;cin.getline(a,2);cin.getline(stu[s].Major,50);cout年级:\t;cin.getline(stu[s].Grade,10);cout突出事迹:\t;cin.getline(stu[s].Honour,100);
Step3:提名即为投一票,同时当前元素个数加1
stu[s].number=1;//提名即为投一票
count++;//当前人数加1}
(4)投票函数voteStep1:
记录已存在时调用search函数intvotesystem::vote(char*name)
{
ints;
intf;
f=search(name,s);//定位
if(f){stu[s].number++;return1;}//投票告成
elsereturn0;//投票失败}Step2:
记录不存在时,转到提名或返回
cout无此记录!\n;
cout
1、提名该学生\n
2、返回\n
请选择操作:;
intt;
cint;
if(t==1)
{
L.insert(name);
cout提名告成\n;
}(5)
显示哈希表函数display
从表头开头,若表中记录已存在,那么输出该学生的根本信息:姓名,票数,专业,年级,班级,突出事迹;否那么转到下一个。
voidvotesystem::display(){
for(inti=0;isizeindex;i++)
if(stu[i].name[0]!="\0")
coutstu[i].name""
stu[i].number票""
stu[i].Major""
stu[i].Grade
stu[i].Class班""
stu[i].Honour"\t"
endl;}
(6)显示排行榜函数showrank
Step1:定义一个数组a[11],存储前十名在哈希表中的下标,并初始化数组
Step2:从哈希表表头开头依次访问,记录存在时即转到Step3
Step3:利用插入法对举行记录举行排序
Step4:将哈希表下标保存到数组a中inta[11];//定义一个数组存放前十名在哈希表中的下标
for(inti=0;i10;i++)a[i]=-1;
for(i=0;isizeindex;i++)//遍历哈希表
{
if(stu[i].name[0]!="\0")
{
for(intk=9;k=0;k--)//利用插入法举行排序
{
if(a[k]-1)
{
if(stu[a[k]].numberstu[i].number)
a[k+1]=a[k];
elsebreak;
}
}
a[k+1]=i;
}
}Step5:根据数组a中排序结果,依次输出前十名选手的姓名,票数for(i=0;i10a[i]-1;i++)//对前十名输出
coutstu[a[i]].name"\t"
stu[a[i]].number
endl;
四、界面设计***************
1、选手信息
2、选手得票数
3、投票
4、排行榜
5、退出系统
***************
五、运行测试与分析(1)对记录不存在的学生举行投票,即提名过程
依此模式对记录不存在的学生举行提名,概括信息如图(3)所示
(2)对记录已存在的选手举行投票
(3)显示选手信
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年体育教师个人期末工作总结
- 2010年高考语文试卷(全国Ⅱ卷大纲版Ⅱ)(解析卷)
- 《红色大气颁奖》课件
- 故事分镜设计与分析 课件 任务9:丝竹相间显和谐;任务10:峰回路转悟精神
- 虚拟现实艺术体验-洞察分析
- 香蕉产业链价值提升途径研究-洞察分析
- 宇宙膨胀与常数演化-洞察分析
- 营养法规与食品科技-洞察分析
- 新型疫苗对儿童呼吸影响-洞察分析
- 速效救心丸国际对比研究-洞察分析
- 六年级语文上册期末试卷及完整答案
- 人教版(2024)数学七年级上册期末测试卷(含答案)
- 医院护理10s管理
- 2024年山西晋中市灵石县事业单位招聘工作人员公8人历年管理单位遴选500模拟题附带答案详解
- 上海市市辖区(2024年-2025年小学六年级语文)部编版质量测试(上学期)试卷及答案
- 2024-2020年上海高考英语作文试题汇编 (解读及范文)
- 依法执业与医疗安全培训课件
- 2024年全国中学生生物学联赛试题含答案
- C语言程序设计(兰州石化职业技术大学)知到智慧树期末考试答案题库2024年秋兰州石化职业技术大学
- 《GMP基础知识培训》课件
- fsQCA方法与案例分析
评论
0/150
提交评论