/* 电子投票系统
本项目功能多,可以由2-3名同学合作完成。鼓励同学合作进行开发,可获得各10分的加分,但答辩时,要明确分出各自的工作。由1人完成时,可以自行去除其中的一些非核心功能。
投票人主要功能如下:
(1)投票人输入要选举的候选人编号,即可完成投票。
(2)投票人可以浏览候选人列表、输入序号查询候选人介绍。
管理员的主要功能如下:
(1)初始化候选人信息:在系统投入使用前需要先将需要投票选举的候选人信息录入系统中,以便投票和查看。管理员的初始化工作就是将候选人的序号、姓名和简介录入系统。
(2)浏览候选人简介:为随时掌握候选人的信息,以便进行修改,管理员有权浏览候选人简介。浏览的顺序按照候选人序号即可。
(3)修改候选人简介:当系统更新或候选人信息有所变化时,输入候选人序号对其信息进行修改。
(4)查询投票情况:管理员有权查询当前各个候选人得票情况,以便得出最终被选出的候选人信息。
(5)清除投票信息:当投票工程结束后,管理员选择清除投票信息即清除系统中所有候选人的票数,使之归零。
(6)管理员可以对投票人进行管理,投票人只有用管理员规定的用户名和密码才能进入系统进行投票。管理员还可以更改用户名、密码和权限,并对投票人信息进行增加、删除、查询、排序和初始化等操作。
*/
import java.util.*;
import java.io.*;`
public class VoteSystem
{ static Administrator dir2=new Administrator();
static votemansystem dir1=new votemansystem();
static safety dir3=new safety();
static Scanner In=new Scanner(System.in);
public static void main(String[] args)
{
//安全监测
System.out.println("电子投票系统");
System.out.println("==请选择进入方式:==");
System.out.println("==1.投票人 2.管理员==");
int mi_select=In.nextInt();
while(flag){
if(mi_select==1||mi_select==2){
flag=false;
switch(mi_select){
case 1:
dir3.user_certification();//用户验证
break;
case 2:
dir3.administrator_certification();//管理员验证
break;
case 3:
break;
}
}
else{
System.out.println("");
System.out.println("您的输入不合法,请重新输入");
}
//进入系统
System.out.println("~~~欢迎进入电子投票系统~~~");
while(true){
int in_num=In.nextInt();
if(in_num==1||in_num==2){
switch(in_num){
case 1:
voteman_manu();
break;
case 2:
Administrator_manu();
break;
default:break;
}
}
else{
System.out.println("您的输入不合法,请重新输入");
}
}
}
public static void Administrator_manu(){
Scanner In=new Scanner(System.in);
//Administrator dir2=new Administrator();
boolean flag=true;
while(flag){
System.out.println("请输入要查询的管理员功能序号:");
System.out.printf("1.初始化候选人信息\n2.浏览候选人简介\n3.修改候选人简介\n4.查询投票情况\n5.清除投票信息\n6.退出管理员系统\n");
switch(In.nextInt()){
case 1:
dir2.Initialize_message();
break;
case 2:
System.out.println("请输入要查询的选手序号:");
dir2.visit_message(In.nextLong());
break;
case 3:
System.out.println("请输入要修改的选手序号:");
dir2.modify_message(In.nextLong());
break;
case 4:
dir2.getmaxvote();
break;
case 5:
dir2.clearvote();
break;
case 6:
flag=false;
break;
default: break;
}
}
}
public static void voteman_manu(){
Scanner In=new Scanner(System.in);
//votemansystem dir1=new votemansystem();
boolean flag=true;
while(flag){
System.out.println("请输入要查询的投票人功能序号:");
System.out.println("1.浏览候选人列表 2.输入序号查询候选人介绍 3.退出投票人系统");
switch(In.nextInt()){
case 1:
dir1.show_all_message();
break;
case 2:
System.out.println("请输入要查询的选手序号:");
dir1.show_single_message(In.nextLong());
break;
case 3:
flag=false;
break;
default: break;
}
}
}
}
class votemansystem extends Administrator
{
long num;
String name;
String sex;
String status;//职业
int sumOfvote;
votemansystem next;
//votemansystem root;
//Scanner In=new Scanner(System.in);
public votemansystem(long num,String name,String sex,String status,int sumOfvote){
this.num=num;
//System.out.println("this.num="+num);
this.name=name;
this.sex=sex;
this.status=status;
this.sumOfvote=sumOfvote;
}
public votemansystem(){
}
public void vote(){
Scanner In=new Scanner(System.in);
System.out.println("请输入您想投的选手序号:");
long s_num=In.nextLong();//s_num为:选手序号
votemansystem issearch=search(s_num);
if(issearch!=null){//先查找,不在则提示,在则加票
System.out.println("该选手不存在,请重新输入:");
}
else{
issearch.sumOfvote++;
System.out.println("投票成功!");
}
}
public void show_all_message(){
//System.out.println("成功");
//System.out.println(root);
votemansystem p=super.root;//不用super也可以
while(p!=null){
System.out.println("序号:"+p.num+" 姓名:"+p.name+" 性别:"+p.sex+" 职业:"+p.status+" 票数为:"+p.sumOfvote);
p=p.next;
}
if(root==null){
System.out.println("没有选手数据");
}
}
public void show_single_message(long ss_num){
votemansystem p=root;
while(p!=null){
if(ss_num==p.num){
System.out.println("序号:"+p.num+" 姓名:"+p.name+" 性别:"+p.sex+" 职业:"+p.status+" 票数为:"+p.sumOfvote);
}
p=p.next;
}
System.out.println("该选手不存在");
}
}
class Administrator
{ Scanner In=new Scanner(System.in);
public static votemansystem root;//必须加static 才能和子类共享
public Administrator(){
}
public votemansystem search(long s_num){
votemansystem p=root;
while(p!=null){
if(s_num==p.num){
return p;
}
p=p.next;
}
return null;
}
public void Initialize_message(){//初始化数据
Scanner In=new Scanner(System.in);
//root=null;
votemansystem p=null;
p=root;
boolean flag=true;
while(flag){
System.out.println("是否继续添加数据:y:是 n:否");
String judge=In.nextLine();
if(judge.equals("y")){
System.out.println("请按照格式录入投票者信息:序号-姓名-性别-职业-票数");
long num=In.nextLong();
In.nextLine();//吃掉"\n"
String name=In.nextLine();
String sex=In.nextLine();
String status=In.nextLine();//职业
int sumOfvote=In.nextInt();
In.nextLine();//吃掉"\n"
//System.out.println("数据添加完毕");
if(root==null){
votemansystem node=new votemansystem(num,name,sex,status,sumOfvote);
System.out.println("num="+num);
p=node;
root=node;
root.next=null;
}
else{
votemansystem node=new votemansystem(num,name,sex,status,sumOfvote);
p.next=node;
p=p.next;
p.next=null;
}
}
else if(judge.equals("n")){
flag=false;
System.out.println("==添加用户信息退出==");
}
else{
System.out.println("输入不正确,请重新输入:");
}
}
}
public void visit_message(long ss_num){
votemansystem p=root;
while(p!=null){
if(ss_num==p.num){
System.out.println("序号:"+p.num+" 姓名:"+p.name+" 性别:"+p.sex+" 职业:"+p.status+" 票数为:"+p.sumOfvote);
return ;
}
p=p.next;
}
System.out.println("该选手不存在");
}
public void modify_message(long sss_num){
votemansystem p=root;
System.out.println("请按照格式修改投票者信息:序号-姓名-性别-职业-票数");
//votemansystem pre=root;
long num=In.nextLong();
In.nextLine();//吃掉"\n"
String name=In.nextLine();
String sex=In.nextLine();
String status=In.nextLine();//职业
int sumOfvote=In.nextInt();
In.nextLine();//吃掉"\n"
votemansystem node=new votemansystem(num,name,sex,status,sumOfvote);
node.next=null;
if(root.num==sss_num){
node.next=root.next;
root=node;
}
else{
while(p.next!=null){
if(p.next.num==sss_num){
p.next=node;
node.next=p.next.next;
}
}
System.out.println("该选手不存在");
}
}
public void getmaxvote(){
votemansystem p=root;
int max=-1;
long s_num=-1;
while(p!=null){
System.out.println(p.num+"号选手的票数为:"+p.sumOfvote);
if(p.sumOfvote>max){
max=p.sumOfvote;
s_num=p.num;
}
p=p.next;
}
System.out.println("~~票数最多的选手为"+s_num+",总票数为:"+max);
}
public void clearvote(){
votemansystem p=root;
while(p!=null){
p.sumOfvote=0;
p=p.next;
}
System.out.println("==票数重置完毕==");
}
}
class safety
{
public safety(){
}
public void user_certification(){
System.out.println("请输入用户账号":);
String user_count=In.nextLine();
File file = new File("D:/safety/safe.txt");
char[] tempchars = new char[30];
Reader in = null;
try {
in = new InputStreamReader(new FileInputStream(file),"utf8");
int i = 0;
while ((i = in.read(tempchars)) != -1) {
System.out.print(tempchars);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
return;
}
}
}
数据结构-课程设计
猜你喜欢
转载自www.cnblogs.com/DongChenYi/p/12025074.html
今日推荐
周排行