C语言实现简单的抽奖系统

 更新时间:2022年04月01日 09:11:26   作者:fastjson_  
这篇文章主要为大家详细介绍了C语言实现简单的抽奖系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C语言实现简单的抽奖系统的具体代码,供大家参考,具体内容如下

效果图

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include <windows.h>
 
struct data{
    char id[20];
    char name[20];
};
 
int t1,t2,t3;
struct data information[110];              //普通人员信息
struct data prize1[110];                    //总获奖人员信息
struct data prize2[110];                    //总获奖人员信息
struct data prize3[110];                    //总获奖人员信息
 
int people=0;                              //参与抽奖总人数
int people1=0,people2=0,people3=0;         //普通一等奖、二等奖、三等奖的人数
char strid[20];
 
//从文件中读取信息,放到普通人员信息中
void Read_information();   
 
//打印菜单
void Print_menu();      
 
//设置奖项人数
void Set_awards(); 
 
//开始抽奖    
void Begin_luck();  
 
//删除该学号人员在普通人员中的信息
void Delet_information();
 
void main()
{
    Read_information();
    Print_menu();
}
 
void Read_information()//从文件中读取信息
{
    FILE *fp=fopen("抽奖人员名单.txt","r");
    while(!feof(fp))
    {
        //存储该信息到普通人员信息中,便于设置内幕人员
        fscanf(fp,"%s%s",information[people].id,information[people].name);
        people++;
    }
    fclose(fp);
}
 
 
void Print_menu()
{
    int choose;
    while(1)
    {
        system("cls");
        printf("\n\n");
        printf("\t\t\t*********************************************************\n");
 
        printf("\t\t\t*\t    <-欢迎来到抽奖系统->\t\t\t*\n");
        printf("\t\t\t*\t    <-目前参与抽奖的总人数为%d人->\t\t*\n", people);
        printf("\t\t\t*\t    <  一等奖设置为%d人  >\t\t\t*\n",people1);
        printf("\t\t\t*\t    <  二等奖设置为%d人  >\t\t\t*\n",people2);
        printf("\t\t\t*\t    <  三等奖设置为%d人  >\t\t\t*\n",people3);
        printf("\t\t\t*\t\t\t\t\t\t\t*\n");
 
        printf("\t\t\t*\t\t开始抽奖请按1\t\t\t\t*\n");
        printf("\t\t\t*\t\t设置奖项人数2\t\t\t\t*\n");
        printf("\t\t\t*\t\t结束程序请按0\t\t\t\t*\n");
        printf("\t\t\t*\t\t\t\t\t\t\t*\n");
        printf("\t\t\t*********************************************************\n");
 
        printf("\n\n\t\t\t\t\t请输入选项:");
        scanf("%d",&choose);
        
        switch(choose)
        {
            case 0:
                return;
 
            case 1:
                Begin_luck(); 
                break;
 
            case 2:
                Set_awards();
                break;
        }    
    }
}
 
 
//设置奖项人数
void Set_awards()
{
    int choose;
    while(1)
    {
        system("cls");
        printf("请输入三等奖人数(正整数):\n");
        scanf("%d",&t3);
        if( t3<0 || t3>people)
        {
            printf("输入不合法,请输入1到%d之内的数字",people);
            getch();
        }
        else
        {
            people3=t3;
            break;
        }
 
    }
    while(1)
    {
        system("cls");
            printf("请输入二等奖人数:\n");
            scanf("%d",&t2);
            if( t2<0 || t2>people)
            {
                printf("输入不合法,请输入1到%d之内的数字",people);
                getch();
 
            }
            else
            {
                people2=t2;
                break;
            }
 
 
    }
    while(1)
    {
        system("cls");
        printf("请输入一等奖人数:\n");
        scanf("%d",&t1);
        if( t1<0 || t1>people)
        {
            printf("输入不合法,请输入1到%d之内的数字",people);
            getch();
        }
        else
        {
            people1=t1;
            break;
        }
    }
    printf("设置完毕按任意键返回\n");
    getch();
    return;
}
 
 
void Begin_luck()   //开始抽奖
{
    if(people1==0 || people2==0 || people3==0)
    {
        printf("请设置奖项人数!!!!\n");
        printf("按任意键返回\n");
        getch();
        return;
    }
 
    if( (people1+people2+people3) > people )
    {
        printf("中奖人数超过总人数,请重新设置!!!!\n");
        printf("按任意键返回\n");
        getch();
        return;
    }
 
    int i,j=0,choose,t;
    system("cls");      
 
/*******************三等奖人员****************************/
    printf("下面开始抽取三等奖人员,按任意键继续\n");
    getch();
    while(people3--)
    {
        if(people3<0)
            break;
        srand((unsigned)time(0));
        t=rand()%people;
        prize3[j++]=information[t];
        strcpy(strid,information[t].id);
        Delet_information();
    }
    printf("以下是三等奖名单,按任意键继续\n");
    for(i=0;i<j;i++)
        printf("%s\n",prize3[i].name);
    getch();
 
/*******************二等奖人员****************************/
    printf("下面开始抽取二等奖人员,按任意键继续\n");
    getch();
    while(people2--)
    {
        if(people2<0)
            break;
        srand((unsigned)time(0));
        t=rand()%people;
        prize2[j++]=information[t];
        strcpy(strid,information[t].id);
        Delet_information();
    }
    printf("以下是二等奖名单,按任意键继续\n");
    for(;i<j;i++)
        printf("%s\n",prize2[i].name);
    getch();
 
/*******************一等奖人员****************************/
    printf("下面开始抽取一等奖人员,按任意键继续\n");
    getch();
    while(people1--)
    {
        if(people1<0)
            break;
        srand((unsigned)time(0));
        t=rand()%people;
        prize1[j++]=information[t];
        strcpy(strid,information[t].id);
        Delet_information();
    }
    printf("以下是一等奖名单,按任意键继续\n");
    for(;i<j;i++)
        printf("%s\n",prize1[i].name);
    getch();
 
    people=0;
    Read_information();
    people1=t1,people2=t2,people3=t3;
}
 
void Delet_information()   //删除该学号人员在普通人员中的信息
{
    int i,j;
    for(i=0;i<people;i++)
        if(strcmp(information[i].id,strid)==0)
        {
            people--;
            for(j=i;j<people;j++)
                information[j]=information[j+1];
            return;
        }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详解C语言的void*空指针

    详解C语言的void*空指针

    这篇文章主要为大家详细介绍了C语言的void*空指针,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • C语言实现爆炸展开的扫雷详解

    C语言实现爆炸展开的扫雷详解

    windows自带的游戏《扫雷》是陪伴了无数人的经典游戏,本文将利用C语言实现这一经典的游戏,文中的示例代码讲解详细,感兴趣的可以学习一下,这篇文章主要介绍了C语言实现爆炸展开的扫雷游戏
    2022-07-07
  • C/C++练习题之合并k个已排序的链表

    C/C++练习题之合并k个已排序的链表

    这篇文章主要给大家介绍了关于C/C++练习题之合并k个已排序的链表的相关资料,文中通过图文以及实例代码介绍的非常详细,对大家学习或者使用C/C++具有一定的参考学习价值,需要的朋友可以参考下
    2023-06-06
  • C++内存对齐的实现

    C++内存对齐的实现

    本文主要介绍了C++内存对齐的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • vscode配置远程开发环境并远程调试运行C++代码的教程

    vscode配置远程开发环境并远程调试运行C++代码的教程

    这篇文章主要介绍了vscode配置远程开发环境并远程调试运行C++代码的教程,本文通过截图实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • C++ namespace命名空间解析

    C++ namespace命名空间解析

    考虑一种情况,当我们有两个同名的人,Zara,在同一个班里。当我们需要对它们进行区分我们必须使用一些额外的信息和它们的名字,比如它们生活在不同的区域或者兴趣爱好什么的,在C++程序中也会遇到同样的情况,所以命名空间就此产生
    2021-11-11
  • 浅谈C语言的字符串分割

    浅谈C语言的字符串分割

    下面小编就为大家带来一篇浅谈C语言的字符串分割。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • C++深入浅出讲解函数重载

    C++深入浅出讲解函数重载

    C++允许多个函数拥有相同的名字,只要它们的参数列表不同就可以,这就是函数的重载(Function Overloading),借助重载,一个函数名可以有多种用途
    2022-05-05
  • C语言中花式退出程序的方式总结

    C语言中花式退出程序的方式总结

    在本篇文章当中主要给大家介绍C语言当中一些不常用的特性,比如在main函数之前和之后设置我们想要执行的函数,以及各种花式退出程序的方式,需要的可以参考一下
    2022-10-10
  • Qt QTreeWidget 树形结构实现代码

    Qt QTreeWidget 树形结构实现代码

    Qt中实现树形结构可以使用QTreeWidget类,也可以使用QTreeView类,QTreeWidget继承自QTreeView类,接下来通过本文给大家介绍Qt QTreeWidget 树形结构实现代码,需要的朋友可以参考下
    2021-11-11

最新评论