C++实现图书馆管理系统源码

本文实例为大家分享了C++实现图书馆管理系统的具体代码,供大家参考,具体内容如下

总体思想

用C++开发图书馆管理系统需要对学生和图书分别建立class,调用class中的方法实现学生登陆账号借书,还书,图书馆管理员查看信息等操作。

Student.h

#pragma once
#include<string>
#include<vector>
#include<iostream>
#include<fstream>
#include<sstream>
#include<string>
using namespace std;

class Student
{
private:
    int id;                          //student's ID number
    int year;                        //student's grade
    string name;
    string password;
    string gender;
    string telephone;
    string address;                  //student's name, password, gender, telephone number and address
    vector<int> book;
    vector<int> grade;               //student's books and their marks
public:
    Student();
    ~Student();
    Student(int a, int b, string c, string d, string e, string f, string g);
    //constructors
    int get_id();
    int get_year();
    string get_name();
    string get_pass();
    string get_gend();
    string get_tele();
    string get_addr();
    vector<int> get_book();          //get the variables of class
    void change(int a, int b, string c, string d, string e, string f, string g);
    //change the information
    void display();                  //display the information on the screen
    int length();                    //get the number of all students
    bool canopen();                  //check whether the file 'student.txt' can be opened
    void write();                    //write the information current into file 'student.txt'
    void read(int n);                //read the information of the number n student from file 'student.txt'
    void write_book();               //write the books information of the student into file 'mybook.txt' 
    void read_book();                //read the infomation of the student from file 'mybook.txt'
    void change_book(int a, int b);  //change the information of vector book and grade
    void add_book(int a);            //add a new book
    void display_book();             //display the information of books on the screen
    void add_student();              //add a student into the file 'mybook.txt'
    void sub_student();              //subtract a student in the file 'mybook.txt'
    bool is_same_book(int a);        //check whether there exist a same book in the file 'mybook.txt'
};

Student::Student()
{
    id = 0;
    year = 0;
    name = "not given";
    password = "not given";
    gender = "not given";
    telephone = "not given";
    address = "not given";             //define the default constructor
}

Student::~Student() {}

Student::Student(int a, int b, string c, string d, string e, string f, string g)
{
    id = a;
    year = b;
    name = c;
    password = d;
    gender = e;
    telephone = f;
    address = g;                       //define the normal constructor
}

int Student::get_id()
{
    return id;
}

int Student::get_year()
{
    return year;
}

string Student::get_name()
{
    return name;
}

string Student::get_pass()
{
    return password;
}

string Student::get_gend()
{
    return gender;
}

string Student::get_tele()
{
    return telephone;
}

string Student::get_addr()
{
    return address;
}

vector<int> Student::get_book()
{
    return book;
}

void Student::change(int a, int b, string c, string d, string e, string f, string g)
{
    id = a;
    year = b;
    name = c;
    password = d;
    gender = e;
    telephone = f;
    address = g;
}

void Student::display()
{
    cout << "Name:   " << name << endl;
    cout << "ID number:   " << id << endl;
    cout << "Grade:   " << year << endl;
    cout << "Gender:   " << gender << endl;
    cout << "Telephone:   " << telephone << endl;
    cout << "Address:   " << address << endl << endl;
}

int Student::length()
{
    int i = 0;
    string temp;
    ifstream fin("student.txt");
    while (getline(fin, temp))
        i += 1;
    fin.close();
    return i;
}

bool Student::canopen()
{
    ifstream fin1("student.txt");
    ifstream fin2("mybook.txt");
    if (fin1&&fin2)
        return 1;
    else
        return 0;
    fin1.close();
    fin2.close();
}

void Student::write()
{
    ofstream fout("student.txt", ios::app);
    fout << id << "\t" << year << "\t" << name << "\t" << password << "\t" << gender << "\t" << telephone << "\t" << address << endl;
    fout.close();
}

void Student::read(int n)
{
    int i = 0;
    string temp, data[999], a[6];
    ifstream fin("student.txt");
    while (getline(fin, temp))
    {
        data[i] = temp;
        i += 1;
    }
    fin.close();
    istringstream stream(data[n]);
    for (i = 0; i < 6; i++)
    {
        data[n].erase(0, data[n].find("\t") + 1);
        a[i] = data[n].substr(0, data[n].find("\t"));
    }
    name = a[1];
    password = a[2];
    gender = a[3];
    telephone = a[4];
    address = a[5];
    stream >> id >> year;
}

void Student::write_book()
{
    int i, n, l = 0;
    string data[999], temp;
    ifstream fin("mybook.txt");
    while (getline(fin, temp))
    {
        data[l] = temp;
        l += 1;
    }
    fin.close();

    ofstream fout("mybook.txt");
    for (i = 0; i < l; i++)
    {
        istringstream stream(data[i]);
        stream >> n;
        if (n == id)
        {
            fout << id;
            for (int i = 0; i < book.size(); i++)
                fout << "\t" << book[i] << "\t" << grade[i];
            fout << endl;
        }
        else
            fout << data[i] << endl;
    }
    fout.close();
}

void Student::read_book()
{
    int i = 0, x, y, n;
    string data[999], temp;
    ifstream fin("mybook.txt");
    while (getline(fin, temp))
    {
        data[i] = temp;
        i += 1;
    }
    fin.close();
    for (i = 0; i < 999; i++)
    {
        istringstream stream(data[i]);
        stream >> n;
        if (id == n)
            while (stream >> x >> y)
            {
                book.push_back(x);
                grade.push_back(y);
            }
    }
}

void Student::change_book(int a, int b)
{
    int i;
    for (i = 0; i < book.size(); i++)
        if (book[i] == a)
            grade[i] = b;
}

void Student::add_book(int a)
{
    book.push_back(a);
    grade.push_back(-1);
}

void Student::display_book()
{
    int i;
    for (i = 0; i < book.size(); i++)
    {
        cout << book[i] << "\t\t";
        if (grade[i] == -1)
            cout << "None." << endl;
        else
            cout << grade[i] << endl;
    }
}

void Student::add_student()
{

    ofstream fout("mybook.txt", ios::app);
    fout << id << endl;
    fout.close();
}

void Student::sub_student()
{
    int i = 0, n, m, l;
    string data[999], temp;
    ifstream fin("mybook.txt");
    while (getline(fin, temp))
    {
        data[i] = temp;
        i += 1;
    }
    fin.close();
    l = i;
    for (i = 0; i < l; i++)
    {
        istringstream stream(data[i]);
        stream >> n;
        if (id == n)
            m = i;
    }
    ofstream fout("mybook.txt");
    for (i = 0; i < l; i++)
        if (i != m)
            fout << data[i] << endl;
    fout.close();
}

bool Student::is_same_book(int a)
{
    int i;
    bool success = 0;
    for (i = 0; i < book.size(); i++)
        if (book[i] == a)
            success = 1;
    return success;
}

Book.h

#pragma once
#include<iostream>
#include<fstream>
#include<string>
#include<sstream>
using namespace std;

class Book
{
private:
    int id;
    string name;
    string professor;                //the information of a book
    int place;                       //left seats
    int year;                        //available to which grades
public:
    Book();
    ~Book();
    Book(int a, string b, string c, int d, int e);
    int get_id();
    string get_name();
    string get_prof();
    int get_place();
    int get_year();                  //get the variables of class
    void change(int a, string b, string c, int d, int e);
                                     //change the information
    void display();                  //display the information on the screen
    int length();                    //get the number of all the Books
    bool canopen();                  //check whether the file 'book.txt' can be opened
    void write();                    //write the information into the file 'book.txt'
    void read(int n);                //read the information of number n book form the file 'book.txt'
};

Book::Book()
{
    name = "not given";
    id = 0;
    professor = "not given";
    place = 0;
    year = 0;                         //difine the default constructor
}

Book::~Book() {}

Book::Book(int a, string b, string c, int d, int e)
{
    id = a;
    name = b;
    professor = c;
    place = d;
    year = e;                         //define the normal constructor
}

int Book::get_id()
{
    return id;
}
string Book::get_name()
{
    return name;
}
string Book::get_prof()
{
    return professor;
}
int Book::get_place()
{
    return place;
}
int Book::get_year()
{
    return year;
}

void Book::change(int a, string b, string c, int d, int e)
{
    id = a;
    name = b;
    professor = c;
    place = d;
    year = e;
}

void Book::display()
{
    cout << "Name:   " << name << endl;
    cout << "ID number:   " << id << endl;
    cout << "Professor:   " << professor << endl;
    cout << "Left seats:   " << place << endl;
    cout << "Available grade:   ";
    if (year > 0 && year < 5)
        cout << "year " << year;
    else if (year == 5)
        cout << "All of students.";
    else
        cout << "error in data.";
    cout << endl << endl;
}

int Book::length()
{
    int i = 0;
    string temp;
    ifstream fin("book.txt");
    while (getline(fin, temp))
        i += 1;
    fin.close();
    return i;
}

bool Book::canopen()
{
    ifstream fin1("book.txt");
    if (fin1)
        return 1;
    else
        return 0;
    fin1.close();
}

void Book::write()
{
    ofstream fout("book.txt", ios::app);
    fout << id << "\t" << place << "\t" << year << "\t" << name << "\t" << professor << "\t" << endl;
    fout.close();
}

void Book::read(int n)
{
    int i = 0;
    string temp, data[999], a[4];
    ifstream fin("book.txt");
    while (getline(fin, temp))
    {
        data[i] = temp;
        i += 1;
    }
    fin.close();
    istringstream stream(data[n]);
    for (i = 0; i < 4; i++)
    {
        data[n].erase(0, data[n].find("\t") + 1);
        a[i] = data[n].substr(0, data[n].find("\t"));
    }
    name = a[2];
    professor = a[3];
    stream >> id >> place >> year;
}

main.cpp

#include<iostream>
#include<string>
#include<vector>
#include"Book.h"
#include"Student.h"
using namespace std;

void initialize();
bool is_administrator();
bool is_student(int *n);
void menu1();
void menu2();
void menu3();
void wrong_input();
void mag_book();
void mag_student();
void show_book_list();
void show_student_list();
void give_mark();
void change_password();
void choose_book(int n);
void my_book(int n);
void check_info(int n);
void can_open(Book a);
void can_open(Student a);
bool is_same_student_name(string n);
bool is_same_student_tele(string n);
bool is_same_student_addr(string n);
bool is_same_book_name(string n);

int main()
{
    int user;
    char choice;
    bool success = 0;
    initialize();
    do {
        menu1();
        cin >> choice;
        switch (choice)
        {
        case'1':
        {
            if (is_administrator()) {
                do {
                    menu2();
                    cin >> choice;
                    getchar();
                    switch (choice)
                    {
                    case'1':mag_book(); success = 0; break;
                    case'2':mag_student(); success = 0; break;
                    case'3':show_book_list(); success = 0; break;
                    case'4':show_student_list(); success = 0; break;
                    case'5':give_mark(); success = 0; break;
                    case'6':change_password(); success = 0; break;
                    case'9':success = 1; break;
                    case'0':success = 1; break;
                    default:wrong_input(); break;
                    }
                } while (!success);
            }
            else
            {
                cout << "The password is incorrect." << endl;
                system("pause");
            }
        }
        break;
        case'2':
        {
            if (is_student(&user))
            {
                do {
                    menu3();
                    cin >> choice;
                    switch (choice)
                    {
                    case'1':choose_book(user); success = 0; break;
                    case'2':my_book(user); success = 0; break;
                    case'3':check_info(user); success = 0; break;
                    case'9':success = 1; break;
                    case'0':success = 1; break;
                    default:wrong_input(); break;
                    }
                } while (!success);
            }
            else
            {
                cout << "Your name or password is incorrect." << endl;
                system("pause");
            }
        }
        break;
        case'0':success = 1; break;
        default:wrong_input(); break;
        }
    } while (choice != '0');
    return 0;
}

void initialize()
{
    ifstream infile1("book.txt");
    if (!infile1)
    {
        ofstream outfile1("book.txt");
        outfile1.close();
    }
    infile1.close();
    ifstream infile2("student.txt");
    if (!infile2)
    {
        ofstream outfile2("student.txt");
        outfile2.close();
    }
    infile2.close();
    ifstream infile3("password.txt");
    if (!infile3)
    {
        ofstream outfile3("password.txt");
        outfile3 << "123";
        outfile3.close();
    }
    infile3.close();
    ifstream infile4("mybook.txt");
    if (!infile4)
    {
        ofstream outfile4("mybook.txt");
        outfile4.close();
    }
    infile4.close();
}
bool is_administrator()
{
    string p1, p2;
    getchar();
    cout << "Please input the password:";
    getline(cin, p1);
    ifstream infile("password.txt");
    if (!infile)
    {
        cout << endl << "Out of service" << endl;
        cout << "Please press enter to exit." << endl;
        system("pause");
        exit(0);
    }
    getline(infile, p2);
    infile.close();
    if (p1 == p2)
        return 1;
    else
        return 0;
}
bool is_student(int *n)
{
    Student a[100];
    Student s;
    string p1, p2;
    int i;
    bool success = 0;
    getchar();
    cout << "Please input your name:";
    getline(cin, p1);
    cout << "Please input your password:";
    getline(cin, p2);
    can_open(s);
    for (i = 0; i < s.length(); i++)
    {
        a[i].read(i);
        if (a[i].get_name() == p1 && a[i].get_pass() == p2)
        {
            *n = i;
            success = 1;
        }
    }
    return success;
}
void menu1()
{
    system("cls");
    cout << endl << endl << endl;
    cout << "-------------------------------------------------------------------" << endl;
    cout << "                University Student Management System               " << endl << endl;
    cout << "      1.Administrator System." << endl << endl;
    cout << "      2.Student System." << endl << endl;
    cout << "      0.Exit." << endl;
    cout << "-------------------------------------------------------------------" << endl;
    cout << "Please input your choice:";
}
void menu2()
{
    system("cls");
    cout << endl << endl << endl;
    cout << "-------------------------------------------------------------------" << endl;
    cout << "                          Administrator System   " << endl << endl;
    cout << "      1.Book Management." << endl << endl;
    cout << "      2.Student Management." << endl << endl;
    cout << "      3.Show the Book List." << endl << endl;
    cout << "      4.Show the Student List." << endl << endl;
    cout << "      5.Give Marks to Students." << endl << endl;
    cout << "      6.Change Administrator Password." << endl << endl;
    cout << "      9.Return to the main menu." << endl << endl;
    cout << "      0.Exit." << endl;
    cout << "-------------------------------------------------------------------" << endl;
    cout << "Please input your choice:";
}
void menu3()
{
    system("cls");
    cout << endl << endl << endl;
    cout << "-------------------------------------------------------------------" << endl;
    cout << "                          Student System" << endl << endl;
    cout << "      1.Choose My Books" << endl << endl;
    cout << "      2.Check My Books and Grades" << endl << endl;
    cout << "      3.Check and Change My Infomation" << endl << endl;
    cout << "      9.Return to the main menu." << endl << endl;
    cout << "      0.Exit." << endl;
    cout << "-------------------------------------------------------------------" << endl;
    cout << "Please input your choice:";
}
void wrong_input()
{
    system("cls");
    cout << endl << endl << endl << endl << endl << endl;
    cout << "                        Wrong input! Please input again." << endl;
    system("pause");
}
void mag_book()
{
    int i, id, plac, year;
    char choice;
    bool success = 0, success2 = 0;
    string name, prof;
    Book a[50];
    Book c;
    do {
        fflush(stdin);
        system("cls");
        cout << endl << "                     Book Management" << endl << endl;
        cout << "Which operation do you want about the list of book?" << endl;
        cout << "1.Browse a book\n\n2.Add a book\n\n3.Modify a book\n\n4.Delete a book\n\n";
        cin >> choice;
        cout << "Please input the ID number of book:";
        cin >> id;
        getchar();
        can_open(c);
        if (choice == '1')
        {
            success2 = 1;
            fflush(stdin);
            for (i = 0; i < c.length(); i++)
                a[i].read(i);
            for (i = 0; i < c.length(); i++)
                if (id == a[i].get_id())
                {
                    system("cls");
                    a[i].display();
                    success = 1;
                }
            if (!success)
                cout << "The book cannot be found.";
        }
        else if (choice == '2')
        {
            success2 = 1;
            fflush(stdin);
            for (i = 0; i < c.length(); i++)
            {
                a[i].read(i);
                if (id == a[i].get_id())
                    success = 1;
            }
            if (success)
                cout << "The book is exist";
            else
            {
                do {
                    cout << "Please input the name of book:";
                    getline(cin, name);
                } while (is_same_book_name(name));
                cout << "Please input the professor's name:";
                getline(cin, prof);
                cout << "Please input the maximum quota of people(connot change later):";
                cin >> plac;
                cout << "Which grades are available?" << endl << "1. year 1\n2. year 2\n3. year 3\n4. year 4\n5. all of students\n";
                cin >> year;
                c.change(id, name, prof, plac, year);
                c.write();
                system("cls");
                cout << "The book has been saved." << endl << endl;
                c.display();
            }
        }
        else if (choice == '3')
        {
            success2 = 1;
            fflush(stdin);
            int l, n;
            l = c.length();
            for (i = 0; i < l; i++)
            {
                a[i].read(i);
                if (id == a[i].get_id())
                {
                    n = i;
                    success = 1;
                }
            }
            if (success)
            {
                do {
                    cout << "Please input the new name of book " << id << ":";
                    getline(cin, name);
                } while (is_same_book_name(name));
                cout << "Please input the new professor's name of book " << id << ":";
                getline(cin, prof);
                cout << "Which grades are available?" << endl << "1. year 1\n2. year 2\n3. year 3\n4. year 4\n5. all of students\n";
                cin >> year;
                a[n].change(id, name, prof, a[n].get_place(), year);
                ofstream fout("book.txt");
                fout.close();
                for (i = 0; i < l; i++)
                    a[i].write();
                system("cls");
                cout << "The book has been changed." << endl << endl;
                a[n].display();
            }
            else
                cout << "The book " << id << " cannot be found.";
        }
        else if (choice == '4')
        {
            success2 = 1;
            fflush(stdin);
            int n, l = c.length();
            for (i = 0; i < l; i++)
            {
                a[i].read(i);
                if (id == a[i].get_id())
                {
                    n = i;
                    success = 1;
                }
            }
            if (success)
            {
                ofstream fout("book.txt");
                fout.close();
                for (i = 0; i < l - 1; i++)
                    if (i != n)
                        a[i].write();
                system("cls");
                cout << "The book has been deleted." << endl << endl;
                a[n].display();
            }
            else
                cout << "The book " << id << " cannot be found.";
        }
        else
        {
            cout << "wrong input, please input again." << endl;
            system("pause");
        }
    } while (!success2);
    cout << endl;
    system("pause");
}
void mag_student()
{
    int i, id, year;
    char choice;
    bool success = 0, success2 = 0;
    string name, pass, gend, tele, addr;
    Student a[50];
    Student s;
    do {
        system("cls");
        cout << endl << "                     Student Management" << endl << endl;
        cout << "Which operation do you want about the list of student?" << endl;
        cout << "1.Browse a student\n2.Add a student\n3.Modify a student\n4.Delete a student\n";
        cin >> choice;
        cout << "Please input the ID number of student:";
        cin >> id;
        getchar();
        can_open(s);
        if (choice == '1')
        {
            success2 = 1;
            fflush(stdin);
            for (i = 0; i < s.length(); i++)
                a[i].read(i);
            for (i = 0; i < s.length(); i++)
                if (id == a[i].get_id())
                {
                    system("cls");
                    a[i].display();
                    success = 1;
                }
            if (!success)
                cout << "The student cannot be found.";
        }
        else if (choice == '2')
        {
            success2 = 1;
            fflush(stdin);
            for (i = 0; i < s.length(); i++)
            {
                a[i].read(i);
                if (id == a[i].get_id())
                    success = 1;
            }
            if (success)
                cout << "The student is exist";
            else
            {
                do {
                    cout << "Please input the name of student:";
                    getline(cin, name);
                } while (is_same_student_name(name));
                cout << "Please input the password:";
                getline(cin, pass);
                do {
                    cout << "What grade is the student in? (1-4)";
                    cin >> year;
                } while (year < 1 || year>4);
                fflush(stdin);
                do {
                    cout << "Please input the student's gender:" << endl << "Please enter 'male' or 'female'  :";
                    getline(cin, gend);
                } while (!(gend == "male" || gend == "female"));
                do {
                    cout << "Please input the telephone number:";
                    getline(cin, tele);
                } while (is_same_student_tele(tele));
                do {
                    cout << "Please input the address:";
                    getline(cin, addr);
                } while (is_same_student_addr(addr));
                s.change(id, year, name, pass, gend, tele, addr);
                s.add_student();
                s.write();            
                system("cls");
                cout << "The information of student has been saved." << endl << endl;
                s.display();        
                }
        }
        else if (choice == '3')
        {
            success2 = 1;
            fflush(stdin);
            int l, n;
            l = s.length();
            for (i = 0; i < l; i++)
            {
                a[i].read(i);
                if (id == a[i].get_id())
                {
                    n = i;
                    success = 1;
                }
            }
            if (success)
            {
                do {
                    cout << "Please input the new name of student " << id << ":";
                    getline(cin, name);
                } while (is_same_student_name(name));
                pass = a[n].get_pass();
                do {
                    cout << "What grade is the student in? (1-4)";
                    cin >> year;
                } while (year < 1 || year>4);
                fflush(stdin);
                do {
                    cout << "Please input the student's gender:" << endl << "Please enter 'male' or 'female'  :";
                    getline(cin, gend);
                } while (!(gend == "male" || gend == "female"));
                do {
                    cout << "Please input the new telephone number:";
                    getline(cin, tele);
                } while (is_same_student_tele(tele));
                do {
                    cout << "Please input the new address:";
                    getline(cin, addr);
                } while (is_same_student_addr(addr));
                a[n].change(id, year, name, pass, gend, tele, addr);
                ofstream fout("student.txt");
                fout.close();
                for (i = 0; i < l; i++)
                    a[i].write();
                system("cls");
                cout << "The student has been changed." << endl << endl;
                a[n].display();
            }
            else
                cout << "The student " << id << " cannot be found.";
        }
        else if (choice == '4')
        {
            success2 = 1;
            fflush(stdin);
            int n, l = s.length();
            for (i = 0; i < l; i++)
            {
                a[i].read(i);
                if (id == a[i].get_id())
                {
                    n = i;
                    success = 1;
                }
            }
            if (success)
            {
                a[n].sub_student();
                ofstream fout("student.txt");
                fout.close();
                for (i = 0; i < l; i++)
                    if (i != n)
                        a[i].write();
                system("cls");
                cout << "The student has been deleted." << endl << endl;
                a[n].display();
            }
            else
                cout << "The student " << id << " cannot be found.";
        }
        else
        {
            cout << "Wrong input, please input again." << endl;
            system("pause");
        }
    } while (!success2);
    cout << endl;
    system("pause");
}
void show_book_list()
{
    Book a[100];
    Book c;
    int i;
    system("cls");
    cout << endl << "                     Books List" << endl << endl;
    can_open(c);
    for (i = 0; i < c.length(); i++)
    {
        a[i].read(i);
        a[i].display();
    }
    cout << endl;
    system("pause");
}
void show_student_list()
{
    Student a[100];
    Student s;
    int i;
    system("cls");
    cout << endl << "                     Students List" << endl << endl;
    can_open(s);
    for (i = 0; i < s.length(); i++)
    {
        a[i].read(i);
        a[i].display();
    }
    cout << endl;
    system("pause");
}
void give_mark()
{
    int i, j, k = 0, id, temp;
    bool success = 0;
    vector<int> student, mark;
    Student a[999];
    Student s;
    Book b[999];
    Book c;
    system("cls");
    cout << endl << "                     Give Marks" << endl << endl;
    cout << "Please input the ID number of book:";
    cin >> id;
    for (i = 0; i < c.length(); i++)
    {
        b[i].read(i);
        if (b[i].get_id() == id)
            success = 1;
    }
    if (!success)
        cout << "The book " << id << " is not exist." << endl;
    else
    {
        cout << "These student(s) are your student(s):";
        for (i = 0; i < s.length(); i++)
        {
            a[i].read(i);
            a[i].read_book();
            for (j = 0; j < a[i].get_book().size(); j++)
                if (id == a[i].get_book()[j])
                {
                    k += 1;
                    cout << endl << k << ". " << a[i].get_name();
                    student.push_back(i);
                    break;
                }
        }
        cout << endl << "Please give marks;" << endl;
        for (i = 0; i < k; i++)
        {
            cout << a[student[i]].get_name() << ":   ";
            cin >> temp;
            a[student[i]].change_book(id, temp);
        }
        for (i = 0; i < s.length(); i++)
            a[i].write_book();
        cout << endl << "Giving marks successfully!";
    }
    cout << endl;
    system("pause");
}
void change_password()
{
    string p1, p2, p3;
    system("cls");
    cout << endl << "                 Change Administrator Password." << endl << endl;
    cout << "Please input the password:";
    getline(cin, p1);
    ifstream infile("password.txt");
    if (!infile)
    {
        cout << endl << "Out of service" << endl;
        cout << "Please press enter to exit." << endl;
        system("pause");
        exit(0);
    }
    getline(infile, p2);
    infile.close();
    if (p1 == p2)
    {
        cout << "Please input the new password:";
        getline(cin, p3);
        ofstream outfile("password.txt");
        outfile << p3;
        outfile.close();
        cout << "The administrator password has been changed.";
    }
    else
        cout << "Wrong password.";
    cout << endl;
    system("pause");
}
void choose_book(int n)
{
    int i, l, m, id;
    bool success = 0;
    bool can_choose[999];
    Student a[999];
    Student s;
    Book b[999];
    Book c;
    system("cls");
    cout << endl << "                     Choose My Books" << endl << endl;
    can_open(s);
    can_open(c);
    l = c.length();
    for (i = 0; i < s.length(); i++)
    {
        a[i].read(i);
        a[i].read_book();
    }
    cout << "                                                   Welcome," << a[n].get_name() << endl << endl;
    for (i = 0; i < l; i++)
    {
        b[i].read(i);
        if (((b[i].get_year() == a[n].get_year()) || b[i].get_year() == 5) && (b[i].get_place() > 0))
        {
            can_choose[i] = 1;
            cout << "Status:   Available" << endl;
            b[i].display();
        }
        else
        {
            can_choose[i] = 0;
            cout << "Status:   Unavailable" << endl;
            b[i].display();
        }
    }

    do {
        cout << "Please input the ID number of the book you want to choose:";
        cin >> id;
        success = 0;
        for (i = 0; i < l; i++)
            if (b[i].get_id() == id)
            {
                m = i;
                success = 1;
            }
    } while (!success);
    system("cls");
    cout << endl << endl << endl;
    if (can_choose[m])
    {
        if (a[n].is_same_book(id))
            cout << "                  You have selected the book " << id << endl;
        else
        {
            b[m].change(b[m].get_id(), b[m].get_name(), b[m].get_prof(), b[m].get_place() - 1, b[m].get_year());
            ofstream outfile("book.txt");
            outfile.close();
            for (i = 0; i < l; i++)
                b[i].write();
            a[n].add_book(id);
            a[n].write_book();
            cout << "Here is the list of your books now:" << endl << endl << "ID\t\tGrade" << endl;
            a[n].display_book();
        }
    }
    else
        cout << "               The book '" << b[m].get_name() << "' cannot be selected." << endl;
    system("pause");
}
void my_book(int n)
{
    int i, l;
    Student a[999];
    Student s;
    system("cls");
    cout << endl << "                     Check My Books ang Grades" << endl << endl;
    can_open(s);
    l = s.length();
    for (i = 0; i < l; i++)
        a[i].read(i);
    cout << "                                                        Welcome," << a[n].get_name() << endl << endl;
    a[n].read_book();
    cout << "Book ID\tGrade" << endl << endl;
    a[n].display_book();
    system("pause");
}
void check_info(int n)
{
    int i, l;
    char choice;
    bool success = 0;
    string tele, addr, pass;
    Student a[999];
    Student s;
    system("cls");
    cout << endl << "                     Check and Change My Information" << endl << endl;
    can_open(s);
    l = s.length();
    for (i = 0; i < l; i++)
        a[i].read(i);
    cout << "                                                              Welcome," << a[n].get_name() << endl << endl;
    a[n].display();
    cout << endl << "Enter 1: Change my information." << endl;
    cout << "Enter 2: Change my password." << endl;
    cout << "Enter else: Return to the student menu:";
    cin >> choice;
    getchar();
    if (choice == '1')
    {
        do {
            cout << "Please input the new telephone number:";
            getline(cin, tele);
        } while (is_same_student_tele(tele));
        do {
            cout << "Please input the new address:";
            getline(cin, addr);
        } while (is_same_student_addr(addr));
        a[n].change(a[n].get_id(), a[n].get_year(), a[n].get_name(), a[n].get_pass(), a[n].get_gend(), tele, addr);
        ofstream outfile("student.txt");
        outfile.close();
        for (i = 0; i < l; i++)
            a[i].write();
        cout << "The information has been changed:" << endl;
        a[n].display();
        system("pause");
    }
    else if (choice == '2')
    {
        cout << "Please input the new password.";
        getline(cin, pass);
        a[n].change(a[n].get_id(), a[n].get_year(), a[n].get_name(), pass, a[n].get_gend(), a[n].get_tele(), a[n].get_addr());
        ofstream outfile("student.txt");
        outfile.close();
        for (i = 0; i < l; i++)
            a[i].write();
        cout << "The password has been changed." << endl;
        system("pause");
    }
}
void can_open(Book a)
{
    if (!a.canopen())
    {
        cout << endl << "The file cannot open.";
        cout << endl << "You have to restart the program to repair the error.";
        cout << endl << "Press enter to exit." << endl;
        system("pause");
        exit(0);
    }
}
void can_open(Student a)
{
    if (!a.canopen())
    {
        cout << endl << "The file cannot open.";
        cout << endl << "You have to restart the program to repair the error.";
        cout << endl << "Press enter to exit." << endl;
        system("pause");
        exit(0);
    }
}
bool is_same_student_name(string n)
{
    int i;
    bool success = 0;
    Student a[999];
    Student s;
    for (i = 0; i < s.length(); i++)
    {
        a[i].read(i);
        if (a[i].get_name() == n)
        {
            cout << "There exist the same name." << endl;
            success = 1;
        }
    }
    return success;
}
bool is_same_student_tele(string n)
{
    int i;
    bool success = 0;
    Student a[999];
    Student s;
    for (i = 0; i < s.length(); i++)
    {
        a[i].read(i);
        if (a[i].get_tele() == n)
        {
            cout << "There exist the same telephone number." << endl;
            success = 1;
        }
    }
    return success;
}
bool is_same_student_addr(string n)
{
    int i;
    bool success = 0;
    Student a[999];
    Student s;
    for (i = 0; i < s.length(); i++)
    {
        a[i].read(i);
        if (a[i].get_addr() == n)
        {
            cout << "There exist the same address." << endl;
            success = 1;
        }
    }
    return success;
}
bool is_same_book_name(string n)
{
    int i;
    bool success = 0;
    Book a[999];
    Book c;
    for (i = 0; i < c.length(); i++)
    {
        a[i].read(i);
        if (a[i].get_name() == n)
        {
            cout << "There exist the same name." << endl;
            success = 1;
        }
    }
    return success;
}

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

(0)

相关推荐

  • C++实现图书馆管理系统

    本文实例为大家分享了C++实现图书馆管理系统的具体代码,供大家参考,具体内容如下 一.实验名称 图书馆管理系统 二.实验目的 利用C++语言设计开发一个小型的图书馆管理系统模拟程序,具有如下功能:退出系统.增加图书.删除图书.借阅图书.归还图书.显示图书信息.查询图书等功能.实验中应掌握继承结构,并掌握对象.类.链表的使用和成员函数.构造函数的定义及调用,并掌握使用实验设备的技能技巧和程序的调试方法. 三.实验平台 运行环境:VC++6.0 四.问题分析 图书馆管理系统模拟程序可划分为7个模块:

  • C++顺序表实现图书管理系统

    本文为大家分享了C++顺序表实现图书管理系统的具体代码,供大家参考,具体内容如下 图书信息表包括以下10项常用的基本操作:图书信息表的创建和输出.排序.修改.逆序存储.最贵图书的查找.最爱图书的查找.最佳位置图书的查找.新图书的入库.旧图书的出库.图书去重. 代码: #include<iostream> #include<iomanip> #include<string> using namespace std; //函数结果状态代码 #define OK 1 #def

  • C++实现图书管理系统最新版

    图书管理系统设计,供大家参考,具体内容如下 一.问题描述及功能要求 (1)图书信息录入功能(图书信息用文件保存) (2)图书信息浏览功能 (3)查询和排序功能:(至少一种查询方式) .按书名查询 .按作者名查询 (4)图书信息的删除与修改 二.代码实现 带有注释 废话不说,直接代码,欢迎指正. 大家CV可能有不兼容的情况,可以滴滴,尽可能解决问题地回复. #include<iostream> #include<stdio.h> #include <stdlib.h> #

  • C++利用链表实现图书信息管理系统

    C++利用链表实现一个简单的图书信息管理系统,供大家参考,具体内容如下 (1)图书信息包括ISBN号.书名.作者名.价格和数量等: (2)系统的主要功能包括:图书信息的创建.输出图书信息.查询图书信息.增加图书信息.删除图书信息. #include <stdio.h> #include <stdlib.h> #include <string.h> //创建结构体及其成员 typedef struct Node { int num;//编号 char name[20];/

  • C++实现图书管理系统

    闲来无事,用C++做了一个图书管理系统,主要有借书.还书.图书管理.用户管理等功能,主要用到的技术有容器和文件,以及类的封装 #include <iostream> #include <list> #include <algorithm> #include <string.h> #include <fstream> #include <stdlib.h> using namespace std; class Mybook; class

  • C++实现简单的图书管理系统

    今天再为大家介绍另一个常用的管理系统--图书管理系统,希望大家可以亲自动手实践一下,下面就与大家一起分享我的劳动成果. 图书信息包括:登录号.书名.作者名.分类号.出版单位.出版时间.价格等.试设计一图书信息管理系统,使之能提供以下功能: (1)图书信息录入功能(图书信息用文件保存) (2)图书信息浏览功能 (3)查询和排序功能:(至少一种查询方式)         .按书名查询         .按作者名查询 (4)图书信息的删除与修改 分享代码如下 #include<iostream.h>

  • C/C++实现图书信息管理系统

    本文实例为大家分享了c/c++实现图书信息管理系统的具体代码,供大家参考,具体内容如下 程序流程图 源代码 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> #include <windows.h> #define N 100 struct type{ char ISBN[N];//ISBN编号(一般为13位) char bookName[N

  • C++实现简单图书馆管理系统

    本文实例为大家分享了C++实现简单图书馆管理系统的具体代码,供大家参考,具体内容如下 写了一个小项目,图书馆系统,功能如下: 1,添加书籍2,删除书籍(可删除还没外借的书籍)3,读者借书4,读者还书5,按书籍登入号查看信息(每一本书的书籍登入号唯一,如有5本相同书名作者的书,那就有5个不同的书籍登入号)6,查询所有图书信息(可以直接查看到同本书在图书馆中的剩余和借出情况)7,查看指定读者的借书详情8,注册新读者9,查看所有书籍信息(可以详细到每个登入号和此登入号书籍的借阅情况:如谁借的,借阅日期

  • C++实现简易图书馆管理系统

    本文实例为大家分享了C++实现简易图书馆管理系统的具体代码,供大家参考,具体内容如下 思路 在本程序中共有四个类: book类:此类有书的基本信息:书名,编号,作者,价格等,和基本的get()和set()方法.类图如下: library类:此类中有一个存放的书的数组,并且可以对书进行,查询,借阅,归还,添加,等相关操作.类图如下: reader_infor类:此类中有读者的相关信息:名字,学号,年级,借书数量.和基本的get()和set()方法,类图如下: reader_admin类:此类中有一

  • C++实现图书馆管理系统源码

    本文实例为大家分享了C++实现图书馆管理系统的具体代码,供大家参考,具体内容如下 总体思想 用C++开发图书馆管理系统需要对学生和图书分别建立class,调用class中的方法实现学生登陆账号借书,还书,图书馆管理员查看信息等操作. Student.h #pragma once #include<string> #include<vector> #include<iostream> #include<fstream> #include<sstream&

  • C语言学生管理系统源码分享

    本文实例为大家分享了C语言学生管理系统源码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> //结构体可以存放的学生信息最大个数,不可变变量 int const MAX_LENGTH=100; //学生信息结构体数组,最多可以存放100个学生信息 struct student{ int id; //学号 char *name; //姓名 int age; //年龄 float c_score; //C语言成绩 float engl

  • java(swing)+ mysql实现学生信息管理系统源码

    本文实例为大家分享了java实现学生信息管理系统源码,供大家参考,具体内容如下 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import

  • java+SQL server2008学生信息管理系统源码

    本文实例为大家分享了java学生信息管理系统源码的具体代码,供大家参考,具体内容如下 1.StudetManage类(主界面) package com.sms3; import java.awt.*; import javax.swing.*; import java.awt.event.*; public class StudentManage extends JFrame implements ActionListener { /** * @param args */ public stat

  • Java+MySQL实现学生信息管理系统源码

    基于Java swing+MySQL实现学生信息管理系统:主要实现JDBC对学生信息进行增删改查,应付一般课设足矣,分享给大家.(由于篇幅原因,代码未全部列出,如有需要留下邮箱) 鉴于太多同学要源码,实在发不过来,上传到github上 https://github.com/ZhuangM/student.git 1. 开发环境:jdk7+MySQL5+win7 代码结构:model-dao-view 2. 数据库设计--建库建表语句: CREATE DATABASE student; DROP

  • C语言职工信息管理系统源码

    本文实例为大家分享了C语言职工信息管理系统的具体代码,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> struct worker { char ID[20];//工号 char name[20];//姓名 char sex[5];//性别 char born[20];//生日 char edu[20];//学历 char po

  • Java+Mysql学生管理系统源码

    最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事.闲来无事,也就自己写了一个,不过功能实现的不是很多. 开发语言:java: 开发环境:Mysql, java: 开发工具:eclipse 开发此案例,首先得在电脑上有java开发环境和Mysql, java开发环境与Mysql的搭建,就不再叙述了,如果需要,请联系我最下面的联系方式:dingyelf@aliyun.com 此次系统比较简易:数据库中只有一个表:stu;功能:能够对学生增加.删除.修改. 开发步骤:  

  • Java版水果管理系统源码

    水果管理系统Java版分享给大家. 主类 FruitsDemo /** * 功能: * 1. 查看所有的水果 * 2. 添加新的水果(添加的时候判断水果名是否有重复) * 3. 对所有的水果进行排序(价格排序.库存排序) * 4. 删除指定的水果 * 5. 退出系统 * * 注意: * 1. 每种水果都必须有水果id,水果名,水果数量,水果价格 * 2. 添加水果时,要由用户输入水果名.数量和价格 * 3. 删除水果时要二次确认 * * 评分依据: 功能实现的情况,代码规范性(命名规范.格式规范

  • java银行管理系统源码

    银行管理系统 (java实现),供大家参考,具体内容如下 1.创建一个封装类(Studentss) import javax.naming.Name; import javax.naming.NamingEnumeration; public class Studentss { //无参 public Studentss(){} //有参 public Studentss(String name,String account,int balance,String uesrpwds,String

  • python实现学生信息管理系统源码

    本文实例为大家分享了python实现学生信息管理系统的具体代码,供大家参考,具体内容如下 代码如下: Project.py文件内容: class Student(object): # 建立学生信息储存的列表(嵌套的方式) studentInformation = [] # 对学生对象的数据进行说明 studentShow = ["学号:", "姓名:", "年龄:"] # 录入学生 def addstudent(self): sno = inpu

随机推荐