【学校实验】学生考勤系统C++

学生考勤系统

#include<iostream>
#include<string>
#include<fstream>
using namespace std;

class student//声明一个类为 people
{
private:
    char day[20];
    char name[20];
    int n;
    char kname[20];
    char lx[20];
public:// 公有数据成员
    void setn()
    {
        cin >> name;// 输入姓名
    }
    void setd()
    {
        cin >> day;// 输入日期
    }
    void setk()
    {
        cin >> n;// 输入课时
    }
    void setm()
    {
        cin >> kname;// 输入课程名称
    }
    void setl()
    {
        cin >> lx;// 输入缺课类型
    }
    char* getn()
    {
        return name;
    }
    char* getd()
    {
        return day;
    }
    int getk()
    {
        return n;
    }
    char* getm()
    {
        return kname;
    }
    char* getl()
    {
        return lx;
    }
};

void luru()
{
    int j, i;
    student p[100];
    fstream file("学生考勤.txt", ios::in | ios::out);// 文件存盘
    cout << " 〓请输入要录入几名同学信息 :";
    cin >> j;
    cout << "\t\t\t 请输入 " << j << " 名同学信息: " << endl;
    for (i = 0; i < j; i++)
    {
        cout << " 姓名: ";
        p[i].setn();
        cout << " 日期: ";
        p[i].setd();
        cout << " 课时: ";
        p[i].setk();
        cout << " 名称: ";
        p[i].setm();
        cout << " 类型: ";
        p[i].setl();
        file.write((char*)&p[i], sizeof(p[i]));// 写文件
    }
    cout << " ^_^成功输入同学信息 !请返回 !" << endl;
    file.close();// 关闭文件
}

//查询信息
void chaxun()// 查询函数的调用
{
    student x;
    char name[20], z;
    fstream m;
a1: int a = 0, flag = 0;// goto 语句
    m.open("学生考勤 .txt", ios::in);
    cout << " 请输入您要查询的同学姓名: " << endl;
    cin >> name;
    m.read((char*)&x, sizeof(x));
    while (!m.eof())// 原文件到头结束
    {
        if (!strcmp(name, x.getn()))
        {
            cout << " 姓名: " << x.getn() << endl;
            cout << " 日期: " << x.getd() << endl;
            cout << " 课时: " << x.getk() << endl;
            cout << " 课程名称: " << x.getm() << endl;
            cout << " 缺课类型: " << x.getl() << endl;
            flag = 1;
            break;
        }
        m.read((char*)&x, sizeof(x));
    }
    m.close();
    if (flag == 0)
    {
        cout << "  ̄_ ̄对不起,您查询的同学无缺课现象,请返回 !" << endl;
    }
    cout << " 如继续查询请输入 Y,否则按任意键返回 " << endl;
    cin >> z;
    if (z == 'Y' || z == 'y')
        goto a1;
}
//修改函数的调用
void xiugai() /* 修改成员函数 */
{
    student l;
    char xname[20], w;
    fstream xfile;
    xfile.open("学生考勤.txt", ios::in | ios::out);
    xfile.read((char*)&l, sizeof(l));// 读文件到 L 里
    cout << " 请输入您要修改的同学姓名: " << endl;
    cin >> xname;
    while (!xfile.eof())// 调用 EOF 判断函数
    {
        if (!strcmp(xname, l.getn()))
        {
            cout << " 姓名:" << l.getn() << endl;
            cout << " 日期:" << l.getd() << endl;
            cout << " 课时:" << l.getk() << endl;
            cout << " 课程名称 :" << l.getm() << endl;
            cout << " 缺课类型 :" << l.getl() << endl;
            cout << " 确认修改请按 Y ,否则按任意键 " << endl;
            cin >> w;
            if (w == 'Y' || w == 'y')
            {
                cout << " 姓名: ";
                l.setn();
                cout << " 日期: ";
                l.setd();
                cout << " 课时: ";
                l.setk();
                cout << " 课程名称: ";
                l.setm();
                cout << " 缺课类型: ";
                l.setl();
                xfile.open("学生考勤.txt", ios::in);
                xfile.write((char*)&l, sizeof(l));
            }
            else
            {
                break;
            }
        }
        xfile.read((char*)&l, sizeof(l));// 读文件到 L 里
    }
    xfile.close();
}
void renci()
{
    int i = 0, j = 1, x = 0, y = 0;
    student s;
    fstream d;
    d.open("学生考勤.txt", ios::in);
    d.read((char*)&s, sizeof(s));
    i = 1;
    cout << " 早退人数为: " << x << endl;
    cout << " 请假人数为: " << y << endl;
    cout << " 旷课人数为: " << i << endl;
    cout << " 迟到人数为: " << j << endl;
    cout << " 在" << s.getd() << " 有:" << endl;
    {
        cout << " 课程名称 :" << s.getm() << endl;
    }
    d.read((char*)&s, sizeof(s));// 读文件到 L 里
    d.close();
}
void cishu()
{
    int i = 0, j = 1, x = 0, y = 0;
    student m;
    fstream b;
    b.open("学生考勤.txt", ios::in);
    b.read((char*)&m, sizeof(m));
    i = 1;
    cout << " 早退次数为: " << x << endl;
    cout << " 请假次数为: " << y << endl;
    cout << " 旷课次数为: " << i << endl;
    cout << " 迟到次数为: " << j << endl;
    cout << " 在" << m.getd() << " 有:" << endl;
    {
        cout << " 姓名:" << m.getn() << endl;
    }
    b.read((char*)&m, sizeof(m));// 读文件到 L 里
    b.close();
}
    

int main(){
    int i = 0;

    while (1)
    {
        cout << "\t\t ############################################### " << endl;
        cout << "\t\t\t 欢迎进入学生考勤系统 " << endl;
        cout << "\t\t ############################################### " << endl;
        cout << "\t\t ####" << endl;
        cout << "\t\t ####" << endl;
        cout << "\t\t #### 1、录入学生的缺课记录;" << endl;
        cout << "\t\t ####" << endl;
        cout << "\t\t #### 2、修改某个学生的缺课记录;" << endl;
        cout << "\t\t ####" << endl;
        cout << "\t\t #### 3、查询某个学生的缺课情况" << endl;
        cout << "\t\t ####" << endl;
        cout << "\t\t #### 4、旷课学生姓名及旷课次数" << endl;
        cout << "\t\t ####" << endl;
        cout << "\t\t #### 5、有学生旷课人次" << endl;
        cout << "\t\t ####" << endl;
        cout << "\t\t #### 6. 退出" << endl;
        cout << "\t\t ####" << endl;
        cout << "\t\t ############################################### " << endl << endl
            << "\t\t";
        cout << "\t ### ****** 请选择您所需要的信息 ****** ###" << endl;
        cin >> i;
        switch (i)
        {
        case 1:luru(); break;
        case 2:xiugai(); break;
        case 3:chaxun(); break;
        case 4:cishu(); break;
        case 5:renci(); break;
        case 6: break;
        }
        if (i == 6)
        {
            cout << endl << endl << endl << "\t\t\t 退出考勤系统,欢迎下次使用 ! !" << endl;
            break;
        }
        cout << endl;
    }
    return 0;
}
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是一个简单的学生考勤系统C++ 代码示例: ```c++ #include <iostream> #include <string> using namespace std; struct Student { string name; int id; int attendances; int absences; }; int main() { const int MAX_STUDENTS = 100; Student students[MAX_STUDENTS]; int numStudents = 0; // 添加学生 cout << "请输入学生姓名、学号和出席次数(以空格分隔),输入 q 结束添加:" << endl; while (numStudents < MAX_STUDENTS) { string name; int id, attendances; cin >> name; if (name == "q") break; cin >> id >> attendances; students[numStudents].name = name; students[numStudents].id = id; students[numStudents].attendances = attendances; students[numStudents].absences = 0; numStudents++; } // 修改学生出席情况 cout << "请输入学号和出席情况(1 表示出席,0 表示缺席),输入 q 结束修改:" << endl; while (true) { int id, attendance; cin >> id; if (id == -1) break; cin >> attendance; for (int i = 0; i < numStudents; i++) { if (students[i].id == id) { if (attendance == 1) { students[i].attendances++; } else { students[i].absences++; } break; } } } // 输出学生考勤情况 cout << "学生考勤情况:" << endl; for (int i = 0; i < numStudents; i++) { cout << students[i].name << " (" << students[i].id << "): " << students[i].attendances << " 次出席," << students[i].absences << " 次缺席。" << endl; } return 0; } ``` 这个示例程序使用结构体 `Student` 来保存学生的姓名、学号、出席次数和缺席次数。首先用户可以输入学生信息,然后可以修改每个学生的出席情况,最后输出每个学生的考勤情况。这只是一个简单的示例,实际的学生考勤系统可能需要更多的功能和更复杂的代码。 ### 回答2: 学生考勤系统是一种用于管理学生考勤的系统,通过编写C代码实现该系统可以提高学校的管理效率和准确度。 首先,我们需要定义一些数据结构来存储学生的信息,比如学生的姓名、学号、班级等等。可以使用结构体来定义学生的信息。 其次,我们需要实现学生考勤的功能。这包括记录学生的考勤情况,比如签到、签退等。我们可以使用数组来存储学生的考勤记录,每个元素表示一个学生的考勤情况。 然后,我们需要实现一些操作来对学生考勤进行管理。比如添加学生信息、修改学生考勤记录、查询学生考勤情况等等。这些操作可以通过编写相应的函数来实现。 最后,我们可以编写一个菜单界面来方便用户操作学生考勤系统。用户可以通过菜单进行各种操作,比如添加学生信息、修改学生考勤记录等。菜单界面可以使用switch语句来实现。 总结起来,学生考勤系统是一个用于管理学生考勤的系统,通过C代码的编写可以实现该系统的各种功能,包括记录学生的考勤情况、管理学生的信息等。这样可以提高学校的管理效率和准确度,方便学校进行考勤工作的管理。 ### 回答3: 学生考勤系统的C代码主要用于实现学生考勤管理的功能。下面我会给出一个简单的示例代码,来展示如何实现学生的考勤管理。 ```c #include <stdio.h> #include <stdlib.h> #include <string.h> // 定义学生结构体 typedef struct { char name[20]; int attendance; } Student; // 添加学生 void addStudent(Student* students, int* count) { printf("请输入学生姓名:"); scanf("%s", students[*count].name); students[*count].attendance = 0; *count += 1; } // 更新学生考勤 void updateAttendance(Student* students, int count) { char name[20]; printf("请输入学生姓名:"); scanf("%s", name); int i; for(i = 0; i < count; i++) { if(strcmp(students[i].name, name) == 0) { students[i].attendance += 1; printf("考勤更新成功!\n"); return; } } printf("未找到该学生!\n"); } // 显示学生考勤信息 void showAttendance(Student* students, int count) { int i; for(i = 0; i < count; i++) { printf("学生姓名:%s,出勤次数:%d\n", students[i].name, students[i].attendance); } } int main() { int choice; int count = 0; Student students[100]; while(1) { printf("\n1. 添加学生\n"); printf("2. 更新考勤\n"); printf("3. 显示考勤信息\n"); printf("4. 退出\n"); printf("请选择操作:"); scanf("%d", &choice); switch(choice) { case 1: addStudent(students, &count); break; case 2: updateAttendance(students, count); break; case 3: showAttendance(students, count); break; case 4: printf("程序退出!\n"); exit(0); default: printf("无效的选择!\n"); } } return 0; } ``` 以上是一个简单的学生考勤系统的C代码示例,包括添加学生、更新考勤和显示考勤信息等功能。通过该系统,可以方便地进行学生考勤管理。代码可根据实际需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值