《电子投票平台管理系统的设计与实现》

上传人:r****d 文档编号:134622990 上传时间:2022-08-13 格式:DOC 页数:16 大小:72KB
收藏 版权申诉 举报 下载
《电子投票平台管理系统的设计与实现》_第1页
第1页 / 共16页
《电子投票平台管理系统的设计与实现》_第2页
第2页 / 共16页
《电子投票平台管理系统的设计与实现》_第3页
第3页 / 共16页
资源描述:

《《电子投票平台管理系统的设计与实现》》由会员分享,可在线阅读,更多相关《《电子投票平台管理系统的设计与实现》(16页珍藏版)》请在装配图网上搜索。

1、综合性实验报告题 目: 电子投票平台管理系统 课程名称: C语言程序设计 院系名称: 信息科学与工程学院 专业班级: 学生姓名: 学 号: 任课教师: 一、实验目的:1.掌握用C语言进行简单的数据库管理的要点。2.了解C程序菜单设计的一般方法。3. 综合利用指针、函数、结构体数组以及文件等知识进行程序设计。二、实验要求:1主要操作包括:数据输入、输出、插入、删除、查找、修改、排序等。2.用C语言编程实现上述实验内容的结构定义和相关功能,要求程序能够正确执行,最后提交源程序代码及实验报告。三、实验设备及环境:1)硬件:PC机2)操作系统:Windows 2000/XP/2003四、系统分析电子投

2、票平台有两大功能是:身份验证和投票。它包括功能选择;身份验证;投票人管理模块;候选人管理模块;投票区和得票结果管理六大模块。保证了不同人有自己的操作,同时又不能执行别人的操作,具有安全性,并且又有一定的实用性。本程序包含六个功能模块:功能选择;身份验证;投票人管理模块;候选人管理模块;投票区和得票结果管理。功能选择:功能选择模块为系统提供类似于菜单的功能,让用户输入功能选择项,并进入相应的功能执行程序。系统按权限分为管理员的功能选择和投票人的功能选择。分别在list1()和list2()函数中。身份验证:该模块判断要使用该系统的是投票人还是管理员,首先获取登录者的用户名和密码,其中密码的获取用

3、不回显的方式输入,避免他人从旁窃取,在一定程度上保证安全性。当用户名和密码相符时,判断用户的权限并进入相应功能选择函数。当用户忘记密码时,给用户机会进行重新输入。源程序包含在login()中。投票人管理模块:该模块对投票人进行管理是由管理员实现的,确保只有用管理员预先定义好的投票人用户名和密码才能正确登系统进行投票。管理员对投票人的管理有投票人的增加、删除、修改和浏览。源程序包含在adduser()(增加用户记录);deluser()(删除投票人信息);moduserbynum()(根据用户序号修改);scanbynum()(根据用户序号排序浏览)。候选人管理模块:候选人管理模块完成候选人信息

4、的浏览、候选人信息修改、候选人简介按姓名的查询3个主要功能。源程序包含在sortscand()(排序浏览候选人);modifycand()(按号修改候选人信息);findcandbyname()(按姓名查询候选人)。投票区管理:投票区完成该系统的主体功能。当投票人顺得登录系统后,输入要投票的候选人的数字代码,即可完成投票。候选人的得票信息会随时刷新。该系统定义了一个单独的函数vote()来实现此功能,每个投票人的一次投票都会触发该函数,从而读取并修改候选人信息文件,使得所投候选人的票数增一。得票结果管理:对于得票结果,系统规定管理员可以对其进行管理操作,操作之一是排行浏览得票结果,从而可以得知

5、哪位候选人被选中。该功能也是通过对文件的读写和对数组的排序实现的。对得票结果的另一个管理功能是清空得票信息。此功能只有管理员能够使用。功能的实现是用重写文件的方式来实现的。将文件内容读取到数组,将数组中每条记录的得票信息都重置为0,再重新写入文件,从而完成得票记录的清空功能。五、系统实现表3-1 程序总框架(函数清单)表序号文字解释函数1排序浏览候选人sortscand() 2按号修改候选人信息modifycand()3排序浏览票数信息sortvotenum();4清空得票信息clearvotenum()5增加用户记录adduser();6删除投票人信息deluser();7根据用户序号修改m

6、oduserbynum()8根据用户序号排序浏览scanbynum()9按姓名查询候选人findcandbyname()10投票vote()11登陆界面login()12创建用户creatuser();13初始化候选人信息 creatcandidate() 详细源程序#include #include #defineSIZE50/*为用户初始化内存*/#define MAX 50/*为候选人初始化内存*/#define INCREASE 20/*内存增加数目*/ typedef struct long number; char name20; char intro500; int votenu

7、m; candidate;typedef struct long number;/*用户序号*/ char name20;/* 用户名称 */ char ps8;/* 用户密码 */ int power;/* 用户权限 */ user;void vote()/投票选举int i,flag;/*flag用来标志是否找对应编号,即投票是否成功*/ long candidatenum,number; candidate temps,*s,*t; int total=MAX; int num; char DataFile10=candidate,next; FILE * fp; s=(candidat

8、e*)malloc(total*sizeof(candidate); if(s=NULL) printf(分配内存失败!n按任意键继续.n); getch(); return; system(cls);begin: flag=0; fp=fopen(DataFile,rb); if(fp=NULL) printf(n打开文件失败!按任意键结束.n); getch(); exit(1); printf(请输入你要选举的候选人序号:); scanf(%ld,&candidatenum); printf(你要选举的候选人序号是:%ldn,candidatenum); number=candidate

9、num; num=0;while(fread(&temps,sizeof(candidate),1,fp)=1) if(temps.number!=candidatenum) snum.number=temps.number; strcpy(snum.name,temps.name); strcpy(snum.intro,temps.intro); snum.votenum=temps.votenum; else snum.number=number; strcpy(snum.name,temps.name); strcpy(snum.intro,temps.intro); snum.vote

10、num=temps.votenum+1; flag=1; num+; if(total=num) total+=INCREASE; t=realloc(s,total*sizeof(candidate); if(t=NULL) printf(内存分配失败!n按任意键继续.n); free(s);/*释放内存*/ getch(); return; s=t; t=NULL; fclose(fp); if(flag=0) printf(投票失败!找不到你要选举的候选人,按任意键继续.n); getch(); goto begin; else printf(投票成功!n); /* 将修改后的结构体数组

11、记录写入文件 */ fp=fopen(DataFile,wb); if(fp=NULL) printf(n写入文件错误!按任意键结束.n,DataFile); getch(); exit(1); for(i=0;inum;i+) if(fwrite(&si,sizeof(candidate),1,fp)!=1)printf(n写入文件错误!按任意键结束.n); getch(); exit(1); fclose(fp);/* 显示投票后的投票情况 */fp=fopen(DataFile,rb);if(fp=NULL) printf(n打开文件错误!按任意键结束n,DataFile); getch

12、(); exit(1); printf(投票后的信息是:n);printf(n序号 t姓名t票数n);while(fread(&temps,sizeof(candidate),1,fp)!=(int)NULL) if(temps.number!=0)printf(n%ldt%st%dn,temps.number,temps.name,temps.votenum);fclose(fp);printf(n是否继续?(y/n);fflush(stdin);next=getchar();putchar(n);if(next=y|next=Y)goto begin;free(s);/*释放内存*/。li

13、st1()int ch2;list01:system(cls);printf(+-+n);printf(| 欢 迎 进 入 电 子 投 票 平 台! |n);printf(|-+-|n);printf(| 1.排序浏览候选人 |2.按号修改候选人信息 |n);printf(| 3.排序浏览票数信息 |4, 清空得票信息 |n);printf(|-+-+n); printf(|#&#+n);printf(+-+-+n);printf(| 5.增加用户记录 | 6.删除投票人信息 |n);printf(| 7.根据用户序号修改| 8.根据用户序号排序浏览 |n);printf(| 0.退出系统 |

14、n);printf(+-+-+n); printf( 请输入您的选择:); scanf(%d,&ch2); switch(ch2) case 1:system(cls);sortscand(); goto list01; case 2:system(cls);modifycand(); goto list01; case 3:system(cls);sortvotenum(); goto list01; case 4:system(cls);clearvotenum(); goto list01; case 5:system(cls);adduser(); goto list01; case

15、6:system(cls);deluser(); goto list01; case 7:system(cls);moduserbynum(); goto list01; case 8:system(cls);scanbynum(); goto list01;case 0:exit(0);default:printf(选择错误n按任意键继续.n);system(cls); getch();goto list01; list2()/投票人功能菜单 int ch3;list02:system(cls);printf( +-+n);printf( | 欢迎进入电子投票系统 |n);printf( |

16、 1.排序浏览候选人 |n);printf( | 2.按姓名查询候选人 |n);printf( | 3.投票 |n);printf( | 0.退出系统 |n);printf( +-+n);printf( 请输入您的选择:);scanf(%d,&ch3);switch(ch3)case 1:system(cls);sortscand();goto list02;case 2:system(cls);findcandbyname();goto list02;case 3:system(cls);vote();goto list02;case 0:exit(0);default:printf(选择错

17、误n按任意键继续.n); getch(); main() /*主菜单选项*/ int ch1,ch; char ps8,next;start: system(cls); printf(t # n); printf(t # n); printf(t / n); printf(t ( ) n); printf(t+-oOOo-(_)-oOOo-+n); printf(t| 欢迎进入 |n); printf(t| 电子投票大厅 |n); printf(t|-|n); printf(t| 1.创建用户 |n); printf(t| 2.登录系统 |n); printf(t| 0.退出系统 |n); p

18、rintf(t|-|n); printf(t| 作者 谢国林 20074300301 |n); printf(t| 2008年6月29号 |n); printf(t+-+n); printf(t请输入您的选择:); scanf(%d,&ch1); switch(ch1) case 1:reputin:printf(t请输入创建密码:);scanf(%s,ps);if(strcmp(ps,666666)=0)againre: system(cls);printf(nnn创建用户文件请选择1;创建候选人文件请选择2;结束请按3n);scanf(%d,&ch);if(ch=1)system(cls)

19、;creatuser();if(ch=2)system(cls);creatcandidate();if(ch=3)goto start;next=getch();goto againre;elseprintf(n密码错误是否继续?(y/n); fflush(stdin); next=getchar(); putchar(n); if(next=y|next=Y)goto reputin;elsebreak;break; case 2:login();break; case 0:exit(0); default:printf(选择错误!n按任意键继续.n);fflush(stdin);getc

20、h();break; 实验结果1. 进入主菜单就会见到图一: 图一:主菜单 (由于第一次没保存该图,学校机房又关闭,只能用写的!) # # / ( ) +-oOOo-(_)-oOOo-+ | 欢迎进入 | | 电子投票大厅 | |-| 1.创建用户 | | 2.登录系统 | | 0.退出系统 | |-| | 作者 谢国林 20074300301 | | 2008年6月29号 | +-+ 2当输入数据一的时候就可以进入管理员功能选项图二:管理员功能选3当输入数据二的时候就可以进入投票人功能选项图三:投票人功能选项六、实验总结通过这学期对C语言的学习,收获良多。尽管有些部分觉得很有难度,但在不停反

21、复的看书与上机练习下,还是有所理解的。这个实验的程序是我从书本上的一些程序仿照而来的。刚开始进行编译时发现许多错误和警告,然后就慢慢的进行分析修改程序,错误和警告不断减少,最后没错误了,然后进行运行,可是还是不能运行,最后对源程序又进行了认真的修改,终于可以运行了!有些功能不能实现,应该是功能模块的问题,我就对模块函数进行认真的分析,花了好长时间又发现了不少的问题,比如用if条件时把等号写成了赋值号等等。还有一些比较隐藏的错误,如:把长整型数据和字符串弄混淆,scanf函数忘了加地址符。有一些难实现的功能,如刚开始执行每一项功能后都无法回到原来的功能菜单,经过一些时间的思考,终于想到了解决办法

22、。在完成身份验证功能时,一直无法实现用不回显的方法实现密码的输入,以及无法确定密码输入结束标志,最后想到了用输入+作为结束标志像这样的错误还有很多,但是错误总能让人不断学到知识。总之,做完这次综合实验,发现了自己的许多不足,从中也学了不少东西,增长不少经验。尽管花的时间确实挺多的,但这是值得的。参考文献1 谭浩强主编,C程序设计题解与上机指导(第3版),清华大学出版社,2005.7.2 美Harvey M. Deitel, Paul J. Deitel 著,聂雪军,贺军译,C程序设计经典教程(第4版),清华大学出版社,2006.33 李春葆,张植民,肖忠付编,C语言程序设计题典,清华大学出版社

23、,2002.74 美科汉/著,张小潘译, C语言编程(第3版),电子工业出版社,2006.35 美Brian W. Kernighan, Dennis M. Ritchie著,徐宝文,李志译,C程序设计语言(第2版新版),机械工业出版社,2004.16 Brian W. Kernighan,The C Programming Language 2nd Ed(英文影印版),清华大学出版社,2001.117 Clovis L. Tondo,The C Answer Book Solutions to the Exercises in The C Programming Language(英文影印版),清华大学出版社,2001.12

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!