数据结构实训——电子投票系统

/*********************************************************** 
* 版权所有 (C)2016,WangJingqi
* 
* 项目名称:电子投票系统 
* 其它说明: 各个模块函数  
* 作 者:    王靖淇 
* 完成日期: 20161228 
**********************************************************/  

代码:

☆head.h头文件

//头文件/

#include<stdio.h>
#include<string.h>
#include<string>
#include<malloc.h>
#include<fstream>
#include<iostream>
#include<windows.h>
using namespace std;
class xuanshou
{
public:
    string name;//姓名
    int num;//序号
    string zijie; //自我介绍
    string sex; //性别
    int piaoshu;//票数
    xuanshou()
    {
        piaoshu=0;
    }
    xuanshou *next; //指向下一个人的指针
};
struct xuanshoulist
{
    xuanshou *link;   //指向第一个人的指针
};
class toupiaozhe
{
 public:
    string name;
    int num;
    int mima;
    int quanxian;//0为最低权限,2为最高
    int cishu;//投票次数1
    toupiaozhe()
    {
        quanxian=0;
        cishu=1;
    }

};
int h(int n);   //实现哈希函数
int DispHT(xuanshoulist ht[]);//输出哈希表
void cunpan(xuanshoulist l[]);//存盘
void duqu(xuanshoulist ht[]); //读取
void hash(string s[],int a[],xuanshoulist ht[]); //创建哈希表
void chakanxinxi(); //查看选手信息
void toupiao(); //投票
void root(int a); //管理员
void genggai();//更改选手信息
void rootmima();//root用户的密码验证
void qingkuang(xuanshoulist *ht);
void qingchu();//清除信息
void zhizhenchushihua();//ht中的指针置为NULL
void xierpaixu(xuanshou R[],int n) ;//希尔排序
void fanhui();//返回程序上一层
void zhuhuanying();//欢迎界面
void login();//登录界面
void zhuce();//注册用户
void cunpan2(toupiaozhe log[]);//将用户信息存盘
void duqu2(toupiaozhe l[]);//将用户信息读取
void zhuxiao();//注销
void genggai2();//更改用户信息
void jindutiao();



☆main.cpp主函数

/*********************************************************
* 功能描述: main函数 调用函数
* 输入参数:`xinxi[]-指针数组
              log[]-投票人信息
              renshu-人数(投票人)
              dangqian-当前人数
* 输出参数: 无
* 返回值  : 0-系统需要
* 其它说明: 无
************************************************************/
#include"head.h"
httype xinxi[17];
toupiaozhe log[100];
int renshu=0;
int dangqian;
int main()
{
    zhizhenchushihua();//将指针数组所有值置为空
    duqu(xinxi);
    duqu2(log);//将文件中的信息读入
    login();//登录
    zhuhuanying();//欢迎界面
    cunpan(xinxi);
    cunpan2(log);//储存信息
    return 0;
}

☆toupiao.cpp功能函数

//主函数/

/*********************************************************
* 功能描述: main函数 调用函数
* 输入参数:  xinxi[]-指针数组
              log[]-投票人信息
              renshu-人数(投票人)
              dangqian-当前人数
* 输出参数: 无
* 返回值  : 0-系统需要
* 其它说明: 无
************************************************************/
#include"head.h"
xuanshoulist xinxi[17];
toupiaozhe log[100];
int renshu=0;
int dangqian;
int main()
{
    zhizhenchushihua();//将指针数组所有值置为空
    duqu(xinxi);
    duqu2(log);//将文件中的信息读入
    login();//登录
    zhuhuanying();//欢迎界面
    cunpan(xinxi);
    cunpan2(log);//储存信息
    return 0;
}


///toupiao.cpp///
#include"head.h"
extern struct xuanshoulist xinxi[17];
extern class toupiaozhe log[100];
extern int renshu;
extern int dangqian;
/*********************************************************
* 功能描述: 哈希函数 生成数据存储位置
* 输入参数: 候选人的序号
* 输出参数: 无
* 返回值  : 数值取余运算的结果
* 其它说明: 无
************************************************************/
int h(int n)   //实现哈希函数
{
    return n%17;
}
/*********************************************************
* 功能描述: 存储函数 存储候选人的信息到文件
* 输入参数: l[]-存储指针的数组
* 输出参数: f1.txt-输出文件名
* 返回值  : 无
* 其它说明: 无
************************************************************/
void cunpan(xuanshoulist l[])
{
    int i=0;
    xuanshoulist a;
    ofstream outfile("f1.txt",ios::binary);
    if(!outfile)
    {
        exit(1);
    }
    i=0;
    while(i<17)
    {
        a=l[i];
        while(a.link!=NULL)
        {
            outfile<<a.link->name<<' '<<a.link->num<<' '<<a.link->zijie<<' '<<a.link->sex<<' '<<a.link->piaoshu;
            outfile<<"\r\n";
            a.link=a.link->next;
        }

        i++;
    }
    outfile.close();
}
/*********************************************************
* 功能描述: 读取函数 读取候选人的信息到文件
* 输入参数: 无
* 输出参数: ht[]-指针数组
* 返回值  : 无
* 其它说明: 无
************************************************************/
void duqu(xuanshoulist ht[])
{
    int i,j;
    xuanshou *q;
    ifstream infile("f1.txt",ios::binary);
    if(!infile)
    {
        cout<<"您是第一次使用本系统"<<endl;
    }
    else
    {
        for(i=0; i<17; i++)
        {
            q=new xuanshou;
            infile>>q->name>>q->num>>q->zijie>>q->sex>>q->piaoshu;
            q->next=NULL;
            j=h(q->num);
            if(ht[j].link==NULL)
            {
                ht[j].link=q;
            }
            else
            {
                q->next=ht[j].link;
                ht[j].link=q;
            }
            infile.get();

        }
    }
    infile.close();
}
/*********************************************************
* 功能描述: 哈希函数-建立哈希表
* 输入参数: xs[]-选手信息
              ht[]-指针数组
              n-需要储存的个数
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
************************************************************/
void hash(xuanshou xs[],xuanshoulist ht[],int n)
{
    int i,j; //i是计数器,j是制定存储位置的
    xuanshou *q;
    for(i=0; i<n; i++)
    {

        q=new xuanshou;
        q->name=xs[i].name;
        q->num=xs[i].num;
        q->zijie=xs[i].zijie;
        q->sex=xs[i].sex;
        q->piaoshu=xs[i].piaoshu;
        q->next=NULL;
        j=h(xs[i].num);
        if(ht[j].link==NULL)
        {
            ht[j].link=q;
        }
        else
        {
            q->next=ht[j].link;
            ht[j].link=q;
        }
    }
    cunpan(xinxi);
}

/*********************************************************
* 功能描述: 输出函数,显示选手信息
* 输入参数: ht[]-指针数组
* 输出参数: p->num-选手的序号
              p->name->选手的名字
              p->sex->选手的性别
              p->zijie->选手的自我介绍
* 返回值  : 无
* 其它说明: 无
************************************************************/
int DispHT(xuanshoulist ht[])
{
    int i,j=1,k=0;
    xuanshou *p;
    for(i=0; i<17; i++)
    {
        p=ht[i].link;
        if(p==NULL)
            k++;
        while(p!=NULL)
        {
            cout<<j;
            cout<<"学号:"<<p->num;
            cout<<" 姓名:"<<p->name;
            cout<<" 性别:"<<p->sex;
            cout<<" 自我介绍:"<<p->zijie;
            p=p->next;
            cout<<endl;
            j++;
        }
    }
    if(k==17)
    {
        cout<<"管理员未在此系统中登入信息。"<<endl;
        return 1;
    }
	return 0;
}
/*********************************************************
* 功能描述: 初始化-将选手信息录入系统
* 输入参数: xs[]-选手信息
              xinxi[]-指针数组
              n-需要储存的个数
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
************************************************************/
void chushihua()
{
    int n,cuowu;//n人数
    int yanzheng;
    int i=0;
    xuanshou xs[100];
    xuanshoulist a;
    cout<<"请输入您想录入的人数"<<endl;
    cin>>n;
    while(i<n)
    {
        cout<<"学号"<<endl;
        cin>>xs[i].num;
        yanzheng=h(xs[i].num);
        a.link=xinxi[yanzheng].link;
        while(a.link!=NULL)
        {
            if(a.link->num==xs[i].num)
            {
                cout<<"您输入的选手已录入系统"<<endl;
                cout<<"如果想更改选手的信息请按1,重新初始化请按0"<<endl;
                cin>>cuowu;
                if(cuowu==1)
                {
                    genggai();
                }
                else if(cuowu==0)
                {
                    chushihua();
                    root(1);
                }
            }
            a.link=a.link->next;
        }
        cout<<"请输入姓名";
        cin>>xs[i].name;

        cout<<"请输入性别"<<endl;
        cin>>xs[i].sex;

        cout<<"请输入自我介绍"<<endl;
        cin>>xs[i].zijie;
        i++;
    }
    hash(xs,xinxi,n);
}
/*********************************************************
* 功能描述: 查看选手信息
* 输入参数: xinxi[]-指针数组
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
************************************************************/
void chakanxinxi() //查看选手信息
{
    DispHT(xinxi);
}
/*********************************************************
* 功能描述: 给选手投票
* 输入参数: n-选手序号
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
************************************************************/
void toupiao() //投票
{
    int n,m;
    xuanshoulist a;
    int k=DispHT(xinxi);
    if(k==1)
    {

    }
    else
    {
        if(log[dangqian].cishu!=0)
        {
            cout<<"按照学生的学号进行投票"<<endl;
            cin>>n;
            m=h(n);
            a=xinxi[m];
            while(a.link!=NULL)
            {
                if(a.link->num==n)
                {
                    a.link->piaoshu++;
                    log[dangqian].cishu=0;
                    break;
                }
                else
                    a.link=a.link->next;
            }
        }
        else
        {
            cout<<"您的投票次数已经用完!"<<endl;
        }
        cunpan(xinxi);
    }
}
/*********************************************************
* 功能描述: 管理员函数
* 输入参数: n-选手序号
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
************************************************************/
void root(int a) //管理员
{
    int xuanxiang;
    if(a==0)
        rootmima();
    Sleep(2000);
    system("cls");
    system("Color 06");
    while(1)
    {
        cout<<"请输入选项:"<<endl;
        cout<<"请输入您想使用的功能:"<<endl;
        cout<<"1.初始化选手信息"<<endl;
        cout<<"2.浏览候选人简介"<<endl;
        cout<<"3.修改候选人简介"<<endl;
        cout<<"4.查看当前投票情况"<<endl;
        cout<<"5.清除所有信息"<<endl;
        cout<<"6.返回上一层"<<endl;
        cout<<"7.修改投票人的信息"<<endl;
        cout<<"请输入您的选择:";
        cin>>xuanxiang;
        switch(xuanxiang)
        {

        case 1:
            chushihua();
            break;
        case 2:
            chakanxinxi();
            break;
        case 3:
            genggai();
            break;
        case 4:
            qingkuang(xinxi);
            break;
        case 5:
            qingchu();
            break;
        case 6:
            fanhui();
            break;
        case 7:
            genggai2();
            break;

        }
    }
}
/*********************************************************
* 功能描述: 管理员密码管理
* 输入参数: mima-用户输入的密码
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
************************************************************/
void rootmima()
{
    string mima;
    int i=3;
    cout<<"请输入密码:";
    while(i>=0)
    {
        cin>>mima;
        if(mima=="admin")
        {   
			cout<<"密码正确\n";
			Sleep(1000);
			cout<<"您将作为管理员登陆,即将进入管理员界面,请稍候……";
            
            break;
        }
        else
        {
            cout<<"密码输入错误,您还有"<<i<<"次机会(如果错误三次将会冻结)";
            i--;
        }
    }
}
/*********************************************************
* 功能描述: 管理员更改选手信息
* 输入参数: xuhao-选手的序号
              n-更改的项目序号
              na-临时变量可代表名字,性别,自我介绍。
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
************************************************************/
void genggai()
{
    int xuhao; //选择序号
    DispHT(xinxi);
    cout<<"请输入需要更改的选手的学号:";
    cin>>xuhao;
    int n,m,p;  //m为哈希表临时变量,n为更改选项
    xuanshoulist a;  //指针数组临时变量
    string na;  //字符串临时变量
    m=h(xuhao);
    a=xinxi[m];
    while(a.link!=NULL)
    {
        if(a.link->num==xuhao)
        {
            break;
        }
        else
            a.link=a.link->next;
    }


    cout<<"1.请输入新的姓名"<<endl;
    cout<<"2.请输入新的性别"<<endl;
    cout<<"3.请输入新的自我介绍"<<endl;
    cout<<"请输入需要更改的项目:";
    cin>>n;
    switch(n)
    {
    case 1:
    {
        cout<<"请输入新的名字:";
        cin>>na;
        a.link->name=na;
    }
    break;
    case 2:
    {
        cout<<"请输入新的性别:";
        cin>>na;
        a.link->sex=na;
    }
    break;

    case 3:
    {
        cout<<"请输入新的自我介绍:";
        cin>>na;
        cout<<"如果想全部修改请按1,插入到后边请按2.";
        cin>>p;
        if(p==1)
            a.link->zijie=na;
        else if(p==2)
        {
            a.link->zijie=a.link->zijie+na;
        }

    }
    break;
    }
}
/*********************************************************
* 功能描述: 管理员清除选手信息
* 输入参数: 无
* 输出参数: 无
* 返回值  : 无
* 其它说明: 删除系统中储存文件,释放内存中的空间。
************************************************************/
void qingchu()
{

    int i,j=1;
    xuanshou *p=NULL;
    xuanshou *q=NULL;

    for(i=0; i<17; i++)
    {

        p=xinxi[i].link;
        if(p!=NULL)
        {
            q=p;
            p=p->next;
        }
        while(p!=NULL)
        {
            delete q;
            q=p;
            p=p->next;


        }
        if(p==NULL&&q!=NULL)
        {
            delete q;
            q=NULL;
        }
    }
    DeleteFile("f1.dat");
    zhizhenchushihua();
}
/*********************************************************
* 功能描述: 管理员选手信息
* 输入参数: 无
* 输出参数: 无
* 返回值  : 无
* 其它说明: 将指针数组置为NULL。
************************************************************/
void zhizhenchushihua()
{
    int i;
    for(i=0; i<17; i++)
    {
        xinxi[i].link=NULL;
    }
}
/*********************************************************
* 功能描述: 管理员查看选手票数排名
* 输入参数: k- 1全部输出(排序)
               - 2指定输出
              ht-指针数组
* 输出参数: p->num-选手的序号
              p->name->选手的名字
              p->sex->选手的性别
              p->zijie->选手的自我介绍
* 返回值  : 无
* 其它说明: 无
************************************************************/
void qingkuang(xuanshoulist *ht)
{

    int i,j=0,k;//k为选择全部输出还是单个输出
    xuanshou *p;
    xuanshou a[100];
    for(i=0; i<17; i++)
    {
        p=ht[i].link;
        while(p!=NULL)
        {
            a[j].num=p->num;
            a[j].name=p->name;
            a[j].sex=p->sex;
            a[j].zijie=p->zijie;
            a[j].piaoshu=p->piaoshu;
            p=p->next;
            j++;
        }

    }
    xierpaixu(a,j);
    i=j-1;
    cout<<"查看所有选手的排名请按1,查看某位选手的排名及票数请按2."<<endl;
    cin>>k;
    if(k==1)
    {
        while(i>=0)
        {
            cout<<"学号:"<<a[i].num<<endl;
            cout<<endl;
            cout<<"姓名:"<<a[i].name<<endl;
            cout<<endl;
            cout<<"性别:"<<a[i].sex<<endl;
            cout<<endl;
            cout<<"票数:"<<a[i].piaoshu<<endl;

            i--;
        }
    }
    else if(k==2)
    {
        cout<<"请输入选手的学号"<<endl;
        cin>>k;
        int t=h(k);
        xuanshoulist a;
        a=xinxi[t];
        while(a.link!=NULL)
        {
            if(a.link->num==k)
            {
                cout<<"学号:"<<a.link->num<<endl;
                cout<<"姓名:"<<a.link->name<<endl;
                cout<<"性别:"<<a.link->sex<<endl;
                cout<<"票数:"<<a.link->piaoshu<<endl;
                break;

            }
            else
            {
                a.link=a.link->next;
            }

        }

    }
}
/*********************************************************
* 功能描述: 排序 希尔排序
* 输入参数:  R[] -选手信息
              n - 选手个数
* 输出参数: 无
* 返回值  : 无
* 其它说明: 将链表中的数据读入数组进行排序
************************************************************/
void xierpaixu(xuanshou R[],int n)   //希尔排序
{
    int i,j,gap;
    xuanshou tmp;
    gap=n/2;                //增量置初值
    while (gap>0)
    {
        for (i=gap; i<n; i++) //对所有相隔gap位置的所有元素组进行排序
        {
            tmp=R[i];
            j=i-gap;
            while (j>=0 && tmp.piaoshu<R[j].piaoshu)//对相隔gap位置的元素组进行排序
            {
                R[j+gap]=R[j];
                j=j-gap;
            }
            R[j+gap]=tmp;
            j=j-gap;
        }
        gap=gap/2;  //减小增量
    }
}
/*********************************************************
* 功能描述: 从root界面返回一般界面
* 输入参数: 无
* 输出参数: 无
* 返回值  : 无
* 其它说明: 清屏并调用欢迎界面
************************************************************/
void fanhui()
{
    system("cls");
    login();

}
/*********************************************************
* 功能描述: 用户欢迎界面
* 输入参数: xuanze- 用户的功能输入选择
* 输出参数: 无
* 返回值  : 无
* 其它说明: 输出功能选项并执行相应的功能
************************************************************/
void zhuhuanying()
{
    int xuanze;//选项号
    system("cls");
    system("color 1A");

    while(1)
    {
        system("color F0");
        cout<<"                       "<<log[dangqian].name<<"同学欢迎使用学生投票系统!"<<endl;
        cout<<"********************************************************************************"<<endl;
        cout<<"				请输入您想使用的功能:"<<endl;
        cout<<"				1.查看候选人的介绍。 "<<endl;
        cout<<"				2.投票。"<<endl;
        cout<<"				6.注销当前用户"<<endl;
        cout<<"				8.管理员选项(非管理员勿动!)"<<endl;
        cout<<"				0.退出。"<<endl;
        cout<<"********************************************************************************"<<endl;
        cout<<"				请输入您的选择:";
        cin>>xuanze;


        if(xuanze==0)
        {
            cunpan(xinxi);
            cunpan2(log);
            exit(1);
        }
        switch(xuanze)
        {

        case 1:
            chakanxinxi();
            break;
        case 2:
            toupiao();
            break;
        case 6:
            zhuxiao();
            break;
        case 8:
            root(0);
            break;
        }
    }
}
/*********************************************************
* 功能描述: 用户登录界面
* 输入参数: a -用户名
              t -密码
              k -选项
* 输出参数: 无
* 返回值  : 无
* 其它说明: 输出功能选项并执行相应的功能
************************************************************/
void login()
{
    string a; //用户名
    int t; //密码
    int k;//临时变量
    int i=0;//计数器
    cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;
    cout<<"□			                                          □"<<endl;
    cout<<"□		     ●	                    ●                    □"<<endl;
	cout<<"□			                                          □"<<endl;
	cout<<"□		    	欢迎使用学生投票系统!		       	  □"<<endl;
    cout<<"□			    登陆请按1,注册请按8                  □"<<endl;
    cout<<"□			                                          □"<<endl;
	cout<<"□			                                          □"<<endl;
    cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl;
    cout<<"			请输入您的选择:     ";
    cin>>k;
    if(k==1)
    {
        while(1)
        {
            cout<<"			请输入您的用户名:";
            cin>>a;
            if(a=="admin")
            {
                rootmima();
                root(1);
            }
            cout<<"			请输入密码:";
            cin>>t;
            while(i<100)
            {
                if(log[i].name==a)
                {
                    break;
                }
                i++;
            }
            dangqian=i;
            if(i==100)
            {
                cout<<"			用户名不存在"<<endl;
                i=0;
            }
            else if(i<=100&&log[i].mima!=t)
                cout<<"			密码错误"<<endl;
            else break;
        }
    }
    else if(k==8)
    {
        zhuce();
        
    }
    system("cls");
    if(log[dangqian].quanxian==1)
    {
        root(1);
    }
}
/*********************************************************
* 功能描述: 实现进度条函数
* 输入参数: 无
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
************************************************************/
void jindutiao()
{



	std::cout << "\n正在跳转界面,请稍候...... ";
		for( int i=0; i <= 100; i++ )      // 打印百分比 
		{
			std::cout.width(3);//i的输出为3位宽
			std::cout << i << "%";
			Sleep(50);
			std::cout << "\b\b\b\b";//回删三个字符,使数字在原地变化
		}
		std::cout << "\n\n";
	system("pause");
}


/*********************************************************
* 功能描述: 用户注册界面
* 输入参数: log[renshu].name -用户名
              i -重复密码
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
************************************************************/
void zhuce()
{
    int i;
    cout<<"请输入您的姓名:"<<endl;
    cin>>log[renshu].name;
    cout<<"请输入您的学号:"<<endl;
    cin>>log[renshu].num;
    while(1)
    {
        cout<<"请输入您的密码:"<<endl;
        cin>>log[renshu].mima;
        cout<<"请再输入您的密码:"<<endl;
        cin>>i;
        if(i==log[renshu].mima)
        {
            cout<<"注册成功!正在跳转。"<<endl;
			jindutiao();
            cout<<log[renshu].cishu<<' '<<log[renshu].quanxian;
            Sleep(1000);
            dangqian=renshu;
            renshu++;
			zhuhuanying();
            break;
        }
        else
            cout<<"两次密码不一致,请重新输入"<<endl;
    }
    cunpan2(log);
}
/*********************************************************
* 功能描述: 读取投票者信息
* 输入参数: 无
* 输出参数: log[]-用户信息
* 返回值  : 无
* 其它说明: 无
************************************************************/
void duqu2(toupiaozhe log[])
{
    int i;
    ifstream in1("f2.txt",ios::binary);
    if(!in1)
    {
        cout<<"该系统中还未有用户注册"<<endl;
    }
    else
    {
        i=0;
        while(in1.peek()!= EOF)
        {
            in1>>log[i].name>>log[i].mima>>log[i].cishu>>log[i].quanxian>>log[i].num;
            i++;
            in1.get();
        }
        renshu=i-1;
        in1.close();
    }
}
/*********************************************************
* 功能描述: 存储投票者信息
* 输入参数: log[]-用户信息
* 输出参数: 无
* 返回值  : 无
* 其它说明: 无
************************************************************/
void cunpan2(toupiaozhe log[])
{
    int i;
    ofstream out1("f2.txt",ios::binary);
    if(!out1)
    {
        exit(1);
    }
    i=0;
    while(i<renshu)
    {
        out1<<log[i].name<<' '<<log[i].mima<<' '<<log[i].cishu<<' '<<log[i].quanxian<<' '<<log[i].num;
        out1<<"\r\n";
        i++;
    }
    out1.close();
}
/*********************************************************
* 功能描述: 用户注销
* 输入参数: 无
* 输出参数: 无
* 返回值  : 无
* 其它说明: 用户通过该模块可以登录别的账号
************************************************************/
void zhuxiao()
{
    cout<<"你确定要注销?(y/n)";
    char n;
    cin>>n;
    if(n=='y')
    {
        system("Color 0A");
        system("cls");
        login();
    }
    else
    {
        system("cls");
        zhuhuanying();
    }
}
/*********************************************************
* 功能描述: 更改投票者的信息
* 输入参数: k-临时变量(int)
              a-临时变量(string)
* 输出参数: 无
* 返回值  : 无
* 其它说明: 管理员可以更改投票者的信息
************************************************************/
void genggai2()
{
    int i=0,j=0;
    int t,k;
    string a;
    while(1)
    {
        cout<<"请输入您要更改的投票人的序号";
        cin>>t;
        while(i<100)
        {
            if(log[i].num==t)
            {
                break;
            }
            i++;
        }
        if(i==100)
        {
            cout<<"您输入的学号有误请重新输入"<<endl;
        }
        else
        {
            cout<<"请输入需要修改的项目"<<endl;
            cout<<"1. 姓名"<<endl;
            cout<<"2. 密码"<<endl;
            cout<<"3. 学号"<<endl;
            cout<<"4. 权限"<<endl;
            cin>>t;
            if(t==1)
            {
                cout<<"请输入您要修改的名字"<<endl;
                cin>>a;
                log[i].name=a;
                break;
            }
            else if(t==2)
            {
                cout<<"请输入您要修改的密码"<<endl;
                cin>>k;
                log[i].mima=k;
                break;
            }
            else if(t==3)
            {
                cout<<"请输入您要修改的次数"<<endl;
                cin>>k;
                log[i].cishu=k;
                break;
            }
            else if(t==4)
            {
                cout<<"请输入您要修改的权限"<<endl;
                cin>>k;
                log[i].quanxian=k;
                break;
            }
        }
    }
}


运行结果:

(1)登录界面



(2)初始化候选人信息


(3)浏览候选人简介


(4)修改候选人简介


修改结果:



(5)用户注册


(6)查看候选人介绍



(7)不同投票者进行投票






(8)查看投票情况




(9)修改投票人的信息



(10)清除所有信息



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值