电子投票系统院(系):信息工程系专业:计算机科学与技术班级:5173002142团队成员:1)姓名:来紫祥学号:5173002142142)姓名:王泽峰学号:5173002142293)姓名:石凤丽学号:5173002142254)姓名:陈阳学号:5173002142045)姓名:贺天浩学号:5173002142096)姓名:胡成学号:5173002142107)姓名:胡伊童学号: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分别代表候选人的姓名、简介、票数。structCandidate*next表示单链表的指针域。typedefstructcandidate{longnumber;charname[20];charintro[400];intvote;structcandidate*next;}candidate;电子投票系统中用户信息用结构体user表示,包含三个属性°account、password、power分别代表用户的账号、密码和权限。structuser*next表示单链表的指针域。typedefstructuser{characcount[20];charpassword[17];intpower;structuser*next;}user;4.2功能函数设计电子投票系统采用了结构化设计的思想,程序中除了主函数外,共设计了28个函数。(1)voidWelcomePage()功能:显示欢迎界面。(2)voidEnd_Page();功能:显示结束界面。(3)voidAdminPage();功能:显示管理员界面。(4)voidVoterPage();功能:显示用户(投票者)界面。(5)voidCreateCandidate();功能:创建候选人。(6)voidCreatUser();功能:创建用户。(7)voidQueryCandidateInfo();功能:查询候选人信息。(8)voidBrowseCandidateInfo();功...