数据结构课程设计——十佳优秀青年
#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;
}
数据结构课程设计——十佳优秀青年相关推荐
- 2017大二学年 数据结构课程设计-校园十大优秀青年评比
南 通 大 学 数据结构课程设计报告 姓 名: 班 级: 物联网162 学 号: 指导老师: 杭月琴 选
- C/C++《数据结构课程设计》任务书[2022-12-27]
C/C++<数据结构课程设计>任务书[2022-12-27] <数据结构课程设计>任务书 一.任务总体安排: 班级 设计时间 地点 指导老师 21软件开发 17周每周一至周五五 ...
- python通讯录管理系统设计_数据结构课程设计-通讯录管理系统(C语言版)
##数据结构课程设计-通讯录管理系统 一,前言 自从上次C语言课设写完后,这次数据结构课设就写的游刃有余了,很快啊,不足三天就写完了它(年轻人不讲武德),如果你认真看过我之前写的C语言课程设计-球队管 ...
- 24速算c语言实训报告ppt,C语言速算24数据结构课程设计.doc
C语言速算24数据结构课程设计.doc 课程设计论文题 目 名 称 速算 24 课 程 名 称 数据结构课程设计 学 生 姓 名 王浩明 学 号 0941301253 系 .专 业 信息工程系.信息类 ...
- 数据结构课程设计——机票售卖系统(C++)
引言 这学期最后的数据结构课程设计需要我们完成一个简单的小程序,我选择了一个机票售卖系统,实现了一些基本的功能:因为时间给的比较短,又赶在复习周补课,所以并没有什么突出的地方,我就在这里聊聊我的代码实 ...
- 数据结构课程设计---最长公共子串
数据结构课程设计,由用户输入两个字符串串X和Y,再由用户输入一个任意的字符串Z,实现以下功能: ①如果字符串Z是字符串X的子串,则显示Z在X中的位置并记录,如果字符串Z是字符串Y的子串,则显示Z在Y中 ...
- 设树采用孩子兄弟表示法存放.用类c语言设计算法计算树的高度.,(数据结构课程设计分类题目.doc...
(数据结构课程设计分类题目 线性表 顺序表: 1.设有一元素为整数的线性表L=(a1,a2,a3,-,an),存放在一维数组A[N]中,设计一个算法,以表中an作为参考元素,将该表分为左.右两部分,其 ...
- c语言数据结构五子棋实验报告,数据结构课程设计-五子棋
数据结构课程设计-五子棋 姓 名: 学 院: 计算机与通信学院 班 级: 通信工程 101 班 指导老师: 目录一.需求分析 31.1 开发背景 .32.2 功能简介 .3二.系统设计 42.1 函数 ...
- 数据结构迷宫代码_数据结构课程设计——迷宫求解(二)
前言 接上文的介绍,本文将主要介绍如何生成随机迷宫,在网上找到的资源也比较多,这里我选取了随机 Prim 算法生成迷宫,选择这个算法的理由如下: 算法思想简单,易于实现 生成的迷宫比较自然,不会出现明 ...
最新文章
- RDKit:化学指纹(Chemical Fingerprinting)
- Redis 命令参考
- python测试网站功能_Python检测网站链接是否已存在
- 程序员谈敏捷开发团队里成员间的相互信任
- python 日常小技巧
- spirng mvc 中使用验证码
- Linux/Centos源码安装python3任意版本
- [bzoj1717][Usaco2006 Dec]Milk Patterns 产奶的模式 (hash构造后缀数组,二分答案)
- python模块讲解_python中常用模块详解一
- RFM模型+SOM聚类︱离群值筛选问题
- 利用dropbox来Host你的silverlight应用
- c语言网格搜索,基于C
- 如何使用计算机来线性拟合,非线性数据拟合
- web常见的屏幕尺寸
- Chapter04 编写基本的MapReduce程序(一) 专利数据集实战一
- R语言 REmap安装以及城市信息获取失败问题
- CDH集群搭建(CDH 6.0.1)
- html5采集手写签名,前端canvas手写签名(含移动端)
- python读取excel某列数据
- VHDL硬件描述语言(二)VHDL程序的基本结构
热门文章
- Ajax 二级联动
- 2021-01-29学习总结
- 网店版重生系列:因为webwork.configuration.xml.reload遭遇Web应用性能测试瓶颈
- 为什么我的iPhone4s用pp助手一键越狱前三步都对,最后完成的时候进度条满了却没有成功的提示,直接退出了?...
- python金融量化(1)---基本金融知识
- 社区团购系统社区拼团系统开发需求与开发流程介绍
- Calls to static methods in Java interfaces are prohibited in JVM target 1.6. Recompile with '-jvm-ta
- 2022-2028年中国健身休闲产业深度调研及投资前景预测报告
- 示波器的底噪测量以及影响底噪的设置因素
- 基于R语言的多元线性回归--我国经济增长的定量研究