0
点赞
收藏
分享

微信扫一扫

c语言课设抽奖系统(需在目录里创建一个文本文档a.txt)

野见 2022-03-12 阅读 40
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>

struct data{
    char id[20];
    char name[20];
};


struct data information[110];//普通人员信息
struct data information0[110];//滚动人员信息
struct data prize[110];//总获奖人员信息
int count=0;//滚动人员总数
int people=0;//普通人员总数
int people1=0,people2=0,people3=0;//普通一等奖、二等奖、三等奖的人数
char strid[20];
void Print_menu();//打印菜单
void Set_award();//设置奖项
void Read_information();//从文件中读取信息,放到普通人员信息中
void Read_information0();//从文件中读取信息,放到滚动人员信息中
void Roll_information0();//滚动信息,该信息是滚动人员的信息
void Set_winner1();//设置一等奖信息
void Set_winner2();//设置二等奖信息
void Set_winner3();//设置三等奖信息
void Set_awards();//设置奖项人数

void Delet_function();//删除功能
void Delet_number();//按学号删除
void Delet_name();//按姓名删除
void Delet_information();//删除普通人员的信
void Add_function();//添加功能
void Begin_luck();//开始抽奖


int main()
{

    Read_information();
    Read_information0();
    Print_menu();
    return 0;
}

void Function_introduction()//功能介绍
{
    system("cls");
    printf("\n\t\t\t抽奖小程序功能介绍\n");
    printf("\t\t\t1、设置中奖人员\n");
    printf("\t\t\t2、设置内幕人员\n");
    printf("\t\t\t3、添加功能\n");
    printf("\t\t\t4、删除功能\n");
    printf("\t\t\t5、颜色设置\n");
    printf("\t\t\t6、开发人员介绍\n");
    printf("\t\t\t按任意键返回");
    getch();

}

void Print_menu()//打印菜单
{
    int choose;
    while(1)
    {
        system("cls");
        printf("\n\n");
        printf("\t*********************************************************\n");

        printf("\t*\t\t<-欢迎来到抽奖小程序->\t\t\t*\n");
        printf("\t*\t\t\t\t\t\t\t*\n");
        printf("\t*\t\t开始抽奖请按1\t\t\t\t*\n");
        printf("\t*\t\t设置奖项请按2\t\t\t\t*\n");
        printf("\t*\t\t添加功能请按3\t\t\t\t*\n");
        printf("\t*\t\t删除功能请按4\t\t\t\t*\n");
        printf("\t*\t\t结束程序请按0\t\t\t\t*\n");
        printf("\t*\t\t\t\t\t\t\t*\n");
        printf("\t*********************************************************\n");

        printf("\n\n\t\t\t请输入选项:");
        scanf("%d",&choose);

        switch(choose)
        {
            case 0:
                return;
            case 1:
                Begin_luck();//开始抽奖
                break;
            case 2:
                Set_award();//设置奖项
                break;
            case 3:
                Add_function();//添加功能
                break;
            case 4:
                Delet_function();//删除功能
                break;
        }
    }
}

void Set_award()//设置奖项
{
    int choose;
    while(1)
    {
        system("cls");
        printf("\n\n");
        printf("\t*********************************************************\n");
        printf("\t*\t\t\t\t\t\t\t*\n");
        printf("\t*\t\t设置奖项人数请按1\t\t\t*\n");
        printf("退出到主菜单按2");
        printf("\t*\t\t\t\t\t\t\t*\n");
        printf("\t*********************************************************\n");

        printf("\n\n\t\t\t请输入选项:");
        scanf("%d",&choose);
        switch(choose)
        {
            case 1:
                Set_awards();//设置奖项人数
                break;
            case 2:
                break;
        }
        break;
    }
}


void Delet_function()//删除功能
{
    int choose;
    while(1)
    {
        system("cls");
        printf("\n\n");
        printf("\t*********************************************************\n");
        printf("\t*\t\t\t\t\t\t\t*\n");
        printf("\t*\t\t按姓名删除请按1\t\t\t\t*\n");
        printf("\t*\t\t按学号删除请按2\t\t\t\t*\n");
        printf("\t*\t\t\t\t\t\t\t*\n");
        printf("\t*********************************************************\n");

        printf("\n\n\t\t\t请输入选项:");
        scanf("%d",&choose);
        switch(choose)
        {
            case 1:
                Delet_name();//按姓名删除
                break;
            case 2:
                Delet_number();//按学号删除
                break;
        }
    }
}

void Read_information()//从文件中读取信息
{
    FILE *fp=fopen("a.txt","r");
    if (fp == NULL) {
        printf("DDD");
    }
    while(!feof(fp))
    {
        fscanf(fp,"%s%s",information[people].id,information[people].name);
        people++;
    }
    fclose(fp);
}

void Read_information0()//读取滚动人员的信息
{
    FILE *fp=fopen("a.txt","r");
    while(feof(fp)==0)
    {
        //存储信息到滚动人员信息中,用于滚动时打印在显示屏幕中
        fscanf(fp,"%s%s",information0[count].id,information0[count].name);
        count++;
    }
    fclose(fp);
}

void Roll_information0()//滚动信息,该信息是滚动人员的信息
{
    int i=0;
    system("cls");
    printf("按任意键开始抽奖,按任意键停止抽奖\n");
    getch();
    while(1)
    {
        system("cls");
        if(kbhit()!=0)
            break;
        i=rand()%count;
        printf("%s",information0[i].name);//显示滚动信息

    }

}

void Begin_luck()//开始抽奖
{
    int i,j,choose,t;
    system("cls");
    if(people1==0&&people2==0&&people3==0)
    {

        printf("请先设置奖项人数按任意键返回\n");
        getch();
        return;
    }
    printf("下面开始抽取三等奖人员,按任意键继续\n");
    getch();
    j=0;//代表各奖项人员的总数包括内幕人员
    while(people3--)//普通三等奖人员
    {
        if(people3<0)
            break;
        Roll_information0();
        srand((unsigned)time(0));
        t=rand()%people;
        printf("%s",information[t].name);
        prize[j++]=information[t];
        strcpy(strid,information[t].id);
        Delet_information();//删除该成员在普通信息中的信息
        getch();
    }
    system("cls");
    printf("以下是三等奖名单,按任意键继续\n");
    for(i=0;i<j;i++)
        printf("%s\n",prize[i].name);
    system("pause");
    getch();
    system("cls");
    printf("下面开始抽取二等奖人员,按任意键继续\n");
    getch();
    getch();
    j=0;
    while(people2--)
    {
        if(people2<0)
            break;
        Roll_information0();
        printf("%s",information[t].name);
        prize[j++]=information[t];
        strcpy(strid,information[t].id);
        Delet_information();//删除该成员在普通信息中的信息
        getch();
        getch();
    }
    system("cls");
    printf("以下是二等奖名单,按任意键继续\n");
    for(i=0;i<j;i++)
        printf("%s\n",prize[i].name);
    system("pause");
    getch();

    system("cls");
    printf("下面开始抽取一等奖人员,按任意键继续\n");
    getch();
    j=0;
    while(people1--)
    {
        if(people1<0)
            break;
        Roll_information0();
        printf("%s",information[t].name);
        prize[j++]=information[t];

        strcpy(strid,information[t].id);
        Delet_information();//删除该成员在普通信息中的信息
        getch();
    }
    system("cls");
    printf("以下是一等奖名单,按任意键继续\n");
    for(i=0;i<j;i++)
        printf("%s\n",prize[i].name);
    system("pause");
    printf("抽奖完毕按任意键返回\n");
    getch();
}



void Set_awards()//设置奖项人数
{
    int choose,t;
    while(1)
    {
        system("cls");
        printf("请输入三等奖人数(正整数):\n");
        scanf("%d",&t);
        people3+=t;
        break;
    }
    while(1)
    {
        system("cls");
        printf("请输入二等奖人数:\n");
        scanf("%d",&t);
        people2+=t;
        break;
    }
    while(1)
    {
        system("cls");
        printf("请输入一等奖人数:\n");
        scanf("%d",&t);
        people1+=t;
        break;

    }
    printf("设置完毕按任意键返回\n");
    getch();
    return ;
}


void Delet_number()//按学号删除
{
    int i;
    system("cls");
    while(1)
    {

        printf("请输入要删除人的学号\n");
        scanf("%s",strid);
        for(i=0;i<count;i++)
            if(strcmp(strid,information[i].id)==0)
                break;
        if(i==count)
        {
            printf("未找到该学号,请重新输入\n");
            getch();
            return;
        }
        else
            break;
    }
    Delet_information();
    Delet_information0();
    printf("删除成功按任意键返回上一层\n");
    getch();
}

void Delet_name()//按姓名删除
{
    int i;

    while(1)
    {
        system("cls");
        printf("请输入要删除人的姓名\n");
        scanf("%s",&strid);
        for(i=0;i<count;i++)
            if(strcmp(strid,information0[i].name)==0)
            {
                strcpy(strid,information0[i].id);
                break;
            }
        if(i==count)
        {
            printf("未找到该人员按任意键返回上一层\n");
            getch();
            return;
        }
        else
            break;
    }

    Delet_information();
    Delet_information0();
    printf("删除成功按任意键返回上一层\n");
    getch();
}

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;
        }
}

void Delet_information0()//删除该成员在滚动信息中的信息
{
    int i,j;
    for(i=0;i<count;i++)
        if(strcmp(information0[i].id,strid)==0)
        {
            count--;
            for(j=i;j<count;j++)
                information0[j]=information0[j+1];
            return;
        }
}
void Add_function()//添加功能
{
    int i;
    system("cls");
    char id[20],name[20];
    printf("请输入添加人员的学号和姓名\n");
    scanf("%s%s",&id,&name);
    for(i=0;i<count;i++)
        if(strcmp(information0[i].id,id)==0)
        {
            printf("该学号已存在按任意键返回");
            getch();
            return;
        }
    for(i=0;i<count;i++)
        if(strcmp(information0[i].name,name)==0)
        {
            printf("该姓名已存在按任意键返回");
            getch();
            return;
        }
    strcpy(information0[count].id,id);
    strcpy(information0[count].name,name);
    information[people]=information0[count];
    count++;
    people++;
    printf("添加成功,按任意键返回");
    getch();
}






举报

相关推荐

0 条评论