电子投票系统C语言课程设计-广东工业大学_第1页
电子投票系统C语言课程设计-广东工业大学_第2页
电子投票系统C语言课程设计-广东工业大学_第3页
电子投票系统C语言课程设计-广东工业大学_第4页
电子投票系统C语言课程设计-广东工业大学_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计报告课程设计报告 一 需求分析 1 设计题目 电子投票系统 2 设计内容及要求 1 通过编程建立一个小型电子投票系统 其中包含电子投票 票数统计 功能 尽量做到提供一个简单的人机界面 系统界面友好 使用方便 2 软件的使用者分为两类 一类为管理员 可以对候选人信息进行初始 化和修改 还可浏览候选人信息介绍 可对候选人的票数进行排序以及对系统 的用户进行管理 创建使用者用户名和密码等 另一类为使用者 普通投票者 该类用户需要用管理员分配的用户名和密码正确登录系统 可以查询候选人介 绍 投票等 投票是只需做到输入自己想要投票的候选人编号即可完成投票 3 系统功能分析 本系统程序功能 1 投票者功能 a 浏览所有候选人资料 b 查询要了解的候选人的信息 c 在了解候选人之后进行投票 2 管理员功能 a 创建新的候选人资料 b 创建新的用户资料 c 查询要了解的候选人资料 d 浏览所有的候选人资料 e 对候选人票数进行统计并排序 二 具体设计 1 功能模块 1 开始运行与结束运行界面模块 开始运行显示有 电子投票系统 字样的界面 结束运行时则输出显示 感谢参与 再见 字样的界面 2 功能选择模块 根据输入的用户名和密码 分别进入管理员界面和投票者界面 3 身份验证模块 验证管理员和投票者的用户名和密码是否正确 不正确可选择重新输入用 户名和密码或者退出 4 投票人管理模块 实现对投票人的管理功能 如创建投票人用户名和密码 主要用结构体类 型的数组和文件的读写来完成数据的管理操作 5 候选人管理模块 同投票人管理模块类似 要实现对大量有一定结构的信息进行管理的操作 如创建候选人 查询 浏览候选人信息 因此定义候选人信息结构体 用于存 储候选人信息记录 并且将大量记录存储在硬盘文件中以便保存 用文件的读 写函数实现各项功能 6 投票区模块 投票区模块用于完成系统的主体功能 提示投票人输入自己想要选举的候 选人序号 系统立刻将该候选人对应的票数加一 并将目前的投票状况显示给 投票人 因此该部分只需读取候选人信息文件 将对应的候选人票数加一后再 写回文件并显示即可 7 票数管理模块 该模块具有对候选人票数进行排行和浏览两大功能 2 程序流程图 三 源程序代码 include include include include include define closegr closegraph define N 30 void welcome 欢迎 void thans 再见 void main a 管理员主控平台 void main v 用户 投票者 主控平台 void create 创建候选人 void CreatUser 创建用户 void search 查询候选人信息 void browse 浏览候选人信息 void vote 用户投票 void read c man 读取候选人信息 void c save 存储候选人信息 int total 0 c total 0 int i 0 候选人信息数据结构 描述候选人的编号 姓名 简介和得票数量信息 作为候选人信息记录存在文 件中 typedef struct candidate long number char name 20 char intro 400 int vote candidate 系统用户数据结构 描述系统用户编号 用户名 密码和权限信息 作为一整条记录存放在文件中 typedef struct user char name 20 char ps 8 int power user candidate c man N user total user N void read c man char DataFile 20 候选人 txt FILE fp NULL c total 0 fp fopen DataFile rb if fp NULL printf nOpen file s fail End With any key n DataFile perror Open file fail getch exit 1 while fread fclose fp void c save FILE fp NULL char DataFile 20 候选人 txt 存储投票人信息的文件名 fp fopen DataFile wb for i 0 i c total i if fwrite perror write file fail getch exit 1 void byebye thans void vote long candidatenum 定义进行操作时的临时结构体变量 int i flag char DataFile 20 候选人 txt next DataFile 存储候选人信息的文件名 next 为是否进行下一次投标操作 的选项 candidate TempS FILE fp begin flag 0 flag 用来标志是否找对应编号 即投票是否成功 read c man printf 请输入您要投票的候选人的号码 scanf ld printf 您所投票的候选人号码是 ld n candidatenum for i 0 i c total i if c man i number candidatenum flag 1 c man i vote if flag printf 投票成功 n fp fopen DataFile wb 如果当前文件不存在 提示打开文件失败 if fp NULL printf nOpen file is fail End with any key n DataFile perror Open file fail getch exit 1 for i 0 i c total i fwrite fclose fp else printf 投票失败 您要投票的号码不存在 n printf 按任意键返回首页 n getch return 显示投票后的情况 fp fopen DataFile rb if fp NULL printf nOpen file s fail End With any key n DataFile perror Open file fail getch exit 1 printf 整理后的最新投票情况 n printf n 候选人号码 t 候选人姓名 t 票数 n 将文件中的数据读入结构体数组 while fread fclose fp printf n 继续吗 是 Y 否 N fflush stdin next getchar putchar n if next y next Y goto begin 创建用户信息 void CreatUser FILE fp NULL char DataFile 20 用户 txt 存储投票人信息的文件名 user TempS int over flag 0 char c 读入原始数据 用于检查输入是否有重复 fp fopen DataFile rb if fp NULL printf nOpen file s fail End With any key n DataFile perror Open file fail getch exit 1 while fread fclose fp fp fopen DataFile ab clrscr do clrscr printf 创建新用户 gotoxy 23 3 printf 请输入 gotoxy 30 5 printf 用户名 scanf s TempS name 19 0 检查输入姓名是否有重复 for i 0 i total i if strcmp TempS name total user i name 0 printf 该用户名已存在 按任意键浏览所有用户 getch over flag 1 break if over flag over flag 0 continue gotoxy 30 6 printf 密码 scanf s TempS ps 7 0 gotoxy 30 7 printf 权限 scanf d if TempS power 1 TempS power 0 将数据加入原始数据 用于下一次输入比较 total user total TempS total if fwrite perror write file fail getch exit 1 printf 要继续创建新用户吗 是 Y 否 N getchar c getchar while c Y c y fclose fp 在屏幕上显示文件内容 printf 用户资料数据处理完毕 n DataFile printf 所有用户具体情况如下 n fp fopen DataFile rb printf if fp NULL printf nOpen file is fail End With any key n DataFile perror Open file fail getch exit 1 printf n 姓名 t t 密码 t t 权限 n while fread fclose fp printf printf n 按任意键返回首页 getch void create char DataFile 20 候选人 txt FILE fp NULL char c int over flag 0 candidate TempS clrscr read c man fp fopen DataFile ab do clrscr printf 创建新候选人 gotoxy 22 3 printf 请输入 gotoxy 29 5 printf 候选人号码 scanf ld 检查输入编号是否有重复 for i 0 i c total i if TempS number c man i number printf 该号码已存在 按任意键浏览所有候选人 getch over flag 1 break if over flag over flag 0 continue gotoxy 27 6 printf 姓名 scanf s TempS name 19 0 for i 0 i c total i if strcmp TempS name c man i name 0 printf 该姓名已存在 请再输入一次 按任意键继续 getch over flag 1 break if over flag over flag 0 continue gotoxy 27 7 printf 简介 fflush stdin gets TempS intro TempS intro 399 0 TempS vote 0 将数据加入原始数据 用于下一次输入比较 c man c total TempS c total if fwrite perror write file fail getch exit 1 printf 要继续创建新的候选人吗 是 Y 否 N fflush stdin c getchar while c Y c y fclose fp 在屏幕上显示文件内容 clrscr printf 候选人资料 n printf fp fopen DataFile rb if fp NULL printf nOpen file s fail End With any key n DataFile perror Open file fail getch exit 1 while fread fclose fp printf n printf n 按任意键返回首页 getch void browse 浏览候选人信息 read c man clrscr 清屏 printf 候选人资料 n printf n for i 0 i c total i printf 号码 15ld c man i number printf 姓名 19s c man i name printf 简介 s n c man i intro printf printf n 按任意键返回首页 getch void search 查询候选人信息 char c long number int flag 0 read c man do clrscr printf n t 请输入要查询的候选人号码 scanf ld for i 0 i c total i if number c man i number clrscr printf t 您要查询的候选人信息如下 n n printf t 号码 ld n c man i number printf t 姓名 s n c man i name printf t 简介 s n c man i intro flag 1 break if flag flag 0 else printf t 对不起 没有您要查询的候选人 n printf t 要继续查询候选人吗 是 Y 否 N getchar c getchar while c Y c y void sort 按票数从高到低列出所有数据 int i k j candidate c man2 N temp c man N 用于存放排序后的数据 read c man for i 0 i c total i c man2 i c man i 将 c man c total 赋值给 c man2 c total for i 0 i c total 1 i 用选择法排序 k i for j i 1 j c total j if c man2 k vote c man2 j vote k j if k i temp c man2 i c man2 i c man2 k c man2 k temp 排序结束 printf 票数从高到低排列如下 n printf n printf 号码 候选人 票数 n printf n for i 0 i c total i 输出排序后的结果 printf 13ld 13s 6d n c man2 i number c man2 i name c man2 i vote printf n printf 按任意键返回首页 fflush stdin getch void welcome printf n 电子投票系统 n n n n r printf 按任意键进入系统登录界面 getch clrscr printf n n n r 欢迎登陆电子投票系 统 n n r void thans clrscr cprintf n n n n n n r 感谢您的参与 n cprintf n n n n n n r 再 见 sleep 3 clrscr 管理员主控平台 void main a int key char menu n r 管理员界面 n r n r n r 1 创建新候选人 n n r 2 创建新用户 n n r 3 查询候选人信息 n n r 4 浏览所有候选人 n n r 5 整理所有投票 n n r 0 退出 n n r n n 请选择 0 到 5 do clrscr cprintf s menu 输出主菜单 scanf d switch key case 1 create break case 2 CreatUser break case 3 search break case 4 browse break case 5 clrscr sort break case 0 break default break while key 0 byebye void main v 用户主控平台 int key char menu n r 投票者界面 n r n r n n r 1 浏览所有候选人 n n r 2 查询候选人信息 n n r 3 投票 n n r 0 退出 n n r n 请选择 0 到 3 do clrscr cprintf s menu 输出主菜单 scanf d switch key case 1 browse break case 2 search break case 3 clrscr vote break case 0 break default break while key 0 byebye void main FILE fp NULL char DataFile 20 用户 txt char relogin 是否重新登录的标志 int success 0 user input user temp user system graftabl 936 welcome again 输入用户名 printf n n 请输入用户名 scanf s input user name printf n r 请输入密码 scanf s input user ps fflush stdin fp fopen DataFile rb if fp NULL printf nOpen file s fail End With any key n DataFile perror Open file fail getch exit 1 校验用户名和密码 while fread success 1 判断权限 如 power 的值为 1 则是管理员 并调用管理员界 面 if temp user power 1 clrscr printf n n n n n n n 您是管理员 欢迎您登录 系统 正在进入管理员界面 sleep 2 main a break 如 power 的值为 0 则是投票者 并调用投票者界面 if temp user power 0 clrscr printf n n n n n n n 您是投票者 欢迎您登录 系统 正在进入投票者界面 sleep 2 main v break fclose fp if success 0 fflush stdin printf n 用户名或密码错误 继续输入吗 是 Y 否 N fflush stdin relogin getchar if relogin Y relogin y goto again else printf 结束 n exit 0 四 测试用例和测试说明 1 开始运行的界面 左上角的那两行字 上一个代码页 437 当前代码页 936 是因为在 Win TC 编译器在添加一个 显示中文的函数 system graftabl 936 之后而出现的 2 登录界面 1 输入 用户名 1 密码 1 将确认该用户的身份是管理员 并进入管理 员界面 2 输入 用户名 2 密码 2 将确认该用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论