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

下载本文档

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

文档简介

1、课程设计报告一、需求分析:1、设计题目:电子投票系统2、设计内容及要求:(1)通过编程建立一个小型电子投票系统,其中包含电子投票、票数统计 功能。尽量做到提供一个简单的人机界面,系统界面友好,使用方便。(2)软件的使用者分为两类,一类为管理员,可以对候选人信息进行初始 化和修改,还可浏览候选人信息介绍,可对候选人的票数进行排序以及对系统的用户进行管理,创建使用者用户名和密码等。另一类为使用者一普通投票者,该 类用户需要用管理员分配的用户名和密码正确登录系统,可以查询候选人介绍、 投票等。(投票是只需做到输入自己想要投票的候选人编号即可完成投票)3、系统功能分析:本系统程序功能:(1)投票者功能

2、a. 浏览所有候选人资料b. 查询要了解的候选人的信息C.在了解候选人之后进行投票(2)管理员功能a. 创建新的候选人资料b. 创建新的用户资料C.查询要了解的候选人资料d. 浏览所有的候选人资料e. 对候选人票数进行统计并排序二、具体设计1、功能模块(1)开始运行与结束运行界面模块开始运行显示有“电子投票系统”字样的界面,结束运行时则输出显示“感 谢参与、再见”字样的界面。(2)功能选择模块根据输入的用户名和密码,分别进入管理员界面和投票者界面(3)身份验证模块验证管理员和投票者的用户名和密码是否正确, 不正确可选择重新输入用户 名和密码或者退出。(4)投票人管理模块实现对投票人的管理功能,

3、如创建投票人用户名和密码。主要用结构体类型 的数组和文件的读写来完成数据的管理操作。(5)候选人管理模块同投票人管理模块类似,要实现对大量有一定结构的信息进行管理的操作, 如创建候选人,查询、浏览候选人信息。因此定义候选人信息结构体,用于存储 候选人信息记录,并且将大量记录存储在硬盘文件中以便保存。用文件的读写函数实现各项功能。(6)投票区模块投票区模块用于完成系统的主体功能,提示投票人输入自己想要选举的候选 人序号,系统立刻将该候选人对应的票数加一, 并将目前的投票状况显示给投票人。因此该部分只需读取候选人信息文件,将对应的候选人票数加一后再写回文 件并显示即可。(7)票数管理模块: 该模块

4、具有对候选人票数进行排行和浏览两大功能。2、程序流程图三、源程序代码#in cludevstdio.h>#in clude<stri ng.h>#in clude<stdlib.h>#in clude<c oni o.h>#in cludevgra phics.h>#define closegr closegra ph #define N 30欢迎*/再见*/管理员主控平台*/用户(投票者)主控平台*/ 创建候选人*/创建用户*/查询候选人信息*/浏览候选人信息*/用户投票*/读取候选人信息*/存储候选人信息*/void welcome();/*

5、 void tha ns(); /* void main_a(); /* void main_v(); /* void create(); /* void CreatUserO;/* void search(); /* void browse(); /* void vote(); /* void read_c_ma n();/* void c_save(); /* int total=0,c_total=0; int i=0;/*候选人信息数据结构描述候选人的编号、姓名、简介和得票数量信息,作为候选人信息记录存在文件 中*/typ edef struct can didate long nu

6、mber;char n ame20;char in tro400;int vote;ca ndidate;/*系统用户数据结构描述系统用户编号、用户名、密码和权限信息,作为一整条记录存放在文件中*/typ edef struct user char n ame20;char p s8;int po wer;user;can didate c_ma n N; user total_userN;void read_c_ma n() ""char DataFile20=" 候选人.txt"FILE * fp=NULL;c_total=0;fp=fo pen (

7、DataFile,"rb");if(fp=NULL)prin tf("n Open file %s fail! End With any key n",DataFile); p error(" Open file fail");getch();exit(1);while(fread(&c_ma n c_total,sizeof(ca ndidate),1,fp)!=(i nt)NULL) ""c_total+;"fclose(fp); void c_save()FILE *fp=NULL;char

8、 DataFile20=" 候选人.txt"/*存储投票人信息的文件名*/fp=fo pen (DataFile,"wb");for(i=0;i<c_total;i+) "if(fwrite(&c_ma ni,sizeof(ca ndidate),1,fp)!=1) "printf("nwritefile is fail! End with any keyn",DataFile);p error("write file fail");getch();exit(1); void by

9、ebyeO tha ns(); void vote()定义进行操作时的临时结构体变量*/候选人.txt",next;long can didate num;/* int i,flag;char DataFile20="/* DataFile存储候选人信息的文件名,next为是否进行下一次投标操作的 选项*/can didate TempS;FILE *fp;beg in:flag=O;/*flag用来标志是否找对应编号,即投票是否成功*/read_c_ma nO;printf("请输入您要投票的候选人的号码:");scan f("%ld&quo

10、t;,&can didate nu m);printf(”您所投票的候选人号码是:ldn",candidatenum);for(i=0;i<c_total;i+) "if(c_ma ni. nu mber=ca ndidate num)"flag=1;c_ma ni.vote+;if(flag)投票成功n");printf("fp=fo pen (DataFile,"wb");/*如果当前文件不存在,提示打开文件失败*/if(fp=NULL)printf("nOpenfile is fail!End

11、with any key.n",DataFile);p error("O pen file fail");getch();exit(1);for(i=0;i<c_total;i+)fwrite(&c_ma ni,sizeof(ca ndidate),1,fp); " fclose(fp);elseprintf("printf("getch();return;投票失败!您要投票的号码不存在n"); 按任意键返回首页!n");/*显示投票后的情况*/fp=fo pen (DataFile,"rb

12、");if(fp=NULL)prin tf("n Open file %s fail! End With any key n",DataFile);p error(" Open file fail");getch();exit(1);printf("整理后的最新投票情况:n");prin tf("n候选人号码t候选人姓名t票数n");/*将文件中的数据读入结构体数组*/while(fread(&Tem pS,sizeof(ca ndidate),1,fp)!=(i nt)NULL)t%dif(Te

13、 mp S. nu mber!=0)prin tf("n%ldt%sn",Te mp S. nu mber,Te mp S. name,Te mp S.vote);fclose(fp);printf("n继续吗?是(Y)/ 否(N):");fflush(stdi n);n ext=getchar();pu tchar('n');if(n ext='y'| |n ext='Y')goto beg in;/*创建用户信息*/void CreatUserOFILE *fp=NULL;char DataFile20

14、=" 用户.txt"/*存储投票人信息的文件名 */user TempS;int over_flag=0;char c;/*读入原始数据,用于检查输入是否有重复*/fp=fo pen (DataFile,"rb");if(fp=NULL)prin tf("n Open file %s fail! End With any key n",DataFile);p error(" Open file fail");getch();exit(1);while(fread(&total_usertotal,sizeo

15、f(user),1,fp)!=(i nt)NULL) "total+;fclose(fp);fp=fo pen (DataFile,"ab+");clrscr();doclrscr();printf("*创建新用户");gotoxy(23,3);prin tf("请输入:");用户名:");scanf("%s",&TempS.name);gotoxy(30,5); printf(" Temp S. name19='0'/*检查输入姓名是否有重复*/for(i=0

16、;i<total;i+)if(strcm p(TempS.n ame,total_useri. name)=0)该用户名已存在!按任意键浏览所有用户."); " printf(" getch();over_flag=1; break;if (over_flag)over_flag=0;con ti nue;密码:");sca nf("%s", &Temp S. ps);gotoxy(30,6); printf(”Temp S. ps7='0'权限:");sca nf("%d"

17、, &Tem pS. po wer);gotoxy(30,7); printf(" if(Temp S. po wer!=1)TempS.po wer=0;/*将数据加入原始数据,用于下一次输入比较*/total_usertotal=Te mpS;total+;if(fwrite(&Temp S,sizeof(user),1,fp)!=1)printf("nwritefile is fail! End with any keyn",DataFile);p error("write file fail");getch();exit

18、(1);printf("要继续创建新用户吗?是(Y)/否(N):");getchar();c=getchar();while(c='Y'|c=y);fclose(fp);/*在屏幕上显示文件内容*/printf("用户资料数据处理完毕.n",DataFile);printf("所有用户具体情况如下:n");fp=fo pen (DataFile,"rb");prin tf ("*" );if(fp=NULL)prin tf("nO pen file is fail! E

19、nd With any key n",DataFile); p error(" Open file fail");getch();exit(1);prin tf("n 姓名 tt 密码 tt 权限 n");while(fread(&Tem pS,sizeof(user),1,fp)!=(i nt)NULL)prin tf("n%stt%-8stt%dn",Te mpS.n ame,Te mpS.p s,Te mp S. power); fclose(fp);按任意键返回首页!");prin tf (&quo

20、t;*" );prin tf("ngetch();void create()char DataFile20=" 候选人.txt"FILE * fp=NULL;char c;int over_flag=0;can didate TempS;clrscr();read_c_ma n();fp=fo pen (DataFile,"ab+"); doclrscr();printf("*创建新候选人gotoxy(22,3);prin tf(" 请输入:");gotoxy(29,5); printf("码:

21、");sca nf("%ld", &Temp S. number);/*检查输入编号是否有重复for(i=0;i<c_total;i+) "if(Te mp S. nu mber=c_ma ni. nu mber) " printf(" getch(); over_flag=1; break;if (over_flag) over_flag=0; con ti nue;gotoxy(27,6); printf("Temp S. name19='0'for(i=0;i<c_total;i+)

22、if(strcm p(TempS.n ame,c_ma ni. name)=0) "printf("*/该号码已存在.按任意键浏览所有候选人.");姓名:");sca nf("%s", &TempS.n ame);该姓名已存在!请再输入一次!按任意键继续.");getch();over_flag=1;break;if (over_flag)over_flag=0;con ti nue;gotoxy(27,7); printf(”fflush(stdi n);gets(Te mp S.i ntro);Temp S.i

23、ntro399='0'Temp S.vote=0;/*将数据加入原始数据,用于下一次输入比较*/c_ma n c_total=Te mpS;c_total+;if(fwrite(&Tem pS,sizeof(ca ndidate),1,fp)!=1)printf("nwritefile is fail! End with any keyn",DataFile);p error("write file fail");getch();exit(1);printf("要继续创建新的候选人吗?是(Y)/否(N):");

24、fflush(stdi n);c=getchar();while(c='Y'|c='y');fclose(fp);/*在屏幕上显示文件内容*/clrscr();prin tf("候选人资料:n");prin tff *fp=fo pen (DataFile,"rb");if(fp=NULL)prin tf("nO pen file %s fail! End With any key n",DataFile); p error(" Open file fail");getch();ex

25、it(1);while(fread(&Tem pS,sizeof(ca ndidate),1,fp)!=(i nt)NULL)prin tf("n号 码 :-15ld 姓 名:%-15s简介:%s",Te mpS.nu mber,Te mp S. name,Te mp S.i ntro);fclose(fp);printf("n*H printf("n getchO;按任意键返回首页!");void browse()/*浏览候选人信息*/read_c_ma n();clrscr();/*清屏 */printf("候选人资料:n

26、");prin ff * *n");for(i=0;i<c_total;i+) "printf("printf("printf("号码:-15ld",c_ma ni. number); 姓名:-19s",c_ma ni. name); 简介:sn",c_ma ni.i ntro);prin ff *printf("n getch();按任意键返回首页!");void search。/*查询候选人信息*/char c;long nu mber;int flag=0;read_c_m

27、a n();doclrscr();printf("nt请输入要查询的候选人号码:");sca nf("%ld",&nu mber);for(i=0;i<c_total;i+)if(nu mber=c_ma ni. nu mber) "clrscr();您要查询的候选人信息如下:nn");号码:%Id n ",c_ma ni. nu mber); 姓名:s n ",c_ma ni. name);简介:%s n",c_ma ni.i ntro);prin tf("tprin tf(&q

28、uot;tprin tf("tprin tf("t flag=1; break;if (flag)flag=0;else对不起,没有您要查询的候选人n");prin tf("t要继续查询候选人吗?是(丫)/ 否(N):");prin tf("t getchar(); c=getchar();while(c='Y')|(c=y);void sort() /*按票数从高到低列出所有数据int i,k,j;can didate c_ma n2N,te mp; /*c_ma nN read_c_ma n();for(i=0;i

29、<c_total;i+)c_ma n2i=c_ma ni;c_ma n2c_total*/*/用于存放排序后的数据*/* 将 c_manc_total赋值给用选择法排序*/for(i=0;ivc_total-1;i+) /*k=i;for(j=i+1;j<c_total;j+) "if(c_ma n2k.votevc_ma n2j.vote)k=j;" "if(k!=i)temp=c_ma n2i;c_ma n2i=c_ma n2k;c_ma n2k=te mp;printf("prin tf("*prin tf("*pr

30、in tf("*/*排序结束*/票数从高到低排列如下:n");*n");候选人票数*n");输出排序后的结果号码*n");/*for(i=0;i<c_total;i+)prin tf("*%-13ld%-13s*n ”,c_ma n2i. nu mber,c_ma n2i. name,c_ma n2i.vote);" " "printf("*n");printf("按任意键返回首页!");fflush(stdi n);getch();*/%-6dvoid we

31、lcomeOprin tf("n*电子投票系统printf("getchO;clrscr();prin tf("nnnr统 *nnnnr");按任意键进入系统登录界面*nnr");欢迎登陆电子投票系void tha ns() cIrscrO;感谢您的参与!cprin tf("nnnnnnr n");cprin tf("nnnnnnr 见!");slee p(3);cIrscrO;/*管理员主控平台*/void main_a() "int key;men 叩二"char*nr"

32、II管理员界面nr"II*nr""nr"IIIIII1.2.3.创建新候选人nnr" 创建新用户nnr"查询候选人信息nnr"II4.浏览所有候选人nnr"IIII5.0." nn整理所有投票nnr" 退出 nnr"请选择0到5:"doclrscr();/*输出主菜单*/cprin tf("%s",me nu); scan f("%d",&key); switch(key)case 1:create();break;case 2

33、: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;men 叩二"char*nr"II投票者界面nr"II*nr"1.浏览所有候选人"nnr "IInnr"II2.查询候选人信息nnr"IIII3.0.&quo

34、t;n投票 nnr" 退出 nnr" 请选择0到3:"do输出主菜单*/cIrscrO;cprin tf("%s",me nu); /*sca nf("%d",&key);switch(key)case 1:browse();break;case 2:search();break;case 3:clrscr(); vote();break;case 0:break;defaultbreak;while(key!=O); byebyeO;void mai n()FILE * fp=NULL;char DataFile2

35、0=" 用户.txt"char relogin;/*是否重新登录的标志*/int success=0;user inpu t_user,te mp _user;system( "graftabI 936 ");welcome();aga in:/* 输入用户名*/请输入用户名:");请输入密码:");prin tf("nnsca nf("%s",i npu t_user. name); prin tf("nrsca nf("%s",i npu t_user. ps); ffl

36、ush(stdi n);fp=fo pen (DataFile,"rb");if(fp=NULL)prin tf("n Open file %s fail! End With any keyn",DataFile);p error("O pen file fail");getch();exit(1);/*校验用户名和密码*/while(fread(&temp_user,sizeof(user),1,fp)!=NULL)&&if(strcm p(inpu t_user. name,temp_user. name)

37、=0(strc mp (i npu t_user. ps,te mp _user. ps)=0)" "prin tf("niogin successful!"); success=1;/*判断权限,如power的值为1,则是管理员,并调用管理员界面*/if(temp_user. po wer=1) 您是管理员!欢迎您登录cIrscrO;prin tf("nnnnnnn系统!正在进入管理员界面.");slee p(2);main_a();break;/*如power的值为0,则是投票者,并调用投票者界面*/if(temp_user. p

38、o wer=0)"cIrscrO;您是投票者!欢迎您登录prin tf("nnnnnnn系统!正在进入投票者界面.");slee p(2); main_v();break;fclose(fp);if(success=0)fflush(stdi n);printf("n用户名或密码错误!继续输入吗?是(丫)/否(N):");fflush(stdi n);relogi n=getchar();if(relogi n='Y')|(relogi n='y')goto aga in;else结束n");print

39、f("exit(0);四、测试用例和测试说明1、开始运行的界面C:DO桌®"IDSDETlWdtL exe电子投票系统4*按任意犍进入系统登录界面左上角的那两行字“上一个代码页:437当前代码页:936” 是因为在 Win-TC编译器在添加一个显示中文的函数system( "graftabi 936 ")之后而出现的!2、登录界面C: XDOCniE'I®3 lOSOD'lWOTE, EXE*欢迎登陆电子投票系统*请输入用户名:.(1)输入“用户名:1;密码:1”将确认该用户的身份是管理员,并进入管理 员界面耳 C:D

40、gniEr桌面,新肄文Fwote. ebeBag登录成功!您是管理员!系统正在进入管理员界面-(2)输入“用户名:2;密码:2”将确认该用户的身份是投票者,并进入管理 员界面登录成功,您是投票者¥系统正在进入投票者界面3、管理员界面五 C: WOCTTBE'l ABirrr桌面1086)0r VrOTE. ESE基#(诞理 KKK 蓦算葺乘 X JCK 羽斑MKMMKMK魏 H士M H-iCKJ4rM管理员界面刨建新候选人育-创建新用户3 -查询候选人信息堆浏览所有候选人整理所有投票CL退岀”请选择0¥J5:_黃 C:B0CUrerVlDBIH:“讥桌商WmSOHr

41、yroTE. EXEH WHxk KX M英 XN X MX 耳咼胃选. 人 無耳耳嗔亠応”豆址电町耳坯帝皆焦託*e请输八=候选人号码按要求填写新的候选人号码、姓名及简介即可,若填写的号码已存在系统将提示, 并在按任意键后就会显示所有候选人的信息G* C : DOCUIE *1ADIIBI *11 桌面 31 OSOOIWOTE. EXE_SJ3J TA m _弓目目nop弓马马 J7 !-,!-,峠 2 -T,|_,|r |_,|T 丁 1T 丁 1 丁| |-,| 呂号号昙声苕苕 tpg右昌寻曰百可0 G &1234519667005hj :i»j Rup 弓屯 7 _j

42、-j j-i-乞F :i-r -jj »_i_4 kJ .8- : h_J .i-V fc_5- kJ "=: h-J _- 4_r i_j姓名:Shaodie 姓:Lonsf 建:黑:Linlinor 殳茗:liuixianr 冬;名-liudeTiua 姓名:lon 姓名;1JU 姓名:liuxiang 姓名:WU 龙塔-Idbron 处 i 名ixiong 姓塔:zhang通介:pretty girl 简介:st udent 直齐:心i'苟介:yundonguan 简弁:SshouSB介;long介:xuesheng :yundonsruan :xueshen

43、gr 荀介:qiuxinsr 夏介:hjiI旬介:ijisheng按任意键返回首页I(2)、选择“2”将进入创建新用户界面C: DOCTJME*"1 ADWIHI*13 I 0800* 1 ¥OTE. EXE”*g蟲显一胡雀新用戸 西基M坦畫 MM塑畫 MM M请输入:用户名-像创建新候选人一样,按要求输入新的用户名、密码及权限即可,若用户名已存 在,系统将提示,并在按任意键后显示所有用户资料3 C:XDOCniE'J XiDWIWl'l 桌面103OD*l¥OTE, EEE3334323550b55&B8881&laj ilaj

44、ii3131089898989014140131301515054:7 «_F V i_r i-r540iT u R_r V i_r luF i_r i_r v u u w xj i_ri_r ur v u u w xj i_ri.r1展柱意_(3) 选择“3”将进入查询候选人信息的界面输入候选人号码正确即可查询,比如输入:“ 1”即有输入的号码不存在即提示并要求选择要不要继续查询(4) 选择“ 4”将进入显示所有候选人资料的界面pretty girl student keai yundonyuan geshou long xufrsheng yundongyuan xuesliertg qiuxing laji yishenqff ff g & X 血 g n n u u n 口 -1 i ± o u L L 1 1 1 w9R

温馨提示

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

评论

0/150

提交评论