C语言实现学生考勤系统

本文实例为大家分享了C语言实现学生考勤系统的具体代码,供大家参考,具体内容如下

项目要求:

学生考勤系统

功能:学生考勤系统应包含各班学生的全部信息。每个学生是一条记录,包括姓名、性别、学号、出勤情况等。本系统可模拟考勤过程,记录考勤结果,并能够在课程结束后按照设定的考勤评分标准自动给出每个学生的考勤分数。

分步实施:

(1)初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;
(2)最低要求:建立一个文件,包括同一个班的10个学生的必要信息,能对文件进 行补充、修订、删除。

采用结构体数组读入读出文件(二进制形式写进data.txt文件)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

const int N = 1010;
const int LEN = 20;
const int CLAstunumber = 10;//每个班CLAstunumber人 

typedef struct
{
    char attdate[LEN];//日期
    int atts;//出勤情况 0缺勤 1出勤  
}attdent;

typedef struct
{
    char stname[LEN];
    char sex[LEN];
    int stnumber;
    int core;
    attdent stattdent[N];//最多纪录N个日期的考勤情况    
}studentinf;
int cnt;//记录日期数组用到哪里 

studentinf students[CLAstunumber];

void menu()
{
    printf("========================================================\n");
    printf("0.学生信息录入\n");
    printf("1.开始考勤\n");
    printf("2.修改学生考勤纪录\n");
    printf("3.生成并查看学生考勤分数\n");
    printf("4.读取数据\n");
    printf("5.保存数据\n");
    printf("6.退出\n");
    printf("========================================================\n");
}

void studentinput()
{
    //录入操作 
    for(int i = 0 ; i < CLAstunumber; i ++)
    {
        printf("----------------------------------------\n");
        printf("请输入学生姓名:                       |\n");
        studentinf student1;
        scanf("%s",student1.stname);
        printf("请输入学生性别:                       |\n");
        scanf("%s",student1.sex);
        printf("请输入学生学号:                       |\n");
        scanf("%d",&student1.stnumber);
        student1.core = 0;
        //(student1.stattdent[N]).attdate[LEN] = '0';
        students[i] = student1;
        printf("----------------------------------------\n");
    }
}

void attcheck()
{
    //考勤操作 
    for(int i = 0;i < CLAstunumber ; i ++)
    {
        students[i];
        printf("------------------------------\n");
        printf("姓名:%s\n",students[i].stname);
        printf("性别:%s\n",students[i].sex);
        printf("学号:%d\n",students[i].stnumber);
        printf("请输入时间:XXXX/XX/XX\n");
        scanf("%s",(students[i].stattdent[cnt]).attdate);
        printf("请输入该学生出勤情况:(0表示缺勤,1表示出勤)\n");
        scanf("%d",&(students[i].stattdent[cnt]).atts);
        cnt ++;
        printf("------------------------------\n");
        
    }
}

void changeinf()
{
    //遍历修改
    char fname[LEN];
    char fdate[LEN];
    printf("----------------------------------\n");
    printf("请输入学生姓名:\n");
    scanf("%s",fname);
    int stand1;//退出第一层for标准 
    for(int i = 0;i < CLAstunumber; i ++) 
    {
        if(!strcmp(fname,students[i].stname))
        {
            printf("学生姓名:%s\n",students[i].stname);
            printf("请输入时间:(XXXX/XX/XX)\n");
            scanf("%s",fdate);
            for(int j = 0;j < cnt ; j ++)
            {
                if(!strcmp(fdate,(students[i].stattdent[j]).attdate))
                printf("学生:%s",fname);
                printf("考勤时间:%s\n",fdate);
                printf("出勤情况:%d\n",(students[i].stattdent[j]).atts);
                printf("请输入修改后的出勤情况:\n");
                scanf("%d",&(students[i].stattdent[j]).atts);
                printf("修改成功!\n");
                stand1 = 1;
                break;
            }
            if(stand1 == 1) break;
        }
    }
    printf("----------------------------------\n");
}

void checkcore()
{
    //生成考勤分数 = 出勤次数即分数 
    for(int i = 0;i < CLAstunumber; i++)
    {
        printf("----------------------------\n");
        printf("学生姓名:%s\n",students[i].stname);
        printf("学生性别:%s\n",students[i].sex);
        printf("学生学号:%d\n",students[i].stnumber);
        //计算分数
        students[i].core = 0;
        for(int j = 0;j < cnt ; j ++)
        {
            students[i].core += (students[i].stattdent[j]).atts;    
        } 
        printf("考勤分数:%d\n",students[i].core);    
        printf("----------------------------\n");
    }
    
}

void readdata()
{
    FILE *fp = NULL;
    fp = fopen("data.txt","rb");
    
    //读出 
    int i = 0;
    while(!feof(fp))
    {
        fread(&students[i],sizeof(studentinf),1,fp);
        i ++;
    }
    i --;
    
    cnt = i;
    
    fclose(fp);      
    printf("读取成功!\n");
}

void savedata()
{
    FILE *fp = NULL;
    fp = fopen("data.txt","wb");
    //写入
    for(int i = 0;i < CLAstunumber  ; i ++)
    {
        fwrite(&students[i],sizeof(studentinf),1,fp);
    }
    
    fclose(fp);  
    printf("保存成功!\n");    
}

int main()
{
    menu();
    int op;
    while(1)
    {
        scanf("%d",&op);
        if(op == 0)
        {
            system("cls");
            studentinput();
            menu();
        }
        else if(op == 1)
        {
            system("cls");
            attcheck();
            menu();
        } 
        else if(op == 2)
        {
            changeinf();
            menu();
        }
        else if(op == 3)
        {
            system("cls");
            checkcore();
            menu();
        }
        else if(op == 4)
        {
            system("cls");
            readdata();
            menu();
        }
        else if(op == 5)
        {
            system("cls");
            savedata();
            menu();
        }
        else if(op == 6)
        {
            break;
        }
        else printf("input error!\n");
    }
     
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言实现大学生考勤管理系统

    程序设计题:大学生考勤系统 1 问题描述 该系统要求实现一个简单.实用的学生考勤系统程序,主要功能包括考勤数据的新增.删除.修改.查找.统计.排序.输出等.所有统计数据都要利用文件系统保存,以备系统下次运行时使用.通过此课题,熟练掌握文件.数组.指针的各种操作,以及一些基本算法的应用. 2 功能要求 代码要能提供以下几个基本功能. (1)考勤数据是由多条数据记录构成,其信息包括:学号(唯一).姓名.班级.考勤日期(由月和日组成)等等. (2)数据保存形式:所有信息要以文本或二进制文件保存. (3

  • C语言实现考勤管理系统

    这些天因为补修c语言课设,在花费了一段时间后写完了这个课设,课设的要求如下: 考勤信息记录了学生的缺课情况,它包括:缺课日期.第几节课.课程名称.学生姓名.缺课类型(迟到.早退.请假及旷课).试设计一考勤管理系统,使之能提供以下功能: (1) 录入学生的缺课记录:(2) 修改某个学生的缺课记录:(3) 查询某个学生的缺课情况:(4) 统计某段时间内,旷课学生姓名及旷课次数,按旷课次数由多到少排序:(5) 统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序:(6) 系统以菜单方式工

  • C语言实现学生考勤系统

    本文实例为大家分享了C语言实现学生考勤系统的具体代码,供大家参考,具体内容如下 项目要求: 学生考勤系统 功能:学生考勤系统应包含各班学生的全部信息.每个学生是一条记录,包括姓名.性别.学号.出勤情况等.本系统可模拟考勤过程,记录考勤结果,并能够在课程结束后按照设定的考勤评分标准自动给出每个学生的考勤分数. 分步实施: (1)初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数:(2)最低要求:建立一个文件,包括同一个班的10个学生的必要信息,能对文件进 行补充.修订.删除. 采用结构体数

  • C语言实现学生选课系统完整版

    本文实例为大家分享了C语言实现学生选课系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> int N1,N2,kk1,kk2,kk3; struct couse * head1; struct student * head2; struct couse//课程信息结构体 { int num1; char name1[20]; int score; int nelepeo;//课程已选人数 int Melepeo;//课

  • C语言实现学生选课系统

    本文实例为大家分享了C语言实现学生选课系统的具体代码,供大家参考,具体内容如下 代码: #include<stdio.h> #include<windows.h> #include<stdlib.h> #include<conio.h> typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; #define CLASS_CLS

  • 基于C语言实现学生选课系统

    鉴于C语言实现的通讯录,为了巩固C语言的基础知识,试着写一个简单的学生选课系统. 思路比较简单: 1.回滚显示各种提示信息或操作信息 2.链表操作. 代码中有管理员部分功能没有实现,学生和老师的功能基本实现,但有待加固,如果初学者可是试着去完善一下. 还可以将老师,学生的信息输出到文件文本中,本代码中没有实现,但并不是很难. 代码如下: #include <stdio.h> #include <stdlib.h> #include <string.h> /* 总链表--

  • C语言实现学生打卡系统

    本文实例为大家分享了C语言实现学生打卡系统的具体代码,供大家参考,具体内容如下 题目描述 1.学生信息及打卡情况的录入 2.修改某个学生的打卡情况 3.查询某个学生的打卡情况 4.旷课学生的姓名及次数 5.学生打卡的总评分数计算 完整代码 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdlib.h> #include <stdio.h> #include <string.h> FILE *fp; //定义文件 char a;

  • C语言实现的学生选课系统代码分享

    好久没玩过C语言了,上一次还是在大二的时候...废话不多说,这里有一个C语言实现的学生选课系统代码,分享给大家,具体如下: #include<stdio.h> #include<stdlib.h> int N1,N2,kk1,kk2,kk3; struct couse * head1; struct student * head2; struct couse//课程信息结构体 { int num1; char name1[20]; int score; int nelepeo; /

  • C语言实现学生奖学金评定系统

    本文实例为大家分享了C语言实现学生奖学金评定系统的具体代码,供大家参考,具体内容如下 说明: 学生综合积分由文化积分和德育积分构成,文化积分是所有门课程成绩总和除以课程门数(平均分),德育积分是参加各类活动的积分,学生综合积分=文化积分×70%+德育积分×30%.按照学生综合积分排名,获得一等奖学金1名学生,获得二等奖学金2名学生,获得三等奖学金3名学生,项目要求输入班级学生成绩信息,输出获得奖学金的学生名单.已知学生成绩信息包括学号.姓名.英语成绩.网络成绩.C语言成绩.数据库成绩.文化积分.

  • 如何用Python编写一个电子考勤系统

    实验项目简介 学校现在需要实现一个电子考勤系统,考虑到你们班已经学过大数据应用开发语言Python,准备让你们实现部分学生端考勤功能.经过和老师的沟通,你了解到: (1) 目前该系统已经被学长实现了部分功能,你们只需要完成剩余功能即可,需要你们完成的功能会使用 #todo的形式进行标注, todo后面会列出这个地方的功能,形式如下. (2) 学生信息存储在stu_infos.csv文件中,第一行是列名行,后面每一行都是一个学生的信息,包含学号,姓名,密码.内容形式如下: (3) 考勤记录最终会被

  • C语言实现学生信息管理系统(单链表)

    本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下 /*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:吴敬超 * 完成日期:2016年7月1日 * 版本号:codeblock * * 问题描述: 学生信息管理系统 * 输入描述: * 程序输出: 输出结果 */ #include <stdio.h> #include <stdlib.h> #include

随机推荐