




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、综合性实验报告题 目电子投票平台管理系统课程名称C语言程序设计院系名称:信息科学与工程学院专业班级:学生姓名:学 号:任课教师:一、实验目的:掌握用C语言进行简单的数据库管理的要点。了解C程序菜单设计的一般方法。综合利用指针、函数、结构体数组以及文件等知识进行程序设计。二、实验要求:主要操作包括:数据输入、输出、插入、删除、查找、修改、排序等。用C语言编程实现上述实验内容的结构定义和相关功能,要求程序能够 正确执行,最后提交源程序代码及实验报告。三、实验设备及环境:1)硬件:PC机2)操作系统:Windows 2000/XP/20033)编译环境:Visual C+ 6.0系统分析电子投票平台
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删除投票人信息d
6、eluser();7根据用户序号修改moduserbynum()8根据用户序号排序浏览scanbynum()9按姓名查询候选人findcandbyname()10投票vote()11登陆界面login()12创建用户creatuser();13初始化候选人信息creatcandidate()详细源程序#include #include #define SIZE 50/*为用户初始化内存*/#define MAX50/*为候选人初始化内存*/#define INCREASE20/* 内存增加数目*/typedef struct(long number;char name20;char intro
7、500;int votenum;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=(ca
8、ndidate*)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二candidatenum;num=
9、0;while(fread(&temps,sizeof(candidate),1,fp)=1)(if(temps.number!二candidatenum)(snum.number二temps.number;strcpy(,);strcpy(ro,ro);snum.votenum二temps.votenum;else(snum.number二number;strcpy(,);strcpy(ro,ro);snum.votenum二temps.votenu
10、m+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);/*将修改后的结构体数组记录写入文件*/fp=fopen(DataFile,wb);
11、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();exit(1);printf(投票后的信息是:n);printf(n
12、序号 t 姓名t 票数n);while(fread(&temps,sizeof(candidate),1,fp)! = (int)NULL)(if(temps.number!=0)printf(n%ldt%st%dn,temps.number,,temps.votenum);fclose(fp);printf(n 是否继续?(y/n)”);fflush(stdin);next二getchar();putchar(n);if(next=y|next=Y)goto begin;free(s);/* 释放内存 */。list1()(int ch2;list01:system(cl
13、s);printf(+n);printf(|欢迎进入电子投票平台!|n);printf(|+|n);printf(|1.排序浏览候选人|2.按号修改候选人信息|n);printf(|3.排序浏览票数信息|4,清空得票信息|n);printf(|+n);printf(|#printf(|5.增加用户记录| 6.删除投票人信息|n);printf(|7.根据用户序号修改| 8.根据用户序号排序浏览 |n);printf(|0.退出系统|n);printf(+n);printf(请输入您的选择:);scanf(%d,&ch2);switch(ch2)(case 1:(system(cls);sort
14、scand();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 6:(system(cls);deluser();goto list01;case 7:(system(cls);moduserbynum();goto list01;case 8:(sys
15、tem(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(|1.排序浏览候选人|n)printf(|2.按姓名查询候选人|n)printf(|3.投票|n)printf(|0.退出系统|n)printf(+ -+n )printf(请输入您的选择:);scanf(d,
16、&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(选择错误n按任意键继续.n);getch();main()/*主菜单选项*/(int ch1,ch;char ps8,next;start:system(cls); TOC o 1-5 h z printf(t#n);printf(t#n)
17、;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);printf(t|n);printf(t|作者 谢国林 20074300301 |n);printf(t|2008 年 6 月 29 号 |n);printf(t+n);printf(t请输入您的选择:);scanf(%d,&ch1);switch(chl)(case 1:(reput
18、in: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);creatuser();if(ch=2)(system(cls);creatcandidate();if(ch=3)goto start;next二getch();goto againre;elseprintf(n密码错误是否继续?(y/n)”);fflush(stdin);next=g
19、etchar();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);getch();break;实验结果1.进入主菜单就会见到图一:图一:主菜单(由于第一次没保存该图,学校机房又关闭,只能用写的!)# /( ) TOC o 1-5 h z +oOOo(_)oOOo+|欢迎进入|电子投票大厅|1|1.创建用户|2.登录系统|0.退出系统|1|作者谢国林20074300301
20、|2008年6月29号+2 .当输入数据一的时候就可以进入管理员功能选项图二:管理员功能选统统系人 西又选 投选候 子候询 电览查统 入浏省系 进序姓理由 迎欢1 ..图三:投票人功能选项3.图三:投票人功能选项请输入您的选择二六、实验总结通过这学期对C语言的学习,收获良多。尽管有些部分觉得很有难度,但 在不停反复的看书与上机练习下,还是有所理解的。这个实验的程序是我从书本 上的一些程序仿照而来的。刚开始进行编译时发现许多错误和警告,然后就慢慢 的进行分析修改程序,错误和警告不断减少,最后没错误了,然后进行运行,可 是还是不能运行,最后对源程序又进行了认真的修改,终于可以运行了!有些功能不能实现,应该是功能模块的问题,我就对模块函数进行认真的分 析,花了好长时间又发现了不少的问题,比如用if条件时把等号写成了赋值号 等等。还有一些比较隐藏的错误,如:把长整型数据和字符串弄混淆,scanf函
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络游戏虚拟货币发行与游戏角色扮演服务合同
- 东南亚仓储库存盘点与仓储设备租赁合同
- 儿童综合保障计划退保服务协议
- 游戏美术资源制作设计师劳务合同
- 互联网金融服务反欺诈补充合同
- 数字出版物区域独家代理权转让合同
- 工业自动化软件许可及市场推广合作协议
- 太阳能电池技术升级补充协议
- 跨国公司员工离职保密协议及全球竞业限制条款
- 保险业务审核补充合同
- 湖北省武汉市部分学校2025届高三第三次模拟考试数学试卷含解析
- 舌尖上的潮州菜(劳动教育)学习通超星期末考试答案章节答案2024年
- 数据库PLSQL编程课件
- IATF16949年度管理评审计划
- 学校实验室危险化学品安全工作检查记录表
- 高职劳动教育学习通超星期末考试答案章节答案2024年
- 浙江省2024年全国中学生奥林匹克数学竞赛初赛试题 含解析
- 2024-2025学年小学信息技术(信息科技)六年级全一册义务教育版(2024)教学设计合集
- 九型人格之职场心理学习通超星期末考试答案章节答案2024年
- 医疗器械监督管理条例知识竞赛考试题及答案
- 老年心房颤动诊治中国专家共识(2024)解读
评论
0/150
提交评论