这期内容当中小编将会给大家带来有关利用C++怎么编写一个学生考勤信息管理系统,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
学生考勤信息管理系统记录了学生的缺课情况,它包括:
缺课日期、第几节课、课程名称、学生姓名、学生学号、缺课类型(迟到、请假及旷课)。系统具有以下功能:
1)、录入学生的缺课记录;
2)、修改某个学生的缺课记录;
3)、查询某个学生的缺课情况;
4)、统计 旷课学生姓名及旷课次数,按旷课次数由多到少排序;
5)、统计 有学生旷课的课程及旷课人次(每次课时累加),按旷课人次由多到少排序;
重新修改了下,之前的4,5功能未实现。
#include<iostream>
#include<fstream>
#include<cstring>
#include<cstdlib>
#include<string>
#include<map>
#include<algorithm>
using namespace std;
#define N 999
int n;
class STU
{
public:
STU() {}
void input(char d[],int X,string n,string sn,int sd,int cl)
{
strcpy(date,d);
ClassX=X;
ClassN=n;
stuN=sn;
stuID=sd;
ClassL=cl;
}
void print()
{
cout<<"缺课日期 课节 课程名称 学生姓名 学生学号 缺课类型\t"<<endl;
cout<<date<<"\t"<<ClassX<<"\t"<<ClassN<<"\t"<<stuN<<"\t"<<stuID<<"\t"<<ClassL<<endl;
}
friend void Change(STU stu[]);
friend void Find(STU stu[]);
friend void chaxun1(STU stu[]);
friend void chaxun2(STU stu[]);
private:
string stuN;
int stuID;
char date[15];
int ClassX;
string ClassN;
int ClassL;
};
//主菜单
void meau()
{
cout<<endl;
cout<<endl;
cout<<"学生后勤管理系统"<<endl;
cout<<"1-录入学生的缺课记录"<<endl;
cout<<"2-修改某个学生的缺课记录"<<endl;
cout<<"3-查询某个学生的缺课情况"<<endl;
cout<<"4-统计旷课信息"<<endl;
cout<<"5-退出系统"<<endl;
cout<<endl;
cout<<endl;
}
//输入学生的缺课记录
void Input(STU stu[])
{
char date[15];
string stuN, ClassN;
int stuID,ClassX,ClassL;
while(1)
{
cout<<"请输入记录情况个数"<<endl;
cin>>n;
for(int i=0; i<n; i++)
{
cout<<"请输入第"<<i+1<<"种情况"<<endl;
cout<<"请输入缺课日期\n";
cin>>date;
cout<<"请输入第几节课\n";
cin>>ClassX;
cout<<"请输入课程名称\n";
cin>>ClassN;
cout<<"请输入学生姓名\n";
cin>>stuN;
cout<<"请输入学生学号\n";
cin>>stuID;
cout<<"请输入缺课类型,1代表请假,2代表旷课, 3代表迟到\n";
cin>>ClassL;
stu[i].input(date,ClassX,ClassN,stuN,stuID,ClassL);
}
cout<<"输入信息完毕!是否继续输入?y是继续,n是停止:"<<endl;
char cc;
getchar();
cin>>cc;
if(cc=='n')
return ;
}
}
//修改某个学生的缺课记录
void Change(STU stu[])
{
cout<<"请输入将要修改的学生姓名或者学号,1代表姓名,2代表学号:"<<endl;
int x;
cin>>x;
if(x==1)
{
cout<<"请输入将要修改的学生姓名:"<<endl;
string name;
cin>>name;
for(int i=0; i<n; i++)
{
if(stu[i].stuN==name)
{
stu[i].print();
cout<<"是否对该学生信息进行修改,y代表进行,n代表不进行:"<<endl;
getchar();
char cc;
cin>>cc;
if(cc=='n')
continue;
else if(cc='y')
{
cout<<"请选择修改内容:"<<endl;
cout<<"修改日期请按1:\n修改课节请按2:\n修改课程名称请按3:\n修改缺课类型请按4:\n";
cin>>x;
switch(x)
{
case 1:
{
char date[20];
cout<<"请输入正确日期"<<endl;
cin>>date;
strcpy(stu[i].date,date);
}
break;
case 2:
{
cout<<"请输入正确课节"<<endl;
cin>>x;
stu[i].ClassX=x;
}
break;
case 3:
{
cout<<"请输入正确课程名称"<<endl;
cin>>name;
stu[i].ClassN=name;
}
break;
case 4:
{
cout<<"请输入正确缺课类型"<<endl;
cin>>x;
stu[i].ClassL=x;
}
break;
default :
cout<<"抱歉,没有该选项。"<<endl;
}
break;
cout<<"输出修改后的学生信息:"<<endl;
stu[i].print();
}
else cout<<"抱歉,没有该选项。"<<endl;
}
}
}
else if(x==2)
{
cout<<"请输入要修改的学号:"<<endl;
cin>>x;
for(int i=0; i<n; i++)
{
if(stu[i].stuID==x)
{
cout<<"是否对该学生信息进行修改,y代表进行,n代表不进行:"<<endl;
stu[i].print();
getchar();
char cc;
cin>>cc;
if(cc=='n')
continue;
else if(cc='y')
{
cout<<"请选择修改内容:"<<endl;
cout<<"修改日期请按1:\n修改课节请按2:\n修改课程名称请按3:\n修改缺课类型请按4:\n";
cin>>x;
switch(x)
{
case 1:
{
cout<<"请输入正确日期"<<endl;
char name[20];
cin>>name;
strcpy(stu[i].date,name);
}
break;
case 2:
{
cout<<"请输入正确课节"<<endl;
cin>>x;
stu[i].ClassX=x;
}
break;
case 3:
{
cout<<"请输入正确课程名称"<<endl;
string name;
cin>>name;
stu[i].ClassN=name;
}
break;
case 4:
{
cout<<"请输入正确缺课类型"<<endl;
cin>>x;
stu[i].ClassL=x;
}
break;
default :
cout<<"抱歉,没有该选项。"<<endl;
}
break;
cout<<"输出修改后的学生信息:"<<endl;
stu[i].print();
}
else
cout<<"抱歉,没有该选项。"<<endl;
}
}
}
else
cout<<"抱歉,没有该选项。"<<endl;
}
//查询某个学生的缺课情况
void Find(STU stu[])
{
cout<<"请输入将要查询的学生姓名(1)或者学号(2)"<<endl;
int x;
cin>>x;
if(x==1)
{
cout<<"请输入将要查询的学生姓名"<<endl;
string name;
cin>>name;
for(int i=0; i<n; i++)
{
if(stu[i].stuN==name)
stu[i].print();
}
}
else if(x==2)
{
cout<<"请输入将要查询的学生学号"<<endl;
cin>>x;
for(int i=0; i<n; i++)
{
if(stu[i].stuID==x)
stu[i].print();
}
}
else cout<<"抱歉,没有该选项。"<<endl;
}
//统计旷课学生信息
void chaxun1(STU stu[])
{
map<string,int> A;
A.clear();
for(int s=0; s<n; s++)
{
if(stu[s].ClassL==2)
{
A[stu[s].stuN]++;
}
}
map<string,int>::iterator it;
int k=0,ant[N];
string sn[N];
for(it=A.begin(); it!=A.end(); it++)
{
sn[k]=(*it).first;
ant[k]=(*it).second;
k++;
}
for(int i=0; i<k-1; i++)
for(int j=i+1; j<k; j++)
{
if(ant[i]<ant[j])
{
int temp;
string ss;
temp=ant[i];
ant[i]=ant[j];
ant[j]=temp;
ss=sn[i];
sn[i]=sn[j];
sn[j]=ss;
}
}
for(int m=0; m<k; m++)
{
cout<<"学生姓名 旷课次数"<<endl;
cout<<sn[m]<<"\t"<<ant[m]<<endl;
}
}
//统计旷课课程信息
void chaxun2(STU stu[])
{
map<string,int> A;
A.clear();
for(int i=0; i<n; i++)
{
if(stu[i].ClassL==2)
{
A[stu[i].ClassN]++;
}
}
map<string,int>::iterator it;
for(it=A.begin(); it!=A.end(); it++)
{
cout<<"课程名称 旷课总人次"<<endl;
cout<<(*it).first<<"\t"<<(*it).second<<endl;
}
}
int main()
{
STU stu[N];
while(1)
{
meau();
cout<<"请输入对应功能序号"<<endl;
int x;
cin>>x;
switch(x)
{
case 1:
Input(stu);
break;
case 2:
{
if(n==0)
cout<<"错误,无信息!\n";
else
Change(stu);
}
break;
case 3:
{
if(n==0)
cout<<"错误,无信息!\n";
else
Find(stu);
}
break;
case 4:
{
if(n==0)
cout<<"错误,无信息!\n";
else
{
cout<<"\n查看学生旷课信息请按1:\n";
cout<<"\n查看课程旷课信息请按2:\n";
cin>>x;
if(x==1)
chaxun1(stu);
else if(x==2)
chaxun2(stu);
else
cout<<"抱歉,没有该选项。"<<endl;
}
}
break;
case 5:
{
cout<<"退出该系统。"<<endl;
return 0;
break;
}
default:
cout<<"对不起,该项功能不存在."<<endl;
}
}
return 0;
}
上述就是小编为大家分享的利用C++怎么编写一个学生考勤信息管理系统了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。