校园十大优秀青年评比.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
校园十大优秀青年评比

实验报告 实验课名称:数据结构实验 实验名称:校园十大优秀青年评比 班级学号:16 姓名:施洋 时间:2015-5-25 一、问题描述 新一届校园十大青年评比开始了!每一位在校学生可通过网上评比系统,为自己认为优秀的学生提名与投票。请开发一个用于该需求的系统,满足下列基本功能: (1)提名优秀学生与投票。 (2)查看提名学生的基本信息。 (3)显示各提名学生的票数。 (4)显示排行榜。 基本要求: (1)采用散列存储,存放提名学生的相关信息。 (2)设计哈希函数和冲突解决方法。 (3)提名学生至少包括以下信息:姓名、票数、个人基本信息(如:班级、专业、年级、突出事迹等)。 (4)设计输入提名学生信息的界面。 (5)完成基本功能。 (6)界面友好,操作简单。 (7)设计足够多的测试用例。 (8)查看指定学生的票数。 二、数据结构设计 1)用哈希表存储提名学生相关信息。 每位选手即学生的基本信息含有多个属性,为此可根据学生信息建立结构体,如下: struct student{ char name[40];//姓名的拼音+学号 int number;//票数 int Class;//班级 char Major[50];//专业 char Grade[10];//年级 char Honour[100];//突出事迹 }; (2)设计哈希函数,并用开放定址线性探测法处理冲突。 (3)设计一个投票系统类:votesystem class votesystem{ private: student *stu; int count;//当前元素个数 int sizeindex;//哈希表长 public: votesystem() {stu=NULL;count=0;sizeindex=0;} ~votesystem() {delete []stu;count=0;} void InitHashTable(int n);//初始化哈希表 int Hash(char *name);//哈希函数 void collision(int s){s=s++;}//开放定址线性探测法处理冲突 int search(char *name,intk);//查找 void insert(char*name);//插入 int vote(char*name);//投票 void display();//显示哈希表 void showvote(int k); //按哈希表下标显示票数 void showrank();//显示排行榜 }; 三、算法设计 votesystem成员函数详细设计: (1)哈希函数Hash 根据实现要点提示设计哈希函数 int votesystem::Hash(char *name)//哈希函数 { char *p=name; int key=0; while(*p) { key+=int(*p); p++; } return key%sizeindex; } (2)查找函数search Step1:对指定的选手调用哈希函数求值 Step2:用开放定址线性探测法处理冲突,在哈希表中查找 k=Hash(name);//哈希函数定位 while(stu[k].name[0]!=\0strcmp(stu[k].name,name)) collision(k);//处理冲突 Step3:若找到返回1;否则返回0 if(!strcmp(stu[k].name,name)) return 1;//找到 else return 0; (3)插入函数insert Step1:调用查找函数search,找到插入信息的位置 Step2:按照提名学生信息示例格式输入学生的信息 void votesystem::insert(char *name) { int s;char a[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;//提名即为投一票

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档