C语言课程设计报告电子投票系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
源代码
#include<>
#include<>
#include<>
#include<>
#define closegr closegraph
#define N 30
void main_a(); 览所有候选人 2.查询候选人信息 **\n");
printf("** 3.投票 4.退出 **\n");
scanf("%d",&key);
{
goto again;
}
else
{
printf("结束\n");
exit(0);
}
}
}
perror("Open file fail");
getch();
exit(1);
}
while(fread(&c_man[c_total],sizeof(candidate),1,fp)!=(int)NULL)
{
c_total++;
}
fclose(fp);
}
void addUser()xt";ame)==0)
{
flag=1;
c_man[i].vote++;
}
}
if(flag)
{
printf("投票成功\n");
fp=fopen(DataFile,"wb");
if(fp==NULL)n",DataFile);
perror("Open file fail");
getch();
exit(1);
}
for(i=0;i<c_total;i++)
for(i=0;i<c_total;i++)umber)
{
printf("该号码已存在.按任意键浏览所有候选人...");
getch();
over_flag=1;
break;
}
}
if (over_flag)
{
over_flag=0;
continue;
}
printf(" 姓名:");scanf("%s",&;
switch(key)
{
case 1:scan();break;
case 2:search();break;
case 3:vote();break;
case 4:break;
default:break;
}
}while(key!=4);
}
void vote() xt",next;umber==candidatenum)
六.结果
初始界面
分别输入1,1进入管理员界面
创建新候选人
输出候选人信息
投票者界面
投票以及投票结果
候选人票数排序结果
七.心得体会
在本次课程设计中,先使用结构化分析方法对系统进行分析,将整个系统细分为几个模块,再针对每个小模块编写代码。通过本次课程设计的学习以及老师的指导,学会了很多东西,了解了开发一个系统的一些步骤。尽管大部分都参考权威书籍的代码,但是在编写代码过程中还是加深了对链表的了解程度。开发工具用的是vc++。这个程序还存在很多需要改进的地方,如密码输入后直接显示了出来,而不是*,缺少安全性;每个投票人不仅仅只能投一票等等。但我会继续努力学习,争取写出更好的程序
}while((c=='Y')||(c=='y'));
}
void sort()ote<c_man2[j].vote)k=j;
}
if(k!=i){
temp=c_man2[i];c_man2[i]=c_man2[k];c_man2[k]=temp;
}
}umber,c_man2[i].name,c_man2[i].vote);
图1 程序功能模块结构图
五.程序设计及各模块函数功能简述
1.数据结构
链表是线形表的一种,线形表分为顺序存储结构和链式存储结构。线形表的顺序存储结构的特点是逻辑关系上相邻的两个元素物理位置上也相邻,因此可以随机存取表中任一元素。链式存储结构的特点是用一组任意的存储单元存储线形表的数据元素。链表的最大的优点是对表的添加、删除、查找、排序等操作比较方便,因此采用链表来存储候选人,投票人相关信息。且对结点的定义如下:
C语言课程设计报告
电子投票系统
学院计算机学院
专业
年级
姓名
学号
教师
年月日
广东工业大学计算机学院制
一.设计题目
电子投票系统
二.课程设计目的
了解软件工程中的一些系统分析,模块分析,代码设计的概念,利用WIN-TC实现学生成绩管理系统的录入、查询、删除、统计等基本操作,使用单链表结构实现学生成绩管理,了解数据库管理的基本功能,掌握C语言中的结构体、指针、函数(系统函数、自定义函数)、文件操作等知识。通过对系统的分析和设计,进一步巩固C语言的学习,以提高对开发环境的进一步认识和综合编程能力。
continue;
}
printf(" 简介:");
fflush(stdin);
gets;
[399]='\0';
=0;
c_man[c_total]=TempS;xt";
FILE * fp=NULL;
c_total=0;
fp=fopen(DataFile,"rb");
if(fp==NULL)
{
printf("\nOpen file %s fail! 任意键结束 \n",DataFile);
main_v();
};
}
fclose(fp);
if(success==0)
{
fflush(stdin);
printf("\n用户名或密码错误!继续输入吗?是(Y)/否(N): ");
fflush(stdin);
relogin=getchar();
if((relogin=='Y')||(relogin=='y'))
printf("\n按任意键返回首页!");
getch();
}
void search()umber)
{
printf("\t您要查询的候选人信息如下:\n\n");
printf("\t号码:%ld \n",c_man[i].number);
printf("\t姓名:%s \n",c_man[i].name);
printf("** 3.查询候选人信息 4.浏览所有候选人 **\n");
printf("** 5.整理所有投票 0.退出 **\n");
scanf("%d",&key);
switch(key)
{
case 1:addcandidate();break;
case 2:addUser();break;
三.系统功能
本系统程序功能:
(1)投票者功能
a.浏览所有候选人资料
b.查询要了解的候选人的信息
c.在了解候选人之后进行投票
(2)管理员功能
a.创建新的候选人资料
b.创建新的用户资料
c.查询要了解的候选人资料
d.浏览所有的候选人资料
e.对候选人票数进行统计并排序
四.系统功能模块结构图
本程序利用单链表存储结构完成对学生成绩的动态管理,其基本功能模块如下图所示:
char relogin;.\n");
main_a();
}
else
{
if(strcmp,==0&&(strcmp,==0))
{
printf("\nlogin successful!");
success=1;
printf("\n\n\n\n\n\n\n 您是投票者!欢迎您登录系统!正在进入投票者界面...");
printf("\t简介:%s \n",c_man[i].intro);
flag=1;
break;
}
}
if (flag)
{
flag=0;
}
else
{
printf("\t对不起,没有您要查询的候选人\n");
}
printf("\t要继续查询候选人吗是(Y)/否(N): ");
getchar();
c=getchar();
case 3:search();break;
case 4:scan();break;
case 5:sort(); break;
case 0:break;
default:break;
}
}while(key!=0);
}
void addcandidate()xt";
FILE * fp=NULL;
char c;
int over_flag=0;
candidate TempS;
read();
fp=fopen(DataFile,"ab+");
do
{
printf(" *****************创建新候选人*****************\n");
printf("请输入:");
printf("候选人号码:");scanf("%ld",&;
[19]='\0';
for(i=0;i<c_total;i++)
{
if(strcmp,c_man[i].name)==0)
{
printf("该姓名已存在!请再输入一次!按任意键继续...");
getch();
over_flag=1;
break;
}
}
if (over_flag)
{
over_flag=0;
{
fwrite(&c_man[i],sizeof(candidate),1,fp);
}
fclose(fp);
}
else
{
printf("投票失败!您要投票的号码不存在\n");
printf("按任意键返回首页! \n");
getch();
return;
}
fp=fopen(DataFile,"rb");建新候选人 2.创建新用户 **\n");
ttypedef struct candidatesort()整理所有投票
先调用read()读取候选人信息,利用for语句,使用选择法对投票数进行排序,并输出。
11.vote()投票者投票
先调用read()读取候选人信息,输入候选人相应编号,利用for语句,将对应候选人的投票数+1,并返回到文档中,输出投票结果。若查无此编号,输出“投票失败!您要投票的号码不存在”。
}
printf("***********************************************\n");
printf("按任意键返回首页!");
fflush(stdin);
getch();
}
void main()
{
FILE * fp=NULL;
char DataFile[20]="用户.txt";
{wenku.baidu.com
printf("该用户名已存在!按任意键浏览所有用户...");
getch();
over_flag=1;
break;
}
}
if (over_flag)
{
over_flag=0;
continue;
}
printf(" 密码:");
scanf("%s",&;
[7]='\0';
printf(" 权限:");scanf("%d",&;
if!=1)
{
=0;
}
total_user[total]=TempS;n",DataFile);umber);
printf("姓名:%-19s",c_man[i].name);
printf("简介:%s\n",c_man[i].intro);
}
printf("***************************************************************");
#include<>
#include<>
#include<>
#include<>
#define closegr closegraph
#define N 30
void main_a(); 览所有候选人 2.查询候选人信息 **\n");
printf("** 3.投票 4.退出 **\n");
scanf("%d",&key);
{
goto again;
}
else
{
printf("结束\n");
exit(0);
}
}
}
perror("Open file fail");
getch();
exit(1);
}
while(fread(&c_man[c_total],sizeof(candidate),1,fp)!=(int)NULL)
{
c_total++;
}
fclose(fp);
}
void addUser()xt";ame)==0)
{
flag=1;
c_man[i].vote++;
}
}
if(flag)
{
printf("投票成功\n");
fp=fopen(DataFile,"wb");
if(fp==NULL)n",DataFile);
perror("Open file fail");
getch();
exit(1);
}
for(i=0;i<c_total;i++)
for(i=0;i<c_total;i++)umber)
{
printf("该号码已存在.按任意键浏览所有候选人...");
getch();
over_flag=1;
break;
}
}
if (over_flag)
{
over_flag=0;
continue;
}
printf(" 姓名:");scanf("%s",&;
switch(key)
{
case 1:scan();break;
case 2:search();break;
case 3:vote();break;
case 4:break;
default:break;
}
}while(key!=4);
}
void vote() xt",next;umber==candidatenum)
六.结果
初始界面
分别输入1,1进入管理员界面
创建新候选人
输出候选人信息
投票者界面
投票以及投票结果
候选人票数排序结果
七.心得体会
在本次课程设计中,先使用结构化分析方法对系统进行分析,将整个系统细分为几个模块,再针对每个小模块编写代码。通过本次课程设计的学习以及老师的指导,学会了很多东西,了解了开发一个系统的一些步骤。尽管大部分都参考权威书籍的代码,但是在编写代码过程中还是加深了对链表的了解程度。开发工具用的是vc++。这个程序还存在很多需要改进的地方,如密码输入后直接显示了出来,而不是*,缺少安全性;每个投票人不仅仅只能投一票等等。但我会继续努力学习,争取写出更好的程序
}while((c=='Y')||(c=='y'));
}
void sort()ote<c_man2[j].vote)k=j;
}
if(k!=i){
temp=c_man2[i];c_man2[i]=c_man2[k];c_man2[k]=temp;
}
}umber,c_man2[i].name,c_man2[i].vote);
图1 程序功能模块结构图
五.程序设计及各模块函数功能简述
1.数据结构
链表是线形表的一种,线形表分为顺序存储结构和链式存储结构。线形表的顺序存储结构的特点是逻辑关系上相邻的两个元素物理位置上也相邻,因此可以随机存取表中任一元素。链式存储结构的特点是用一组任意的存储单元存储线形表的数据元素。链表的最大的优点是对表的添加、删除、查找、排序等操作比较方便,因此采用链表来存储候选人,投票人相关信息。且对结点的定义如下:
C语言课程设计报告
电子投票系统
学院计算机学院
专业
年级
姓名
学号
教师
年月日
广东工业大学计算机学院制
一.设计题目
电子投票系统
二.课程设计目的
了解软件工程中的一些系统分析,模块分析,代码设计的概念,利用WIN-TC实现学生成绩管理系统的录入、查询、删除、统计等基本操作,使用单链表结构实现学生成绩管理,了解数据库管理的基本功能,掌握C语言中的结构体、指针、函数(系统函数、自定义函数)、文件操作等知识。通过对系统的分析和设计,进一步巩固C语言的学习,以提高对开发环境的进一步认识和综合编程能力。
continue;
}
printf(" 简介:");
fflush(stdin);
gets;
[399]='\0';
=0;
c_man[c_total]=TempS;xt";
FILE * fp=NULL;
c_total=0;
fp=fopen(DataFile,"rb");
if(fp==NULL)
{
printf("\nOpen file %s fail! 任意键结束 \n",DataFile);
main_v();
};
}
fclose(fp);
if(success==0)
{
fflush(stdin);
printf("\n用户名或密码错误!继续输入吗?是(Y)/否(N): ");
fflush(stdin);
relogin=getchar();
if((relogin=='Y')||(relogin=='y'))
printf("\n按任意键返回首页!");
getch();
}
void search()umber)
{
printf("\t您要查询的候选人信息如下:\n\n");
printf("\t号码:%ld \n",c_man[i].number);
printf("\t姓名:%s \n",c_man[i].name);
printf("** 3.查询候选人信息 4.浏览所有候选人 **\n");
printf("** 5.整理所有投票 0.退出 **\n");
scanf("%d",&key);
switch(key)
{
case 1:addcandidate();break;
case 2:addUser();break;
三.系统功能
本系统程序功能:
(1)投票者功能
a.浏览所有候选人资料
b.查询要了解的候选人的信息
c.在了解候选人之后进行投票
(2)管理员功能
a.创建新的候选人资料
b.创建新的用户资料
c.查询要了解的候选人资料
d.浏览所有的候选人资料
e.对候选人票数进行统计并排序
四.系统功能模块结构图
本程序利用单链表存储结构完成对学生成绩的动态管理,其基本功能模块如下图所示:
char relogin;.\n");
main_a();
}
else
{
if(strcmp,==0&&(strcmp,==0))
{
printf("\nlogin successful!");
success=1;
printf("\n\n\n\n\n\n\n 您是投票者!欢迎您登录系统!正在进入投票者界面...");
printf("\t简介:%s \n",c_man[i].intro);
flag=1;
break;
}
}
if (flag)
{
flag=0;
}
else
{
printf("\t对不起,没有您要查询的候选人\n");
}
printf("\t要继续查询候选人吗是(Y)/否(N): ");
getchar();
c=getchar();
case 3:search();break;
case 4:scan();break;
case 5:sort(); break;
case 0:break;
default:break;
}
}while(key!=0);
}
void addcandidate()xt";
FILE * fp=NULL;
char c;
int over_flag=0;
candidate TempS;
read();
fp=fopen(DataFile,"ab+");
do
{
printf(" *****************创建新候选人*****************\n");
printf("请输入:");
printf("候选人号码:");scanf("%ld",&;
[19]='\0';
for(i=0;i<c_total;i++)
{
if(strcmp,c_man[i].name)==0)
{
printf("该姓名已存在!请再输入一次!按任意键继续...");
getch();
over_flag=1;
break;
}
}
if (over_flag)
{
over_flag=0;
{
fwrite(&c_man[i],sizeof(candidate),1,fp);
}
fclose(fp);
}
else
{
printf("投票失败!您要投票的号码不存在\n");
printf("按任意键返回首页! \n");
getch();
return;
}
fp=fopen(DataFile,"rb");建新候选人 2.创建新用户 **\n");
ttypedef struct candidatesort()整理所有投票
先调用read()读取候选人信息,利用for语句,使用选择法对投票数进行排序,并输出。
11.vote()投票者投票
先调用read()读取候选人信息,输入候选人相应编号,利用for语句,将对应候选人的投票数+1,并返回到文档中,输出投票结果。若查无此编号,输出“投票失败!您要投票的号码不存在”。
}
printf("***********************************************\n");
printf("按任意键返回首页!");
fflush(stdin);
getch();
}
void main()
{
FILE * fp=NULL;
char DataFile[20]="用户.txt";
{wenku.baidu.com
printf("该用户名已存在!按任意键浏览所有用户...");
getch();
over_flag=1;
break;
}
}
if (over_flag)
{
over_flag=0;
continue;
}
printf(" 密码:");
scanf("%s",&;
[7]='\0';
printf(" 权限:");scanf("%d",&;
if!=1)
{
=0;
}
total_user[total]=TempS;n",DataFile);umber);
printf("姓名:%-19s",c_man[i].name);
printf("简介:%s\n",c_man[i].intro);
}
printf("***************************************************************");