電子投票系統(tǒng)c語言課程設(shè)計(jì)報(bào)告_第1頁
電子投票系統(tǒng)c語言課程設(shè)計(jì)報(bào)告_第2頁
電子投票系統(tǒng)c語言課程設(shè)計(jì)報(bào)告_第3頁
電子投票系統(tǒng)c語言課程設(shè)計(jì)報(bào)告_第4頁
電子投票系統(tǒng)c語言課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

課程設(shè)計(jì)報(bào)告1.需求分析電子投票平臺(tái)的需求來源于兩種不同的角色:治理員,投票用戶。〔1〕.治理員人的票數(shù)進(jìn)展排序以及對系統(tǒng)的用戶進(jìn)展治理,創(chuàng)立使用者用戶名和密碼等。一般投票用戶〔投票是只需做到輸入自己想要投票的候選人編號(hào)即可完成投票〕2.軟件功能模塊構(gòu)造如圖:源程序代碼/*Note:YourchoiceisCIDE*/#include“stdio.h“#include“string.h“#include“stdlib.h“#definelen1sizeof(structcan)#definelen2sizeof(structur)intpower;//記錄登錄方式structcan{intid;intsum;charname[20];charjs[300];structcan*next;};structur{charname[20];charpsw[20];structur*next;};voidindex;//進(jìn)入界面voidadmin;//治理員界面voiduser;//用戶界面voidadcd;//增候選人界面voidbscd;//掃瞄候選人structcan*getcanlist;//從can.txt文件取出鏈表,返回候選人鏈表頭指針voidcanlistwf(structcan*p);//把候選人鏈表寫入文件voidauser;//增用戶structur*geturlist;//獲得用戶信息鏈表voiduserlwf;//更ur.txt用戶信息char*userfpsw(char*name);//查詢用戶密碼voidmain{index;}voidindex{intindexa;voidlogin;//聲明登錄界面函數(shù)printf(“---------歡送使用電子投票系統(tǒng) \n“);printf(“治理員登陸 請按1\n“);printf(“投票用戶登錄 請按2\n“);printf(“請輸入登錄方式:“);scanf(“%d“,&indexa);吸取輸入的回車if(indexa==1||indexa==2){power=indexa;login;}else{printf(“\n輸入錯(cuò)誤,請重輸入\n“);index;}}voidlogin{charlogina[20]={”\0”},loginb[20]={”\0”};charpsw[20];structur*pp;printf(“------登錄界面 \n“);printf(“請輸入登錄帳號(hào):“);gets(logina);if(logina[0]!=”\0”){printf(“請輸入登錄密碼:“);}else{printf(“\n輸入的登錄帳號(hào)不能為空\n“);login;}gets(loginb);strcpy(psw,userfpsw(logina));帳號(hào)密碼均正確{if(power==1&&!strcmp(“admin“,logina)){admin;}elseif(power==2){user;}else{printf(“\n權(quán)限不正確,請重輸入\n“);login;}}else{printf(“\n帳號(hào)密碼不正確,請重輸入\n“);login;}}voidadmin//治理員工作頁面{intadmina;while(1){printf(“--------治理員工作界面 \n“);printf(“增候選人信息 請按1\n“);printf(“掃瞄候選人信息 請按2\n“);printf(“增投票用戶 請按3\n“);printf(“要進(jìn)展操作請輸入相應(yīng)的數(shù)字:“);scanf(“%d“,&admina);吸取輸入多余字符if(admina==1)//依據(jù)輸入跳到相應(yīng)處理函數(shù){break;}elseif(admina==2){bscd;printf(“操作成功,自動(dòng)返回上一層\n“);admin;break;}elseif(admina==3){break;}else//出錯(cuò)處理{printf(“\n輸入出錯(cuò),請重輸入\n“);}}}voidadcd//增候選人函數(shù){charname[20],js[300];structcan*h,cd;voidadmin;while(1){printf(“--------增候選人界面 \n“);printf(“請輸入候選人姓名:“);gets(name);if(name[0]!=”\0”)else{printf(“輸入出錯(cuò),請重試\n“);continue;}printf(“請輸入候選人簡介:\n“);gets(js);strcpy(cd.js,js);h=getcanlist;cd.id=h->id+1;cd.next=h;canlistwf(&cd);printf(“操作成功,自動(dòng)返回上一層\n“);admin;break;}}voidbscd//掃瞄候選人信息函數(shù){structcan*p,*p1,*p2;charname[20],js[300];inta,t;printf(“是否按票數(shù)降序排列?1是/2不是,請輸入對應(yīng)的數(shù)字\n“);scanf(“%d“,&a);if(a==1){p1=p2=p;while(p2->next!=NULL){p2=p2->next;if(p2->next==NULL)break;交換值{me,name);t=p1->id,p1->id=p2->id,p2->id=t;t=p1->sum,p1->sum=p2->sum,p2->sum=t;}}}if(a==2){printf(“--------候選人信息 \n“);printf(“編號(hào)\t候選人姓名\t所得票數(shù)\t候選人簡介\n“);if(p==NULL){printf(“數(shù)據(jù)為空,自動(dòng)返回上一層\n“);admin;}else{while(p->next!=NULL){printf(“%3d\t“,p->id);printf(“%4d\t\t“,p->sum);printf(“%s\t\n“,p->js);p=p->next;}}}elseif(a!=1){printf(“輸入錯(cuò)誤,請重輸入\n“);bscd;}}structcan*getcanlist//從can文件取出鏈表,返回頭指針{charstr[300],ch,*t=str;inti=1;FILE*fp;structcan*p1=NULL,*p2=NULL,*h=NULL;if((fp=fopen(“can.txt“,“r“))==NULL){printf(“無法翻開此文件“);exit(0);}while(!feof(fp)){if(i++==1){p1=p2=(structcan*)malloc(len1);//開拓單元,存一個(gè)候選人h=p2;//指定頭指針}else{p1=p2;p2=(structcan*)malloc(len1);p1->next=p2;}取出idch=fgetc(fp);//吸取回車p2->id=atoi(str);//設(shè)置id取出sumch=fgetc(fp);//吸取回車p2->sum=atoi(str);//設(shè)置sum取出namech=fgetc(fp);//吸取回車設(shè)置namefscanf(fp,“%s“,str);//取出jsch=fgetc(fp);//吸取回車設(shè)置jsp2->next=NULL;}returnh;}voidcanlistwf(structcan*p)//更c(diǎn)an數(shù)據(jù)文件{FILE*fp;{printf(“無法翻開此文件“);exit(0);}while(p->next!=NULL)//把鏈表數(shù)據(jù)逐個(gè)輸出到文件{fprintf(fp,“%d\n“,p->id);fprintf(fp,“%d\n“,p->sum);fprintf(fp,“%s\n“,p->name);fprintf(fp,“%s\n“,p->js);p=p->next;}fclose(fp);}voiduser//用戶界面{intusera;intusercd;structcan*p,*t;printf(“------用戶界面 \n“);printf(“掃瞄候選人信息 請按1\n“);printf(“投票給候選人 請按2\n“);getchar;if(usera==1)//掃瞄候選人信息{bscd;printf(“操作成功,自動(dòng)返回上一層\n“);user;}elseif(usera==2)//投票{printf(“請輸入候選人編號(hào):“);scanf(“%d“,&usercd);t=p=getcanlist;while(p->next!=NULL){if(p->id==usercd){(p->sum)++;break;}p=p->next;}printf(“操作成功,自動(dòng)返回上一層\n“);canlistwf(t);user;}}voidauser//增用戶{charname[20];charpsw[20];structur*p,ausera;printf(“請輸入用戶帳號(hào):“);gets(name);printf(“請輸入用戶密碼:“);gets(psw);p=geturlist;strcpy(ausera.psw,psw);ausera.next=p;printf(“操作成功,自動(dòng)返回上一層\n“);admin;}structur*geturlist//獲得用戶信息鏈表{charstr[20],ch,*t=str;inti=1;FILE*fp;structur*p1=NULL,*p2=NULL,*h=NULL;if((fp=fopen(“ur.txt“,“r“))==NULL){printf(“無法翻開此文件“);exit(0);}while(!feof(fp)){if(i++==1){p1=p2=(structur*)malloc(len2);//開拓單元,存一個(gè)候選人h=p2;//指定頭指針}else{p1=p2;p2=(structur*)malloc(len2);p1->next=p2;}取出namech=fgetc(fp);//吸取回車設(shè)置namefscanf(fp,“%s“,str);//取出pswch=fgetc(fp);//吸取回車設(shè)置pswp2->next=NULL;}returnh;}voiduserlwf(structur*p)//更ur.txt用戶信息{FILE*fp;{printf(“無法翻開此文件“);exit(0);}while(p->next!=NULL)//把鏈表數(shù)據(jù)逐個(gè)輸出到文件{fprintf(fp,“%s\n“,p->psw);p=p->next;}fclose(fp);}char*userfpsw(char*name)//查詢用戶密碼{structur*p;while(p->next!=NULL){if(!strcmp(name,p->name)){returnp->psw;break;}p=p->next;}returnNULL;}四.測試用例和測試說明。在這里必需說明一下使用方法,首先要在程序文件名目下建立一個(gè)ur.txt〔括號(hào)里為說明,不必寫入:admin(admin不能自定義,輸入回車換行)這里是密碼,可以自定義,之后輸入回車換行,保存〕這樣編譯后就可以運(yùn)行了。首頁輸入1后,消滅登錄界面admin界面輸入對應(yīng)數(shù)字可以實(shí)現(xiàn)相應(yīng)功能掃瞄功能添加候選人功能添加用戶功能用

溫馨提示

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

最新文檔

評論

0/150

提交評論