C语言实现考勤管理系统

这篇文章主要为大家详细介绍了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语言实现考勤管理系统

基础教程推荐