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

article/2025/11/6 10:52:50

题目要求:
在这里插入图片描述
在这里插入图片描述

代码实现如下:

在这里插入代码片
#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);}elseprintf("对不起没有要修改的学生信息!\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);	}} 

http://chatgpt.dhexx.cn/article/hXH6aqeg.shtml

相关文章

C++学生考勤管理系统报告

c课程设计学生考勤管理系统报告 1.需求分析 1.录入学生的缺课记录&#xff1b; 2&#xff0e;修改某个学生的缺课记录&#xff1b; 3&#xff0e;查询某个学生的缺课情况&#xff1b; 4&#xff0e;统计某段时间内&#xff0c;某门课旷课学生姓名及旷课次数&#xff0c;按旷课次…

学生考勤管理系统

学生考勤管理系统 学生考勤管理系统 背景分析&#xff1a; 随着高校校园信息化的逐步完善&#xff0c;有效地借助网络、数据库等技术提高工作和管理效率。如今针对师生的成绩查询系统、教务管理系统、招生就业系统、BBS、校园网站等系统在各大高校纷纷出现[1]&#xff0c;对全…

C语言课程设计——学生考勤管理系统

C语言课程设计——学生考勤管理系统 题目要求&#xff1a; 学生考勤管理系统设计 &#xff08;1&#xff09;问题描述 考勤信息记录了学生的缺课情况&#xff0c;它包括&#xff1a;缺课日期、第几节课、课程名称、学生姓名、缺课类型&#xff08;迟到、早退、请假及旷课&…

基于java学生考勤管理系统设计——计算机毕业设计

考勤作为一个学校的基础管理,是对学生的个人出勤情况的依据。传统的考勤靠手工操作、纸质传递,这样的方式造成了考勤不全面、数据不准确和资料的共享程度低。因此学校需要一个可以适应大量信息控制和数据处理的考勤管理系统,用计算机的高效处理方法和数据库的严谨结构代替手工操…

基于JavaSwing的学生考勤管理系统设计与实现

目录 前言 7 一、系统开发环境及相关技术 8 &#xff08;一&#xff09;系统设计思想及处理流程 8 &#xff08;二&#xff09;运行环境 8 &#xff08;三&#xff09;开发技术及开发工具简介 8 三、需求分析 10 &#xff08;一&#xff09;学生用户需求 10 &#xff08;二&…

《学生考勤信息管理系统》数据库课程设计

目录 一、 需求分析 前台功能模块 后台功能模块 1.1 功能模块的划分及介绍 1.2 实体及重要属性 1.3 业务流程图 二、 概念结构设计 2.1. E-R图的设计 三 、逻辑结构设计 表设计 User1-用户表 Student-学生信息表 College-院系信息表 Attendance personnel 考勤人员表 C…

多个div在同一行显示

使用float:left&#xff0c;也可以使用display : inline-block&#xff0c;可以使多个div在同一行显示。 <div class"search_row"><div class"form-group" style"float:left" > <%-- 通过左浮动使多个div在一行显示--%&g…

HTML如何让两个div并排在一行,如何实现两个或多个div并列于一行

div是块状元素&#xff0c;默认是独占据一行。 但是&#xff0c;如何让两个或多个块区域并列于一行&#xff1f; 块状元素有一个很重要的“float”属性&#xff0c;可以达成这种效果。float 属性也被称为浮动属性&#xff0c;这个词非常形象。 对前面的div元素设置浮动属性后&a…

两个div在一行显示

原因&#xff1a;div为块级元素&#xff0c;默认占一行高度 解决方法1&#xff1a;两个div都添加样式 display&#xff1a;inline-block&#xff1b;&#xff08;如值为inline&#xff0c;设置宽高失效&#xff0c;div靠内容撑起&#xff09; 代码&#xff1a; <style>…

html如何在同一行显示两个div?

代码&#xff1a; <div style"background: blue;float:left">aaa </div> <div style"background: green;float:left">bbb </div>效果&#xff1a;

在HTML中如何让两个图像(div)不换行的显示在一起

代码如下 示意图如下 在两个box后面加入float即可

怎么把两个div一左一右放

怎么把两个div一左一右放 1.代码 <% page contentType"text/html;charsetUTF-8" language"java" %> <html> <head><title>Title</title> </head> <body> <div style"width:150px;height:50px;margin:0…

css 并排放置两个div

写代码时遇到了并排放置两个div的需求&#xff0c;于是总结了一下&#xff0c;有以下几种方法可以实现&#xff1a; &#xff08;1&#xff09;设置浮动&#xff1a; a&#xff09;两个div都设置为左浮动&#xff1a; <!DOCTYPE html> <html> <head><…

【HTML】把两个div的内容放置在同一行

使用float属性把两个div的内容放置在同一行&#xff1a; <html> <head> </head> <body><div ><div style"float:right;">我在右侧</div><div>我在左侧</div></div> </body> </html>结果图&…

css如何让两个div并列在同一行

让两个Div并排显示的方法有很多&#xff0c;使用display的inline属性、通过设置float来让Div并排显示都可以实现&#xff0c;感兴趣的朋友可以参考下本文 让两个Div并排显示 一、使用display的inline属性 代码如下 二、通过设置float来让Div并排显示 代码如下 三、对于两个d…

Web前端培训:两个div在同一行可以实现吗?

我们在写页面的时候经常会遇到需要将两个div盒子同行显示的情况&#xff0c;那么“两个Div同行显示”该如何显示呢?一般两个div同行显示可以用float: left和display: inline_block来实现&#xff0c;下面我们分别介绍。 首先我们先来看&#xff0c;没有同行显示的两个div什么…

将两个或多个div放在同一行

1.先画出三个大盒子 2.1在style属性中添加display:inline-block,结果如图&#xff1a; 但是使用该方法盒子与盒子间的默认缝隙是不能修改的&#xff0c;通常我们会使用以下的方法实现两个以上的盒子的摆放 2.2在style属性中添加float&#xff1a;left&#xff1b;将元素移到左…

如何让两个div处于一行

我们知道 div是块级元素,是独占一行的.一般情况下,两个相邻的div是不会处于一行的 例如: Html代码 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>让两个div处于同一行</title&…

1、RH850时钟源及配置

一、时钟源 系统时钟源有5种&#xff1a; 外部主晶振8M-24M。(main osc) 外部副晶振32.768KHz。 &#xff08;sub osc&#xff09; 内部高速晶振8M。(high speed int osc) 内部低速晶振240KHz。(low speed int osc) PLL倍频器。 Note 1. 外部副晶振只有 144 pin and 17…