首頁 > 軟體

C++實現考勤管理系統

2022-03-16 10:00:58

本文範例為大家分享了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"
            <<"         學生考勤管理系統nn"
            <<"      1.錄入學生缺課資訊n"
            <<"      2.修改學生缺課記錄n"
            <<"      3.查詢學生缺課情況n"
            <<"      4.統計一段時間內學生曠課情況n"
            <<"      5.退出系統nn"
            <<"------------------------------"<<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"
                <<"請再次確認輸入學號無誤nn";
        }
            
        for(;;)
        {
            cout<<"重新查詢請輸入1|返回目錄請輸入0n"; 
            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|返回目錄請輸入0nn";
            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<<"資料庫無資訊nn";
    
    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()<<"nn";
    
    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()<<"nn";
        }
        
    }
    
    cout<<"返回目錄請輸入0n";
    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; 
            }
        }
    }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com