c/c++语言开发共享C语言实现学生打卡系统

本文实例为大家分享了c语言实现学生打卡系统的具体代码,供大家参考,具体内容如下题目描述1.学生信息及打卡情况的录入2.修改某个学生的打卡情况3.查询某个学生的打卡情况4.旷课学生的姓名及次数5.学生打

c/c++开发分享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;  //返回选择变量  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("tt★★★★★★★★★★★★★★★★★★★★★★★★n");   printf("tt★     ※欢迎进入学生考勤系统       ★n");   printf("tt★                      ★n");   printf("tt★     1.学生信息及打卡情况录入      ★n");   printf("tt★                      ★n");   printf("tt★     2.修改某个学生的打卡情况      ★n");   printf("tt★                      ★n");   printf("tt★     3.查询某个学生的打卡记录      ★n");   printf("tt★                      ★n");   printf("tt★     4.旷课学生的姓名及次数       ★n");   printf("tt★                      ★n");   printf("tt★     5.学生打卡的总评分数计算      ★n");   printf("tt★                      ★n");   printf("tt★     6.退出系统             ★n");   printf("tt★                      ★n");   printf("tt★★★★★★★★★★★★★★★★★★★★★★★★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("ttt退出考勤系统,欢迎下次使用!");   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/c++开发分享C语言实现学生打卡系统的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<计算机技术网(www.ctvol.com)!!>。

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/596243.html

(0)
上一篇 2021年5月8日
下一篇 2021年5月8日

精彩推荐