电子投票系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子投票系统
院(系):信息工程系
专业:计算机科学与技术
班级:5173002142
团队成员:
(1)姓名:来紫祥学号:517300214214 (2)姓名:王泽峰学号:517300214229 (3)姓名:石凤丽学号:517300214225 (4)姓名:陈阳学号:517300214204 (5)姓名:贺天浩学号:517300214209 (6)姓名:胡成学号:517300214210 (7)姓名:胡伊童学号:517300214211
指导老师:杜君
所在单位:湖北工程学院新技术学院
课程设计时间:2019年5月1日至5月18日
1.需求分析
1.1问题描述
投票是选举的一种表现形式,但是较电子投票来说,纸质投票方式相对复杂。电子投票系统以文件的方式保存候选人信息和用户信息,并提供投票和查询功能供用户查询和使用投票系统。下面介绍用C语言实现的简易电子投票系统,它支持基本的用户的投票、查找、浏览功能,管理员的删除、查找、排序、新建候选人和用户功能,以及系统自带的文件读写功能。
1.2功能描述
电子投票系统要求实现最基本的功能,用户的投票、查找、浏览功能以及管理员的删除、查找、排序、新建候选人和用户功能,为此需要首先定义两个数据结构。其一是候选人,基本属性包括编号、姓名、简介和票数;其二是用户,基本属性包括账号、密码和权限。
整个系统由如下几大功能模块组成。
投票人主要功能如下:
(1)投票人的投票方式:在系统提示符下输入要选举的选人编号,即可完成投票。(2)投票人了解候选人的方式:浏览候选人列表、输入序号查询候选人介绍。
管理员的主要功能如下;
(1)初始候选人信息:在系统投入使用前需要将投票选举的候选人信息录入系统中,以便投票和查看。管理员的初始化工作就是将候选人的序号、姓名和简介录入系统。(2)浏览候选人简介:为随时掌握候选人的信息,以便进行修改,管理员有权浏览候选人简介。浏览的顺序按照候选人序号即可。
(3)修改候选人简介:当系统更新或候选人信息有所变化时,输入候选人序号对其信息进行修改。
(4)查询投票情况:管理员有权查询当前各个候选人得票情况,以便得出最终被选出的候选人信息。
(5)清除投票信息:当投票工程结束后,管理员选择清除投票信息即清除系统中所有候选人的票数,使之归零。
(6)安全管理:管理员可以对投票人进行管理,投票人只有用管理员规定的用户名和密码才能进入系统进行投票。管理员还可以更改用户名、密码和权限,并对投票人信
息进行增加、删除、查询、排序和初始化等操作。
2.总体设计
程序主要包括三大模块:输入/输出模块、管理模块和文件操作模块。输入/输出模块的主要功能是人机交互,包括程序界面显示、用户输入响应、结果输出等;管理模块从输入/输出模块读取用户命令并进行相应的操作,包括录入、删除、修改、查找、排序等;文件操作模块获取管理模块中的数据或命令,然后进行存储文件的读写,如图 0-1所示。
图 0-1电子投票系统流程图
3.界面设计
程序的主界面是一个文本方式的菜单,用户通过键盘输入数字,选取相应的操作命令。
4.详细设计
4.1重要数据结构设计
电子投票系统中候选人信息用结构体candidate表示,包含四个属性。number属性是候选人的唯一编号,name、intro、vote分别代表候选人的姓名、简介、票数。struct candidate *next表示单链表的指针域。
typedef struct candidate
{
long number;
char name[20];
char intro[400];
int vote;
struct candidate *next;
} candidate;
电子投票系统中用户信息用结构体user表示,包含三个属性。account、password、power 分别代表用户的账号、密码和权限。struct user *next表示单链表的指针域。
typedef struct user
{
char account[20];
char password[17];
int power;
struct user *next;
} user;
4.2功能函数设计
电子投票系统采用了结构化设计的思想,程序中除了主函数外,共设计了28个函数。(1)void WelcomePage()
功能:显示欢迎界面。
(2)void End_Page();
功能:显示结束界面。
(3)void AdminPage();
功能:显示管理员界面。
(4)void VoterPage();
功能:显示用户(投票者)界面。
(5)void CreateCandidate();
功能:创建候选人。
(6)void CreatUser();
功能:创建用户。
(7)void QueryCandidateInfo();
功能:查询候选人信息。
(8)void BrowseCandidateInfo();
功能:浏览全部候选人信息。
(9)void DisplayCandidateInfo(candidate *p);
功能:展示单个候选人信息。
(10) void DisplayUserInfo(user *p);
功能:展示单个用户信息。
(11) void BrowseUserInfo();
功能:浏览全部用户信息。
(12) void Vote();
功能:用户投票。
(13) void ReadCandidateInfo();
功能:读取候选人信息。
(14) void SaveCandidateInfo();
功能:存储候选人信息。
(15) void SaveUserInfo();
功能:存储用户信息。
(16) int peek(FILE *fp);
功能:预读取文件的下一个字节(用来判断文件是否到达结尾。
(17) void Initialization();
功能:初始化,加载候选人数据,加载用户数据。
(18) void ShowVotingSituation();
功能:显示投票情况
(19) void ReadUserInfo();
功能:从文件读取用户信息
(20) void CandidateSort();
功能:按票数从高到低列出所有数据
(21) void UserLogin();
功能:用户登陆
(22) void ModifyCandidateInfo();
功能:修改投票人信息
(23) user * SearchUser(char *account);
功能:根据账号搜索用户信息并返回指向该用户的指针,没该用户信息则返回空