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