标题:2. 电子投票管理程序
只看楼主
hzrzh
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-12-27
结帖率:0
已结贴  问题点数:20 回复次数:4 
2. 电子投票管理程序
2. 电子投票管理程序
主要用结构体数组实现,用结构体表示每项记录,包含候选人数据为:编号、姓名、简历、票数。
其中“票数”由投票后统计得到。设计各个函数,分别实现以下功能:
(1)输入:输入候选人信息
(2)显示:显示所有候选人记录
(3)删除:完成业绩信息的删除;
(4)修改:允许对已经录入的数据重新进行编辑、修改;
(5)投票:投票功能实现,每次投票后,应有询问是否继续(y/n),若输入y则再投票,若输入n则回到菜单。
(6)统计:对所有候选人按票数进行排序显示,结果以图形方式显示,如下:
Peter    |**********
        Mike    |*******************
        Lincon    |**************
(7)查询:给出指定候选的票数
(8)退出程序。
设计菜单,通过选择菜单调用以上各函数。能用动态内存分配及数据以文件形式存储者,可获得额外加分。




#include<stdio.h>
#include<string.h>
#define NULL 0
struct person
{
    int num;
    char name[20];
    int count;
    int age;
    struct person *next;
}leader[3];
struct person shuru
{
    int i;
    printf("输入候选人姓名、序号、年龄、地址:\n");
    for(i=0;i<3;i++)
    {
        scanf("%s,%d,%d,%s",leader[i].name,leader[i].num,leader[i].age,leader[i].place);
    }
}
struct person shanchu
{
    struct person *head;
    struct person *p;
    int num,gole=0;
    struct person *p1,*p2,*p3=head;
    printf("请输入你要删除的候选人序号:\n");
    scanf("%d",& num);
    while(p!=NULL)
    {
        p1=head;
        p1=head;
        while((p1->next!=NULL)&&(p1->num!=num))
        {
            p2=p1;
            p1=p1->next;
        }
        if(p1->num==num)
        {
            printf("姓名\t\t序号\t年龄\t");
            printf("%s\t%d\t%d\t",p1->name,p1->num,p1->age);
            if(p1==head)
                head=p1->next;
            else
                p2->next=p1->next;
            gole++;
        }
        else
        {
            printf("没有与该序号对应的候选人\n");
            p3=p3->next;
        }
    }
    if(gole!=0)
    {
        printf("共删除该序号%d个人",gole);
    }
    return head;
}
struct person xiugai
{
    struct person *head
    char name[20];
    int num;
    int gole=0;
    int a;
    struct person *p;
    if(p==NULL)
        printf("分配内存失败\n");
    menu(head);
    if(head==NULL)
    {
        do
        {
            printf("请选择要修改的:1、姓名  2、序号  3、年龄  4、返回\n");
            scanf("%d",&a);
            p=head;
            if(a==1)
            {
                printf("请输入要改的候选人姓名:\n");
                gets(name);
                while(p!=NULL)
                {
                    if(strcmp(name,p->name)==0)
                    {
                        p=change(p);
                        gole++;
                    }
                    p=p->next;
                }
                if(gole==0)
                    printf("找不到要修改的人名\n");
            }
            else if(a==2)
            {
                printf("请输入要改的候选人序号:\n");
                scanf("%d",&num);
                while(p!=NULL)
                {
                    if(num==p->num)
                    {
                        p=change(p);
                        gole++;
                    }
                    p=p->next;
                }
                if(gole==0)
                    printf("找不到要修改的序号\n");
            }
            else if(a==3)
            {
                int age;
                printf("请输入要改的候选人年龄:\n");
                scanf("%d",&age);
                while(p!=NULL)
                {
                    if(age==p->age)
                    {
                        p=change(p);
                        gole++;
                    }
                    p=p->next;
                }
                if(gole==0)
                    printf("找不到要修改的年龄\n");
            }

        }while(a!=1&&a!=2&&a!=3&&a!=4);
    }
    else
    {
        printf("暂无信息,请先存入此信息");
    }
    menu (head);
}
struct person xianshi
{
    struct person *top
    int i;
    struct person *p=top;
    while(p!=NULL)
    {
        printf("姓名\t\t序号\t年龄\t");
        printf("%s\t%d\t%d\t",p->name,p->num,p->age);
        for(i=0;i<3;i++)
        {
            printf("%-20s,%-10d,%-3d",leader[i].name,leader[i].num,leader[i].age);
        }
        p=p->next;
    }
    menu(top);
}
struct person toupiao
{
    int i,j;
    char c[2];
    char vote_name[20];
    printf("投票人数为10");
    do
    {
        for(i=1;i<=10;i++)
        {
            scanf("%s",vote_name);
            for(j=0;j<3;j++)
                if(strcmp(vote_name,leader[j].name)==0)
                {
                    leader[j].count=leader[j].count+1;
                    printf("继续输入请按Y或y:");
                    scanf("%s",c);
                }
        }
    }while(!(strcmp(c,"Y"))||!(strcmp(c,"y")));
    do
    {
        printf("结束请按N或n:");
        menu(p);
    }while(!(strcmp(c,"N"))||!(strcmp(c,"n")));
}
struct person chazhao
{
    int i,gole=0;
    char na[20];
    printf("输入要查找的候选人姓名:\n");
    scanf("%s",na[20]);
    for(i=0;i<3;i++)
    {
        if(strcmp(leader[i].name,na)==0)
        {
            printf("%d",leader[i].count);
            gole++;
            break;
        }
    }
if(gole==0)
    {
        printf("查找不到输入姓名的人\n");
        menu(p);
    }
}
struct person tongji
{
    int i,j;
    for(i=0;i<3;i++)
    {
        printf("%-20s",leader[i].name);
        for(j=0;j<=leader[i].count;j++)
            printf("*");
        printf("\n");
    }
}
void main()
{
    struct person *head=NULL;
    int a;
    printf("\n\n\n          --目录--\n");
    printf("           1:添加候选人信息\n");
    printf("           2:删除候选人信息\n");
    printf("           3:修改候选人信息\n");
    printf("           4:显示候选人信息\n");
    printf("           5:投票\n");
    printf("           6:统计\n");
    printf("           7:查询\n");
    printf("           8:退出\n");
    printf("    请选择:");
    scanf("%d",&a);
    if(a==1)
        shuru();
    else if(a==2)
        shanchu();
    else if(a==3)
        xiugai();
    else if(a==4)
        xianshi();
    else if(a==5)
        toupiao();
    else if(a==6)
        tongji();
    else if(a==7)
        chazhao();
    else
        printf("输入错误\n");
   
}

最后运行不出来,问题怎么解决啊
搜索更多相关主题的帖子: 管理程序 Peter 候选人 结构体 电子 
2014-12-27 20:59
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:20 
看你的代码长度就知道肯定不能完成任务啦

授人以渔,不授人以鱼。
2014-12-28 11:18
hzrzh
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-12-27
得分:0 
回复 2楼 TonyDeng
那你会整吗???
2014-12-28 13:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
不会。你看看顶头第一公告,你毫无诚意地直接求代码,没锁掉或删掉已经很宽松了。

授人以渔,不授人以鱼。
2014-12-28 13:55
hzrzh
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2014-12-27
得分:0 
回复 4楼 TonyDeng
那些全是我已经打出来的,有七个问题真的不会解决,我不是完全没有想,是真的不会解决。总之,谢谢您看这个帖子
2014-12-28 14:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-440440-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027788 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved