电子投票系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

功能:根据账号搜索用户信息并返回指向该用户的指针,没该用户信息则返回空

相关文档
最新文档