学生考勤管理系统设计_c++课程设计

这篇具有很好参考价值的文章主要介绍了学生考勤管理系统设计_c++课程设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

以下内容可且仅可供参考,如有错误欢迎指正。

部分内容借鉴自百度

侵删致歉

目录

前言

一、需求分析

二、详细设计

三、用户使用说明

四、总结与体会

五、参考文献

六、附录(源代码)

定义类

函数


 

1、问题描述
学生信息包括:学号、姓名、性别、年龄、班级等信息。
考勤信息包括:缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假和旷课)。
2、功能要求
(1)添加功能:程序能够添加学生的记录和缺课记录,提供选择界面供用户选择所要添加的类别。添加学生记录时,要求学号要唯一,如果添加了重复学号的记录时,则提示数据添加重复并取消添加。
(2)查询功能:可根据学号、姓名等信息对已添加的学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。还可以按课程名、学生姓名对缺课记录进行查询。
(3)显示功能:可显示当前系统中所有学生的记录和缺课记录,每条记录占据一行。
(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性。
(5)删除功能:主要实现对已添加的学生记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。
(6)统计功能:能根据多种参数进行统计。能按课程名统计出学生旷课的信息、还可以按姓名统计出任一学生的旷课情况。需要排序。
(7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。
(8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。
3、问题的解决方案 
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述;
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告。

前言

随着高校校园信息化的逐步完善,有效地借助网络、数据库等技术提高工作和管理效率。如今针对师生的成绩查询系统、教务管理系统、招生就业系统、BBS、校园网站等系统在各大高校纷纷出现,对全校师生的学习、生活、管理、办公带来了便利。因此学生考勤管理系统能进一步加强高校学风建设,维护正常的教学秩序,给学生创造一个优良的学习环境。目前高校学生上课考勤管理都是以任课老师上课点名,记录学生上课情况,对于时间比较长的请假,需要通过递交请假申请让班主任、院系领导都批准方能生效。这种模式在目前高校管理中暴露了不可避免的弊端,因此一个好的学生考勤管理系统在一定程度上可以解决这些弊端,本系统主要针对目前高校学生上课出勤管理而设计的信息系统。

C++是一种使用非常广泛的程序设计语言。它是一种静态数据类型检查的,支持多范型的通用程序设计语言。C++支持过程化程序设计、数据抽象化、面向对象程序设计、泛型程序设计、基于原则设计等多种程序设计风格。

本系统利用DVc++来进行代码编写,实现了校园内部人员的信息添加、查询、编辑、统计、删除、显示、保存、读取等功能

本系统主要有两个类,即学生信息类以及缺勤类。该系统已进行全面的系统测试,能够很好的运行、基本达到预期效果。

一、需求分析

在信息化教育的今天,高校想实现教育的现代化,不但要优秀的师资力量,同时也要有好的软件系统。学生考勤管理系统设计是一套完善的信息化管理系统,用来实现学生考勤统一方便的信息操作,已实现学生考勤信息及时更新、及时反馈校园信息、完善教育质量、提高教育效率、分析校园需求、制定招生和招聘的管理目的。

1、问题描述

学生信息包括:学号、姓名、性别、年龄、班级等信息。

考勤信息包括:缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假和旷课)。

2、功能要求[i]

1)添加功能:程序能够添加学生的记录和缺课记录,提供选择界面供用户选择所要添加的类别。添加学生记录时,要求学号要唯一,如果添加了重复学号的记录时,则提示数据添加重复并取消添加。

(2)查询功能:可根据学号、姓名等信息对已添加的学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。还可以按课程名、学生姓名对缺课记录进行查询。

(3)显示功能:可显示当前系统中所有学生的记录和缺课记录,每条记录占据一行。

(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性。

(5)删除功能:主要实现对已添加的学生记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。

(6)统计功能:能根据多种参数进行统计。能按课程名统计出学生旷课的信息、还可以按姓名统计出任一学生的旷课情况。需要排序。

(7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。

(8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。

3、问题的解决方案

    根据系统功能要求,可以将问题解决分为以下步骤:

(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;

(2)分析系统中的各个实体及它们之间的关系;

(3)根据问题描述,设计系统的类层次;

(4)完成类层次中各个类的描述;

(5)完成类中各个成员函数的定义;

(6)完成系统的应用模块;

(7)功能调试;

(8)完成系统总结报告。

二、详细设计

本系统主要有2个类:学生信息类、考勤类,然后在这两个类中包含添加功能、查询功能、显示功能、编辑功能、删除功能、统计功能、保存功能、读取功能。我在学生考勤管理系统设计中,负责设计类的定义,头文件的编写,以及录入信息函数和读取信息函数,下面我来详细介绍这两个函数:

Student

Student类中包含的数据成员有:学号(num),学生姓名(name),学生年龄(age),学生性别(sex),学生班级(addr),缺课次数(times)。

Student类中包含的成员函数有:

赋值学生学号:void set_num(int num);赋值学生姓名void set_name(char name[20]);赋值学生年龄:void set_age(int age);赋值学生性别:void set_sex(char sex[6]);赋值学生班级:void set_addr(char addr[20]);赋值学生缺课次数:void set_times(int times);获取学生学号:int get_num();获取学生姓名:char* get_name();获取学生年龄int get_age();获取学生性别:char* get_sex();获取学生班级:char* get_addr();获取学生缺课次数:int get_times();。

Absence

Absence类中包含的数据成员有:学生学号(num1),学生姓名(name1),学生班级(addr1),缺课日期(date),第几节课缺课(n),缺课课程名称(cname),缺课类型(ckind)。

Absence类中包含的成员函数有: 

赋值学生学号:void set_num1(int num1);赋值学生姓名:void set_name1(char name1[20]);赋值学生班级:void set_addr1(char addr1[20]);赋值缺课日期:void set_date(char date[4]);赋值第几节课缺课:void set_n(int n);赋值缺课课程名称:void set_cname(char cname[20]);赋值缺课类型void set_ckind(char ckind[20]);获取学生学号:int get_num1();获取学生姓名:char* get_name1();获取学生班级:char* get_addr1();获取缺课日期:char* get_date();获取第几节课缺课:int get_n();获取缺课课程名称:char* get_cname();获取缺课类型:char* get_ckind();

Student类和Absence类以及成员函数的定义都在头文件”Student.h”中。

三、用户使用说明

某高校想实现教育的现代化,不但要优秀的师资力量,同时也要有好的软件系统。学生考勤管理系统设计是一套完善的信息化管理系统,用来实现学生考勤统一方便的信息操作,已实现学生考勤信息及时更新、及时反馈校园信息、完善教育质量、提高教育效率、分析校园需求、制定招生和招聘的管理目的。

功能特点:

(1)添加功能:程序能够添加学生的记录和缺课记录,提供选择界面供用户选择所要添加的类别。添加学生记录时,要求学号要唯一,如果添加了重复学号的记录时,则提示数据添加重复并取消添加。

(2)查询功能:可根据学号、姓名等信息对已添加的学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。还可以按课程名、学生姓名对缺课记录进行查询。

(3)显示功能:可显示当前系统中所有学生的记录和缺课记录,每条记录占据一行。

(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性。

(5)删除功能:主要实现对已添加的学生记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。

(6)统计功能:能根据多种参数进行统计。能按课程名统计出学生旷课的信息、还可以按姓名统计出任一学生的旷课情况。需要排序。

(7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。

(8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。

四、总结与体会

本次c++课程设计我们所编写的程序是学生考勤管理系统。程序中实现了对学生及其考勤信息的添加、查询、修改、删除、统计的功能,设计的程序简单易懂,操作简单,且能运用于不同场景,只需按照自己的需要将所要录入的信息名称做添加或修改就可以实现。在这次c++的程序设计中,我对c++有了更加深入的了解,学习并巩固了我对c++的一些知识,像保存与读取功能的实现,在之前涉及的比较少,在学习c++时也没有完全掌握,在编写过程中通过同学帮助和网络资料的查阅让我有了深刻的理解。最后再说一句,虽然编程很累,但是在编程过程中取得的进步和成就却足以令人喜悦与兴奋。

五、参考文献

[1]谭浩强.C++面向对象程序设计(第3版).北京:清华大学出版社. 2020年

[2] 谭浩强.C++面向对象程序设计学习辅导(第3版).北京:清华大学出版社. 2020年

六、附录(源代码)

定义类

//学生类



#include<iostream>
#include<iomanip>//setw的头文件
#include<fstream>
#include<cstring>
using namespace std;
#define MAX 100

class Student
{
private:
	int num;         //基本信息
	char name[20];
	int age;
	char sex[6];
	char addr[20];
	int times; //缺课次数

public:
	Student();
	void set_num(int num);
	void set_name(char name[20]);
	void set_age(int age);
	void set_sex(char sex[6]);
	void set_addr(char addr[20]);
	void set_times(int times);
	int get_num();
	char* get_name();
	int get_age();
	char* get_sex();
	char* get_addr();
	int get_times();
};

class Absence {
private:
	int num1;         //基本信息
	char name1[20];
	char addr1[20];

	char date[4];    //考勤信息
	int n;
	char cname[20];
	char ckind[20];

public:
	Absence();
	void set_num1(int num1);
	void set_name1(char name1[20]);
	void set_addr1(char addr1[20]);
	void set_date(char date[4]);
	void set_n(int n);
	void set_cname(char cname[20]);
	void set_ckind(char ckind[20]);

	int get_num1();
	char* get_name1();
	char* get_addr1();
	char* get_date();
	int get_n();
	char* get_cname();
	char* get_ckind();

};

Student::Student()
{
	this->num = 0;
	this->name[20] = ' ';
	this->age = 20;
	this->sex[6] = 'man';
	this->addr[20] = ' ';
	this->times = 0;
}

Absence::Absence()
{
	this->num1 = 0;
	this->name1[20] = ' ';
	this->addr1[20] = ' ';
	this->date[4] = '0520';
	this->n = 1;
	this->cname[20] = 'c++';
	this->ckind[20] = ' ';
}

void Student::set_num(int num)
{
	this->num = num;
}
void Student::set_name(char name[20])
{
	memcpy(this->name, name, sizeof(this->name));//memcpy为内存拷贝函数
}
void Student::set_age(int age)
{
	this->age = age;
}
void Student::set_sex(char sex[6])
{
	memcpy(this->sex, sex, sizeof(this->sex));
}
void Student::set_addr(char addr[20])
{
	memcpy(this->addr, addr, sizeof(this->addr));
}
void Student::set_times(int times) //设置学生缺课次数
{
	this->times = times;
}

int Student::get_num()
{
	return num;
}
char* Student::get_name()
{
	return this->name;
}
int Student::get_age()
{
	return this->age;
}
char* Student::get_sex()
{
	return this->sex;
}
char* Student::get_addr()
{
	return this->addr;
}
int Student::get_times()
{
	return times;
}

//以下为Absence类成员函数
void Absence::set_num1(int num1)
{
	this->num1 = num1;
}
void Absence::set_name1(char name1[20])
{
	memcpy(this->name1, name1, sizeof(this->name1));
}
void Absence::set_addr1(char addr1[20])
{
	memcpy(this->addr1, addr1, sizeof(this->addr1));
}
void Absence::set_date(char date[4])
{
	memcpy(this->date, date, sizeof(this->date));
}
void Absence::set_n(int n)
{
	this->n = n;
}
void Absence::set_cname(char cname[20])
{
	memcpy(this->cname, cname, sizeof(this->cname));
}
void Absence::set_ckind(char ckind[20])
{
	memcpy(this->ckind, ckind, sizeof(this->ckind));
}

//获取考勤信息
int Absence::get_num1()
{
	return num1;
}
char* Absence::get_name1()
{
	return this->name1;
}
char* Absence::get_addr1()
{
	return this->addr1;
}
char* Absence::get_date()
{
	return this->date;
}
int Absence::get_n()
{
	return n;
}
char* Absence::get_cname()
{
	return this->cname;
}
char* Absence::get_ckind()
{
	return this->ckind;
}

函数

#include <windows.h>
#include<iostream>
#include<iomanip>
#include<fstream>
#include<cstring>
#include"Student.h"
using namespace std;

int iFile(Student b[MAX], Absence a[MAX], int& i, int& j, int& z, int& o)              //读取信息
{
	int g, k;
	ifstream file1, file2, file3, file4;
	file2.open("F:\\序数表.txt", ios::in); //记录人数  判断人数是否为0 
	file2 >> z; //z保存序数值
	file4.open("F:\\缺勤记录序数表.txt", ios::in); //记录人数  判断人数是否为0 
	file4 >> o; //z保存序数值
	i = z;
	j = o;
	if (z == 0) //没有信息无需读取
		return 1;
	file1.open("F:\\学生信息表.txt", ios::in); //记录学生信息
	for (g = 0; g < i; g++) //将学生信息循环输入
	{
		int t1;
		char t2[20];
		int t3;
		char t4[6];
		char t5[20];
		int t6;
		file1 >> t1;
		file1 >> t2;
		file1 >> t3;
		file1 >> t4;
		file1 >> t5;
		file1 >> t6;
		b[g].set_num(t1);
		b[g].set_name(t2);
		b[g].set_age(t3);
		b[g].set_sex(t4);
		b[g].set_addr(t5);
		b[g].set_times(t6);
	}
	file1.close();
	if (o == 0) //没有信息无需读取
		return 1;
	file3.open("F:\\缺勤信息表.txt", ios::in);
	for (k = 0; k < j; k++)
	{
		int a1;
		char a2[20];
		char a3[20];
		char a4[4];
		int a5;
		char a6[20];
		char a7[20];
		file3 >> a1;
		file3 >> a2;
		file3 >> a3;
		file3 >> a4;
		file3 >> a5;
		file3 >> a6;
		file3 >> a7;
		a[k].set_num1(a1);
		a[k].set_name1(a2);
		a[k].set_addr1(a3);
		a[k].set_date(a4);
		a[k].set_n(a5);
		a[k].set_cname(a6);
		a[k].set_ckind(a7);

	}
	file3.close();
	return 1;
}

void oFile(Student b[MAX], Absence a[MAX], int i, int j, int z, int o)  //录入信息
{
	int g, k;
	ofstream file1, file2, file3, file4;                //利用ofstream类的构造函数创建一个文件输出流对象来打开文件
	file2.open("F:\\序数表.txt", ios::out); //打开序数表
	file2 << i; //保存当前学生人数
	file4.open("F:\\缺勤记录序数表.txt", ios::out); //打开序数表
	file4 << j; //保存当前学生人数
	file1.open("F:\\学生信息表.txt", ios::out); //打开学生信息表
	for (g = 0; g < i; g++)
	{
		int t1 = b[g].get_num();
		string t2 = b[g].get_name();
		int t3 = b[g].get_age();
		string t4 = b[g].get_sex();
		string t5 = b[g].get_addr();
		int t6 = b[g].get_times();
		file1 << t1 << endl;
		file1 << t2 << endl;
		file1 << t3 << endl;
		file1 << t4 << endl;
		file1 << t5 << endl;
		file1 << t6 << endl;
	}
	file1.close();
	file3.open("F:\\缺勤信息表.txt", ios::out);
	for (k = 0; k < j; k++)
	{
		int a1 = a[k].get_num1();
		string a2 = a[k].get_name1();
		string a3 = a[k].get_addr1();
		string a4 = a[k].get_date();
		int a5 = a[k].get_n();
		string a6 = a[k].get_cname();
		string a7 = a[k].get_ckind();
		file3 << a1 << endl;
		file3 << a2 << endl;
		file3 << a3 << endl;
		file3 << a4 << endl;
		file3 << a5 << endl;
		file3 << a6 << endl;
		file3 << a7 << endl;
	}
	file3.close();
}


int _Input_Student(Student b[100], int& i, int z)// 1.录入学生基本信息
{
	int g = 0, k = 0;
	char n;
	char a;
	for (i = z; i < MAX;) //Z是记录序数
	{
		cout << "===================================" << endl;
		cout << "输入该学生的学号:";
		int t1;
		cin >> t1;
		if (i != 0)//i不等于0说明已存有学生信息,需进行判断学生学号是否重复
		{
			for (g = 0; g < i; g++) 
			{
				int c1 = b[g].get_num();
				if (c1 == t1)
				{
					cout << "错误!学生学号重复录入!输入任意值返回菜单!" << endl;
					cin >> n;
					system("cls");
					return 1;
				}
				else
				{
					continue; //继续循环
				}
			}
		}
		b[i].set_num(t1);
		cout << "输入该学生的姓名:";
		char t2[20];
		cin >> t2;
		b[i].set_name(t2);
		cout << "输入该学生的年龄:";
		int t3;
		cin >> t3;
		b[i].set_age(t3);
		while (1)
		{
			cout << "输入该学生的性别(男/女):";
			char t4[6];
			cin >> t4;
			if ((strcmp(t4, "男") == 0) || (strcmp(t4, "女") == 0)) //判断用户输入的数是否正确,strcmp用于与输入的数据做比较,若两字符串相同,返回结果等于0
			{
				b[i].set_sex(t4);
				break;
			}
			else
				cout << "您输入的信息有误!请输入 男 或 女 。" << endl;
		}
		cout << "输入该学生的班级:";
		char t5[20];
		cin >> t5;
		b[i].set_addr(t5);
		cout << "====================================" << endl;
		cout << "您是否要继续输入(y/n) :";
		i++;
		while (1)
		{
			cin >> a;
			if (a == 'y' || a == 'Y')
			{
				system("cls");
				break;//跳出该循环,继续录入信息
			}
			if (a == 'n' || a == 'N')
			{
				system("cls");
				return 1;//返回菜单
			}
			else
			{
				cout << "您输入的数据有误,请重新输入(y/n):" << endl;
			}
		}

	}
	return 1;
}

int _Input_Absence(Student b[100], Absence a[MAX], int& i, int& j, int& z, int& o)// 录入考勤信息
{
	int g = 0, k = 0;
	char n;
	char m;
	for (j = o; j < MAX;) //Z是记录序数
	{
		cout << "===================================" << endl;
		cout << "输入该学生的学号:";
		int a1;
		cin >> a1;
		for (g = 0; g < z; g++)
		{
			int t1 = b[g].get_num();
			if (a1 == t1)//如果学生信息表中,有与输入的学号相同的,则进入循环
			{
				k++;//记录已找到学生信息
				int t = b[g].get_times();//获取该学生的缺课次数
				t++;//录入信息,自增记录
				b[g].set_times(t);//把值返还
				break;//找到了可以直接退出循环
			}
		}
		if (k == 0)//k=0就是没有找到学生的信息
		{
			cout << "未找到该学生的基本信息,请确保该学生信息已录入!" << endl;
			cout << "按任意键返回" << endl;
			cin >> n;
			system("cls");
			return 1;
		}
		a[j].set_num1(a1);
		cout << "输入该学生的姓名:";
		char a2[20];
		cin >> a2;
		a[j].set_name1(a2);
		cout << "输入该学生的班级:";
		char a3[20];
		cin >> a3;
		a[j].set_addr1(a3);
		cout << "输入该学生的缺勤日期(年-月-日):";
		char a4[20];
		cin >> a4;
		a[j].set_date(a4);
		cout << "输入该学生缺勤是第几节课:";
		int a5;
		cin >> a5;
		a[j].set_n(a5);
		cout << "输入该学生缺勤课程名称:";
		char a6[20];
		cin >> a6;
		a[j].set_cname(a6);
		while (1)
		{
			cout << "输入该学生缺勤类型(迟到/缺席/早退):";
			char a7[20];
			cin >> a7;
			if ((strcmp(a7, "迟到") == 0) || (strcmp(a7, "缺席") == 0) || (strcmp(a7, "早退") == 0))
			{
				a[j].set_ckind(a7);
				break;
			}
			else
				cout << "您输入的信息有误!请输入 迟到/缺席/早退 。" << endl;
		}
		cout << "====================================" << endl;
		cout << "您是否要继续输入(y/n) :";
		j++;
		while (1)
		{
			cin >> m;
			if (m == 'y' || m == 'Y')
			{
				system("cls");
				break;
			}
			if (m == 'n' || m == 'N')
			{
				system("cls");
				return 1;
			}
			else
			{
				cout << "您输入的数据有误,请重新输入(y/n):" << endl;
			}
		}

	}
	return 1;
}

int _Modify(Student b[MAX], Absence a[MAX], int i, int z, int j1)  //修改学生信息
{
	int n;
	if (i == 0)
	{
		cout << "暂无数据!" << endl;
		cout << "回复任意键返回:";
		cin >> n;
		system("cls");
		return 1;
	}
	int j, k;
	char s;
	while (1)
	{
		cout << "==========================================================================================" << endl;
		cout << "学生基本信息表:" << endl;
		cout << "序数\t\t学       号|\t|姓       名|\t|年       龄|\t|性       别|\t|班       级|\t|缺 勤 次 数|\t" << endl;
		for (int g = 0; g < i; g++)
		{
			int t1 = b[g].get_num();
			string t2 = b[g].get_name();
			int t3 = b[g].get_age();
			string t4 = b[g].get_sex();
			string t5 = b[g].get_addr();
			int t6 = b[g].get_times();
			cout << setw(2) << g + 1 << "\t\t" << setw(11) << t1 << "\t" << setw(12) << t2 << "\t" << setw(12) << t3 << "\t" << setw(12) << t4 << "\t" << setw(12) << t5 << "\t" << setw(12) << t6 << endl;
		}
		cout << "==========================================================================================" << endl;
		cout << "请输入需要修改的学生的序数或返回主页面(序数/0)" << endl;
		cin >> k;
		if (k == 0)
		{
			system("cls");
			return 1;
		}
		int t = b[k - 1].get_num();
		if (k > 0 && k <= i)
		{
			cout << "输入该学生的学号:";
			int t1;
			cin >> t1;
			if (i != 0)
			{
				for (j = 0; j < i; j++)
				{
					if (k - 1 == j)
						continue;
					int c1 = b[j].get_num();
					if (c1 == t1)
					{
						cout << "错误!学生学号重复录入!输入任意值返回菜单!" << endl;
						cin >> n;
						system("cls");
						return 1;
					}
					else
					{
						continue;
					}
				}
			}
			b[k - 1].set_num(t1);
			cout << "输入该学生的姓名:";
			char t2[20];
			cin >> t2;
			b[k - 1].set_name(t2);

			cout << "输入该学生的年龄:";
			int t3;
			cin >> t3;
			b[k - 1].set_age(t3);
			while (1)
			{
				cout << "输入该学生的性别(男/女):";
				char t4[6];
				cin >> t4;
				if ((strcmp(t4, "男") == 0) || (strcmp(t4, "女") == 0)) //判断男女
				{
					b[k - 1].set_sex(t4);
					break;
				}
				else
					cout << "您输入的信息有误!请输入 男 或 女 。" << endl;
			}
			cout << "输入该学生的班级:";
			char t5[20];
			cin >> t5;
			b[k - 1].set_addr(t5);
			for (int k1 = 0; k1 < j1; k1++)
			{
				int a1 = a[k1].get_num1();

				if (t == a1)
				{
					a[k1].set_addr1(t5);
					a[k1].set_name1(t2);
					a[k1].set_num1(t1);
				}
			}
			system("cls");
			cout << "修改后的";
		}
		else
		{
			cout << "没有此序号!回复任意字符返回:";
			cin >> s;
			system("cls");
		}
	}

}

int _Delete(Student b[100], Absence a[MAX], int& i, int& j)//删除学生信息
{
	int n;
	if (i == 0)
	{
		cout << "暂无数据!" << endl;
		cout << "回复任意键返回:";
		cin >> n;
		system("cls");
		return 1;
	}

	while (1)
	{
		cout << "==========================================================================================" << endl;
		cout << "学生基本信息表:" << endl;
		cout << "序数\t\t学       号|\t|姓       名|\t|年       龄|\t|性       别|\t|班       级|\t|缺 勤 次 数|\t" << endl;
		for (int g = 0; g < i; g++)
		{
			int t1 = b[g].get_num();
			string t2 = b[g].get_name();
			int t3 = b[g].get_age();
			string t4 = b[g].get_sex();
			string t5 = b[g].get_addr();
			int t6 = b[g].get_times();
			cout << setw(2) << g + 1 << "\t\t" << setw(11) << t1 << "\t" << setw(12) << t2 << "\t" << setw(12) << t3 << "\t" << setw(12) << t4 << "\t" << setw(12) << t5 << "\t" << setw(12) << t6 << endl;
		}
		cout << "==========================================================================================" << endl;
		cout << "请输入需要消除的学生的序数或返回主页面(序数/0)" << endl;
		int k;
		while (1)
		{
			cin >> k;
			if (k == 0)
			{
				system("cls");
				return 1;
			}
			if (k > i)
				cout << "您输入的信息有误!请重新输入(序数/0):";
			else
			{
				int t1 = b[k - 1].get_num();
				int c3 = 0;
				for (int k1 = 0; k1 < j; k1++)
				{
					int a1 = a[k1].get_num1();

					if (t1 == a1)
					{
						for (int k2 = k1; k2 <= j; k2++)
							a[k2] = a[k2 + 1];
						c3++;
					}
				}
				j = c3;
				for (; k <= i; k++)
					b[k - 1] = b[k];
				i--;

				system("cls");
				cout << "修改后的:" << endl;
				break;
			}
		}
	}
}

int _Query(Student b[MAX], Absence a[MAX], int i, int j)//通过学号查询学生信息
{
	int d, g, k;
	char c, n;
	cout << "==========================================================================================" << endl;
	cout << "1.查询学生基本信息" << endl;
	cout << "2.查询学生考勤信息" << endl;
	cin >> c;
	if (c == '1')
	{
		while (1)
		{
			cout << "请输入您需要查询的学生的学号:" << endl;
			cin >> d;
			for (g = 0; g < i; g++)
			{
				int t1 = b[g].get_num();
				if (d == t1)
				{
					cout << "==========================================================================================" << endl;
					cout << "该学生的" << endl;
					cout << "序数\t\t学       号|\t|姓       名|\t|年       龄|\t|性       别|\t|班       级|\t|缺 勤 次 数|\t" << endl;
					int t1 = b[g].get_num();
					string t2 = b[g].get_name();
					int t3 = b[g].get_age();
					string t4 = b[g].get_sex();
					string t5 = b[g].get_addr();
					int t6 = b[g].get_times();
					cout << setw(2) << g + 1 << "\t\t" << setw(11) << t1 << "\t" << setw(12) << t2 << "\t" << setw(12) << t3 << "\t" << setw(12) << t4 << "\t" << setw(12) << t5 << "\t" << setw(12) << t6 << endl;
					break;
				}
			}
			cout << "==========================================================================================" << endl;
			if (g == i)
				cout << "没有查询到该有关学号的信息。" << endl;
			cout << "是否需要继续查询(y/n)" << endl;
			while (1)
			{
				cin >> n;
				if (n == 'y' || n == 'Y')
				{
					system("cls");
					break;
				}
				if (n == 'n' || n == 'N')
				{
					system("cls");
					return 1;
				}
				else
				{
					cout << "您输入的数据有误,请重新输入(y/n):" << endl;
					continue;
				}
			}
		}
	}
	if (c == '2')
	{
		while (1)
		{
			cout << "请输入您需要查询的学生的学号:" << endl;
			cin >> d;
			int co = 0;
			for (k = 0; k < j; k++)
			{
				int a1 = a[k].get_num1();
				if (d == a1)
				{
					co++;
				}
			}
			if (co == 0)
			{
				cout << "没有查询到该有关学号的信息。请按任意键返回!" << endl;
				cin >> n;
				system("cls");
				return 1;
			}
			cout << "==========================================================================================" << endl;
			cout << "该学生的" << endl;
			cout << "序数\t\t学       号|\t|姓       名|\t|班       级|\t|缺 勤 日 期|\t|第 几 节 课|\t|缺 勤 课 名|\t|缺 勤 类 型|\t" << endl;

			for (k = 0; k < j; k++)
			{
				int a1 = a[k].get_num1();
				if (d == a1)
				{
					int a1 = a[k].get_num1();
					string a2 = a[k].get_name1();
					string a3 = a[k].get_addr1();
					string a4 = a[k].get_date();
					int a5 = a[k].get_n();
					string a6 = a[k].get_cname();
					string a7 = a[k].get_ckind();
					cout << setw(2) << k + 1 << "\t\t" << setw(11) << a1 << "\t" << setw(12) << a2 << "\t" << setw(12) << a3 << "\t" << setw(12) << a4 << "\t" << setw(12) << a5 << "\t" << setw(12) << a6 << "\t" << setw(12) << a7 << endl;
					
				}
			}
			cout << "==========================================================================================" << endl;
			
			cout << "是否需要继续查询(y/n)" << endl;
			while (1)
			{
				cin >> n;
				if (n == 'y' || n == 'Y')
				{
					system("cls");
					break;
				}
				if (n == 'n' || n == 'N')
				{
					system("cls");
					return 1;
				}
				else
				{
					cout << "您输入的数据有误,请重新输入(y/n):" << endl;
					continue;
				}
			}
		}
	}
	else
	{
		cout << "错误指令!请按任意键返回!" << endl;
		cin >> n;
		system("cls");
		return 1;
	}
}

int _Query2(Student b[MAX], Absence a[MAX], int i, int j)//通过学生姓名查询学生信息
{
	string d;
	int g, k;
	char c, n;
	cout << "==========================================================================================" << endl;
	cout << "1.查询学生基本信息" << endl;
	cout << "2.查询学生考勤信息" << endl;
	cin >> c;
	if (c == '1')
	{
		while (1)
		{
			cout << "请输入您需要查询的学生的姓名:" << endl;
			cin >> d;
			for (g = 0; g < i; g++)
			{
				string t1 = b[g].get_name();
				if (d == t1)
				{
					cout << "==========================================================================================" << endl;
					cout << "该学生的" << endl;
					cout << "序数\t\t学       号|\t|姓       名|\t|年       龄|\t|性       别|\t|班       级|\t|缺 勤 次 数|\t" << endl;
					int t1 = b[g].get_num();
					string t2 = b[g].get_name();
					int t3 = b[g].get_age();
					string t4 = b[g].get_sex();
					string t5 = b[g].get_addr();
					int t6 = b[g].get_times();
					cout << setw(2) << g + 1 << "\t\t" << setw(11) << t1 << "\t" << setw(12) << t2 << "\t" << setw(12) << t3 << "\t" << setw(12) << t4 << "\t" << setw(12) << t5 << "\t" << setw(12) << t6 << endl;
					break;
				}
			}
			cout << "==========================================================================================" << endl;
			if (g == i)
				cout << "没有查询到该有关姓名的信息。" << endl;
			cout << "是否需要继续查询(y/n)" << endl;
			while (1)
			{
				cin >> n;
				if (n == 'y' || n == 'Y')
				{
					system("cls");
					break;
				}
				if (n == 'n' || n == 'N')
				{
					system("cls");
					return 1;
				}
				else
				{
					cout << "您输入的数据有误,请重新输入(y/n):" << endl;
					continue;
				}
			}
		}
	}
	if (c == '2')
	{
		while (1)
		{
			cout << "请输入您需要查询的学生的姓名:" << endl;
			cin >> d;
			int co = 0;
			for (k = 0; k < j; k++)
			{
				string a1 = a[k].get_name1();
				if (d == a1)
				{
					co++;
				}
			}
			if (co == 0)
			{
				cout << "没有查询到该有关姓名的信息。请按任意键返回!" << endl;
				cin >> n;
				system("cls");
				return 1;
			}
			cout << "==========================================================================================" << endl;
			cout << "该学生的" << endl;
			cout << "序数\t\t学       号|\t|姓       名|\t|班       级|\t|缺 勤 日 期|\t|第 几 节 课|\t|缺 勤 课 名|\t|缺 勤 类 型|\t" << endl;

			for (k = 0; k < j; k++)
			{
				string a1 = a[k].get_name1();
				if (d == a1)
				{
					int a1 = a[k].get_num1();
					string a2 = a[k].get_name1();
					string a3 = a[k].get_addr1();
					string a4 = a[k].get_date();
					int a5 = a[k].get_n();
					string a6 = a[k].get_cname();
					string a7 = a[k].get_ckind();
					cout << setw(2) << k + 1 << "\t\t" << setw(11) << a1 << "\t" << setw(12) << a2 << "\t" << setw(12) << a3 << "\t" << setw(12) << a4 << "\t" << setw(12) << a5 << "\t" << setw(12) << a6 << "\t" << setw(12) << a7 << endl;

				}
			}
			cout << "==========================================================================================" << endl;

			cout << "是否需要继续查询(y/n)" << endl;
			while (1)
			{
				cin >> n;
				if (n == 'y' || n == 'Y')
				{
					system("cls");
					break;
				}
				if (n == 'n' || n == 'N')
				{
					system("cls");
					return 1;
				}
				else
				{
					cout << "您输入的数据有误,请重新输入(y/n):" << endl;
					continue;
				}
			}
		}
	}
	else
	{
		cout << "错误指令!请按任意键返回!" << endl;
		cin >> n;
		system("cls");
		return 1;
	}
}

int _Sta(Student b[MAX], Absence a[MAX], int i, int j)//按课程名称查询学生考勤信息
{
	string d;
	int g, k;
	char c, n;
	cout << "==========================================================================================" << endl;
	while (1)
	{
		cout << "请输入您需要查询的课程名称:" << endl;
		cin >> d;
		int co = 0;
		for (k = 0; k < j; k++)
		{
			string a1 = a[k].get_cname();
			if (d == a1)
			{
				co++;
			}
		}
		if (co == 0)
		{
			cout << "无此课程!!请按任意键返回!" << endl;
			cin >> n;
			system("cls");
			return 1;
		}
		cout << "==========================================================================================" << endl;
		cout << "序数\t\t学       号|\t|姓       名|\t|班       级|\t|缺 勤 日 期|\t|第 几 节 课|\t|缺 勤 类 型|\t" << endl;
		int c2 = 0;
		for (k = 0; k < j; k++)
		{
			string a1 = a[k].get_cname();
			if (d == a1)
			{
				c2++;
				int a1 = a[k].get_num1();
				string a2 = a[k].get_name1();
				string a3 = a[k].get_addr1();
				string a4 = a[k].get_date();
				int a5 = a[k].get_n();
				string a7 = a[k].get_ckind();
				cout << setw(2) << k + 1 << "\t\t" << setw(11) << a1 << "\t" << setw(12) << a2 << "\t" << setw(12) << a3 << "\t" << setw(12) << a4 << "\t" << setw(12) << a5 << "\t" << setw(12) << a7 << endl;
			}
		}
		cout << "共" << c2 << "条数据。" << endl;
		cout << "==========================================================================================" << endl;
		cout << "是否需要继续查询(y/n)" << endl;
		while (1)
		{
			cin >> n;
			if (n == 'y' || n == 'Y')
			{
				system("cls");
				break;
			}
			if (n == 'n' || n == 'N')
			{
				system("cls");
				return 1;
			}
			else
			{
				cout << "您输入的数据有误,请重新输入(y/n):" << endl;
				continue;
			}
		}
	}
}

int _Display(Student b[MAX], Absence a[MAX], int i, int j)//显示当前学生信息
{
	char n;
	int g, k;
	if (i == 0)
	{
		cout << "暂无数据!" << endl;
		cout << "回复任意键返回:";
		cin >> n;
		system("cls");
		return 1;
	}
	cout << "==========================================================================================" << endl;
	cout << "学生基本信息表:" << endl;
	cout << "序数\t\t学       号|\t|姓       名|\t|年       龄|\t|性       别|\t|班       级|\t|缺 勤 次 数|\t" << endl;
	for (g = 0; g < i; g++)
	{
		int t1 = b[g].get_num();
		string t2 = b[g].get_name();
		int t3 = b[g].get_age();
		string t4 = b[g].get_sex();
		string t5 = b[g].get_addr();
		int t6 = b[g].get_times();
		cout << setw(2) << g + 1 << "\t\t" << setw(11) << t1 << "\t" << setw(12) << t2 << "\t" << setw(12) << t3 << "\t" << setw(12) << t4 << "\t" << setw(12) << t5 << "\t" << setw(12) << t6 << endl;
	}
	cout << "==========================================================================================" << endl;
	cout << "学生考勤信息表:" << endl;
	cout << "序数\t\t学       号|\t|姓       名|\t|班       级|\t|缺 勤 日 期|\t|第 几 节 课|\t|缺 勤 课 名|\t|缺 勤 类 型|\t" << endl;
	if (j == 0)
	{
		cout << "暂无数据!" << endl;
	}
	for (k = 0; k < j; k++)
	{
		int a1 = a[k].get_num1();
		string a2 = a[k].get_name1();
		string a3 = a[k].get_addr1();
		string a4 = a[k].get_date();
		int a5 = a[k].get_n();
		string a6 = a[k].get_cname();
		string a7 = a[k].get_ckind();
		cout << setw(2) << k + 1 << "\t\t" << setw(11) << a1 << "\t" << setw(12) << a2 << "\t" << setw(12) << a3 << "\t" << setw(12) << a4 << "\t" << setw(12) << a5 << "\t" << setw(12) << a6 << "\t" << setw(12) << a7 << endl;
	}
	cout << "==========================================================================================" << endl;
	cout << "回复任意键返回:";
	cin >> n;
	system("cls");
	return 1;
}

int main()
{
	int i, z = 0, j = 0, o = 0;
	char n, c;
	Student x[MAX];
	Absence y[MAX];
	iFile(x, y, i, j, z, o);
	while (1)
	{
		cout << "**************学生信息管理系统**************" << endl;
		cout << "               1.录入学生基本信息" << endl;
		cout << "               2.录入学生考勤信息" << endl;
		cout << "               3.显示当前学生信息" << endl;
		cout << "               4.修改学生信息(tips:请手动保存)" << endl;
		cout << "               5.删除学生信息(tips:请手动保存)" << endl;
		cout << "               6.按学号查询学生信息" << endl;
		cout << "               7.按学生姓名查询学生信息" << endl;
		cout << "               8.按课程名称查询学生考勤信息" << endl;
		cout << "               9.保存文件" << endl;
		cout << "               0.退出管理系统" << endl;
		cout << "********************************************" << endl;
		cout << "请选择序号:" << endl;
		cin >> n;
		switch (n)
		{
		case '1':system("cls"); iFile(x, y, i, j, z, o); _Input_Student(x, i, z); oFile(x, y, i, j, z, o); break;
		case '2':system("cls"); iFile(x, y, i, j, z, o); _Input_Absence(x, y, i, j, z, o); oFile(x, y, i, j, z, o); break;
		case '3':system("cls"); _Display(x, y, i, j); break;
		case '4':system("cls"); _Modify(x, y, i, z, j); break;
		case '5':system("cls"); _Delete(x, y, i, j); break;
		case '6':system("cls"); _Query(x, y, i, j); break;
		case '7':system("cls"); _Query2(x, y, i, j); break;
		case '8':system("cls"); _Sta(x, y, i, j); break;
		case '9':system("cls"); oFile(x, y, i, j, z, o); cout << "以保存,输入任意字符返回主菜单:"; cin >> c; system("cls"); break;
		case '0':exit(0);
		default:system("cls"); cout << "您输入的序号有误!\n输入任意字符返回主菜单"; cin >> c; system("cls");
		}
	}
	return 0;
}

 文章来源地址https://www.toymoban.com/news/detail-509612.html

到了这里,关于学生考勤管理系统设计_c++课程设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++课程设计:学生管理系统设计

    高级程序设计课程设计 一、教学目标和基本要求     本课程全面系统的学习面向对象程序设计的基本概念,基本语法和编程方法。正确理解掌握C++面向对象程序设计的基本特性:类,对象,继承与派生,多态,虚函数,模板,流类库等。遵循软件过程的各个环节进行系统分

    2024年02月08日
    浏览(64)
  • 【期末课程设计】学生成绩管理系统

    因其独特,因其始终如一 文章目录 一、学生成绩管理系统介绍 二、学生成绩管理系统设计思路 三、源代码 1. test.c  2. Student Management System.c 3.Stu_System.c 4.Teacher.c 5.Student Management System.h   前言: 学生成绩管理系统含教师登录入口和学生登录入口,可实现学生信息的添加,删

    2024年02月16日
    浏览(38)
  • 程序设计课程设计——学生学籍管理系统

    通过设计一个小型的应用系统,使学生进一步掌握面向对象的程序设计方法,运用C++中的类与对象的概念结合面向对象程序设计的思想,独立完成应用系统的设计,并养成良好的编程习惯。通过这个实践教学平台,培养学生对计算机应用系统的综合设计能力,培养学生正确分

    2024年02月09日
    浏览(49)
  • C++课程设计——学生成绩管理系统

    今天清理电脑偶尔发现一个我刚学编程时用c++写的一份课程设计,使用到简单的链表,结构体,c++类与对象的知识——学生成绩管理系统。 ~~ 系统结构: 管理员模式 教师模式 学生模式 实现了对学生成绩及信息的增删改查以及排序。 效果图 主菜单 管理员模式菜单 源代码

    2024年02月16日
    浏览(38)
  • Java课程设计——学生成绩管理系统

    1 需求分析 1.1 需求分析概述 需求分析是开发软件系统的重要环节,是系统开发的第一步和基础环节。通过需求分析充分认识系统的目标、系统的各个组成部分、各部分的任务职责、工作流程、工作中使用的各种数据及数据结构、各部门的业务关系和数据流程等, 为系统设计

    2024年02月03日
    浏览(73)
  • 学生信息管理系统MySql课程设计

    本篇文章是第一次发布在这个平台上,文章的内容是平时课程的一个小作业,由于时间不足,还有很多内容没有完善好,会继续下一次的修改,对该学生管理系统进行修改和创新, 一、 分析 1.1 业务分析   学生信息管理系统是一个面向学生和学校老师的一个多功能数据平台

    2024年02月06日
    浏览(38)
  • C语言课程设计-学生成绩管理系统

    需求分析: 1.设计题目:学生成绩管理系统 2.系统功能需求分析:实现对学生各科成绩总分及平均分的排序,和成绩的查找 概要设计 1. 功能模块图 详细设计 1. 流程图 测试结果 :列出所有功能的运行界面,并作文字说明。 1.录入成绩:录入3个人的学号和各科成绩 2.每门课程

    2024年02月11日
    浏览(49)
  • Python课程设计之学生信息管理系统

    核心代码 运行效果 核心代码 运行效果 核心代码 运行效果 核心代码 运行效果 核心代码 运行效果 核心代码 运行效果 核心代码 运行效果 核心代码 运行效果 点击下载

    2024年02月11日
    浏览(46)
  • 数据结构课程设计:学生成绩管理系统

    目  录 第一章   需求分析 第二章 概要设计 第三章 详细设计 第四章 测试报告 第五章 安装及使用 第六章 项目总结 第七章 源码 一.需求分析        学生成绩管理是一个学校不可缺少的部分,它的内容对于学校的管理者和学生以及学生家长来说都至关重要,所以一个良好

    2024年02月02日
    浏览(67)
  • MySQL课程设计——简易学生信息管理系统

    1.1.1 业务分析 学生信息管理系统时面向学生和学校教师的一个多功能数据管理平台。 1.1.2 分析系统 本系统所设计到的用户有学校在校学生、教师,对于不同的用户系统所提供给的功能也有所不同,其中对于学生来说,学生可以通过该系统进行学生基本信息查询、考试成绩查

    2024年02月09日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包