C语言实现课堂随机点名系统

您所在的位置:网站首页 课堂随机点名系统怎么用 C语言实现课堂随机点名系统

C语言实现课堂随机点名系统

2024-07-15 09:03| 来源: 网络整理| 查看: 265

今天重温一下在学校时写的课程设计,复习一下在学校里学到的东西,同时也希望能够帮助到那些和我一样被课设所折磨的可怜人儿~

文章目录 1、项目要求2、项目功能的实现函数一:将选择打开文件内容读入结构体中函数二:随机点名函数函数三:添加学生信息函数四:删除学生信息函数五:查询学生信息函数六:修改学生信息函数七:展示学生信息函数八:排序学生信息 3、项目演示1.展示2.点名3.增添4.删除5.查找6.修改7.排序 4、代码展示1. byname.h2. byname.c3.test.c 5、总结

1、项目要求

课堂随机点名程序 要求能完全实现我们的点名程序已有的功能。即事先从教务处网站上下载某班的学生名单并存盘备用。你的程序能够以某种方式有选择性的加载某个班的存盘文件并把相应的学生信息读入内存,然后以随机的方式来查找某个学生的信息并把它显示出来以实现点名。

2、项目功能的实现

要想比较完整地实现一个点名系统,除了最基本的随机点名,还需要增加、删除、修改等功能,这就需要我们通过思考后,用函数的方式将它们实现。以下,就是我在这个项目中所用到的函数。

先看一下项目的软件结构图

首先定义一个结构体,由于只是用于课堂点名,因此这里结构体中学生的信息只包含学号与姓名。

typedef struct StuInfo { int id; char name[MAX]; }StuInfo; 函数一:将选择打开文件内容读入结构体中 //将文件内容读入结构体中 void stu_open(char* file, FILE* fp,StuInfo* s,int num) { int i = 0; fscanf(fp, "%d", &num);//读入班级人数 for (i = 0; i name, ((StuInfo*)e2)->name); }

这里排序方法我用的是qsort函数:

void qsort ( void* base,//待排序数组的首地址 size_t num,//待排序数组的元素个数 size_t width,//待排序数组每个元素的大小(以字节为单位) int (* cmp)(const void* e1,const void* e2)//函数指针,比较两个元素时所用函数的地址(该函数要自己实现),里面的两个参数为要比较的两个元素的地址 )

qsort函数内部有四个参数,这里它们的意义都已经一一列举出来了。注意实现最后一个函数时,参数类型一定为const void*。

3、项目演示 1.展示

(由于功能都是在已有的班级文件的基础上进行,因此,这里我先展示班级学生信息。) 展示

2.点名

点名

3.增添

增加

4.删除

删除

5.查找

查询

6.修改

修改

7.排序

排序·1 排序2

4、代码展示 1. byname.h

(包含宏的定义、头文件的引用以及函数的声明和结构体的创建) (不要忘记在后面两个文件中都要引用这个头文件)

#pragma once #include #include #include #include #include #define MAX 100 //创建一个结构体 typedef struct StuInfo { int id; char name[MAX]; }StuInfo; void stu_open(char* file, FILE* fp,StuInfo* s,int num); void stu_byname(char* file,StuInfo* s,int num); void stu_add(char* file,StuInfo* s,int num); void stu_del(char* file,StuInfo* s,int num); void stu_located(char* file,StuInfo* s,int num); void stu_show(char* file,StuInfo* s,int num); void stu_multify(char* file,StuInfo* s,int num); void stu_sort(char* file,StuInfo* s,int num); void stu_close(char* file, FILE* fp); 2. byname.c

(包含各种功能函数的实现)

#define _CRT_SECURE_NO_WARNINGS 1 #include "byname.h" //将文件内容读入结构体中 void stu_open(char* file, FILE* fp,StuInfo* s,int num) { int i = 0; //stu_write(file, fp, count); fscanf(fp, "%d", &num); for (i = 0; i id); } //按姓名排序 int cmp_by_name(const void* e1, const void* e2) { return strcmp(((StuInfo*)e1)->name, ((StuInfo*)e2)->name); } //排序学生信息 void stu_sort(char* file, StuInfo* s, int num) { FILE* fp = fopen(file, "r+"); fscanf(fp, "%d\n", &num); int i = 0; int input = 0; menu_sort(); printf("请选择排序方式:>"); scanf("%d", &input); switch (input) { case 1: qsort(s, num, sizeof(s[0]), cmp_by_id); break; case 2: qsort(s, num, sizeof(s[0]), cmp_by_name); break; case 0: printf("取消排序!\n"); break; default: printf("输入错误!请重新输入:>\n"); break; } printf("排序完成!\n"); rewind(fp); fprintf(fp, "%d\n", num); for (i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3