题目描述

1.学生信息及打卡情况的录入
2.修改某个学生的打卡情况
3.查询某个学生的打卡情况
4.旷课学生的姓名及次数
5.学生打卡的总评分数计算

完整代码

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdlib.h>
#include <stdio.h>
#include <string.h>FILE *fp;  //定义文件
char a;    //返回选择变量
float kq = 10;    //应到打卡次数struct  student
{char name[10];      //姓名char number[11];    //学号char sex;           //性别int year;           //出生日期--年int month;          //出生日期--月int day;            //出生日期--日int k;              //打卡次数
}stu[100];void input();
void change();
void search();
void times();
void evaluate();
int main();int main()
{int it = 0;printf("\t\t★★★★★★★★★★★★★★★★★★★★★★★★\n");printf("\t\t★         ※欢迎进入学生考勤系统             ★\n");printf("\t\t★                                            ★\n");printf("\t\t★         1.学生信息及打卡情况录入           ★\n");printf("\t\t★                                            ★\n");printf("\t\t★         2.修改某个学生的打卡情况           ★\n");printf("\t\t★                                            ★\n");printf("\t\t★         3.查询某个学生的打卡记录           ★\n");printf("\t\t★                                            ★\n");printf("\t\t★         4.旷课学生的姓名及次数             ★\n");printf("\t\t★                                            ★\n");printf("\t\t★         5.学生打卡的总评分数计算           ★\n");printf("\t\t★                                            ★\n");printf("\t\t★         6.退出系统                         ★\n");printf("\t\t★                                            ★\n");printf("\t\t★★★★★★★★★★★★★★★★★★★★★★★★\n");printf("\t *******请选择您需要的操作*******  ");scanf("%d", &it);switch (it){case 1: input(); break;case 2:change(); break;case 3:search(); break;case 4:times(); break;case 5:evaluate(); break;case 6:           break;default: printf("请重新输入!\n");}if (it == 6)printf("\t\t\t退出考勤系统,欢迎下次使用!");system("pause");return 0;
}void input()
{int i = 0;int j = 0;int x = 1;printf("************1.学生信息及打卡情况录入************\n");if ((fp = fopen("data.txt", "w")) == NULL){printf("文件打开失败! \n");main();}for (i = 0; x == 1; i++){for (; j == 0;){getchar();printf("请输入第%d个学生的姓名:", i + 1);gets(stu[i].name);printf("请输入第%d个学生的学号:", i + 1);gets(stu[i].number);printf("请输入第%d个学生的性别(男-m 女-f):", i + 1);stu[i].sex = getchar();printf("请输入第%d个学生的出生日期(格式:年-月-日):", i + 1);scanf("%d%d%d", &stu[i].year, &stu[i].month, &stu[i].day);printf("请输入第%d个学生当前的打卡次数:", i + 1);scanf("%d", &stu[i].k);printf("您输入的信息为: 姓名%s  学号%s   性别%c   出生日期 %d年%d月%d日   打卡次数%d  \n ",stu[i].name, stu[i].number, stu[i].sex,stu[i].year, stu[i].month, stu[i].day, stu[i].k);printf("请确定信息 (重输-0 确定-1): ");scanf("%d", &j); //输入确认}       j = 0;if (fwrite(&stu[i], sizeof(struct student), 1, fp) != 1)printf("文件写入错误! \n");  // 写入文件printf("是否继续输入下一个学生的信息  终止-0 继续-1: ");scanf("%d", &x);   //继续输入的选择}fclose(fp);printf("返回主菜单-0 :");getchar();a = getchar();getchar();if (a == '0')main();      //返回主菜单
}      //录入数据函数结束void change()
{printf("************2.修改某个学生的打卡情况************\n");int i = 0;int j = 0;int t = 10;int it = 10;int x = 10;;char name[10] = { 0 };char number[10] = { 0 };if ((fp = fopen("data.txt", "r")) == NULL)   //将文件内容读入内存{printf("文件打开失败! \n");main();}for (i = 0; feof(fp) == 0; ++i){fread(&stu[i], sizeof(struct student), 1, fp);  //读取文件内容}printf("选择修改对象:按姓名查找-1 按学号查找-2: ");scanf("%d", &it);if (it == 1)     //按姓名查找开始{printf("请输入需要修改学生的姓名: ");scanf("%s", &name);for (j = 0; t != 0; j++)t = strcmp(stu[j].name, name);if (j == i){t = 0;printf("未找到该学生信息,请重新输入! \n");fclose(fp);}if (j < i)   //查询成功{printf("您查询的信息为: 姓名%s  学号%s   性别%c   打卡次数%d  \n ",stu[j - 1].name, stu[j - 1].number, stu[j - 1].sex, stu[j - 1].k);}printf("是否确认修改该生打卡信息 否-0  是-1: ");scanf("%d", &x);if (x == 1){printf("请输入新的打卡次数: ");scanf("%d", &stu[j-1].k);    //输入新的打卡次数if ((fp = fopen("data.txt", "w")) == NULL) //以只写方式打开{printf("文件打开失败! \n");main();}if (fwrite(&stu[j], sizeof(struct student), 1, fp) != 1)printf("文件写入错误! \n");    //写入文件}fclose(fp);}//按姓名查找结束if (it == 2)    //按学号查找开始{printf("请输入需要修改学生的学号:");scanf("%s", &number);for (j = 0; t != 0; j++)t = strcmp(stu[j].number, number);if (j == i){t = 0;printf("未找到该学生信息,请重新输入! \n");}if (j < i)   //查询成功{printf("您查询的信息为: 姓名%s  学号%s   性别%c  打卡次数%d  \n ",stu[j - 1].name, stu[j - 1].number, stu[j - 1].sex,  stu[j - 1].k);}printf("是否确认修改该生打卡信息 否-0 是-1:");scanf("%d", &x);if (x == 1){printf("请输入新的打卡次数: ");scanf("%d", &stu[j-1].k);    //输入新的打卡次数if ((fp = fopen("data.txt", "w")) == NULL) //以只写方式打开{printf("文件打开失败! \n");main();}if (fwrite(&stu[j], sizeof(struct student), 1, fp) != 1)printf("文件写入错误! \n");    //写入文件}fclose(fp);}//按学号查询结束printf("是否继续修改其他学生打卡信息 返回主菜单-0 继续-1: ");scanf("%d", &x);if (x == 1)     change();else           main();  //返回主菜单
}    //修改数据函数内容结束void search()
{printf("************3.查询某个学生的打卡记录************\n");int i = 0;int j = 0;int it = 10;int t = 10;int x = 10;char name[10] = { 0 };char number[10] = { 0 };if ((fp = fopen("data.txt", "r")) == NULL)   //将文件内容读入内存{printf("文件打开失败! \n");main();}for (i = 0; feof(fp) == 0; ++i){fread(&stu[i], sizeof(struct student), 1, fp);  //读取文件内容}printf("选择查找方式:按姓名查找-1 按学号查找-2: ");scanf("%d", &it);if (it == 1)     //按姓名查找开始{printf("请输入需要查询学生的姓名: ");scanf("%s", &name);for (j = 0; t != 0; j++)t = strcmp(stu[j].name, name);if (j == i){t = 0;printf("未找到该学生信息,请重新输入! \n");}if (j < i)   //查询成功{printf("您查询的信息为: 姓名%s  学号%s   性别%c   出生日期 %d年%d月%d日   打卡次数%d  \n ",stu[j - 1].name, stu[j - 1].number, stu[j - 1].sex, stu[j - 1].year, stu[j - 1].month, stu[j - 1].day, stu[j - 1].k);}fclose(fp);}//按姓名查询结束if (it == 2)    //按学号查找开始{printf("请输入需要查询学生的学号:");scanf("%s", &number);for (j = 0; t != 0; j++)t = strcmp(stu[j].number, number);if (j == i){t = 0;printf("未找到该学生信息,请重新输入! \n");}if (j < i)   //查询成功{printf("您查询的信息为: 姓名%s  学号%s   性别%c   出生日期 %d年%d月%d日   打卡次数%d  \n ",stu[j - 1].name, stu[j - 1].number, stu[j - 1].sex, stu[j - 1].year, stu[j - 1].month, stu[j - 1].day, stu[j - 1].k);}fclose(fp);}printf("是否继续查询其他学生打卡信息 返回主菜单-0 继续-1: ");scanf("%d", &x);if (x == 1)      search();else           main();  //返回主菜单
}void times()
{printf("************4.旷课学生的姓名及次数  ************\n");int i = 0;int j = 0;int it = 0;if ((fp = fopen("data.txt", "r")) == NULL)   //将文件内容读入内存{printf("文件打开失败! \n");main();}for (i = 0; feof(fp) == 0; i++){fread(&stu[i], sizeof(struct student), 1, fp);  //读取文件内容}printf("旷课学生的姓名及次数如下:\n ");for (j = 0; j < i-1;j++ ){if (stu[j].k < kq)printf("姓名%s  学号%s   缺课次数%f  \n ",stu[j].name, stu[j].number, (kq - stu[j].k));}printf("是否返回主菜单 0否 1是: ");scanf("%d", &it);if (it == 0)  return;else main();
}void evaluate()
{printf("************5.学生打卡的总评分数计算************\n");int i = 0;int j = 0;int t = 10;int it = 10;int x = 10;float score=0;char name[10] = { 0 };char number[10] = { 0 };if ((fp = fopen("data.txt", "r")) == NULL)  //将文件读入内存{printf("文件打开失败! \n");main();}for (i = 0; feof(fp) == 0; ++i)fread(&stu[i], sizeof(struct student), 1, fp);   //读取文件内容printf("选择计算对象:1 按姓名查找 2 按学号查找: ");scanf("%d", &it);if (it == 1)     //按姓名查找开始{printf("请输入需要计算分数的学生姓名: ");scanf("%s", &name);for (j = 0; t != 0; ++j)t = strcmp(stu[j].name, name);if (j == i){t = 0;printf("未找到该学生信息,请重新输入! \n");fclose(fp);}if (j < i)   //查询成功{printf("您查询的信息为: 姓名%s  学号%s   打卡次数%d  \n ",stu[j - 1].name, stu[j - 1].number, stu[j - 1].k);score = stu[j-1].k / kq * 100;printf("该生当前打卡总评分为 %5.2f \n", score);}fclose(fp);printf("是否继续计算其他学生打卡分数 0否 1是");scanf("%d", &x);if (x == 1)  evaluate();else         main();}      //按姓名查找结束if (it == 2)    //按学号查找开始{printf("请输入需要计算分数的学生学号:");scanf("%s", &number);for (j = 0; t != 0; j++)t = strcmp(stu[j].number, number);if (j == i){t = 0;printf("未找到该学生信息,请重新输入! \n");}if (j < i)   //查询成功{printf("您查询的信息为: 姓名%s  学号%s   性别%c   打卡日期 %d年%d月%d日   打卡次数%d  \n ",stu[j - 1].name, stu[j - 1].number, stu[j - 1].sex, stu[j - 1].year, stu[j - 1].month, stu[j - 1].day, stu[j - 1].k);score = (float)(stu[j-1].k) / kq * 100;printf("该生当前打卡总评分为 %5.2f \n", score);}fclose(fp);printf("是否继续计算其他学生打卡分数 0否 1是");scanf("%d", &x);if (x == 1)  evaluate();else         main();}    //按学号查找结束printf("0 返回主菜单\n");getchar();a = getchar();getchar();if (a == '0')main();  //返回主菜单
}

【C语言】学生打卡系统(完整代码)相关推荐

  1. C语言期末大作业15个(附源码)成绩管理系统、图书馆管理系统、学生打卡系统、超市信息管理系统、学生考勤系统、职工信息管理系统源码、歌曲信息管理系统、超市收款系统等等

    C语言期末作业15个(上) 1.C语言学生成绩管理系统 2.C语言图书馆管理系统(复杂版) 3.C语言图书馆管理系统(简洁版) 4.C语言停车管理系统(两个版本) 5.C语言学生考勤系统 6.C语言班 ...

  2. C语言期末作业(15个)-货物管理系统、歌曲信息管理系统、职工信息管理系统源码、学生打卡系统、小学生计算机辅助教学系统、门禁系统、银行管理系统等等

    C语言期末作业15个(下) 9.C语言货物管理系统 10.C语言歌曲信息管理系统 11.C语言职工信息管理系统源码 12.C语言学生打卡系统 13.C语言小学生计算机辅助教学系统 14.C语言门禁系统 ...

  3. 基于python,mysql的学生打卡系统(班级在用)

    本文约有1.8W字,快来数一数 读一读吧 本文目录 前言 一.建立基础数据库(数据库名:english punch) all_name表:用于存储所有学生信息 update_table表:用于记录打卡 ...

  4. C语言学生综合测评系统

    C语言学生综合测评系统 28.学生综合测评系统 每个学生的信息为:学号.姓名.性别.家庭住址.联系电话.语文.数学.外语三门单科成绩.考试平均成绩.考试名次.同学互评分.品德成绩.任课教师评分.综合测 ...

  5. 门禁系统 java源代码_Java经典源码 门禁系统完整代码

    [实例简介] Java经典源码 门禁系统完整代码 门禁系统 另一种写法,代码和前一个系统有区别 [实例截图] [核心代码] ControlSys1 └── ControlSys1 ├── accp.l ...

  6. 成绩查询系统c语言,学生成绩查询系统C语言代码(分服务器端和客户端).doc

    学生成绩查询系统C语言代码(分服务器端和客户端) 客户端:#include#include#include #pragma comment(lib , "Wsock32.lib " ...

  7. c语言-学生成绩查找系统

    从写完上一篇博客,马不停蹄的我开始写这篇博客,就是不想辜负大家的期待,希望有更多的文章呈现给大家,话不多说让我们开始吧! 首先呈上题目: 在写这个算法题之前要求我们对结构体的知识有所了解,但不必过于深 ...

  8. 基于 K-means 算法的校园微博热点话题发现系统 完整代码 +论文

    完整代码: https://download.csdn.net/download/qq_38735017/87382373 一.研究目的 微博由其 "短平快 " 的信息能力和快速传 ...

  9. c语言编写音乐播放器完整代码(mciSendString函数的使用方法,第一次使用Visual Studio 2019的详细步骤)

    本文会尽量让和笔者一样只有一点点可怜的c语言基础的小白看懂,并写出自己的音乐播放器. 笔者使用的编译器是Visual Studio 2019,直接在官网下载就行了.下面是Visual Studio 2 ...

  10. 学生信息录入系统java代码

    学生信息录入系统可以实现学生本身账号密码登陆,然后录入自己关键信息(其中,带*的为必填)最后 会在电脑f盘生成一个自己信息录入完成的文件,并且可以提交信息,进而将文件中的信息展示出来.我觉得这部分的难 ...

最新文章

  1. Oracle11gR2在9x8hk..Windows18669144449 命名进入Oracle
  2. 前端学习(2755):配置tabber其他属性
  3. linux IP 设置
  4. QuantLib 金融计算——随机过程之概述
  5. 优秀程序员都有哪些编程习惯?
  6. 图解:SQL SERVER2005的安装
  7. 春节假期,我把父母家的网络整瘫了……
  8. 小程序定位并获取城市编码
  9. 创建一个员工类(Employee),其中包括:1) 4个私有属性:员工姓名(name)、员工年龄(age)、员工职位(position)、工资(salary)
  10. pnpm monorepo的技术选型临界点(Critical adoption)
  11. JAVA小功能手机短信发送
  12. 哈尔滨计算机职业学校赵梓琦,哈尔滨赛区复选晋级名单
  13. python---用单个葫芦丝音节合成完整的曲目
  14. n-魔方阵(找规律)
  15. 二, 大数据基础架构Hadoop-HDFS入门和基本操作(基本组成, Shell操作, API操作, 读写流程) hf
  16. helm安装cert-manager自动化Https(1.8)
  17. 怎么在 Windows 下生成 文档树 tree?
  18. 银河英雄传说————牛客
  19. 帮助粉丝用青泥学术大数据推荐毕业论文选题(围绕 教育信息化2.0、疫情期间线上学习质量问题、Steam教育、智慧教育等突破点来抉择)
  20. 研究生阶段的大数据专业都学习什么科目?

热门文章

  1. matlab热应力计算,Matlab在齿轮应力计算中的应用
  2. 2019微信语音转发方法新版微信转发语音方法
  3. 巨头不想再将“命脉”交给微信、支付宝
  4. Python智能对话机器人实现
  5. 使用wxPython内嵌浏览器
  6. 求邻接矩阵matlab,如何使用MATLAB绘制邻接矩阵
  7. Win7+OpenCV2.4.10+VS2010安装教程
  8. java使用手册_java配置使用手册
  9. Android四大组件之广播
  10. 雷诺方程、脉动运动方程及雷诺应力输运方程的推导