Student Information System

学生信息管理系统1.0


this project is a practice from my friend, just at your study reference materials

#include<iostream>
#include<iomanip>
#include<string>
#include<fstream>
#include<cstdlib>
#include<Windows.h>
using namespace std;

struct Student
{
    int no;
    string num_stu;
    string name;
    string age;
    string sex;
    string address;
    string num_phone;
    string num_room;
}b[1000];
int sum = 0;

//functions
void display();
void menu();
void readin();
void outprint(int n);
void enterin();
void modify_student();
void delete_student();
void savein();
void search();
void pb(int i);
void p();
bool advancedsearch(string str1, string str2);

int main()
{
    system("color 75");
    MessageBoxA(0, "Welcome", "学生信息管理系统!", 1);

    display();
    system("pause");
    return 0;
}

void display()
{
    int n;
    menu();
    while (cin >> n, n != 0)
    {
        readin();
        switch (n)
        {
        case 1:enterin();
            break;
        case 2:outprint(sum);
            break;
        case 3:search();
            break;
        case 4:modify_student();
            break;
        case 5:delete_student();
            break;
        case 0:
            break;
        default:
            break;
        }
        system("pause");
        system("cls");
        menu();
    }
}

//readin all book data
void readin()
{
    ifstream fin;
    ofstream fout;
    int i;
    fin.open("student.txt");
    if (!fin.is_open())
    {
        MessageBoxA(0, "Could not open the file student.txt", "Program terminating", 1);
        system("pause");
        exit(EXIT_FAILURE); //exit the program;using <cstdlib>
    }
    i = 0;
    sum = 0;
    while (fin >> b[i].no)
    {
        fin >> b[i].num_stu;
        fin >> b[i].name;
        fin >> b[i].age;
        fin >> b[i].sex;
        fin >> b[i].address;
        fin >> b[i].num_phone;
        fin >> b[i].num_room;
        i++;
        sum++;
    }
}

//ouotput book list
void outprint(int n)
{
    cout << setiosflags(ios::left) << setw(8) << "序号" << setw(16) << "学号" << setw(16) << "姓名" << setw(8) << "年龄"
         << setw(10) << "性别" << setw(16) << "家庭住址" << setw(16) << "联系电话" << setw(16) << "寝室房间号" << endl;
    for (int i = 0; i < n; i++)
    {
        pb(i);
    }
}

//input books
void enterin()
{
    int t, i;
    bool flag = false;
    ifstream fin;
    ofstream fout;
    fout.open("student.txt", ios::app);
    if (!fout.is_open())
    {
        MessageBoxA(0, "Could not open the file student.txt", "Program terminating", 1);
        system("pause");
        exit(EXIT_FAILURE); //exit the program;using <cstdlib>
    }
    cout << "请输入添加的人数: ";
    cin >> t;
    while (t--)
    {
        cout << "输入学生的:" << endl;
        cout << "学号、姓名、年龄、性别、家庭住址、联系电话、寝室号" << endl;
        i = sum + 1;
        if (flag == false)
        {
            cin.clear();
            while (cin.get() != '\n')
                continue;
            flag = true;
        }

        cout << "学号" << endl;
        getline(cin, b[i].num_stu);
        cout << "姓名" << endl;
        getline(cin, b[i].name);
        cout << "年龄" << endl;
        getline(cin, b[i].age);
        cout << "性别" << endl;
        getline(cin, b[i].sex);
        cout << "家庭住址" << endl;
        getline(cin, b[i].address);
        cout << "联系电话" << endl;
        getline(cin,b[i].num_phone);
        cout << "寝室号" << endl;
        getline(cin,b[i].num_room);
        b[i].no = i + 1;
        cout << "录入一个学生的信息如下:" << endl;
        fout << b[i].no << "\t" << b[i].num_stu << "\t" << b[i].name << "\t" << b[i].age << "\t" << b[i].sex
            << "\t" << b[i].address << "\t" << b[i].num_phone << "\t" << b[i].num_room << endl;

        cout << b[i].no << "\t" << b[i].num_stu << "\t" << b[i].name << "\t" << b[i].age << "\t" << b[i].sex
            << "\t" << b[i].address << "\t" << b[i].num_phone << "\t" << b[i].num_room << endl;
        i++;
        sum++;
    }
}

//change student  data
void delete_student()
{
    outprint(sum);
    int a, i;
    cout << "输入要删除学生的编号: " << endl;
    cin >> a;
    a--;
    for (i = a; i < sum; i++)
    {
        b[i].num_stu = b[i + 1].num_stu;
        b[i].name = b[i + 1].name;
        b[i].age = b[i + 1].age;
        b[i].sex = b[i + 1].sex;
        b[i].address = b[i + 1].address;
        b[i].num_phone = b[i + 1].num_phone;
        b[i].num_room = b[i + 1].num_room;
    }
    b[sum].no = NULL;
    b[sum].num_stu = '\0';
    b[sum].name = '\0';
    b[sum].age = '\0';
    b[sum].sex = '\0';
    b[sum].address = '\0';
    b[sum].num_phone = '\0';
    b[sum].num_room = '\0';
    sum--;
    cout << "删除成功!-_-!" << endl;
    savein();
}

void modify_student()
{    
    //修改学生的信息
    outprint(sum);
    int a;
    cout << "输入要修改学生的编号: " << endl;
    cin >> a;
    a--;
    cout << "请重新输入要修改的学生的信息:" << endl;
    cout << "输入学生的:学号、姓名、年龄、性别、家庭住址、联系电话、寝室号" << endl;
    cin >> b[a].num_stu;
    cin >> b[a].name;
    cin >> b[a].age;
    cin >> b[a].sex;
    cin >> b[a].address;
    cin >> b[a].num_phone;
    cin >> b[a].num_room;
    cout << "Modify Succeed , you can go on!" << endl;

    savein();

}

//save all student data
void savein()
{
    ifstream fin;
    ofstream fout;
    int i;  
    fout.open("student.txt");
    for (i = 0; i < sum; i++)
    {
        fout << b[i].no << "\t"
            << b[i].name << "\t" << b[i].num_stu << "\t"
            << b[i].name << "\t" << b[i].age << "\t" << b[i].sex << "\t"
            << b[i].address << "\t" << b[i].num_phone << "\t" << b[i].num_room << endl;
    }
    //cout << "saved" << endl;
}

//search
void search()
{
    string str;
    string st[30];
    int i, j, flag = 0, k, l, m, n;
    cout << "1)普通搜索\n2)模糊搜索" << endl; <span style="background-color: rgb(51, 204, 255);">  <em>//amazing code for first learner</em></span>
    cin >> j;
    if (j == 1)//common search
    {
        cout << "输入搜索信息:" << endl;

        cin.clear();
        while (cin.get() != '\n')
            continue;

        getline(cin, str);

        //search
        for (i = 0; i < sum; i++)
        {
            if (b[i].num_stu == str)
            {
                pb(i);
                flag++;
            }
            else if (b[i].name == str)
            {
                pb(i);
                flag++;
            }

            else if (b[i].age == str)
            {
                pb(i);
                flag++;
            }
            else if (b[i].sex == str)
            {
                pb(i);
                flag++;
            }
            else if (b[i].address == str)
            {
                pb(i);
                flag++;
            }
            else if (b[i].num_phone == str)
            {
                pb(i);
                flag++;
            }
            else if (b[i].num_room == str)
            {
                pb(i);
                flag++;
            }
        }
        cout << "共 " << flag << " 个学生" << endl;
    }
    else if (j == 2)//advanced search
    {
        cout << "输入搜索信息(中文):\n";
        //-------------------
        cin.clear();
        while (cin.get() != '\n')
            continue;
        //------------------
        getline(cin, str);

        for (i = 0; i < sum; i++)
        {
            if (advancedsearch(str, b[i].name))
            {
                pb(i);
                flag++;
            }
            else if (advancedsearch(str, b[i].sex))
            {
                pb(i);
                flag++;
            }
            else if (advancedsearch(str, b[i].address))
            {
                pb(i);
                flag++;
            }
        }
        cout << "共 " << flag << " 个学生" << endl;

    }
    else
    {
        cout << "输入错误,返回主菜单。" << endl;
    }
}
void pb(int i)
{
    cout << setw(8) << i << setw(16) << b[i].num_stu << setw(16) << b[i].name << setw(8) << b[i].age
        << setw(10) << b[i].sex << setw(16) << b[i].address << setw(16) << b[i].num_phone << setw(16) << b[i].num_room << endl;
}
bool advancedsearch(string str1, string str2)
{
    int i, j, l, m, n;
    bool flag = false;
    string st[30];
    //Chinese sum
    l = str1.length();

    //split input
    for (i = 0, j = 0; j < l; j += 2, i++)
    {
        st[i] = st[i].assign(str1, j, 2);
    }

    //compare
    for (m = 0; m < i; m++)
    {
        if (str2.find(st[m], 0) == -1)
            break;
        flag = true;
    }
    return flag;
}


void menu()
{
    cout << "|---------------------------------------------------|" << endl;
    cout << "|    This is a system about student information     |" << endl;
    cout << "|                                                   |" << endl;
    cout << "|   1.录入学生个人信息                              |" << endl;
    cout << "|   2.输出学生个人信息                              |" << endl;
    cout << "|   3.查询学生个人信息                              |" << endl;
    cout << "|   4.学生信息修改                                  |" << endl;
    cout << "|   5.学生信息删除                                  |" << endl;
    cout << "|   0)退出                                          |" << endl;
    cout << "|                                                   |" << endl;
    cout << "|---------------------------------------------------|" << endl;
    cout << endl;
}


它仍然不完善,希望初学者可以作为参考,写出艺术的代码

欢迎大家指正 :)

(全文完)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值