電子投票平臺(tái)管理系統(tǒng)_第1頁(yè)
電子投票平臺(tái)管理系統(tǒng)_第2頁(yè)
電子投票平臺(tái)管理系統(tǒng)_第3頁(yè)
電子投票平臺(tái)管理系統(tǒng)_第4頁(yè)
電子投票平臺(tái)管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、綜合性實(shí)驗(yàn)報(bào)告題 目電子投票平臺(tái)管理系統(tǒng)課程名稱C語(yǔ)言程序設(shè)計(jì)院系名稱:信息科學(xué)與工程學(xué)院專業(yè)班級(jí):學(xué)生姓名:學(xué) 號(hào):任課教師:一、實(shí)驗(yàn)?zāi)康?掌握用C語(yǔ)言進(jìn)行簡(jiǎn)單的數(shù)據(jù)庫(kù)管理的要點(diǎn)。了解C程序菜單設(shè)計(jì)的一般方法。綜合利用指針、函數(shù)、結(jié)構(gòu)體數(shù)組以及文件等知識(shí)進(jìn)行程序設(shè)計(jì)。二、實(shí)驗(yàn)要求:主要操作包括:數(shù)據(jù)輸入、輸出、插入、刪除、查找、修改、排序等。用C語(yǔ)言編程實(shí)現(xiàn)上述實(shí)驗(yàn)內(nèi)容的結(jié)構(gòu)定義和相關(guān)功能,要求程序能夠 正確執(zhí)行,最后提交源程序代碼及實(shí)驗(yàn)報(bào)告。三、實(shí)驗(yàn)設(shè)備及環(huán)境:1)硬件:PC機(jī)2)操作系統(tǒng):Windows 2000/XP/20033)編譯環(huán)境:Visual C+ 6.0系統(tǒng)分析電子投票平臺(tái)

2、有兩大功能是:身份驗(yàn)證和投票。它包括功能選擇;身份驗(yàn)證; 投票人管理模塊;候選人管理模塊;投票區(qū)和得票結(jié)果管理六大模塊。保證了不 同人有自己的操作,同時(shí)又不能執(zhí)行別人的操作,具有安全性,并且又有一定的 實(shí)用性。本程序包含六個(gè)功能模塊:功能選擇;身份驗(yàn)證;投票人管理模塊;候選 人管理模塊;投票區(qū)和得票結(jié)果管理。功能選擇:功能選擇模塊為系統(tǒng)提供類似于菜單的功能,讓用戶輸入功 能選擇項(xiàng),并進(jìn)入相應(yīng)的功能執(zhí)行程序。系統(tǒng)按權(quán)限分為管理員的功能選擇和 投票人的功能選擇。分別在list1()和list2()函數(shù)中。身份驗(yàn)證:該模塊判斷要使用該系統(tǒng)的是投票人還是管理員,首先獲取 登錄者的用戶名和密碼,其中密碼

3、的獲取用不回顯的方式輸入,避免他人從旁 竊取,在一定程度上保證安全性。當(dāng)用戶名和密碼相符時(shí),判斷用戶的權(quán)限并 進(jìn)入相應(yīng)功能選擇函數(shù)。當(dāng)用戶忘記密碼時(shí),給用戶機(jī)會(huì)進(jìn)行重新輸入。源程 序包含在login()中。投票人管理模塊:該模塊對(duì)投票人進(jìn)行管理是由管理員實(shí)現(xiàn)的,確保只 有用管理員預(yù)先定義好的投票人用戶名和密碼才能正確登系統(tǒng)進(jìn)行投票。管理 員對(duì)投票人的管理有投票人的增加、刪除、修改和瀏覽。源程序包含在adduser()(增加用戶記錄);deluser()(刪除投票人信息);moduserbynum()(根據(jù)用 戶序號(hào)修改);scanbynum()(根據(jù)用戶序號(hào)排序?yàn)g覽)。候選人管理模塊:候選人管

4、理模塊完成候選人信息的瀏覽、候選人信息 修改、候選人簡(jiǎn)介按姓名的查詢3個(gè)主要功能。源程序包含在sortscand()(排 序?yàn)g覽候選人);modifycand()(按號(hào)修改候選人信息);findcandbyname()(按 姓名查詢候選人)。投票區(qū)管理:投票區(qū)完成該系統(tǒng)的主體功能。當(dāng)投票人順得登錄系統(tǒng)后, 輸入要投票的候選人的數(shù)字代碼,即可完成投票。候選人的得票信息會(huì)隨時(shí)刷新。 該系統(tǒng)定義了一個(gè)單獨(dú)的函數(shù)vote()來(lái)實(shí)現(xiàn)此功能,每個(gè)投票人的一次投票都 會(huì)觸發(fā)該函數(shù),從而讀取并修改候選人信息文件,使得所投候選人的票數(shù)增一。得票結(jié)果管理:對(duì)于得票結(jié)果,系統(tǒng)規(guī)定管理員可以對(duì)其進(jìn)行管理操作, 操作之

5、一是排行瀏覽得票結(jié)果,從而可以得知哪位候選人被選中。該功能也是通 過(guò)對(duì)文件的讀寫(xiě)和對(duì)數(shù)組的排序?qū)崿F(xiàn)的。對(duì)得票結(jié)果的另一個(gè)管理功能是清空得 票信息。此功能只有管理員能夠使用。功能的實(shí)現(xiàn)是用重寫(xiě)文件的方式來(lái)實(shí)現(xiàn)的。 將文件內(nèi)容讀取到數(shù)組,將數(shù)組中每條記錄的得票信息都重置為0,再重新寫(xiě)入 文件,從而完成得票記錄的清空功能。五、系統(tǒng)實(shí)現(xiàn)表3-1程序總框架(函數(shù)清單)表序號(hào)文字解釋函數(shù)1排序?yàn)g覽候選人sortscand()2按號(hào)修改候選人信息modifycand()3排序?yàn)g覽票數(shù)信息sortvotenum();4清空得票信息clearvotenum()5增加用戶記錄adduser();6刪除投票人信息d

6、eluser();7根據(jù)用戶序號(hào)修改moduserbynum()8根據(jù)用戶序號(hào)排序?yàn)g覽scanbynum()9按姓名查詢候選人findcandbyname()10投票vote()11登陸界面login()12創(chuàng)建用戶creatuser();13初始化候選人信息creatcandidate()詳細(xì)源程序#include #include #define SIZE 50/*為用戶初始化內(nèi)存*/#define MAX50/*為候選人初始化內(nèi)存*/#define INCREASE20/* 內(nèi)存增加數(shù)目*/typedef struct(long number;char name20;char intro

7、500;int votenum;candidate;typedef struct(long number;/* 用戶序號(hào)*/char name20;/* 用戶名稱 */char ps8;/* 用戶密碼 */ int power;/* 用戶權(quán)限 */ user;void vote()/投票選舉(int i,flag;/*flag用來(lái)標(biāo)志是否找對(duì)應(yīng)編號(hào),即投票是否成功*/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èi)存失敗!n按任意鍵繼續(xù).n);getch();return;system(cls);begin:flag=0;fp=fopen(DataFile,rb);if(fp=NULL)(printf(n打開(kāi)文件失敗!按任意鍵結(jié)束.n);getch();exit(1);printf(請(qǐng)輸入你要選舉的候選人序號(hào):);scanf(ld,&candidatenum);printf(你要選舉的候選人序號(hào)是: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èi)存分配失??! n按任意鍵繼續(xù).n);free(s);/*釋放內(nèi)存*/getch();return;s=t;t=NULL;fclose(fp);if(flag=0)(printf (-投票失敗!找不到你要選舉的候選人,按任意鍵繼續(xù).n);getch();goto begin;else(printf(投票成功!n);/*將修改后的結(jié)構(gòu)體數(shù)組記錄寫(xiě)入文件*/fp=fopen(DataFile,wb);

11、if(fp=NULL)(printf(n寫(xiě)入文件錯(cuò)誤!按任意鍵結(jié)束.n”,DataFile);getch();exit(1);for(i=0;inum;i+)(if(fwrite(&si,sizeof(candidate),1,fp)! 二 1)printf(n寫(xiě)入文件錯(cuò)誤!按任意鍵結(jié)束.n);getch();exit(1);fclose(fp);/*顯示投票后的投票情況*/fp=fopen(DataFile,rb);if(fp=NULL)(printf(n打開(kāi)文件錯(cuò)誤!按任意鍵結(jié)束n”,DataFile);getch();exit(1);printf(投票后的信息是:n);printf(n

12、序號(hào) t 姓名t 票數(shù)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 是否繼續(xù)?(y/n)”);fflush(stdin);next二getchar();putchar(n);if(next=y|next=Y)goto begin;free(s);/* 釋放內(nèi)存 */。list1()(int ch2;list01:system(cl

13、s);printf(+n);printf(|歡迎進(jìn)入電子投票平臺(tái)!|n);printf(|+|n);printf(|1.排序?yàn)g覽候選人|2.按號(hào)修改候選人信息|n);printf(|3.排序?yàn)g覽票數(shù)信息|4,清空得票信息|n);printf(|+n);printf(|#printf(|5.增加用戶記錄| 6.刪除投票人信息|n);printf(|7.根據(jù)用戶序號(hào)修改| 8.根據(jù)用戶序號(hào)排序?yàn)g覽 |n);printf(|0.退出系統(tǒng)|n);printf(+n);printf(請(qǐng)輸入您的選擇:);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(選擇錯(cuò)誤n按任意鍵繼續(xù).n);system(cls);getch();goto list01;list2()/投票人功能菜單(int ch3;list02:system(cls);printf(+ -+n )printf(|歡迎進(jìn)入電子投票系統(tǒng)|n)printf(|1.排序?yàn)g覽候選人|n)printf(|2.按姓名查詢候選人|n)printf(|3.投票|n)printf(|0.退出系統(tǒng)|n)printf(+ -+n )printf(請(qǐng)輸入您的選擇:);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(選擇錯(cuò)誤n按任意鍵繼續(xù).n);getch();main()/*主菜單選項(xiàng)*/(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|歡迎進(jìn)入|n);printf(t|電子投票大廳|n);printf(t|n);printf(t|1.創(chuàng)建用戶|n);printf(t|2.登錄系統(tǒng)|n);printf(t|0.退出系統(tǒng)|n);printf(t|n);printf(t|作者 謝國(guó)林 20074300301 |n);printf(t|2008 年 6 月 29 號(hào) |n);printf(t+n);printf(t請(qǐng)輸入您的選擇:);scanf(%d,&ch1);switch(chl)(case 1:(reput

18、in:printf(t請(qǐng)輸入創(chuàng)建密碼:);scanf(%s,ps);if(strcmp(ps,666666)=0)(againre:system(cls);printf(nnn創(chuàng)建用戶文件請(qǐng)選擇1;創(chuàng)建候選人文件請(qǐng)選擇2;結(jié)束請(qǐng) 按 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密碼錯(cuò)誤是否繼續(xù)?(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(選擇錯(cuò)誤!n按任意鍵繼續(xù).n);fflush(stdin);getch();break;實(shí)驗(yàn)結(jié)果1.進(jìn)入主菜單就會(huì)見(jiàn)到圖一:圖一:主菜單(由于第一次沒(méi)保存該圖,學(xué)校機(jī)房又關(guān)閉,只能用寫(xiě)的!)# /( ) TOC o 1-5 h z +oOOo(_)oOOo+|歡迎進(jìn)入|電子投票大廳|1|1.創(chuàng)建用戶|2.登錄系統(tǒng)|0.退出系統(tǒng)|1|作者謝國(guó)林20074300301

20、|2008年6月29號(hào)+2 .當(dāng)輸入數(shù)據(jù)一的時(shí)候就可以進(jìn)入管理員功能選項(xiàng)圖二:管理員功能選統(tǒng)統(tǒng)系人 西又選 投選候 子候詢 電覽查統(tǒng) 入瀏省系 進(jìn)序姓理由 迎歡1 ..圖三:投票人功能選項(xiàng)3.圖三:投票人功能選項(xiàng)請(qǐng)輸入您的選擇二六、實(shí)驗(yàn)總結(jié)通過(guò)這學(xué)期對(duì)C語(yǔ)言的學(xué)習(xí),收獲良多。盡管有些部分覺(jué)得很有難度,但 在不停反復(fù)的看書(shū)與上機(jī)練習(xí)下,還是有所理解的。這個(gè)實(shí)驗(yàn)的程序是我從書(shū)本 上的一些程序仿照而來(lái)的。剛開(kāi)始進(jìn)行編譯時(shí)發(fā)現(xiàn)許多錯(cuò)誤和警告,然后就慢慢 的進(jìn)行分析修改程序,錯(cuò)誤和警告不斷減少,最后沒(méi)錯(cuò)誤了,然后進(jìn)行運(yùn)行,可 是還是不能運(yùn)行,最后對(duì)源程序又進(jìn)行了認(rèn)真的修改,終于可以運(yùn)行了!有些功能不能實(shí)現(xiàn),應(yīng)該是功能模塊的問(wèn)題,我就對(duì)模塊函數(shù)進(jìn)行認(rèn)真的分 析,花了好長(zhǎng)時(shí)間又發(fā)現(xiàn)了不少的問(wèn)題,比如用if條件時(shí)把等號(hào)寫(xiě)成了賦值號(hào) 等等。還有一些比較隱藏的錯(cuò)誤,如:把長(zhǎng)整型數(shù)據(jù)和字符串弄混淆,scanf函

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論