课程设计 电子投票管理系统

本文档详细介绍了如何设计和实现一个电子投票管理系统。在开始前,需要在D盘准备election.txt和ID.txt两个文本文件,分别存储候选人信息和投票者信息。系统包括管理员和投票者的登录功能,管理员能查看、修改候选人和投票者信息,清空投票记录,而投票者则能查看候选人并进行投票。
摘要由CSDN通过智能技术生成

在运行代码之前需要在D盘创建两个文本文件election.txt(保存候选人姓名、编号、特点、初始得票数)、ID.txt(保存投票者姓名、账号、密码、所投的候选人编号、权限)

例:各个信息用空格隔开分别为投票者姓名、账号、密码、所投的候选人编号、权限(1是有权限,0是没有权限)

1.管理员和投票者都需要账号密码登录

2.管理者可以查看候选人信息、查看投票信息、查看投票者信息、修改投票者信息、修改候选人信息、清空投票信息

3.投票者可以查看候选人信息、进行投票

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include <windows.h>
#include<string.h>

typedef struct ENode             //候选人
{
    char name[100];
    int number;
    char introduction[500];
    int sum;
    struct ENode *next;
} enode;
typedef struct IDNode
{
    char name[100];
    char user[100];
    char password[100];
    int order;
    int jurisdiction;
    struct IDNode *next;
} idnode;

enode *ehead=NULL;
idnode *Idhead=NULL;

void Login(int a)           //登录界面
{
    idnode *r;
    r=Idhead->next;
    char number[100];
    char password[100];
    printf("账号:");
    scanf("%s",number);
    if(a==1)
    {
        if(strcmp(number,"guanlizhe123")==0)
        {
            printf("密码:");
            scanf("%s",password);
            if(strcmp(password,"123")==0)
            {
                system("cls");
                printf("\n\n登陆成功");
                Sleep(500);
                fflush(stdin);
                system("cls");
                AFunction();
            }
            else
            {
                system("cls");
                printf("\n\n密码错误");
                Sleep(500);
                fflush(stdin);
                system("cls");
            }
        }
        else
        {
            system("cls");
            printf("\n\n账号错误");
            Sleep(500);
            fflush(stdin);
            system("cls");
        }
    }
    else
    {
        int ver=0;
        while(r!=NULL)
        {
            if(strcmp(number,r->user)==0)
            {
                ver=1;
                break;
            }
            r=r->next;
        }
        if(ver==1)
        {
            printf("密码:");
            scanf("%s",password);
            if(r->password!=NULL)
            {
                if(strcmp(password,r->password)==0)
                {
                    system("cls");
                    if(r->jurisdiction==0)
                    {
                        printf("\n\n该账号无权限!");
                        Sleep(1000);
                        fflush(stdin);
                        system("cls");
                    }
                    else
                    {
                        printf("\n\n登陆成功");
                        Sleep(500);
                        fflush(stdin);
                        system("cls");
                        VFunction(r);
                    }
                }
                else
                {
                    system("cls");
                    printf("\n\n密码错误");
                    Sleep(500);
                    fflush(stdin);
                    system("cls");
                }
            }
        }
        else
        {
            system("cls");
            printf("\n\n账号错误");
            Sleep(500);
            fflush(stdin);
            system("cls");
        }
    }
}

void VFunction(idnode *r)
{
    while(1)
    {
        printf("请选择功能:\n\n");
        printf("1.投票\n\n");
        printf("2.查看候选人信息\n\n");
        printf("3.退出");
        char a;
        a=getch();
        system("cls");
        if(a==49)
        {
            vote(r);
        }
        else if(a==50)
        {
            browse();
        }
        else if(a==51)
        {
            break;
        }
        else
        {
            printf("\n\n没有此选项!");
            Sleep(500);
            fflush(stdin);
            system("cls");
        }
    }
}

void vote(idnode *r)             //投票函数
{
    if(r->order==0)
    {
        int order;
        for(;;)
        {
            int i;
            printf("\n\n输入候选人编号即为投票成功\n\n若弃权或没有决定好,输入'0'\n\n仅一次投票机会\n\n请选择:");
            i=scanf("%d",&order);
            if(i==0)
            {
                fflush(stdin);
                printf("输入有错误!");
                Sleep(1000);
                fflush(stdin);
                system("cls");
            }
            else
                break;
        }
        enode *s;
        s=ehead->next;
        while(s!=NULL)
        {
            if(s->number==order)
            {
                r->order=order;
                printf("\n\n投票完成");
                s->sum=s->sum+1;
                break;
            }
            s=s->next;
        }
        if(order==0)
        {
            printf("\n\n欢迎下次投票");
        }
        else if(s==NULL)
            printf("\n\n没有该编号的候选人");
        Sleep(500);
        fflush(stdin);
    }
    else
    {
        printf("\n\n您已经为%d号候选人投票",r->order);
        Sleep(2000);
        fflush(stdin);
    }
    system("cls");
}

void AFunction()
{
    while(1)
    {
        printf("请选择功能:\n\n");
        printf("1.浏览候选人简介\n\n");
        printf("2.修改候选人简介\n\n");
        printf("3.查询投票情况\n\n");
        printf("4.清除投票信息\n\n");
        printf("5.修改投票人信息\n\n");
        printf("6.返回");
        char a;
        a=getch();
        system("cls");
        if(a==49)
            browse();
        else if(a==50)
            modify();
        else if(a==51)
            check();
        else if(a==52)
            eli
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1、引言 1.1编写目的 在完成了针对《学生信息系统》软件市场的前期调查,同时与多位同学进行了全面深入地探讨和分析的基础上,提出了这份软件需求规格说明书。 此需求规格说明书对《学生信息系统》软件做了全面细致的用户需求分析,明确所要开发的软件应具有的功能、性能与界面,使系统分析人员及软件开发人员能清楚地了解用户的需求,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。 1.2项目背景 由于文件多,种类多,文件创建者多,创建时间为不定期,要保护好一些公司重要的文件极为不便,同时由于人员的流动,对原有的文件的再现,显得力不从心,有时查找与重新整理文件要浪费许多的人力、物力。 为了有效的共享文件资源,保护好文件,及促进学生信息系统管理的信息化、规范化和集成化,本人多方听取意见、追加和完善大量实用功能,进而了解文件管理的流程,同时结合各部门、各专业与学科管理的方法,开发出一套适合于学生信息系统多而复杂的管理系统。 1.3定义、缩写词和符号 需求:用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足标准,规范或其它正式规定文档所需具有的条件或权能。 1.4参考资料 张海藩:《软件工程导论》,清华大学出版社,2008年2月版 黄德才: 《数据库原理及其应用教程》,科学出版社,2006年2月版 2.任务概述 2.1目标 2.1.1开发目标 在当今世界电脑普及的时刻,人们已经习惯用电脑办公,结果自然会产生大量的电子文件,这些文件有宝贵的历史价值,但我们如果将更多的时间花费在寻找这些文件上,即费时又费力。本软件根据此需求进行开发的。 2.1.2应用目标 让学校能够有效的掌握,有效的共享文件资源,保护好文件,及促进学生信息系统管理的信息化、规范化和集成化,实现计算机的智能化管理,以提高工作效率和经济效益。 2.2运行环境 2.2.1硬件环境 A. 一台.NET系统的微机 B.内存足够大 2.2.2软件环境 A.windows 98 以上的操作系统 B.Microsoft Visual studio 2007 C.Microsoft SqlServer 2000 2.3条件与限制 此学生信息系统管理软件是应用于各个学校的。在功能上还可进一步实现安全防范、与E-Mail和因特网电话集成起来,成为学生信息系统管理软件。 3. 数据描述 3.1静态数据 1)Students表 2)Reports表 3)Courses表 4)Log on表 3.2动态数据 输入数据:菜单选项,添加项,查询项,修改项,删除项。 输出数据:由添加、查询、修改、删除所确定的数据库记录集合。 内部生成的数据:查询结果。 3.3数据库描述 本软件采用SQL数据库。 3.4数据流程图 《学生信息系统》软件的数据流程图是比较清晰的,对各功能模块来说都比较有规律。但完整的图比较繁琐,各个功能模块的基本流程图如下。 3.5数据字典 这里给出一个数据元素的字典卡片与具体数据卡片的含义: 名称:学生信息系统 描述:产生学生信息文件送交学生信息目录表 定义:学生信息系统=学生信息类型+安全级别 4. 功能要求 4.1功能划分 本系统有以下功能模块: 1)学生信息录入模块 2)学生信息查询模块 3)学生信息修改模块 4)学生信息删除模块  4.2功能描述 下面详细描述一下各个功能模块: 1)学生信息录入 (1) 学生信息目录管理:只限于一般用户和管理员操作。而且不同的用户级别所操作的信息类型是有限制的。用户可以向里面添加、修改和删除档案类型。也可设置信息类型的级别,以加强它们的保密性。 (2) 学生信息仓库:限于全体操作员工。一般浏览者只能查看学生信息,不能对学生信息做任何的修改。而且不同的用户级别所看到的档案是有限制的。一般用户可向里面添加、修改和删除档案。也可设置学生信息级别,以加强它们的保密性。 2)学生信息查询 (1) 查询单条学生信息记录:主要是适合于全体操作人员的。在窗体上,先可以选择查询的条件,再输入关键字名。按查询即可。查到记录后,也可双击记录即可显示详细信息。 (2) 查询全部学生信息:是给管理员用的,是为了方便管理员查找学生信息,也有按班级查询、按姓名查询和按学号查询。查到记录后,也可双击记录即可显示详细信息。 也有多种查询方法。查到记录后,也可双击记录即可显示详细信息。 3)学生信息修改 (1)修改单条学生信息:主要是适合于全体操作人员的。在窗体上,修改学生信息。修改记录后,也可双击记录即可显示详细信息。 (2)修改全部学生信息:是给管理员用的,是为了方便管理员修改学生信息。修改记录后,也可双击记录即可显示详细信息。 4)学生信息删除 (1)删除单条学生信息:主要是适合于全体操作人员的。在窗体上,删除学生信息。删除记录后,也可双击记录即可显示详细信息。 (2)删除全部学生信息:是给管理员用的,是为了方便管理员删除学生信息。删除记录后,也可双击记录即可显示详细信息。 5.性能需求 5.1数据精确度 A.要按照严格的数据格式输入,否则系统不给予响应进行处理。 B.查询时要保证查全率,所有相应域包含查询关键字的记录都应能查到。因为通常有文件的记录会很多,所以本系统采用了两种方法进行查询:按班级查询、按姓名查询和按学号查询。 5.2时间特性 一般操作的响应时间应在1~2秒内,对软磁盘和打印机的操作也应在可接受的时间内完成。 5.3适应性 满足学校使用的需求(记录量控制在1000项内)。 对前面提到的运行环境要求不应存在困难。 6. 运行需求 6.1用户界面 超越VB的界面,全新感觉,操作简便,一目了然,视图优美等特点。并且采用菜单界面驱动方式,给操作用户带来了极大的便利,对用户友好。对鼠标和键盘单独支持。 6.2硬件接口 本软件不需要特定的硬件或硬件接口进行支撑。 6.3软件接口 运行于Windows 2000及更高版本具有.net的操作系统之上。 6.4故障处理 正常使用时不应出错,若运行时遇到不可恢复的系统错误,也必须保证数据库完好无损。 调试中遇到的问题及解决的方案: 1)遇到跳出“数据库已经关闭“提示信息阻止程序运行时 可以查看一下进行此项操作时,操作的表是否已经被关闭了或者是在没有关闭此表的情况 下又一次运用打开语句打开此表。 2)关于空记录带来的麻烦 有些空记录往往会使程序无法运行。此时你可用“if not isnull”语句先判断一下是否为 空记录,再操作。 3)有些运行错误也可用如下语句排除 On Error GoTo Erropoint Erropoint : Msgbox Err.Descripton Exit sub 或用On Error resume Next 等语句进行处理。 7.其它要求 1)系统的功能实现情况: 用户可在本系统下实现各种用户要求的功能 2)系统的安全性: 对于系统的重要数据都有密码保护,具有一定的安全性 3)系统的容错性: 用户输错数据都有提示信息,具有较好的容错性能。 4)系统的封闭性: 用户的封闭性较好,用户基本上在提示信息下输数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值