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

这篇具有很好参考价值的文章主要介绍了C语言实现学生考勤管理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目要求:
C语言实现学生考勤管理系统
C语言实现学生考勤管理系统文章来源地址https://www.toymoban.com/news/detail-505859.html

代码实现如下:

在这里插入代码片
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int number;//全局变量,记录全部人的个数
//结构体,定义单个学生的信息 
typedef struct student
{
	int year;
	int month;
	int day;
	int start;
	int end;
	char arr[10];
	char name[10];
	char type[10];
}Student;
Student *Input(Student *P,int num);
void Print();
void Change(struct student *P) ;
void Search(struct student *p);
void Sort(struct student *p);
void out(struct student *P);
int main()
{
	Student *P=NULL;
	Student *Pr=NULL;
	printf("============================================\n");
    printf("============================================\n");
    printf("============================================\n");
    printf("**************欢迎来到考勤系统**************\n");
    printf("============================================\n"); 
    printf("============================================\n");
    printf("============================================\n");
	printf(".............请按任意键进入考勤系统  .......\n");
    getchar();
    system("cls");//调用System输出函数 
    Print();
     while (1)
    {
        printf("请选择操作的命令:\n");
        int item, num;
        scanf("%d", &item);
        switch (item)
        {
        case 1:
            //录入信息
            {
                system("cls");
               	printf("请输入学生的总人数:");
 				
 				scanf("%d",&num);
                P = Input(Pr,num);
                out(P);
            }
            break;
        case 2:
            //修改学生信息
            {
                system("cls");
                Change(P);
            }
            break;
        case 3:
            //查询学生信息
            {
                system("cls");
                Search(P);
            }
            break;
		case 4:
			//排序
			{
			    system("cls");
				Sort(P);
			}
			break;
         case 5:
            //退出系统
            {
                //程序结束
                system("cls");
                exit(0);
            }
            break;
        default:
            printf("用户输入错误,请重新输入\n");
            break;
        }
    }
	if(P!=NULL)
	{
		free(P);
	}
    //return 0;
	
 } 
 //显示系统 
 void Print()
 {
 	printf("-------------------------------------------------\n");
    printf("-----------------学生管理系统--------------------\n");
    printf("-----------------1.录入学生信息------------------\n");
    printf("-----------------2.修改学生信息------------------\n");
    printf("-----------------3.查询学生信息------------------\n");
    printf("-----------------4.某段时间内旷课信息------------\n");
    printf("-----------------5.退出系统----------------------\n");
    
 }
 //输入学生信息 
 Student *Input(Student *P,int num)
 {
 	
 	//循环开辟空间,存储程序;
 	 P = (struct student *)malloc(sizeof(struct student) * num);
	 int i=0;
	 for(i=0;i<num;i++)
	 {
	 	printf("请输入第%d学生的出勤信息:\n",i+1);
 	 	printf("输入的格式是:缺课日期 第几节课 课程名称 学生姓名 缺课类型\n");
 		scanf("%d-%d-%d",&P[i].year,&P[i].month,&P[i].day);
 		scanf("%d-%d",&P[i].start,&P[i].end); 
 		scanf("%s%s%s",P[i].arr,P[i].name,P[i].type);
 		/*printf("请输入缺课日期如2022-1-2\n");
 		scanf("%d",&P[i].year);
 		printf("请输入缺课日期如2022-1-2\n");
 		scanf("%d",&P[i].month);
 		printf("请输入缺课日期如2022-1-2\n");
 		scanf("%d",&P[i].day);*/
 		//printf("请输入缺课的具体节数:\n");
 	//	scanf("%d-%d",P->start,P->end);
 	//	printf("请输入课程名称:\n");
	//	 scanf("%s",P->arr) ;
	//	 printf("请输入学生姓名:\n");
		// scanf("%s",P->name);
	//	 printf("请输入学生的缺课类型:\n");
	//	 scanf("%s",P->type);
	number++;
 	printf("此学生的信息已录入!录入的信息如下:\n");
 	printf("%d-%d-%d %d-%d %s %s %s\n",P[i].year,P[i].month,P[i].day,P[i].start,P[i].end,P[i].arr,P[i].name,P[i].type);
	  } 
 	printf("学生信息录入完毕!!!!!!!\n");
 	printf("%d个学生的信息如下:\n",number);
 	for(i=0;i<number;i++)
 	{
 		printf("%d-%d-%d %d-%d %s %s %s\n",P[i].year,P[i].month,P[i].day,P[i].start,P[i].end,P[i].arr,P[i].name,P[i].type);
	 }
    //system("cls");
    Print(); 
    return P;
 }
 //修改学生信息
 void Change(struct student *P) 
 {
 	char name[20];
 	printf("请输入要修改学生的名字:\n");
 	scanf("%s",name);
 	int i=0;
 	int a;
 	for(i=0;i<=number;i++)
 	{
 		if(strcmp(P[i].name,name)==0)
 		{
 			a=i;
 			break;
		 }
		 
	 }
	 if(a==i)
	 {
	 	printf("请您对%s同学的出勤情况做一个修改:\n",P[a].name);
	 	printf("输入的格式是:缺课日期 第几节课 课程名称 学生姓名 缺课类型\n");
 		scanf("%d-%d-%d",&P[i].year,&P[i].month,&P[i].day);
 		scanf("%d-%d",&P[i].start,&P[i].end); 
 		scanf("%s%s%s",P[i].arr,P[i].name,P[i].type);
	 	
	 }
	 else
	 printf("对不起没有要修改的学生信息!\n");
	 printf("%s同学修改后的个人信息如下:\n",P[i].name);
	printf("%d-%d-%d %d-%d %s %s %s\n",P[i].year,P[i].month,P[i].day,P[i].start,P[i].end,P[i].arr,P[i].name,P[i].type);	
	Print();
	
 	
 }
 //查询学生的出勤信息
  void Search(struct student *p)
  {
  	printf("请输入要查询的学生姓名:\n");
  	char name[20];
  	scanf("%s",&name);
  	int i=0,num=0;
  	for(i=0;i<number;i++)
  	{
  		if(strcmp(p[i].name,name)==0)
  		{
  			num=i;
  			break;
		  }
	  }
	  if(i==num)
	  {
	  		printf("缺课日期 第几节课 课程名称 学生姓名 缺课类型\n");
	  		printf("%d-%d-%d %d-%d %s %s %s\n",p[i].year,p[i].month,p[i].day,p[i].start,p[i].end,p[i].arr,p[i].name,p[i].type);
	  }
	  else
	  {
	  	printf("对不起,我们没有查询到此人的出勤信息!\n");
	  }
	  Print();
  }
  
  //冒泡排序-按照缺课的次数输出
  void name(struct student *A)
{
   struct student temp;
   int i=0,j=0;
   for( i=0;i<number-1;i++)
   {
   for( j=0;j<number-i-1;j++)
	   {
	    if(A[j].name[0]>A[j+1].name[0])
	   {
	   temp=A[j];
	   A[j]=A[j+1];
	   A[j+1]=temp;
	   }
       }
   }
   for(i=0;i<number;i++)
   {
   	printf("%d-%d-%d %d-%d %s %s %s\n",A[i].year,A[i].month,A[i].day,A[i].start,A[i].end,A[i].arr,A[i].name,A[i].type);
   }
}

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
 //排序代码
 void Sort(struct student *p)
 {
 	//输入两个时间段
 	
 	struct student *A;
	  A = (struct student *)malloc(sizeof(struct student) * number);
	 int a,b,c,ae,be,ce;
	 printf("请输入开始查找日期:\n");
	 scanf("%d-%d-%d",&a,&b,&c);
	 printf("请输入截止日期:\n");
	 scanf("%d-%d-%d",&ae,&be,&ce);
	 int i=0;
	 for(i=0;i<number;i++)
	 {
	 	if(p[i].year<=ae&&p[i].year>=a)//年份优先,然后是月,然后是具体的某一天
			{
				if(p[i].month<=be&&p[i].month>=b)
				{
					if(p[i].day<=ce&&p[i].day>=c)
					{
						A[i].year=p[i].year;
						A[i].month=p[i].month;
						A[i].day=p[i].day;
						A[i].start=p[i].start;
						A[i].end=p[i].end;
						strcpy(A[i].arr,p[i].arr);
						strcpy(A[i].name,p[i].name);
						strcpy(A[i].type,p[i].type);//复制到新的数组中去 
					}
				}
			  }	  
	  } 
	  //调用排序函数输出排序结果 
	  name(A) ;
	  
	  
   }
//输出总结果
void out(struct student *P)
{
	int i=0;
	printf("以下是%d个学生的出勤信息:\n",number);
	for(i=0;i<number;i++)
	{
	printf("%d-%d-%d %d-%d %s %s %s\n",P[i].year,P[i].month,P[i].day,P[i].start,P[i].end,P[i].arr,P[i].name,P[i].type);	
	}
 } 

  

到了这里,关于C语言实现学生考勤管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学生考勤管理系统设计_c++课程设计

    以下内容可且仅可供参考,如有错误欢迎指正。 部分内容借鉴自百度 侵删致歉 目录 前言 一、需求分析 二、详细设计 三、用户使用说明 四、总结与体会 五、参考文献 六、附录(源代码) 定义类 函数   1、问题描述 学生信息包括:学号、姓名、性别、年龄、班级等信息。

    2024年02月11日
    浏览(36)
  • 基于JAVA学生考勤管理系统 毕业设计开题报告

     博主介绍 :《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、PPT、论文模版

    2024年02月04日
    浏览(32)
  • 学生成绩管理系统(C语言实现)

    设计并实现一个简单的学生成绩管理系统 学生成绩表信息包括学号、姓名、各科课程成绩(语文、数学、英语、政治)和总分。用带头结点的单链表管理学生成绩表,每个学生的信息依次从键盘输入,并根据需要进行插入、删除、排序、输出等操作。 一、 实训环境 信息工程

    2024年02月11日
    浏览(28)
  • C语言实现学生信息管理系统(附原码)

    本人的C语言学习完后,用所学的知识自己实现了一个学生管理系统,新手一个,代码还有待完善,欢迎大家在评论区指出错误! 一、流程图 二、函数的目录  三、程序介绍  1.主要功能: 添加学生信息、打印学生信息、查找学生信息、添加学生信息、修改学生信息、计算学

    2024年02月12日
    浏览(35)
  • 学生成绩管理系统(C语言有结构体实现)

    本文章介绍了一个通过C语言实现的一个简单的学生管理系统,该系统要是使用结构体数组来管理学生成绩数据的,通过该系统的练习能够对结构体的相关知识有更好的理解,提高逻辑思维能力。 系统运行,打开如下界面。列出系统帮助菜单(即命令菜单),提示输入命令 开

    2024年02月06日
    浏览(65)
  • ChatGPT实现用C语言写一个学生成绩管理系统

    随着ChatGPT爆火,大家都在使用ChatGPT来帮助自己提高效率,对于程序员来说使用它来写代码怎么样呢?今天尝试让ChatGPT,写了一个学生成绩管理系统。 问题是:使用C语言写一个学生成绩管理系统,要求使用链表,实现增删改查功能。 下面是ChatGPT写的代码,用时不到30秒,速

    2023年04月13日
    浏览(34)
  • 【C语言基础】学生信息管理系统-纯结构体实现

    ps.一定要先确实掌握结构体,结构体数组,函数中的传参,全局变量作用域等知识 一.设计构思和简单的准备工作 首先,要确定一个什么样的结构体,就需要看我需要什么功能。 于是,我写下来一个 我想要的 , 能做xxx功能的 ,可能还 很美观的 学生信息管理系统的目录,既

    2024年02月03日
    浏览(36)
  • 【C语言链表实现】学生成绩管理系统(功能全面,通俗易懂)

    题目 :学生成绩管理程序 要求 :本程序用于教学单位(院/系)的学生成绩管理。要求程序能够实现学生信息录入(可以实现增加、删除、修改学生的基本信息)、单科学习成绩的录入;班级内单科成绩排名;成绩查询:查询某个学生的各科成绩、统计所有不及格科目超过

    2024年02月09日
    浏览(40)
  • 赶紧进来看看---C语言实现学生信息管理系统(3.0文件存储版)

    本文主要介绍了将学生信息管理系统改造为文件存储版本… 主要涉及文件操作函数–将学生信息导入文件和从文件读取学生信息到程序中,从而达到数据持久化的效果 文章最后有源码展示 学生信息管理系统1.0静态版-学生信息管理系统2.0动态内存增长版-学生信息管理系统3.0文

    2024年01月20日
    浏览(34)
  • Java实现的企业员工考勤管理系统

    目录 一、引言 2 编写目的 2 项目背景 2 二、总体设计 3 2.1运行要求 3 2.2接口设计 3 2.3构架设计 3 2.4基本设计概念和处理流程 3 2.5结构 5 2.6功能需求与各模块之间关系 6 2.6.1基本信息管理模块 6 2.6.2个人出勤管理模块 10 2.6.3出勤管理模块 14 三、数据的逻辑描述 17 3.1 静态数据

    2024年02月09日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包