基于C语言的随机点名器设计

项目描述
使用C语言,制作一个在命令行运行的点名程序,该程序运行时可指定班级的花名册文件,运行后在界面上显示随机抽取名字的过程,速度由快到慢,逐渐定格到某一个“幸运儿”上,程序结束。
项目实现:

主函数模块:main.c

#include <stdio.h>
#include "function.h"int main(int argc, char *argv[])
{function();return 0;
}

功能模块:function.c

#include "function.h"
#include "Random_name.h"
#include "Init_list.h"
void menu()
{printf("  *************************************************\n");printf("  *                   随机点名器                   *\n");printf("  ************************************************ \n");printf("  ********************************制作人:邢仕冲****\n");printf("   ----------------------   ---------------------  \n");printf("   *********************************************  \n");printf("   * 1.单人抽取          * *      2.查找剩余人数   * \n");printf("   **********************  *********************  \n");printf("   * 3.文本初始化         *       4. 多人抽取     * \n");printf("   ********************************************** \n");printf("   *                 5.退出系统                  * \n");printf("   ********************************************** \n");printf("   --------------------     ----------------------\n");
}
void function()
{int num; //班级人数int new_num;int Init_num;int temp; //临时变量int flag = 0, flag1 = 0, flag2 = 0, flag3 = 0;int mulit_num;int lucky_num;char Class_txt[32];      //班级编号文档char Class_txt_Init[32]; //班级名单初始化文档printf("输入班级编号文档:");scanf("%s", Class_txt);printf("输入班级名单初始化文档:");scanf("%s", Class_txt_Init);printf("输入班级的人数:");scanf("%d", &num);menu();Init_num = num;mulit_num = num;new_num = num;while (1){int n;scanf("%d", &n);switch (n){case 1:{if (flag2 == 1){num = mulit_num;flag2 = 0;}Random_name(num, Class_txt);num--;temp--;flag = 0;flag1 = 0;if (num == 0){printf("已抽取完成!\n");}break;}case 2:{if (flag == 0){printf("剩余人数:%d\n", num);if (num == 0)printf("已抽取完,请输入3,使文本初始化\n");}else if (flag == 1) //初始化剩余人数{if (flag1 == 1)temp = Init_num;printf("剩余人数:%d\n", temp);if (temp == 0)printf("已抽取完,请输入3,使文本初始化");}else if (flag == 2){printf("剩余人数:%d\n", mulit_num);}break;}case 3:{Init_list(Init_num, Class_txt_Init, Class_txt);printf("文本初始化成功!\n");flag = 1;flag1 = 1;flag3 = 1; //初始化完后再多人抽取num = Init_num;temp = Init_num;break;}case 4:{printf("输入所要抽取的人数:");scanf("%d", &lucky_num);if (flag3 == 1){new_num = Init_num; //初始化完后需要让new_num初始化值flag3 = 0;}for (int i = 0; i < lucky_num; i++){Random_name(new_num, Class_txt);new_num--;}flag = 2;mulit_num = mulit_num - lucky_num; //查找剩余人数/*if(mulit_num > num)printf("文档中人数不足所要抽取的人数");*/flag2 = 1;break;}case 5:Init_list(Init_num, Class_txt_Init, Class_txt);break;default:Init_list(Init_num, Class_txt_Init, Class_txt);break;}if (n > 4)break;}
}

function.h

#ifndef _FUNCTION_H
#define _FUNCTION_H#include <stdio.h>
void function();
void menu();#endif

随机点名实现模块 Random_name.c

#include "Random_name.h"
void Random_name(int Num, char *list)
{char buf[Num][SIZE];char buf_new[Num][SIZE];int n, flag;//1.打开list文件FILE *fp_list = fopen(list, "r");if (NULL == fp_list){perror("fopen failed!");return;}srand((unsigned)time(NULL));//printf("%d\n", Num);//把文件中的数据保存到buf数组中for (int i = 0; i <= Num; i++){fgets(buf[i], SIZE, fp_list);//去除回车if (*(buf[i] + (strlen(buf[i]) - 1)) == '\n'){*(buf[i] + (strlen(buf[i]) - 1)) = '\0';}}#if 0for(int i = 0; i<Num; i++){printf("%s\n", buf[i]);}
#endif/*********  循环显示姓名    **************/for (int j = 3000; j > 0; j -= 30){n = 0 + rand() % Num;printf("%s\r", buf[n]);usleep(j);}for (int j = 500000; j > 0; j -= 50000){n = 0 + rand() % Num;printf("%s\r", buf[n]);usleep(j);}printf("幸运儿:%s\n", buf[n]);/*************  抽取完成去掉幸运儿    *************/for (int i = 0; i < Num; i++){if (strcmp(buf[n], buf[i]) == 0) //把幸运儿提取出来{strcpy(buf[i], "");flag = n;}strcpy(buf_new[i], buf[i]); //数组中数据保存到新数组中}
#if 0for(int i = 0; i<Num; i++){printf("%s\n", buf_new[i]);}
#endiffclose(fp_list);/*********      清空list文件并把去除幸运儿后的最终名单保存到list文件中     ************/FILE *fp_list_new = fopen(list, "w");if (NULL == fp_list_new){perror("fopen failed!");return;}for (int j = 0; j < Num; j++){fputs(buf_new[j], fp_list_new);if (flag == j){fputs(buf_new[j + 1], fp_list_new);j = j + 1;}fputs("\n", fp_list_new);}fclose(fp_list_new);
}

Random_name.h

#ifndef _RANDOM_NAME_H_
#define _RANDOM_NAME_H_#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#include <string.h>
#define SIZE 8void Random_name(int Num, char *list);#endif

初始化模块:Init_list.c


```c
#include "Init_List.h"//初始化list文件void Init_list(int count, char *Init_list, char *list)
{char Init[count][SIZE];FILE *fp_list_Init = fopen(Init_list, "r");for (int i = 0; i < count; i++){fgets(Init[i], SIZE, fp_list_Init);}fclose(fp_list_Init);FILE *list_Init = fopen(list, "w");for (int j = 0; j < count; j++){fputs(Init[j], fp_list_Init);}fclose(list_Init);
}

Init_list.h

#ifndef _INIT_LIST_H
#define _INIT_LIST_H
#include <stdio.h>
#include <stdlib.h>
#define SIZE 8void Init_list(int count, char *Init_list, char *list);
#endif

基于C语言的随机点名器设计相关推荐

  1. 【基于C语言的随机点名器】

    基于C语言的随机点名器 [1]C语言->控制台颜色绚丽多彩 [2]C语言-> printf 输出颜色花样百出 [3]C语言-> 随机点名试炼中 [4]C语言-> 随机点名项目实 ...

  2. java 2048游戏_JAVA2048游戏 本课程设计是基于java语言的2048小游戏设计 联合开发网 - pudn.com...

    JAVA2048游戏 所属分类:游戏 开发工具:Java 文件大小:789KB 下载次数:4 上传日期:2020-11-23 10:57:11 上 传 者:滴滴滴大萌 说明:  本课程设计是基于jav ...

  3. c语言迷宫问题课程报告,基于c语言的迷宫问题课程设计

    基于c语言的迷宫问题课程设计 *******************实践教学*******************兰州理工大学软件学院2012 年春季学期算法与数据结构 课程设计题 目: 迷宫问题 专 ...

  4. 教务处管理系统c语言编程,基于C语言的教务管理系统的设计

    基于C语言的教务管理系统的设计(任务书,开题报告,论文12000字,程序代码) 摘要 教务管理系统是现代化教育的重要组成部分,在现代高校管理中,一个高效的.准确的教务系统不仅能大大提高教学管理效率,还 ...

  5. c语言图书管理系统解析,基于C语言的图书管理系统的设计与实现解析.doc

    毕业论文 题目:基于C语言的图书管理系统的设计与实现 英文题目:Design and Implementation of Books Management System Based on C Lang ...

  6. 教材征订管理系统c语言,基于C语言的图书管理系统的设计与实现范文.doc

    毕业论文 题目:基于C语言的图书管理系统的设计与实现 英文题目:Design and Implementation of Books Management System Based on C Lang ...

  7. C语言实现随机点名器

    目录 1.程序描述 2.程序功能 3.功能详细实现过程 学生结构体声明和定义 菜单(menu)函数 文件读取和保存函数 查询函数 点名函数 rand函数 点名函数实现 点名次数归零函数 字体颜色变化函 ...

  8. JavaScript 语言之随机点名器制作训练

    题目 为了活跃班级气氛,Mr.王想通过一个随机点名器来随机抽取学员回答问 题,故安排你来使用 HTML+CSS+JavaScript 来实现如下图所示的随机点名 器,第一张图是随机点名器的初始页面,当 ...

  9. 基于python的界面自动化测试-基于Python语言的自动化测试系统的设计与实现

    黄建军+李宥谋+刘婧+周欢 摘 要: 通过分析现代工业生产对自动化测试系统的要求,提出一种基于面向对象的编程语言Python构建的自动化测试系统.利用Python语言的高效.灵活和简洁等特点,结合Py ...

最新文章

  1. python 下载小说
  2. python能做机器人吗_python深度学习 人工智能是做机器人吗?
  3. 建立企业内部maven服务器并使用Android Studio发布公共项目
  4. android获取其他app布局,android - 如何从App的(布局)XML变量中获取Manifest版本号?...
  5. 微信/聊天宝/马桶MT/多闪 社交APP一个不落 被约谈!
  6. elk查询nginx日志响应时间
  7. 第四章节 窗体应用(Form窗体)
  8. XMLHttpRequest.responseType
  9. oracle数据库使用小结
  10. 「转发领抱枕」40万奖金等你来挑战!阿里云ECS Cloudbuild开发者大赛重磅开启
  11. 简单了解几种常见的网络通信协议
  12. 数据结构复习-day01-SqList顺序表
  13. 网页上直接sql查询操作数据库,并在网页上展示列表数据的工具页面
  14. Mysql基础命令语句(1)
  15. 深度学习:透过神经网络的内在灵魂与柏拉图的哲学理念
  16. 基于Matlab的数字水印设计
  17. 01Node.js入门+留言本实操
  18. 管理规划:目标是什么?
  19. android 滚动手势动画
  20. 利用python爬取京东商品的详情信息

热门文章

  1. 大家都能轻松恢复回收站删除文件的方法
  2. 抽屉有源电力滤波装置
  3. 全球森林、土地利用、耕地数据下载
  4. 【如何学习】 -- 读刘未鹏《暗时间》有感
  5. 1到20的阶乘之和是多少
  6. office全套教程(2003~2016)
  7. 手撕Promise源码
  8. 业内首发车道级导航背后——详解高精定位技术演进与场景应用
  9. 2020年每月工作日表_2020年工作场所技能再培训的诫命
  10. 基于结构光的三维测量学习笔记