#include<iostream>
#include<cstring>
#include<iomanip>
using namespace std;struct student{char name[20];        int num;              //学号int number;           //票数int Class;            char major[30];       char grade[10];       char achievement[200];
};class votesystem{private:student*st;int count;         //当前元素个数int size;          //哈希表长public:void  InitHashTable(int n);                  //初始化哈希表int  Hash(char*name);                        //计算哈希地址void    collision(int &s);                     //冲突,计算下一个地址int   search(char *name,int &s);              //查找void    insert(char*name);                      //插入int     vote(char*name);                        //投票void    display();                             //显示哈希表void  showvote(int k);                       //按哈希表下标显示票数void     showrank();                            //显示排行榜
};void votesystem::InitHashTable(int n)  //初始化哈希表
{size=n;st=new student[size];for(int i=0;i<size;i++)st[i].name[0]='\0';
}int votesystem::Hash(char *name)        //求哈希地址,size为表长
{char *p=name;int key=0;              while(*p){key += int(*p);             key为所有名字(fyx)的累计值 p++;}return key%size;             //size哈希表长,返回下标
}void votesystem::collision(int &s)       //开放地址法解决冲突
{s=s+1;
}int votesystem::search(char *name,int &s)  //查找
{s=Hash(name);                          //哈希表定位while(st[s].name[0] != '\0' && strcmp(st[s].name,name)) collision(s);   //开放地址处理冲突if(!strcmp(st[s].name,name))   //strcmp(str1,str2) ==返回0,>返回1,<返回-1 return 1;       //找到else return 0;      //未找到
}void votesystem::insert(char *name)//插入
{int s;char a[2];search(name,s);cout<<"提名学生信息格式如下:"<<endl; cout<<"\t学号:19101010"<<endl;cout<<"\t班级:1"<<endl;cout<<"\t专业:数学师范"<<endl;cout<<"\t年级:二"<<endl;cout<<"\t突出事迹:国家二等奖学金"<<endl;strcpy(st[s].name,name);cout<<"学号:\t";cin>>st[s].num;cout<<"班级:\t";cin>>st[s].Class;cout<<"专业:\t";cin.getline(a,2);cin.getline(st[s].major,30);cout<<"年级:\t";cin.getline(st[s].grade,10);cout<<"突出事迹:\t";cin.getline(st[s].achievement,200); //提名即为投一票,当前元素加一st[s].number=1;                      //提名即为投一票count++;
}int votesystem::vote(char*name)      //投票,纪录已存在时调用search函数
{int s;int f;//定位 f=search(name,s);                    //search返回1 0 if(f) {st[s].number++; return 1;}   //投票成功else return 0;                        //投票失败
}void votesystem::display()           //显示排名
{for(int i=0;i<size;i++)if(st[i].name[0]!='\0')cout<<st[i].num<<' '<<st[i].name<<' '<<st[i].grade<<"年级"<<' '<<st[i].major<<' '<<st[i].Class<<"班"<<' '<<st[i].number<<"票"<<' '<<st[i].achievement<<endl;
}void votesystem::showvote(int k)      //按排名表下标显示票数
{cout<<"现得票数:"<<st[k].number;
}void votesystem::showrank()            //显示排行榜
{int k;int a[11];           //定义一个数组存放前十名在哈希表中的下标for(int i=0; i<10; i++) a[i]=-1;for(int i=0; i<size; i++)  //遍历哈希表{if(st[i].name[0] != '\0'){  //插入法排序for( k=9; k >= 0; k--)//遍历a[] {if(a[k] > -1){if(st[a[k]].number<st[i].number)a[k+1]=a[k];           //这里的k+1是指当前定位 else break;}}a[k+1]=i;            //这里的k=0--, a[0] = i }//if }//for cout<<"   学号          姓名       得票数"<<endl;for(int i=0; i<10 && a[i]>-1; i++){cout<<left<<setw(15)<<st[a[i]].num<<setw(15)<<st[a[i]].name<<setw(15)<<st[a[i]].number<<endl;}//left左对齐,在右侧加空格        setw()设置空格 #include<iomanip>
}int main()
{int choose=-1,k=-1;      //choose赋初值-1 char name[40];votesystem L;L.InitHashTable(50);   //初值学生50 while(choose!=6)      //6--退出投票系统{cout<<"              "<<endl; cout<<"              "<<endl; cout<<"  校园十大优秀青年评比系统"<<endl;cout<<"1--提名新学生"<<endl;cout<<"2--查看选手信息"<<endl;cout<<"3--选手得票"<<endl;cout<<"4--给选手投票"<<endl;cout<<"5--前十排行榜单"<<endl;cout<<"6--退出投票系统"<<endl;cout<<endl<<endl<<endl<<endl;cout<<"请您的选择操作:";cin>>choose;          switch(choose){char a[2];case 1: cout<<"输入姓名(例如:fyx)"<<endl; cin>>name;L.insert(name);cout<<"选手提名成功\n";break;case 2:L.display();cout<<endl<<endl<<endl; cout<<"信息如上"<<endl<<"END"<<endl;break;case 3:cout<<"请输入选手姓名的拼音(如:fyx):"<<endl;cin.getline(a,2);cin.getline(name,40);int f;f=L.search(name,k);if(f){L.showvote(k);cout<<endl;break;}else cout<<"提名名单中无此记录";cout<<endl;cout<<"1--提名该学生\n"<<"2--返回系统界面\n"<<"请选择操作:";int t;cin>>t;if(t==1){L.insert(name);cout<<"选手提名成功\n";}break; case 4:cout<<"请输入选手姓名拼音(如:fyx)"<<endl;cin.getline(a,2);cin.getline(name,40);f=L.search(name,k);if(f) {L.vote(name);cout<<"投票成功\n";}else{cout<<"无纪录!\n";cout<<"1--提名该学生\n"<<"2--返回系统界面\n"<<"请选择操作:";int t;cin>>t;if(t==1){L.insert(name);cout<<"选手提名成功\n";}}break;case 5:L.showrank();break;case 6:cout<<"投票系统已关闭!\n";cout<<"感谢使用本系统!\n";break;default:cout<<"操作无效,请重新选择!\n"; choose = -1; break;}}return 0;
}

数据结构课程设计——十佳优秀青年相关推荐

  1. 2017大二学年 数据结构课程设计-校园十大优秀青年评比

    南 通 大 学   数据结构课程设计报告   姓    名:   班    级: 物联网162 学    号:   指导老师: 杭月琴 选   

  2. C/C++《数据结构课程设计》任务书[2022-12-27]

    C/C++<数据结构课程设计>任务书[2022-12-27] <数据结构课程设计>任务书 一.任务总体安排: 班级 设计时间 地点 指导老师 21软件开发 17周每周一至周五五 ...

  3. python通讯录管理系统设计_数据结构课程设计-通讯录管理系统(C语言版)

    ##数据结构课程设计-通讯录管理系统 一,前言 自从上次C语言课设写完后,这次数据结构课设就写的游刃有余了,很快啊,不足三天就写完了它(年轻人不讲武德),如果你认真看过我之前写的C语言课程设计-球队管 ...

  4. 24速算c语言实训报告ppt,C语言速算24数据结构课程设计.doc

    C语言速算24数据结构课程设计.doc 课程设计论文题 目 名 称 速算 24 课 程 名 称 数据结构课程设计 学 生 姓 名 王浩明 学 号 0941301253 系 .专 业 信息工程系.信息类 ...

  5. 数据结构课程设计——机票售卖系统(C++)

    引言 这学期最后的数据结构课程设计需要我们完成一个简单的小程序,我选择了一个机票售卖系统,实现了一些基本的功能:因为时间给的比较短,又赶在复习周补课,所以并没有什么突出的地方,我就在这里聊聊我的代码实 ...

  6. 数据结构课程设计---最长公共子串

    数据结构课程设计,由用户输入两个字符串串X和Y,再由用户输入一个任意的字符串Z,实现以下功能: ①如果字符串Z是字符串X的子串,则显示Z在X中的位置并记录,如果字符串Z是字符串Y的子串,则显示Z在Y中 ...

  7. 设树采用孩子兄弟表示法存放.用类c语言设计算法计算树的高度.,(数据结构课程设计分类题目.doc...

    (数据结构课程设计分类题目 线性表 顺序表: 1.设有一元素为整数的线性表L=(a1,a2,a3,-,an),存放在一维数组A[N]中,设计一个算法,以表中an作为参考元素,将该表分为左.右两部分,其 ...

  8. c语言数据结构五子棋实验报告,数据结构课程设计-五子棋

    数据结构课程设计-五子棋 姓 名: 学 院: 计算机与通信学院 班 级: 通信工程 101 班 指导老师: 目录一.需求分析 31.1 开发背景 .32.2 功能简介 .3二.系统设计 42.1 函数 ...

  9. 数据结构迷宫代码_数据结构课程设计——迷宫求解(二)

    前言 接上文的介绍,本文将主要介绍如何生成随机迷宫,在网上找到的资源也比较多,这里我选取了随机 Prim 算法生成迷宫,选择这个算法的理由如下: 算法思想简单,易于实现 生成的迷宫比较自然,不会出现明 ...

最新文章

  1. RDKit:化学指纹(Chemical Fingerprinting)
  2. Redis 命令参考
  3. python测试网站功能_Python检测网站链接是否已存在
  4. 程序员谈敏捷开发团队里成员间的相互信任
  5. python 日常小技巧
  6. spirng mvc 中使用验证码
  7. Linux/Centos源码安装python3任意版本
  8. [bzoj1717][Usaco2006 Dec]Milk Patterns 产奶的模式 (hash构造后缀数组,二分答案)
  9. python模块讲解_python中常用模块详解一
  10. RFM模型+SOM聚类︱离群值筛选问题
  11. 利用dropbox来Host你的silverlight应用
  12. c语言网格搜索,基于C
  13. 如何使用计算机来线性拟合,非线性数据拟合
  14. web常见的屏幕尺寸
  15. Chapter04 编写基本的MapReduce程序(一) 专利数据集实战一
  16. R语言 REmap安装以及城市信息获取失败问题
  17. CDH集群搭建(CDH 6.0.1)
  18. html5采集手写签名,前端canvas手写签名(含移动端)
  19. python读取excel某列数据
  20. VHDL硬件描述语言(二)VHDL程序的基本结构

热门文章

  1. Ajax 二级联动
  2. 2021-01-29学习总结
  3. 网店版重生系列:因为webwork.configuration.xml.reload遭遇Web应用性能测试瓶颈
  4. 为什么我的iPhone4s用pp助手一键越狱前三步都对,最后完成的时候进度条满了却没有成功的提示,直接退出了?...
  5. python金融量化(1)---基本金融知识
  6. 社区团购系统社区拼团系统开发需求与开发流程介绍
  7. Calls to static methods in Java interfaces are prohibited in JVM target 1.6. Recompile with '-jvm-ta
  8. 2022-2028年中国健身休闲产业深度调研及投资前景预测报告
  9. 示波器的底噪测量以及影响底噪的设置因素
  10. 基于R语言的多元线性回归--我国经济增长的定量研究