当前位置:文档之家› 电子投票平台管理系统

电子投票平台管理系统

综合性实验报告 题 目: 电子投票平台管理系统 课程名称: C语言程序设计 院系名称: 计算机科学与技术学院 专业班级: 09计算机(非师范) 学生姓名: *** 学 号: *********** 任课教师: ** 2

一、实验目的:

C语言课程设计是计算机学院重要的教学环节,它为学生提供了一个既动手

又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。

1. 进一步巩固和复习C程序设计的基础知识。 2. 培养学生结构化程序,模块化程序设计的方法和能力。 3. 提高学生调试程序的技巧和软件设计的能力。 4. 提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。 5. 了解软件的编制过程。 二、实验要求: 1.主要操作包括:数据输入、输出、插入、删除、查找、修改、排序等。 2. 用C语言编程实现上述实验内容的结构定义和相关功能,要求程序能够正确执行,最后提交源程序代码及实验报告。

三、系统分析 电子投票平台有两大功能是:管理员操作和游客操作。它包括功能选择;身份验证;投票人管理模块;候选人管理模块;投票区和得票结果管理六大模块。保证了不同人有自己的操作,同时又不能执行别人的操作,具有安全性,并且又有一定的实用性。

本程序包含六个功能模块:功能选择;身份验证;投票人管理模块;候选人管理模块和投票区。 ①功能选择:功能选择模块为系统提供类似于菜单的功能,让用户输入功能选择项,并进入相应的功能执行程序。系统按权限分为管理员的功能选择和投票人的功能选择。分别在admin()和gust()函数中。 3

②身份验证:该模块判断要使用该系统的是投票人还是管理员,首先获取登录者的用户名和密码,当用户名和密码相符时,判断用户的权限并进入相应功能选择函数。当用户忘记密码时,给用户机会进行重新输入。源程序包含在denglu()中。 ③候选人管理模块:候选人管理模块完成候选人的初始化、候选人信息的浏览、候选人信息修改、3个主要功能。源程序包含在chushihua();liulan();xiugai()。 ④投票区管理:投票区完成该系统的主体功能。当投票人顺得登录系统后,输入要投票的候选人的姓名,即可完成投票。候选人的得票信息会随时刷新。每个投票人投票后就会失去投票的权利,避免重复投票。投票后立刻显示各个候选人的得票数。

四、程序操作说明书

①. 用户类型操作

②. 输入1进行管理员操作。输入帐号和密码。进行下一步操作。

③. 输入1进行候选人初始化,并输入各个候选人的资料。 4

④初始化完成后,返回管理员操作界面,输入2可以浏览候选人。

⑤浏览后,可以输入3修改候选人资料。然后选择相应的的资料进行修改 5

⑥. 输入5可以返回主界面。重复操作。 ⑦选择2进入投票者界面并输入帐号和密码。

⑧.输入1可以浏览候选人的资料。 6

⑨输入2可以进行投票,如果投票后就不能进行投票了。投票成功后会输出个候选人的得票数。

五、系统实现 表3-1 程序总框架(函数清单)表 序号 文字解释 函数 1 管理员界面 Admin() 2 候选人初始化 chushihua() 3 用户登录 denglu(); 4 主界面 delujiemian() 5 管理员的操作 guanliyuancaozuo(); 6 投票者界面 gust(); 7

7 循环操作 jj() 8 投票者浏览 liulan() 9 主函数 main() 10 投票 toupiao() 11 修改候选人 xiugai() 12 用户资料初始化 yonghuziliao(); 13 用户浏览 yonghuliulan()

详细源程序 #include #include #include #include #define SIZE 3 #define NUM 11 int zxcv; void chushihua(); void liulan(); void xiugai(); struct user { long number; char name[15]; char ps[8]; int power; int n; }us[NUM]; struct candidate { long number; char name[80]; char intro[80]; int votenum; }cd[SIZE]; void yonghucaozuo(); 8

void denglujiemian() {

printf("***************************\n"); printf("管理员请选择1,游客请选择2.\n"); printf("***************************\n"); } void admin() { //int j; printf("********************************\n"); printf("*********1 初始化候选人*********\n"); printf("*********2 浏览候选人 *********\n"); printf("*********3 修改候选人 *********\n"); printf("*********4 退出 *******\n"); printf("*********5 返回上一层 *********\n"); printf("********************************\n");

} void gust() { printf("********************************\n"); printf("**********1 浏览候选人 *********\n"); printf("**********2 投票 *********\n"); printf("**********3 退出 *********\n"); printf("**********4 返回上一层 *********\n"); printf("********************************\n"); } void chushihua() //初始化候选人 { FILE *fp; int i; printf("请输入候选人的数据:\n"); for(i=0;i{ printf("请输入第%d个候选人的数据:\n",i+1); printf("\n编号:"); 9

cd[i].number=i+1; printf("%d",cd[i].number); getchar(); printf("\n姓名:"); gets(cd[i].name); printf("\n简介:"); gets(cd[i].intro); printf("\n得票数"); scanf("%d",&cd[i].votenum); } printf("输入完成,请继续选择其他功能\n"); if((fp=fopen("jilu","wb"))==NULL) //打开输出文件jilu { printf("打开失败\n"); return; } for(i=0;iif(fwrite(&cd[i],sizeof(struct candidate),1,fp)!=1) printf("文件输入失败\n"); fclose(fp); }

void denglu() { int g=1,j; char a[15],b[8]; printf("帐号:"); scanf("%s",a); printf("\n"); printf("密码:"); scanf("%s",b); printf("\n"); while(g) { for( j=0;j<=NUM;j++) { if((strcmp(a,us[j].name)==0)&&(strcmp(b,us[j].ps)==0)) { 10

printf("输入正确\n");zxcv=j; g=0; break; } else if (j == NUM) { printf("输入有错,请重新输入\n"); printf("帐号:"); scanf("%s",a); printf("\n"); printf("密码:"); scanf("%s",b); printf("\n"); } } } FILE*qw; if((qw=fopen("yonghujilu","wb"))==NULL) { printf("打开文件失败"); return; } for( int n=0;n{ while(fread(&us[n],sizeof(user),1,qw)!=NULL) if((strcmp(a,us[n].name)==0)&&(strcmp(b,us[n].ps)==0)) { if(us[n].power==1) admin(); else gust(); } } }

相关主题