校园十大优秀青年评比_第1页
校园十大优秀青年评比_第2页
校园十大优秀青年评比_第3页
校园十大优秀青年评比_第4页
校园十大优秀青年评比_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.c.c实验报告实验课名称:数据结构实验实验名称:校园十大优秀青年评比班级:20130613学号:16:施洋时间:2015-5-25一、问题描述新一届校园十大青年评比开始了!每一位在校学生可通过网上评比系统,为自己认为优秀的学生提名与投票。请开发一个用于该需求的系统,满足下列基本功能:提名优秀学生与投票。查看提名学生的基本信息。显示各提名学生的票数。显示排行榜。基本要求:采用散列存储,存放提名学生的相关信息。设计哈希函数和冲突解决方法。提名学生至少包括以下信息:、票数、个人基本信息(如:班级、专业、年级、突出事迹等)。设计输入提名学生信息的界面。完成基本功能。界面友好,操作简单。设计足够多的测

2、试用例。查看指定学生的票数。二、数据结构设计1)用哈希表存储提名学生相关信息。每位选手即学生的基本信息含有多个属性,为此可根据学生信息建立结构体,如下:struetstudentcharname40;/的拼音+学号intnumber;/票数intClass;/班级charMajor50;/专业charGrade10;/年级charHonour100;/突出事迹;设计哈希函数,并用开放定址线性探测法处理冲突。设计一个投票系统类:votesystemclassvotesystemprivate:student*stu;intcount;/当前元素个数intsizeindex;/哈希表长public

3、:votesystem()stu二NULL;count二0;sizeindex=0;votesystem()deletestu;count二0;voidInitHashTable(intn);/初始化哈希表intHash(char*name);/哈希函数voidcollision(int&s)s=s+;/开放定址线性探测法处理冲突intsearch(char*name,int&k);/查找voidinsert(char*name);/插入intvote(char*name);/投票voiddisplay。;/显示哈希表voidshowvote(intk);/按哈希表下标显示票数voidshow

4、rank();/显示排行榜;三、算法设计votesystem成员函数详细设计:哈希函数Hash根据实现要点提示设计哈希函数intvotesystem:Hash(char*name)哈希函数char*p=name;intkey=0;while(*p)key+=int(*p);p+;returnkey%sizeindex;查找函数searchStep1:对指定的选手调用哈希函数求值Step2:用开放定址线性探测法处理冲突,在哈希表中查找k=Hash(name);哈希函数定位while(O!=O&strcmp(,name)collision(k);/处理冲突Ste

5、p3:若找到返回1;否则返回0if(!strcmp(,name)return1;/找至Uelsereturn0;插入函数insertStepl:调用查找函数search,找到插入信息的位置Step2:按照提名学生信息示例格式输入学生的信息voidvotesystem:insert(char*name)ints;chara2;search(name,s);cout提名学生信息格式如下:nt班级:2nt专业:软件工程nt年级:二nt突出事迹:全国三好学生n;strcpy(,name);coutstus.Class;cout专业:t;cin.getline(a,2

6、);cin.getline(stus.Major,50);cout年级:t;cin.getline(stus.Grade,10);cout突出事迹:t;cin.getline(stus.Honour,100);Step3:提名即为投一票,同时当前元素个数加1stus.number=1;/提名即为投一票count+;/当前人数加1投票函数voteStepl:记录已存在时调用search函数intvotesystem:vote(char*name)ints;intf;f=search(name,s);定位if(f)stus.number+;return1;/投票成功elsereturn0;/投票失

7、败Step2:记录不存在时,转到提名或返回coutvv无此记录!n;coutvv1、提名该学生n2、返回n请选择操作:;intt;cint;if(t=1)L.insert(name);coutvv提名成功n;一显示哈希表函数display从表头开始,若表中记录已存在,则输出该学生的基本信息:,票数,专业,年级,班级,突出事迹;否则转到下一个。voidvotesystem:display()for(inti=O;ivsizeindex;i+)if(0!=0)vvvvstui.numbervv票stui.Majorvvstui.Gradevvstui

8、.Classvv班vvstui.Honourvvtvvendl;显示排彳丁榜函数showrankStepl:定义一个数组a11,存储前十名在哈希表中的下标,并初始化数组Step2:从哈希表表头开始依次访问,记录存在时即转到Step3Step3:利用插入法对进行记录进行排序Step4:将哈希表下标保存到数组a中intall;定义一个数组存放前十名在哈希表中的下标for(inti=0;i=0;k-)利用插入法进行排序if(ak-1)if(stuak.numbervstui.number)ak+1=ak;elsebreak;ak+1=i;Step5:根据数组a中排序结果,顺序输出前十名选手的,票数f

9、or(i=0;i-1;i+)/对前十名输出vvtvvstuai.numbervvendl;四、界面设计*1*1*vt*1*1*1*1*rT*rT*rT*1、选手信息2、选手得票数3、投票4、排行榜5、退出系统*1*1*X*、t*、t*、t*、t*、t*、t*vt*1*1*1*1*rT*rT*rT*五、运行测试与分析(1)对记录不存在的学生进行投票,即提名过程najing等奖2.软件工程全国物理竞赛冃lihong1013042049此记录甲1提名该学生、najing等奖2.软件工程全国物理竞赛冃lihong1013042049此记录甲1提名该学生、退出系统WJCW

10、JCWJCWJCWJCWJCWJCcliao1613642645:燥作:3爲手姓名的拼音+学号妙:L格式如下=h2$软件工程h-_1事迹;全国三好学生依此模式对记录不存在的学生进行提名,具体信息如图(3)所示(2)对记录已存在的选手进行投票KKKKKKKKWMWMWMWM蛊鞠妾数majing-chan1913042045;麟庇的拼音+学号t如;majing-chan1913042045;111lions1013042049限票戚功(3)显示选手信息手手票行-(4)显示排行榜1E数一“息票统1一手手票行出TIm-.一.:、ISM数(6)显示记录不存在选手的得票数majinsfcliao1013042045:、ISM数(7)选择无效操作、退出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论