功能描述:某实验室对学生每天的学习时间进行管理,记录其到达时间和其离开时间。两个时间之间的时间段作为其当天的学习时间。设计一个考勤管理系统。
功能要求:
1.信息录入功能,提示用户逐项输入学生信息,并检查输入信息的合法性(如时、分、秒的取值范围),同时以分为单位计算每位同学的学习时间;
2.考勤信息浏览功能,显示所有人的考勤情况;
3.排序功能,按学习时间长短进行排序并显示
4.使用菜单选择操作,方便用户查看不同任务的解决方法以及结果;
5.将处理后的数据信息保存到data.txt文件中。

// 学生考勤管理系统课程设计
#include<iostream>
#include <iostream>
#include <string>
#include <iomanip>
#include <vector>
#include<fstream>
#include<algorithm>
#include<iomanip>
using namespace std;class Student {protected:string name;             //姓名string number;           //学号int    reachHour;        //签到小时int    reachMinute;       //签到分钟int    reachSecond;      //签到秒数int    leaveHour;      //签退小时int    leaveMinute;    //签退分钟int    leaveSecond;    //签退秒数int    time;          //学习时长 int    rank;          //排名
public:static int count;//总人数/*构造函数初始化变量*/Student(){//构造函数对数据成员初始化name = " ";number = " ";reachHour  =0;reachMinute=0;reachSecond=0;leaveHour=0;leaveMinute=0;leaveSecond=0;time=0;rank=0;}//设置信息函数bool set_name         (string);bool set_number      (string);bool set_reachHour    (int);bool set_reachMinute  (int);bool set_reachSecond  (int);bool set_leaveHour    (int);bool set_leaveMinute  (int);bool set_leaveSecond  (int);bool set_time     (int);bool set_rank         (int);//获取信息函数string get_name();string get_number();int    get_reachHour();int    get_reachMinute();int    get_reachSecond();int    get_leaveHour();int    get_leaveMinute();int    get_leaveSecond();int    get_time();int    get_rank();
};
int Student::count = 0;
//显示菜单函数
void ShowInterface() {cout <<"显示内容"<< endl;cout << endl;cout << "********考勤管理系统统计********" << endl;cout << " " << "请输入相应字母执行功能!" << endl;cout << " " << "L:信息录入(Log in)" << endl;cout << " " << "O:输出(Output)" << endl;cout << " " << "E:退出(Exit)" << endl;cout << "********************************" << endl;cout << endl;cout << endl;
}
//登记信息函数
Student* Registration() {Student* pall = new Student[100]; //定义一个全局指针对象并动态分配空间Student* temp; //定义动态空间对象string info;int timeIn = NULL;temp = new Student;cout << "输入学号" << endl;cin >> info;//输入参数temp->set_number(info);cout << "输入姓名" << endl;cin >> info;//输入参数temp->set_name(info);cout << "***到达时间(按提示依次录入时,分,秒)***" << endl;cout << "到达整点" << endl;cin >> timeIn;//输入参数if (timeIn >= 0 && timeIn < 24) {temp->set_reachHour(timeIn);}else {cout << "输入有误,请重新输入" << endl;cin >> timeIn;temp->set_reachHour(timeIn);}cout << "到达分钟" << endl;cin >> timeIn;if (timeIn >= 0 && timeIn < 60) {temp->set_reachMinute(timeIn);}else {cout << "输入有误,请重新输入" << endl;cin >> timeIn;temp->set_reachMinute(timeIn);}cout << "到达秒数" << endl;cin >> timeIn;if (timeIn >= 0 && timeIn < 60) {temp->set_reachSecond(timeIn);}else{cout << "输入有误,请重新输入" << endl;cin >> timeIn;temp->set_reachSecond(timeIn);}cout << "***离开时间(按提示依次录入时,分,秒)***" << endl;cout << "离开整点" << endl;cin >> timeIn;if (timeIn >= 0 && timeIn < 24) {temp->set_leaveHour(timeIn);}else {cout << "输入有误,请重新输入" << endl;cin >> timeIn;temp->set_leaveHour(timeIn);}cout << "离开分钟" << endl;cin >> timeIn;if (timeIn >= 0 && timeIn < 60) {temp->set_leaveMinute(timeIn);}else {cout << "输入有误,请重新输入" << endl;cin >> timeIn;temp->set_leaveMinute(timeIn);}cout << "离开秒数" << endl;cin >> timeIn;if (timeIn >= 0 && timeIn < 60) {temp->set_leaveSecond(timeIn);}else{cout << "输入有误,请重新输入" << endl;cin >> timeIn;temp->set_leaveSecond(timeIn);}cout << endl << "信息录入成功=^_^=" << endl;return temp;
}void ResearchTime(Student* temp) {int reschT = (((temp->get_leaveHour()) * 60 + temp->get_leaveMinute()-(temp->get_reachHour()) * 60 + temp->get_reachMinute()));temp->set_time(reschT);int i = 0;i += 1;temp->set_rank(i);}
void Sort() {Student* pall = new Student[100]; //定义一个全局指针对象并动态分配空间int count = Student::count;Student temp;//算法:选择排序法for (int i = 0; i < count; i++) {for (int j = 0; j < count; j++) {if (pall[i].get_time() < pall[j].get_time()) {temp = pall[i];pall[i] = pall[j];pall[j] = temp;}}}
}
void save(Student* temp) {ofstream os;//输出文件流操作对象os.open("data.txt", ios::app); //以追加的方式建立并打开文件“data.txt”os << endl;Sort();os << setw(2) << "学生学号:" << temp->get_number() << endl;os << setw(2) << "学生姓名:" << temp->get_name() << endl;os << setw(2) << "签到时间:" << setw(2) << setfill('0') << temp->get_reachHour();os << ":" << setw(2) << setfill('0') << temp->get_reachMinute() << ":";os << setw(2) << setfill('0') << temp->get_reachSecond() << endl;os << setw(2) << "签退时间:" << setw(2) << setfill('0') << temp->get_leaveHour();os << ":" << setw(2) << setfill('0') << temp->get_leaveMinute() << ":";os << setw(2) << setfill('0') << temp->get_leaveSecond() << endl;os << setw(2) << "学习时长:" << temp->get_time() << endl;os << setw(2) << "时间排名:" << temp->get_rank() << endl;temp++; //一个对象输出完成后,使对象指针指向下一个对象os.close();//关闭文件}
void show() {filebuf* pbuf;ifstream is;long size;char* buffer;if (!is) {cout << "读取不到" << endl;}//采用二进制读取整个文件is.open("data.txt", ios::binary);Sort();// 获取filestr对应buffer对象的指针   pbuf = is.rdbuf();// 调用buffer对象方法获取文件大小  size = pbuf->pubseekoff(0, ios::end, ios::in);pbuf->pubseekpos(0, ios::in);// 分配内存空间  buffer = new char[size];// 获取文件内容  pbuf->sgetn(buffer, size);is.close();// 输出到标准输出  cout.write(buffer, size);delete[]buffer;/*Student* pall = new Student[100]; //定义一个全局指针对象并动态分配空间int count = Student::count;Sort();for (int  i = 0; i < count; i++){cout << pall[i].get_number() << "    " << pall[i].get_name() << "    ";cout << pall[i].get_reachHour() << ":" << pall[i].get_reachMinute() << ":" << pall[i].get_reachSecond() << "      ";cout << pall[i].get_leaveHour() << ":" << pall[i].get_leaveMinute() << ":" << pall[i].get_leaveSecond() << "  " << pall[i].get_time()  << "  ";cout << i + 1 << endl; //显示对象的排名即排名多少第几次输出}*/}int main()
{Student s;Student* temp = NULL;int i = 1;char input = 'e';input = 'i';while (input != 'e') {ShowInterface();cin >> input;input = tolower(input);//大写转义为小写switch (input){case 'l':cout << "信息录入:" << endl;temp = Registration();ResearchTime(temp);save(temp);break;case 'o':show();cout << endl << "信息读取成功^_^按提示信息进行其他操作" << endl;break;case'e':cout << "谢谢使用,再见!" << endl;system("pause");exit(0);break;default:cout << "输入有误" << endl;break;}}system("pause");return 0;
}bool Student::set_name(string a)
{name = a;count++;return true;
}bool Student::set_number(string b)
{number = b;return true;
}bool Student::set_reachHour(int c)
{reachHour = c;return true;
}bool Student::set_reachMinute(int d)
{reachMinute = d;return true;
}bool Student::set_reachSecond(int e)
{reachSecond = e;return true;
}bool Student::set_leaveHour(int f)
{leaveHour = f;return true;
}bool Student::set_leaveMinute(int g)
{leaveMinute = g;return true;
}bool Student::set_leaveSecond(int h)
{leaveSecond = h;return true;
}bool Student::set_time(int i)
{time = i;return true;
}bool Student::set_rank(int j)
{rank = j;return true;
}string Student::get_name()
{return name;
}string Student::get_number()
{return number;
}int Student::get_reachHour()
{return reachHour;
}int Student::get_reachMinute()
{return reachMinute;
}int Student::get_reachSecond()
{return reachSecond;
}int Student::get_leaveHour()
{return leaveHour;
}int Student::get_leaveMinute()
{return leaveMinute;
}int Student::get_leaveSecond()
{return leaveSecond;
}int Student::get_time()
{return time;
}int Student::get_rank()
{rank = count;return rank;
}

C++课程设计:实现学生考勤管理系统相关推荐

  1. c语言声明第一个学生的成绩,C语言课程设计报告--学生成绩管理系统

    <C语言课程设计报告--学生成绩管理系统>由会员分享,可在线阅读,更多相关<C语言课程设计报告--学生成绩管理系统(30页珍藏版)>请在人人文库网上搜索. 1.学生成绩管理系统 ...

  2. 大学生课程设计 ------ Java Web课程设计(学生成绩管理系统03)

    大学生课程设计 ------ Java Web课程设计(学生成绩管理系统03) Java Web课程设计(代码+课程报告) ---------------------我是分割线------------ ...

  3. MySQL课程设计2022 · 员工考勤管理系统

    看侧边栏的目录结构,自动生成的跳转全是错的,CSDN开发人员能不能修一修啊气死我了 哈哈,首先推流我的开发文件,不会真的有人买吧不会吧不会吧 SQL源文件.Mybatis开发文件.课程设计报告:苏晓辉 ...

  4. 数据结构课程设计论文--学生信息管理系统

    数据结构课程设计论文--学生信息管理系统 1.学生成绩分析问题 (1)问题描述.录入并保存一个班级学生多门课程的成绩,并对成绩进行分析. (2)基本要求.a)通过键盘输入各学生的多门课程的成绩,建立相 ...

  5. 大学生课程设计 ------ Java Web课程设计(学生成绩管理系统01)

    大学生课程设计 ------ Java Web课程设计(学生成绩管理系统01) Java Web课程设计(代码+课程报告) 课程作业效果如下: 学生1:后台实现.数据库设计.前端后台整合 学生2:前端 ...

  6. Java 课程设计_学生选课管理系统(控制台)

    Java 课程设计_学生选课管理系统 需求分析 本数据库的用户主要是学生,通过对用户需求的收集和分析,获得用户对数据库的如下要求. 1.信息需求 学生信息:学号,姓名,性别,专业 登陆信息:账号,密码 ...

  7. Python课程设计之学生信息管理系统

    Python课程设计之学生信息管理系统 需求分析 系统设计 主函数设计 录入学生信息 删除学生信息 修改学生信息 查找学生信息 统计学生总人数 显示所有学生信息 排序模块 项目所有源码下载地址 需求分 ...

  8. 【Python课程设计】学生成绩管理系统

    [Python课程设计]学生成绩管理系统 1.需求分析 2.功能设计与分析 1.使用数据库对数据进行存取 (1)使用PyMySQL模块操作数据库对数据进行存取 (2)创建数据库school,创建数据表 ...

  9. c语言程序设计课程设计学生信息管理系统,C语言程序设计课程设计报告----学生信息管理系统.doc...

    河南理工大学计算机学院 <C语言程序设计>课程设计报告 题目: 学生信息管理系统 专业: 计算机科学与技术 班级: 计算机XX班 学号: 311009033232 姓名: ***** 日期 ...

  10. Java课程设计【学生信息管理系统】

    课程设计目录 一.问题描述 二.基本要求 三.需求分析 四.概要设计 1.类之间的调用关系 2.学生信息模块 3.系统管理模块 4.详细设计 ①主程序LoginGUI的代码 ②程序View的代码 ③程 ...

最新文章

  1. 全网最火的Nacos监控中心——Prometheus+Grafana
  2. 检索所有课程都选修的的学生的学号与姓名
  3. 利用深度学习的点云语义分割(一)
  4. 「雅礼集训 2017 Day5」珠宝
  5. 【Linux】一步一步学Linux——indent命令(262)
  6. matlab6.1实用指南,MATLAB 6.1实用指南
  7. 《算法图解》——广度优先探索与队列
  8. 5G卡位未来? 万物互联的畅想还是忧伤
  9. 原根算法C语言,数据结构与算法分析 C语言描述(第2版)Larry Nyhoff AVL树
  10. python复数类型输出实部和虚部_python 获取复数的实部虚部
  11. AutoCAD .NET 二次开发实例(2) 批量统计指定图层线段长度
  12. 计算机网络 王道考研2021 第六章:应用层 -- 域名系统 DNS、域名解析
  13. 深入AXI4总线- [一] 握手机制
  14. html基本样式及表格
  15. MySQL的索引原理,索引的类型有哪些,如何创建合理的索引,索引如何优化。
  16. 《沧浪之水》、《因为女人》作者阎真的最新作品《活着之上》的阅后笔记
  17. SQL Prompt 4试用
  18. (数据库系统概论|王珊)第一章绪论:习题
  19. 五年级上册计算机教学工作计划,小学五年级上册信息技术教学工作计划(精选5篇)...
  20. Linux Debian11 服务器安装与SSH配置

热门文章

  1. 基于MATLAB/Simulink的太阳能光伏MPPT控制蓄电池充电仿真模型
  2. linux 解压 windows zip,Linux如何下解压windows下的.zip和.rar文件
  3. CF1100C - NN and the Optical Illusion
  4. JavaScript系列学习笔记 —— DOM模型之Document对象
  5. Python-文件和文件夹的移动、复制、删除、重命名
  6. 国产操作系统银河麒麟V10(ARM64 / AArch64)使用docker安装milvus数据库
  7. 【数据挖掘】数据异质性的理解
  8. AOJ 0531:Paint Color(二维离散+imos)
  9. 调试Linux shell脚本
  10. php 各种进制表示,php 各种进制转换