电子投票系统
院 (系)离婚协议怎么写:信息工程系
专 业写景色的作文:计算机科学与技术
班 级:5173002142
团队成员:
(1)姓名:来紫祥 学号:5173****4214
(2)姓名:王泽峰 学号:5173****4229
(3)姓名:石凤丽 学号:5173****4225
(4)姓名:陈 阳 学号:5173****4204
(5)姓名:贺天浩 学号:5*********09
(6)姓名:胡 成 学号:5173****4210
(7)姓名:胡伊童 学号:5鲜的四字词语173****4211
*******
所在单位:湖北工程学院新技术学院
课程设计时间:2019年5月1日至5月18日
1.需求分析
1.1问题描述
投票是选举的一种表现形式,但是较电子投票来说,纸质投票方式相对复杂。电子投票系统以文件的方式保存候选人信息和用户信息,并提供投票和查询功能供用户查询和使用投票系统。下面介绍用C语言实现的简易电子投票系统,它支持基本的用户的投票、查找、浏览功能,管理员的删除、查找、排序、新建候选人和用户功能,以及系统自带的文件读写功能。
1.2功能描述
电子投票系统要求实现最基本的功能,用户的投票、查找、浏览功能以及管理员的删除、查找、排序、新建候选人和用户功能,为此需要首先定义两个数据结构。其一是候选人,基本属性包括编号、姓名、简介和票数;其二是用户,基本属性包括账号、密码和权限。
整个系统由如下几大功能模块组成。
投票人主要功能如下:
(1)投票人的投票方式:在系统提示符下输入要选举的选人编号,即可完成投票。
(2)投票人了解候选人的方式:浏览候选人列表、输入序号查询候选人介绍。
管理员的主要功能如下;
(1)初始候选人信息:在系统投入使用前需要将投票选举的候选人信息录入系统中,以便投票和查看。管理员的初始化工作就是将候选人的序号、姓名和简介录入系统。
(2)塞下曲其二卢纶浏览候选人简介:为随时掌握候选人的信息,以便进行修改,管理员有权浏览候选人简介。浏览的顺序按照候选人序号即可。
(3)修改候选人简介:当系统更新或候选人信息有所变化时,输入候选人序号对其信息进行修改。
(4)查询投票情况:管理员有权查询当前各个候选人得票情况,以便得出最终被选出的候选人信息。
(5)清除投票信息:当投票工程结束后,管理员选择清除投票信息即清除系统中所有候选人的票数,使之归零。
(6)安全管理:管理员可以对投票人进行管理,投票人只有用管理员规定的用户名和密码才能进入系统进行投票。管理员还可以更改用户名、密码和权限,并对投票人信息进行增加、删除、查询、排序和初始化等操作。
2.总体设计
程序主要包括三大模块:输入/输出模块、管理模块和文件操作模块。输入/输出模块的主要功能是人机交互,包括程序界面显示、用户输入响应、结果输出等;管理模块从输入/输出模块读取用户命令并进行相应的操作,包括录入、删除、修改、查找、排序等;文件操作
模块获取管理模块中的数据或命令,然后进行存储文件的读写,如图 01所示。
图 01电子投票系统流程图
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;
电子投票系统中用户信息用结构体ur表示,包含三个属性。account、password、power分别代表用户的账号、密码和权限。struct ur *next表示单链表的指针域。
形容人外貌的四字词语typedef struct ur
{
char account[20];
char password[17];
海棠寓意
int power;
struct ur *next;
} ur;
4.2功能函数设计
电子投票系统采用了 结构化设计的思想,程序中除了主函数外,共设计了28个函数。
(1)void WelcomePage()
功能:显示欢迎界面。
(2)void End_Page();
功能:显示结束界面。
(3)void AdminPage();
功能:显示管理员界面。
(4)void VoterPage();
功能:显示用户(投票者)界面。
(5)void CreateCandidate();
功能:创建候选人。
(6)void CreatUr();
功能:创建用户。
(7)void QueryCandidateInfo();
功能:查询候选人信息。
(8)void BrowCandidateInfo();
功能:浏览全部候选人信息。
(9)void DisplayCandidateInfo(candidate *p);
功能:展示单个候选人信息。
(10)夏的古诗void DisplayUrInfo(ur *p);
功能:展示单个用户信息。
(11)void BrowUrInfo();
功能:浏览全部用户信息。
(12)void Vote();
功能:用户投票。
(13)void ReadCandidateInfo();
功能:读取候选人信息。
(14)void SaveCandidateInfo();
功能:存储候选人信息。
(15)void SaveUrInfo();辛亥百年
功能:存储用户信息。
(16)int peek(FILE *fp);
功能:预读取文件的下一个字节(用来判断文件是否到达结尾。
(17) void Initialization();
功能:初始化,加载候选人数据,加载用户数据。
(18) void ShowVotingSituation();
功能:显示投票情况
(19) void ReadUrInfo();