C语言课程设计电子投票平台_第1页
C语言课程设计电子投票平台_第2页
C语言课程设计电子投票平台_第3页
C语言课程设计电子投票平台_第4页
C语言课程设计电子投票平台_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

PAGE2-C语言课程设计课程名称_____C程序设计_____题目名称____电子投票平台_学生学院__经济管理学院_____专业班级__07电子商务班学号学生姓名_____________指导教师_____________2008年X月X日C课程设计——电子投票平台一、需求分析在本系统的需用求分析环节中,会对软件开发的意图、开发的目标、作用范围和有关该软件开的背景材料进行详细的分析。电子投票平台作为一个用来进行投票统计的应用软件,在对其进行需求分析的过程中,需用要充分考虑系统的可用性和有效性,联系实际应用,从而得到合理的需求分析结论。系统概述该软件为用户提供一个在Windows系统上运行的电子投票、票数统计的软件平台。软件的使用者分为两类,一类为管理员,可以对候选人信息进行初始化和修改,还可浏览候选人信息介绍,可对候选人的票数进行排序以及对系统的用户进行管理,创建使用者用户名和密码等。另一类为使用者—普通投票者,该类用户需要用管理员分配的用户名和密码正确登录系统,可以查询候选人介绍、投票等。(投票是只需做到输入自己想要投票的候选人编号即可完成投票)功能需求描述电子投票平台是一个用来进行投票统计的系统软件,在投票之前需要进行身份验证。投票人经过验证后可以用浏览和查询的方式了解个候选人的介绍信息,根据候选人的介绍信息决定将选票投向哪位候选人。投票人主要功能需求如下:①投票人的投票方式:输入要选举的候选人的编号,即可完成投票。②投票人了解候选人的方式:浏览候选人列表,输入序号查询候选人介绍。管理人员的主要功能①初始化候选人信息:在系统投入使用前需要先将需要投票选举的候选人信息录入系统中,以便投票和查看。这个功能由管理员完成。管理员的初始化工作就是将候选人的序号、姓名和简介录入系统。②浏览候选人简介:为随时掌握候选人的信息,以便进行修改,管理员有权浏览候选人简介。浏览的顺序按照候选人序号即可。③修改候选人简介:当系统更新或候选人信息有所变化时,输入候选人序号,对信息进行修改。④查询投票情况:管理员有权查询当前各个候选人得票情况,以便得出最终被选中的候选人信息。⑤清除投票信息:当投票过程结束后,管理员选择清除投票信息既可清除系统中所有候选人的票数,使之归零。⑥安全管理:管理员可以对投票人信息进行管理,投票人只有用管理员规定的用户名和密码才能进入系统进行投票。管理员还可以更改用户名、密码和权限,并对投票人信息进行增加、删除、查询、排序和初始化等操作。二、总体设计在对电子投票平台进行合理的需求分析之后,对整个系统进行总体设计。首先确定开发与设计的总体思想,在此基础上,用图表的方式给出系统总体的设计架构,绘制系统模型结构图,并且通过模块功能树图对每个模块进行总体设计。此外,总体设计还包括对系统的数据结构或数库设计,以及界面设计等,从而对后续的详细设计起到指导必作用。开发现设计的总体思想电子投票平台是一个简易投票管理系统。开发设计的重点在于每个投票者对候选人投票后系统都要及进更新并统计候选人所得票数,不可出现遗漏情况。解决这个问题的方法是将投票的过程单独写成一个完整的函数,每次投票动作都必须调用该函数,将得票统计的文件中对应的候选人得票信息加一。对于投票系统的安全问题,系统采用区分权限的方法加以解决。投票者只能进行投票,使候选人票数加一,无法候选人票数进行其修改。投票人可以根据候选人信息决定投票,因此对候选项人信息有浏览和查询的功能,但不可以修改。对系统关键信息的修改功能由管理员完成。对权限的判断要用到程序设计思想中的选择结构,对大量数据的处理要用到循环和文件处理等基本技术。系统采用结构化的设计方法进行设计,采用C语言进行开发。系统模块结构图依据需求分析结果,电子投票平台可分为6个模块:功能选择、身份验证投票人管理候选人管理、投票区和得票区结果管理。系统模块结构如下图所示:电子投票平台电子投票平台功能选择身份验证投票人管理投票区管理得票区管理三、模块设计1、功能选择模块该模块为系统用户提供功能选择界面,管理员或投票人登录系统后都会看到对应自己权限的功能选择界面,输入自己的功能选项即可跳转到相应的功能执行函数。模块功能树如图:2、身份验证模块身份验证模块的作用是为了保障系统的安全性和系统使用人员角色的区分。该模块需要从输入设备获取用户输入的用户名和密码,判断是否符合登录条件,其次要判断用户权限,从而决定其能使用的系统功能。该模块功能树图如下:3、投票人管理模块该模块主要实现常规的管理功能,如投票人的初始化,即创建投票人文件、投票人信息增加、删除、修改和查询等。因此该模块主要用结构体类型的数组和文件的读写来完成对大量数据的管理操作。该模块功能树如图: 4、投票区模块投票区模块用于完成系统的主体功能,提示投票人输入自己想要选举的候选人序号,系统立刻将该候选人对应的票数加一,并将目前的投票状况显示给投票人。要将候选人对应的票数增加,需读取候选人信息文件,将对应的候选人票数加一后再写回文件即可。该模块功能树如下图:5、得票结果管理模块得票结果管理属于管理员的权限范围,该模块共有清空投票结果、得票结果按票数多少的排行浏览两大功能。能过得票结果排行浏览可得知哪位候选人选举成功。当选举结束后,可选择清空得票结果。该模块功能树图如下:系统流程描述系统的主体处理流程如下图界面设计电子投票平台的界设计应遵循简洁美观,方便易用的基本原则。1、身份密码输入功能界面输入名字以及密码,为之后的程序运行铺垫。效果图如下所示:2、功能选择界面设计充分考虑界面易于操作的系统需求,管理员和投票人的功能调用采用类似于菜单的功能选择方式实现。用C语言的打印语名构造简单界面。具体功能选择界面设计效果图如图:3、投票区界面设计投票区界面设计注重界面的简洁性,要求在用户投票后能显示用户所选候选人的序号,以便投票人确认,并且可以显示出当前候选人得票情况。在投票之后要提示用户是否继续投票。具体设计效果如下图所示。数据结构的设计1、常量定义#defineSIZE100电子投票系统要有众多投票人使用进行投票,管理员对投票人的管理要涉及到对大量数据的操作,该量定义投票人数组的长度为100,系统可以分配100个用户进行管理或投票,也可修改此常量增加最大可使用的用户数量。(我在此使用了动态内存分配,程序代码中未使用数组#defineSIZE30//初始化内存大小#defineINCREAMENT20//内存用完时增加的内存大小)2、系统用户数据结构描述系统用户的编号、用户名、密码和权限信息,作为一整条记录存放在文件中。typedefstruct{longNumber;/*用户序号*/charName[20];/*用户名称*/charps[8];/*用户密码*/intpower;/*用户权限*/}user;3、候选人信息数据结构描述候选人的编号、姓名、简介和得票数量信息,作为候选人信息记录存在文件中。typedefstruct{longNumber;/*Fieldofnumber*/charName[20];/*Fieldofname*/charintro[500];/*fieldofintroduction*/intvotenum;}candidate;详细设计基于系统需求分析与系统总体设计的结论,本系统采用WinTC实现各模块的功能,下面按照模块的划分来分别阐述系统的详细设计和实现过程。功能选择1、模块描述功能选择模块为系统提供类似于菜单的功能,让用户输入功能选择项,并进入相应的功能执行程序。系统按权限分为管理员的功能选择和用户的选择。2、源文件定义admin.c管理员主控平台guest.c投票者主控平台shead.h候选人信息头文件3、函数声明(1)Admin()函数功能:管理员功能选择界面。输入:用户选择的功能选项处理:根据用户选项跳转到相关功能函数输出:相关功能函数的处理或显界界。程序清单:(1)shead.h#defineCANDIDATENUM50/*初始内存大小*/#defineINCREASE10/*每次增加的内存大小*/#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>typedefstruct{longNumber;/*Fieldofnumber*/charName[20];/*Fieldofname*/charintro[500];/*fieldofintroduction*/intvotenum;}candidate;externvoidCreatFile();/*创建信息文件*/externvoidAddRcord();/*增加*/externvoidDelRecord();/*删除*/externvoidModifyByNumber();/*修改*/externvoidQueryBySeatNum();/*按号查询*/externvoidQueryByName();/*按名查询*/externvoidSortByVote();/*按票数统计查询*/程序清单:(2)admin.c#include"shead.h"#include"user.h"#include"cuser.c"#include"creat.c"/*creat.c:添加十名候选人,初始化系统工作*/#include"bintro.c"#include"qname.c"/*qname.c按姓名查看候选人介绍*//*bintro.c浏览候选人介绍,即显示候选人文件内容(没有投票结果)*/#include"modnum.c"/*modnum.c根据候选人序号修改候选人介绍*/#include"sort.c"/*sort.c根据投票结果排行*/#include"tovote.c"#include"sunum.c"#include"munum.c"#include"AddUser.c"#include"deluser.c"#include"clearv.c"voidAdmin(userm_user)/*m_user接收用户的登录信息*/{intchoice=0;/*存放用户选项的变量*/while(1){clrscr();printf("++\n");printf("|WelCometoVoteManagementSystem|\n");printf("|+|\n");printf("|1.InitCandidateFile|2.BrowseIntro|\n");printf("|3.ModifyIntro|4.Sortbyvote|\n");printf("+++\n");printf("|5.clearvote|6.Modifypasswored|\n");printf("+++\n");printf("|11.CreatNewUserFile|12.AddUser|\n");printf("|13.DelUser|14.ModifyUser|\n");printf("|15.SortByUserNum|0.EndProgram|\n");printf("+++\n");printf("inputyouchoicehere:");scanf("%d",&choice);switch(choice){case1:CreatFile();break;case2:BrowseIntro();break;case3:ModifyIntro();break;case4:SortByVote();break;case5:ClearVote();break;case6:ModifyMyPassword(m_user);break;case11:CreatUser();break;case12:AddUser();break;case13:DelUser();break;case14:ModifyByUserNumber();break;case15:SortByUserNum();break;case0:exit(0);default:printf("selecterror\nPressanykeytocontinu\n");fflush(stdin);/*清空输入缓冲区*/getch();break;}}}(2)Guest()函数功能:投票人功能选择。输入:投票人要使用的功能选项代码处理:根据代码跳转到相应功能函数的处理或执行界面。输出:相应功能函数界面。程序清单:与admin.c程序清单结构类似,在此省略。身份验证1、模块描述该模块判断要使用该系统的是投票人还是管理员,首先获取登录者的用户名和密码,其中密码的获取用不回显的方式输入,避免他人从旁窃取,在一定程度上保证安全性。当用户名和密码相符时,判断用户的权限并进入相应功能选择函数。当用户忘记密码时,给用户机会进行重新输入。2、源文件定义login.c登录user.h投票人信息文件3、函数声明(1)main函数功能:用户登录系统,程序的入口输入:①用户名②用户密码(输入时显示“*”)⒀是否重新登录的字符选项处理:①比较用户名密码是否相符②不符时,提示用户是否重新登录,如用户不再登录,退出系统。③相符时,判断权限为管理员还是投票者,进入相应功能选择界面输出:①用户登录是否成功的提示②是否重新登录的提示③当前用户的权限和功能选择界面程序清单(1)user.h#defineSIZE30/*初始化内存大小*/#defineINCREAMENT20/*内存用完时增加的内存大小*/#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>typedefstruct{longNumber;/*用户序号*/charName[20];/*用户名称*/charps[8];/*用户密码*/intpower;/*用户权限*/}user;/*externvoidGuest(user);普通用户功能选择界面*//*externvoidAdmin(user);管理员功能选择界面*//*externvoidCreatUser();创建用户信息文件*//*externvoidAddUser();增加用户记录*//*externvoidDelUser();删除用户记录*//*externvoidModifyByUserNumber();根据用户序号修改*//*externvoidSortByUserNum();根据用户序号排序浏览*/程序清单(2)login.c#include"user.h"#include"admin.c"#include"guest.c"/*对用户的创建、增加、删除、修改、排序*/#include"cuser.c"intmain(){FILE*fp=NULL;userShow;userTempS;/*临时存放用户信息的结构体变量*/charDataFile[40]="yonghu",c;/*存放用户信息的文件名*/inti;charrelogin;/*是否重新登录的标志*/intsuccess=0;/*CreateUser();*/printf("#==============================#\n");printf("#WelcometotheVoteSystem!#\n");printf("#==============================#\n\n");again:/*输入用户名*/printf("Pleaseentertheusername:");scanf("%s",TempS.Name);printf("password=");fflush(stdin);for(i=0;i<7;i++){c=getch();if(c==0x0d){TempS.ps[i]=‘\0‘;break;}printf("*");TempS.ps[i]=c;TempS.ps[i+1];}TempS.ps[7]=‘\0‘;/*打开yonghu文件,用来验证用户名和密码*/fp=fopen(DataFile,"rb");if(fp==NULL){printf("\nOpenfile%sfail!EndWithanykey\n",DataFile);perror("Openfilefail");getch();exit(1);}/*循环读取文件校验用户名和密码是否正确*/while(fread(&Show,sizeof(user),1,fp)!=NULL)/*while(fread(&Show,sizeof(user),1,fp)!=int(NULL))*/{if(strcmp(TempS.Name,Show.Name)==0&&(strcmp(TempS.ps,Show.ps)==0)){printf("\nloginsuccessful!");success=1;/*判断权限,如power的值为1,则是管理员,并调用管理员功能界面*/if(Show.power==1){clrscr();printf("\nyourpowerisadministrator!\n\n\nPressanykeytocontinu...\n");getch();Admin(Show);break;}/*判断权限,如power的值为0,则是投票者,并调用投票者功能选择界面*/if(Show.power==0){clrscr();printf("\nyourpowerisuser!\nPressanykeytocontinu...\n");getch();Guest(Show);break;}}}fclose(fp);/*如未能成功登录,让用户选择重新登录或退出*/if(success==0){fflush(stdin);printf("\nerrorusernameorpassword!inputagain?(y/n)");fflush(stdin);relogin=getchar();if((relogin==‘Y‘)||(relogin==‘y‘)){gotoagain;}else{printf("endprogram\n");exit(0);}}}投票人管模块1、模块描述该模块对投票人进行管理,只有用系统实现定义好的投票人用户名和密码才能正确登系统进行投票,系统亦可赋予用户管理员的权限,使用户能进入管理员功能选择界面执行相应的功能选项。系统对投票人的管理有信息初始化、增加、删除、修改和浏览。2、源文件定义cuser.c对投票人信息初始化。adduser.c增加投票人信息deluser.c删除投票人或用户munum.c按序号查找并修改投票人信息sunum.c浏览投票人信息3、函数声明(1)CreatUser()功能:初始化投票人或用户信息,系统首先录入一些用户信息,包括用户名、密码和权限,当系统投入使用后可以用这些初始的用户名和密码登录。输入:①初始化用户信息存储的文件名②用户信息的用户名、密码、权限③将用户信息写入文件④判断用户是否结束录入⑤显示初始化后的文件内容输出:列表显示初化后的文件内容。程序清单:cuser.c#include<stdio.h>#include"user.h"/*创建用户信息*/voidCreatUser(){FILE*fp=NULL;userShow;userTempS;charDataFile[40]="yonghu";/*存储投票人信息的文件名*/intcount=1;fp=fopen(DataFile,"ab");clrscr();/*如果当前文件不存在,提示打开文件失败*/if(fp==NULL){printf("\nOpenfile%sfail!Endwithanykey.\n",DataFile);perror("Openfilefail");getch();exit(1);}/*如果成功打开文件,则提示输入序号、用户名、密码、权限等相关信息*/printf("inputnumber,nameandpassword.numberis0meansinputisend.\n");printf("Numberisnotexceed10figures,Nameisnotexceed20characters,rangeofgrade:0~1");/*循环从键盘上读取投票人输入的投票人相关信息*/while(1){printf("\ninput‘number=0‘meansendinput.\n");printf("number:");scanf("%ld",&TempS.Number);if(TempS.Number==0){break;}printf("name:");scanf("%s",TempS.Name);TempS.Name[19]=‘\0‘;printf("password:");scanf("%s",TempS.ps);TempS.ps[7]=‘\0‘;printf("power=");scanf("%d",&TempS.power);if(TempS.power!=1){TempS.power=0;}/*如遇无法写入文件的异常,则加以提示*/if(fwrite(&TempS,sizeof(user),1,fp)!=1){printf("\nwritefile%sfail!Endwithanykey\n",DataFile);perror("Writefilefail");getch();exit(1);}count++;}/*如果输入的数据量超过最大允许的范围,则提示数据不能录入*/fclose(fp);/*在屏幕上显示文件内容*/printf("Thedatayouinputisstoresuccessful%sinfile.\n",DataFile);printf("Contentasfollow:\n");fp=fopen(DataFile,"rb");if(fp==NULL){printf("\nOpenfile%sfail!EndWithanykey\n",DataFile);perror("Openfilefail");getch();exit(1);}printf("\nNumber\t\tName\t\tpassword\t\tpower\n");while(fread(&Show,sizeof(user),1,fp)!=(int)NULL){printf("\n%ld\t\t%s\t\t%-8s\t\t%d\n",Show.Number,Show.Name,Show.ps,Show.power);}fclose(fp);printf("pressanykeytocontinu...");getch();}(2)AddUser()函数功能:增加用户信息输入:①增加用户的编号、用户名、权限②是否继续的选项输出:增加新用户后的文件内容程序清单addusr.c与cuser.c类似,略。(以下只给出各函数的功能说明,不再贴源代码)(3)DelUser()函数功能:删除投票人信息输入:①要删除的投票人信息所在文件名。②要删除的投票人信息的编号③是否继续删除的选项字符处理:①打开投票人信息文件②读取文件内容,获取要删节信息的编号③将文件信息写入数组,根据编号删除数组中相应纪录。④将执行了删除操作的数组结果写入文件

温馨提示

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

评论

0/150

提交评论