C++实现考勤管理系统

2022-07-16,

本文实例为大家分享了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; 
            }
        }
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

《C++实现考勤管理系统.doc》

下载本文的Word格式文档,以方便收藏与打印。