c++考勤管理系统

设计一考勤管理系统,记录学生的缺课情况

  1. 设计学生类;
  2. 设计课程类;
  3. 设计考勤类;
  4. 录入学生的缺课情况;
  5. 修改某个学生的缺课情况;
  6. 查询某个学生的缺课情况;
  7. 统计一段时间内,旷课学生的名单和次数

仅供参考,尚有不足,请多多指正!

#include <iostream>
#include <cstring>
using namespace std;

class Student
{
	public:
		void setname(char *setname)
		{	
			strcpy(name,setname);
		}
		
		void setcarname(char *setcarname)
		{
			strcpy(carname,setcarname);
		}
		
		void setseating_capacity(char *setseating_capacity)
		{
			strcpy(seating_capacity,setseating_capacity);
		}
		
		void setidentifynumber(char *setidentifynumber)
		{
			strcpy(identifynumber,setidentifynumber);
		} 
		
		char *getname()
		{
			char *setname=name;
			return setname;
		}
		
		char *getcarname()
		{
			char *setcarname=carname;
			return setcarname;
		}
		
		char *getsetseating_capacity()
		{
			char *setseating_capacity=seating_capacity;
			return setseating_capacity;
		}
		
		char *getidentifynumber()
		{
			char *setidentifynumber=identifynumber;
			return setidentifynumber;
		}
		
		
	private:
		char name[30];
		char carname[30];
		char seating_capacity[30];
		char identifynumber[30];
};

class Course:public Student
{
	public:
		void setcoursename(char *setcoursename)
		{
			strcpy(coursename,setcoursename);
		}
		
		void setcoursetime(char *setcoursetime)
		{
			strcpy(coursetime,setcoursetime);
		} 
		 
		void setcourseplace(char *setcourseplace)
		{
			strcpy(courseplace,setcourseplace);
		}
		
		char *getcoursename()
		{
			char *setcoursename;
			setcoursename=coursename;
			return setcoursename;
		}
		
		char *getcoursetime()
		{
			char *setcoursetime;
			setcoursetime=coursetime;
			return setcoursetime;
		}
		
		char *getcourseplace()
		{
			char *setcourseplace;
			setcourseplace=courseplace;
			return setcourseplace;
		}
		
	private:
		char coursename[30];
		char coursetime[30];
		char courseplace[30];
}; 

class Attendence:public Course
{
	public:
		void setattendence(int setattendence)
		{
			int i=0;
			attendence[i]=setattendence;
			i++;
		}
		
		int *getattendence()
		{
			int *setattendence;
			setattendence=attendence;
			return setattendence;
		}
	private:
		int attendence[30];
};
 
int input(Student n[],Student i[],Course cn[],Course ct[],Course cp[],Attendence a[]);
int modify(Student i[],Course cn[],Course ct[],Course cp[],Attendence attendence[],int totalnumber);
int search(Student n[],Student i[],Course cn[],Course ct[],Course cp[],Attendence a[],int totalnumber);
int statistic(Student n[],Student i[],Course cn[],Course ct[],Course cp[],Attendence a[],int totalnumber);
void bubble(int arr[],int len);

Student n[20];
Student i[20];
Course cn[20];
Course ct[20];
Course cp[20];
Attendence a[20];

int totalnumber=0;
char name[30];
char identifynumber[30];
char coursename[30];
char coursetime[30];
char courseplace[30];
int attendence;
int array[30];

int att[30];

int main() 
{
	while(1)
	{
		cout<<"---------吉林大学珠海学院---------\n"
			<<"         学生考勤管理系统\n\n"
			<<"      1.录入学生缺课信息\n"
			<<"      2.修改学生缺课记录\n"
			<<"      3.查询学生缺课情况\n"
			<<"      4.统计一段时间内学生旷课情况\n"
			<<"      5.退出系统\n\n"
			<<"------------------------------"<<endl;
				
		int num;
		for(;;)
		{
			cout<<"请选择需要执行的功能序号(1-5):";
			cin>>num;
			if(num>=1&&num<=5)
				break;
			else
				continue;
		}
		
		cout<<endl;
	
		switch(num){
			case 1:{
				input(n,i,cn,ct,cp,a);
				break;
			}
			
			case 2:{
				modify(i,cn,ct,cp,a,totalnumber);
				break;
			}
			
			case 3:{
				search(n,i,cn,ct,cp,a,totalnumber);
				break ;
			}
			
			
			case 4:{
				statistic(n,i,cn,ct,cp,a,totalnumber);
				break;
			}
			
			case 5:exit(0); 
		}
	}	
}

int input(Student n[],Student i[],Course cn[],Course ct[],Course cp[],Attendence a[])
{
	cout<<"----------请开始输入----------\n";
		cout<<"请输入将录入系统的人数:"; 
		cin>>totalnumber;
		cout<<endl;
	
	for(int counter=0;counter<totalnumber;counter++)
	{
		cout<<"学生姓名:";
		cin>>name; 
		n[counter].setname(name);
		cout<<"学生学号:";
		cin>>identifynumber;
		i[counter].setidentifynumber(identifynumber);
		cout<<"课程名称:";
		cin>>coursename;
		cn[counter].setcoursename(coursename);
		cout<<"课程时间(星期几,第几节课):";
		cin>>coursetime;
		ct[counter].setcoursetime(coursetime);
		cout<<"课程地点:";
		cin>>courseplace;
		cp[counter].setcourseplace(courseplace);
		cout<<"缺课次数:";
		cin>>attendence;
		a[counter].setattendence(attendence);
		array[counter]=attendence;
		cout<<'\n';
	}
	
	return 1;
}


int modify(Student i[],Course cn[],Course ct[],Course cp[],Attendence a[],int totalnumber)
{
	int inputnumber;
	do{
		char id[8];
		cout<<"请输入学生学号:";
		cin>>id;
		cout<<endl;
	
		if(1)
		{
			for(int counter=0;counter<totalnumber;counter++)
			{
				if(strcmp(id,i[counter].getidentifynumber())==0)
				{
					int num;
					cout<<"请选择需要修改信息的种类:"
						<<"\n1.课程名称\n"
						<<"2.课程时间\n"
						<<"3.课程地点\n"
						<<"4.缺课次数\n";
						
					for(;;)
					{
						cout<<"请输入需要修改信息的代号(1-4):";
						cin>>num;
						if(num>=1&&num<=4)
							break;
						else
							continue;
					} 
					
					cout<<endl;
				
					switch(num){
						case 1:{
							cout<<"请输入修改后的课程名称:"; 
							cin>>coursename;
							cn[counter].setcoursename(coursename);
							cout<<'\n';
							break;
						}
						
						case 2:{
							cout<<"请输入修改后的课程时间(星期几,第几节课):";
							cin>>coursetime;
							ct[counter].setcoursetime(coursetime);
							cout<<'\n';
							break;
						}
						
						case 3:{
							cout<<"请输入修改后的课程地点:";
							cin>>courseplace;
							cp[counter].setcourseplace(courseplace);
							cout<<'\n';
							break;
						}
						
						case 4:{
							cout<<"请输入修改后的缺课次数:";
							cin>>attendence;
							a[counter].setattendence(attendence);
							array[counter]=attendence;
							cout<<'\n';
							break;
						}
						
					}
				}
			} 
		}
			 	 
		else
		{
			cout<<"无该学生缺课信息!\n"
				<<"请再次确认输入学号无误\n\n";
		}
			
		for(;;)
		{
			cout<<"重新查询请输入1|返回目录请输入0\n"; 
			cin>>inputnumber;
			if(inputnumber==1||inputnumber==0)
				break;
			else
				continue;
		}
		
		
	}while(inputnumber==1);
	
	return 1;
}

int search(Student n[],Student i[],Course cn[],Course ct[],Course cp[],Attendence a[],int totalnumber)
{
	int inputnumber;
	do{
		char ids[8];
		char *identify=ids;
		cout<<"请输入学生学号:";
		cin>>ids;
		cout<<endl;
		strcpy(ids,identify);
	
		if(1)
		{
			for(int counter=0;counter<totalnumber;counter++)
			{
				if(strcmp(ids,i[counter].getidentifynumber())==0)
				{
					cout<<"学生姓名:"<<n[counter].getname()
						<<"\n学生学号:"<<i[counter].getidentifynumber()
						<<"\n缺课课程名称:"<<cn[counter].getcoursename()
						<<"\n缺课课程日期:"<<ct[counter].getcoursetime()
						<<"\n缺课时间:"<<cp[counter].getcourseplace()
						<<"\n缺课次数:"<<*a[counter].getattendence()<<"\n";
				}
			}
		}
				
		else
			cout<<"无该同学数据"; 
				break;
		
		cout<<'\n'<<endl;
		for(;;)
		{
			cout<<"重新查询请输入1|返回目录请输入0\n\n";
			cin>>inputnumber;
			if(inputnumber==0||inputnumber==1)
				break;
			else
				continue;
		}
		
	}while(inputnumber==1);
	
	return 1;
}

int statistic(Student n[],Student i[],Course cn[],Course ct[],Course cp[],Attendence a[],int totalnumber)
{
	int inputnumber;
	for(int index=0;index<30;index++)
		att[index]=index;
	
	if(totalnumber==0)
	cout<<"数据库无信息\n\n";
	
	else if(totalnumber==1)
	cout<<"学生姓名:"<<n[0].getname()
		<<"\n学生学号:"<<i[0].getidentifynumber()
		<<"\n缺课课程名称:"<<cn[0].getcoursename()
		<<"\n缺课课程日期:"<<ct[0].getcoursetime()
		<<"\n缺课时间:"<<cp[0].getcourseplace()
		<<"\n缺课次数:"<<*a[0].getattendence()<<"\n\n";
	
	else if(1)
	{
		for(int counter=0;counter<totalnumber;counter++)
		{
			if(a[counter].getattendence()<a[counter].getattendence()+1)
			{
				bubble(array,totalnumber);
			}
			
			else if(a[counter].getattendence()==a[counter+1].getattendence())
			{
				if(strcmp(i[counter].getidentifynumber(),i[counter+1].getidentifynumber())>0)
				{
					int temp;
					int a=counter;
					int b=counter+1;
					
					temp=a;
					a=b;
					b=temp;
				}
			}
			
		}

		for(int index=0;index<totalnumber;index++)
		{
			cout<<"学生姓名:"<<n[att[index]].getname()
				<<"\n学生学号:"<<i[att[index]].getidentifynumber()
				<<"\n缺课课程名称:"<<cn[att[index]].getcoursename()
				<<"\n缺课课程日期:"<<ct[att[index]].getcoursetime()
				<<"\n缺课时间:"<<cp[att[index]].getcourseplace()
				<<"\n缺课次数:"<<*a[att[index]].getattendence()<<"\n\n";
		}
		
	}
	
	cout<<"返回目录请输入0\n";
	cin>>inputnumber;
	if(inputnumber==0)
		return 1;
}

void bubble(int arr[],int len)
{
	int i,j,temp;
	int t;
	for(i=0;i<len-1;i++)
	{
		for(j=0;j<len-1-i;j++)
		{
			if(arr[j]<arr[j+1])
			{
				temp=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=temp;	
			
				t=att[j];
				att[j]=att[j+1];
				att[j+1]=t; 
			}
		}
	}
}
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值