这篇文章主要为大家详细介绍了C语言实现考勤管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这些天因为补修c语言课设,在花费了一段时间后写完了这个课设,课设的要求如下:
考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假及旷课)。试设计一考勤管理系统,使之能提供以下功能:
(1) 录入学生的缺课记录;
(2) 修改某个学生的缺课记录;
(3) 查询某个学生的缺课情况;
(4) 统计某段时间内,旷课学生姓名及旷课次数,按旷课次数由多到少排序;
(5) 统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序;
(6) 系统以菜单方式工作。
本程序由visual studio 2017编写
我会先将程序放上来然后后面慢慢加注释,程序的大概思路是设计三个结构体,考勤信息结构体负责保存每一条缺课信息,其中包括学生信息和课程信息,每次添加考勤信息的时候,剩下的两个学生和课程结构体会自动从里面添加所需要的信息,整个程序的功能实现也是建立在三个结构体的基础上的。
#define _CRT_SECURE_NO_WARNINGS
#define N 1000
#define M 100
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct kaoqing {
//int total;//旷课总节数
int number;// 旷课的第几节
char coure_name[20];//课程名称
char stu_name[20];//学生名字
char type[20];//课程类型
int year;
int month;
int day;
};
struct stu {
char stu_name2[20];
int num;//每个学生的旷课总节数,旷课次数
};
struct course {
char coure_name2[20];//课程名称
int num;//本门课程旷课人次
};
struct kaoqing K[N+1]= { 0 };
struct stu S[M + 1] = { 0 };
struct course C[M + 1] = { 0 };
int add_course(char name[], int *t)
{
int z = *t;
int i = 1;
int flag = 0;
for (; i < z; i++) {
if (strcmp(C[i].coure_name2, name) == 0) {
flag = 1;
}
}
if (flag) {
return 1;//
}
strcpy(C[i].coure_name2, name);
++(*t);
return 0;
}
int add_stu(char name[],int *t)
{
int m = *t;
int i = 1;
int flag = 0;
for(;i<m;i++) {
if (strcmp(S[i].stu_name2, name) == 0) {
flag = 1;
}
}
if (flag) {
return 1;//
}
strcpy(S[i].stu_name2, name);
++(*t);
return 0;
}
void Coure_show(int n,int m)
{
int imax; int temp;
int i = 1, j = 1;
int by, bm, bd, ey, em, ed;
for (; i < n; i++) {
printf("%s缺课日期:%d年%d月%d日 第%d节课 %s %s\n", K[i].stu_name, K[i].year, K[i].month, K[i].day, K[i].number, K[i].coure_name, K[i].type);
}
printf("请输入统计时间段的起点时间:");
scanf("%d%d%d", &by, &bm, &bd);
printf("请输入统计时间段的终点时间:");
scanf("%d%d%d", &ey, &em, &ed);
i = 1; j = 1;
for (; i < m; i++) {
for (j = 1; j < n; j++) {
if ((K[j].year >= by) && (K[j].year <= ey)) {
if ((K[j].month >= bm) && (K[j].month <= em)) {
if ((K[j].day >= bd) && (K[j].day <= ed)) {
if (strcmp(K[j].coure_name, C[i].coure_name2) == 0) {
++C[i].num;
}
}
}
}
}
}
i = 1; j = 1;
for (; i < m; i++)
{
imax = i;
for (j = i + 1; j < m; j++)
{
if (C[j].num > C[imax].num) {
imax = j;
}
}
temp = C[imax].num;
C[imax].num = C[i].num;
C[i].num = temp;
}
i = 1; j = 1;
printf("从%d年%d月%d日到%d年%d月%d日这段时间内,旷课情况如下:\n", by, bm, bd, ey, em, ed);
for (; i < m; i++) {
//if (C[i].num > 0) {
printf("%s 旷课人次%d\n", C[i].coure_name2, C[i].num);
/
沃梦达教程
本文标题为:C语言实现考勤管理系统


基础教程推荐
猜你喜欢
- 详解c# Emit技术 2023-03-25
- C利用语言实现数据结构之队列 2022-11-22
- C++中的atoi 函数简介 2023-01-05
- C++使用easyX库实现三星环绕效果流程详解 2023-06-26
- 一文带你了解C++中的字符替换方法 2023-07-20
- C/C++编程中const的使用详解 2023-03-26
- C++详细实现完整图书管理功能 2023-04-04
- C语言基础全局变量与局部变量教程详解 2022-12-31
- C语言 structural body结构体详解用法 2022-12-06
- 如何C++使用模板特化功能 2023-03-05