C语言 大学生考勤系统

大学生考勤系统
声明:该课题内容版权为学校所有。代码是我们队三个人共同完成的。仅仅给有需要的同学提供一些思路。不得转载抄袭。
一、课题内容和要求
大学生考勤系统是在VS2019编译器,通过C语言完成, 该系统要求实现一个简单、实用的学生考勤系统程序,主要功能包括考勤数据的新增、删除、修改、查找、统计、排序、输出等。所有统计数据都利用文件系统保存,以备系统下次运行时使用。我组研发的大学生考勤系统特点在于其实用性,该系统要求学生每节课进行两次打卡,分别为上课前十五分钟和下课后,否则按具体情况由系统判定为旷课或早退。真正实现了让学生无法在课程中途开溜,真可谓是走大学生的路,让大学生无路可走。因为考勤系统的选题自主发挥的空间比较小,不如开发游戏等项目。所以我们主要注重程序的合理性和逻辑性。(备注:因为我们组三个人都是用的vs2019所以预处理需要改一下,下文会具体说明)
课题的基本功能要求 :
a 新增学生信息数据(避免重复记录,若在,不可再增加)。
b 查找数据(可按学号、姓名、考勤日期等查找)。
c 修改学生记录(可以先查找,再修改)。
d 删除学生记录(请参考上面修改的处理)。
e 显示学生考勤数据列表(可显示部分或全部)。
f 排序(可按学号、姓名、考勤日期等排序)。
g 数据统计
(对考勤数据统计分析,统计完成后,可以通过考勤系统中得出考勤 明细表,考勤日报表、考勤汇总表、考勤异常表,请假汇总表等)。
h 保存数据到文件中并从文件中读入数据。
二、接下来上代码

#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
struct Date
{
	int day;                               //日
	int month;                             //月
};
struct  Stu
{
	char name[20];                                      //姓名
	char id[20];                                        //学号
	char class[20];                                     //班级
	char course[20];                                    //课程
	struct Date date;                                   //打卡日期
	char X;                                             //打卡状态
}Stu[100],t,rank[100];
void time123();                                         //获取当前时间
void Stucheck();                                        //学生查询
void Stucheckin();                                      //学生考勤
void Stucomp();                                         //学生申诉
void AddStu();                                          //新增学生信息
void ChangeStu();                                       //修改学生信息
void DelStu();                                          //删除学生信息
void Datesta();                                         //数据统计
void Datesort();                                        //排序
void Stufeedback();                                     //学生反馈
char firstjudgestate(int, int);                         //初次考勤符号
void secondjudge();                                     //二次考勤确认
char secondjudgestate(int);                             //二次考勤符号
int ca(char *id, int);                                  //计算考勤总次数
void delay();                                           //延时
int main()
{
	zhuchengxu:
	printf("\t\t###############################################################################################\n\n\n");
	printf("\t\t\t\t\t    欢迎来到大学生考勤系统!\n\n\n");
	printf("\t\t\t\t\t\t请选择您的身份\n\n\n");
	printf("\t\t\t\t\t(学生请输入  1,老师请输入  2)\n\n\n");
	printf("\t\t\t\t\t\t退出系统请输入3\n\n\n");
	printf("\t\t###############################################################################################\n\n\n");
	char key[5] ;
	int b, c, a;                                         //都作为选项输入
	scanf("%d", &a);
	system("cls");
	if (a == 1)
	{
		printf("");
		printf("\t\t###############################################################################################\n\n\n");
		printf("\t\t\t\t\t\t您已选择学生\n\n\n");
		printf("\t\t\t\t\t\t请选择需要的服务\n\n\n");
		printf("\t\t\t\t\t①学生查询\t②学生考勤\t③学生申诉平台\t④返回主程序\n\n\n");
		printf("\t\t###############################################################################################\n\n\n");
		scanf("%d", &b);
		system("cls");
		switch (b)                                        //服务选择
		{
		case 1:
			Stucheck();
			break;
		case 2:
			Stucheckin();
			break;
		case 3:
			Stucomp();
			break;
		case 4:
			goto zhuchengxu;
			break;
		}
	}
	else if (a == 2)
	{
		printf("\t\t###############################################################################################\n\n\n\n\n");
		printf("\t\t\t\t\t\t\t您已选择老师\n\n\n\n\n");
		printf("\t\t\t\t\t\t\t请输入登录密码:\n\n\n\n\n");
		printf("\t\t###############################################################################################\n\n\n\n\n");
		getchar();
		gets(key);
		system("cls");
		if (!strcmp(key, "1234"))
		{
			printf("\t\t###############################################################################################\n\n\n");
			printf("\t\t\t\t\t\t\t登录成功!\n\n\n");
			printf("\t\t\t\t\t\t\t请选择需要的服务\n\n\n");
			printf("\t①增加学生信息\t②修改学生信息\t③删除学生信息\t④考勤数据统计\t⑤考勤数据排序\t⑥学生申诉平台\t⑦返回主界面\n\n\n");
			printf("\t\t###############################################################################################\n\n\n");
			scanf("%d", &c);
			system("cls");
			switch (c)                                    //服务选择
			{
			case 1:
				AddStu();
				break;
			case 2:
				ChangeStu();
				break;
			case 3:
				DelStu();
				break;
			case 4:
				Datesta();
				break;
			case 5:
				Datesort();
				break;
			case 6:
				Stufeedback();
				break;
			case 7:
				goto zhuchengxu;
				break;
			}
		}
		else
		{
			printf("\t\t###############################################################################################\n\n\n\n\n");
			printf("\t\t\t\t\t\t\t密码错误!\n\n\n\n\n");
			printf("\t\t\t\t\t\t\t返回主界面中…………\n\n\n\n\n");
			printf("\t\t###############################################################################################\n\n\n\n\n");
			delay();
			system("cls");
			main();
		}
	}
	else
	{
		printf("\t\t###############################################################################################\n\n\n\n\n\n\n\n\n");
		printf("\t\t\t\t\t\t\t已退出系统\n\n\n\n\n\n\n\n\n");
		printf("\t\t###############################################################################################\n\n\n\n\n\n\n\n\n");
		return 0;
	}
}
void time123()                                               //获取当前时间
{
	time_t timep;
	struct tm* p;
	time(&timep);
	p = gmtime(&timep);
	printf("%d\n", p->tm_sec); /*获取当前秒*/
	printf("%d\n", p->tm_min); /*获取当前分*/
	printf("%d\n", 8 + p->tm_hour);/*获取当前时,这里获取西方的时间,刚好相差八个小时*/
	printf("%d\n", p->tm_mday);/*获取当前月份日数,范围是1-31*/
	printf("%d\n", 1 + p->tm_mon);/*获取当前月份,范围是0-11,所以要加1*/
	printf("%d\n", 1900 + p->tm_year);/*获取当前年份,从1900开始,所以要加1900*/
	printf("%d\n", p->tm_yday); /*从今年1月1日算起至今的天数,范围为0-365*/
}

一下省略一千行代码
三、以上代码只是源代码、主函数和时间同步部分。
想要白嫖的还得自己思考动手哦。有不懂的地方可以评论也可以问我,QQ号2858184603. 其余的模块我会根据心情继续发博客的。
新人第一次发表,请多支持,谢谢。

©️2020 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值