This commit is contained in:
2018-06-08 02:26:03 +07:00
parent 9e8483720f
commit 778b48ccb8
20 changed files with 2452 additions and 0 deletions
+106
View File
@@ -0,0 +1,106 @@
#ifndef _ADMIN_
#define _ADMIN_
#include<string>
#include<iostream>
#include<iomanip>
#include<sstream>
#include "Helper.h"
#include "User.h"
using namespace std;
class Admin : public User {
public:
Admin() {};
~Admin() {};
bool addUser(User user, UserList &db_user_list) {
if (db_user_list.findUserByUsername(user.username) != -1) {
return 0;
}
else {
db_user_list.addToList(user);
return 1;
}
}
bool removeUser(string username, UserList &db_user_list, StudentList &db_st_list, TeacherList &db_tc_list) {
int index = db_user_list.findUserByUsername(username);
if (index == -1 || db_user_list.list[index].role == "admin") {
return 0;
}
else {
string s = db_user_list.list[index].role;
db_user_list.removeFromList(index);
if (s == "student") {
stringstream ss;
ss.str(username);
int id;
ss >> id;
for (int i = 0; i < db_st_list.size; i++) {
if (db_st_list.list[i].st_number == id) {
db_st_list.removeFromList(i);
return 1;
}
}
}
else {
for (int i = 0; i < db_tc_list.size; i++) {
if (db_tc_list.list[i].tc_identify == username) {
db_tc_list.removeFromList(i);
return 1;
}
}
}
}
}
bool addStudent(StudentList &db_st_list, UserList &db_user_list) {
Student st;
User student;
student.role = "student";
cout << "Input number, name, birthday, \"hometown\": (separate by comma)" << endl;
string s;
getline(cin, s, ',');
student.username = student.password = s;
istringstream(s) >> st.st_number;
getline(cin, s, ',');
st.st_name = s;
getline(cin, s, ',');
st.st_birthday = s;
getline(cin, s);
st.st_home_town = s;
if (addUser(student, db_user_list)) {
db_st_list.addToList(st);
return 1;
}
else {
return 0;
}
}
bool addTeacher(TeacherList &db_tc_list, UserList &db_user_list) {
Teacher tc;
User teacher;
teacher.role = "teacher";
cout << "Input identify, name, birthday, \"phone number\", \"hometown\": (separate by comma)" << endl;
string s;
getline(cin, s, ',');
tc.tc_identify = teacher.username = teacher.password = s;
getline(cin, s, ',');
tc.tc_name = s;
getline(cin, s, ',');
tc.tc_birthday = s;
getline(cin, s, ',');
tc.tc_phone_number = s;
getline(cin, s);
tc.tc_home_town = s;
if (addUser(teacher, db_user_list)) {
db_tc_list.addToList(tc);
return 1;
}
else {
return 0;
}
}
};
#endif // !_ADMIN_
+197
View File
@@ -0,0 +1,197 @@
#include "Course.h"
#include <iostream>
#include <iomanip>
#include <string>
#include <sstream>
using namespace std;
string toUpperCase(string&input) {
for (string::iterator i = input.begin(); i != input.end(); i++) {
*i = toupper(*i);
}
return input;
}
inline bool operator==(Course &lhs, Course &rhs) {
return lhs.course_id == rhs.course_id;
}
inline bool operator==(Course &lhs, string &rhs) {
return lhs.course_id == rhs;
}
inline bool operator==(string &lhs, Course &rhs) {
return lhs == rhs.course_id;
}
inline bool operator!=(Course &lhs, Course &rhs) {
return !(lhs.course_id == rhs.course_id);
}
inline bool operator!=(Course &lhs, string &rhs) {
return !(lhs.course_id == rhs);
}
inline bool operator!=(string &lhs, Course &rhs) {
return !(lhs == rhs.course_id);
}
bool CourseList::addToCourseList(Course newCourse){
newCourse.total_st = 0;
if (this->isCourseExist(newCourse.course_id) == true)
return false;
else{
this->addToList(newCourse);
return true;
}
}
void Course::printCourseInfo(){
cout << setfill('-') << setw(50) << "-" << "Course" << setfill('-') << setw(50) << "-" << setfill(' ') << endl;
cout
<< left << setw(10) << "Course Id"
<< left << setw(25) << "Falcuty"
<< left << setw(15) << "Subject Id"
<< left << setw(25) << "Subject Name"
<< left << setw(6) << "Credit" << endl;
cout << setfill('-') << setw(110) << "-" << setfill(' ') << endl;
cout
<< left << setw(10) << this->course_id
<< left << setw(25) << this->falcuty
<< left << setw(15) << this->sub_id
<< left << setw(25) << this->sub_name
<< left << setw(6) << this->credit << endl;
}
Course* CourseList::findCourseById(string id) {
for (size_t i = 0; i < size; i++) {
if (list[i].course_id == id) {
return &list[i];
}
}
return NULL;
}
CourseList* CourseList::findCourseByName(string name) {
CourseList* cList = new CourseList();
for (size_t i = 0; i < size; i++) {
string s = this->list[i].sub_name;
toUpperCase(s);
toUpperCase(name);
int found = s.find(name);
if (found != string::npos) {
cList->addToList(list[i]);
}
}
return cList;
}
CourseList* CourseList::findAllCourseById(arrayList<string> id_list) {
CourseList* cList = new CourseList();
for (size_t i = 0; i < this->size; i++) {
string s = this->list[i].course_id;
for (size_t j = 0; j < id_list.size; j++) {
string s1 = id_list.list[j];
toUpperCase(s);
toUpperCase(s1);
if (s == s1) {
cList->addToList(list[i]);
break;
}
}
}
return cList;
}
CourseList* CourseList::findAllCourseByName(arrayList<string> name_list) {
CourseList* cList = new CourseList();
for (size_t i = 0; i < this->size; i++) {
string s = this->list[i].sub_name;
for (size_t j = 0; j < name_list.size; j++) {
string s1 = name_list.list[j];
toUpperCase(s);
toUpperCase(s1);
int found = s.find(s1);
if (found != string::npos) {
cList->addToList(list[i]);
break;
}
}
}
return cList;
}
void CourseList::addStudentToCourse(string course_id) {
for (size_t i = 0; i < this->size; i++) {
if (this->list[i].course_id == course_id) {
this->list[i].total_st++;
this->list[i].isCourseFull();
break;
}
}
}
void CourseList::removeStudentToCourse(string course_id) {
for (size_t i = 0; i < this->size; i++) {
if (this->list[i].course_id == course_id && this->list[i].total_st > 0) {
this->list[i].total_st--;
break;
}
}
}
void CourseList::printCourse() {
cout << setfill('-') << setw(50) << "-" << "Course" << setfill('-') << setw(50) << "-" << setfill(' ') << endl;
cout << left << setw(5) << "STT"
<< left << setw(10) << "Course Id"
<< left << setw(25) << "Falcuty"
<< left << setw(15) << "Subject Id"
<< left << setw(25) << "Subject Name"
<< left << setw(15) << "Student/Slot"
<< left << setw(6) << "Credit" << endl;
cout << setfill('-') << setw(110) << "-" << setfill(' ') << endl;
for (size_t i = 0; i < this->size; i++) {
ostringstream buffer;
buffer << this->list[i].total_st << "/" << this->list[i].max_st;
cout << left << setw(5) << i + 1
<< left << setw(10) << this->list[i].course_id
<< left << setw(25) << this->list[i].falcuty
<< left << setw(15) << this->list[i].sub_id
<< left << setw(25) << this->list[i].sub_name
<< left << setw(15) << buffer.str()
<< left << setw(6) << this->list[i].credit << endl;
}
}
CourseList* CourseList::findCourseByFacuty(string fal) {
CourseList* cList = new CourseList();
for (size_t i = 0; i < size; i++) {
string s = this->list[i].falcuty;
toUpperCase(s);
toUpperCase(fal);
if (s.find(fal) != string::npos) {
cList->addToList(list[i]);
}
}
return cList;
}
CourseList* CourseList::findAllCourseByFalcuty(arrayList<string> fal_list) {
CourseList* cList = new CourseList();
for (size_t i = 0; i < this->size; i++) {
string s = this->list[i].falcuty;
for (size_t j = 0; j < fal_list.size; j++) {
string s1 = fal_list.list[j];
toUpperCase(s);
toUpperCase(s1);
int found = s.find(s1);
if (found != string::npos) {
cList->addToList(list[i]);
break;
}
}
}
return cList;
}
bool CourseList::isCourseExist(string id) {
Course* tmp = new Course();
tmp = findCourseById(id);
if (tmp == NULL) {
return false;
}
else return true;
}
+62
View File
@@ -0,0 +1,62 @@
#ifndef _COURSE_
#define _COURSE_
#include<string>
#include "Helper.h"
using namespace std;
string toUpperCase(string&input);
struct Course{
string course_id;
string sub_id;
string falcuty;
string sub_name;
int total_st;
int max_st;
int credit;
Course() {};
Course(string sub_id, string sub_name, string falcuty) {
this->sub_id = sub_id;
this->sub_name = sub_name;
this->falcuty = falcuty;
};
~Course() {};
void isCourseFull() {
if (total_st > max_st) {
this->max_st++;
}
}
void CreateNewCourse(string sub_id, string sub_name, string falcuty, int total_st, int max_st, int credit){
this->sub_id = sub_id;
this->sub_name = sub_name;
this->falcuty = falcuty;
this->total_st = total_st;
this->max_st = max_st;
this->credit = credit;
}
void printCourseInfo(); // dung de ghi ra thong tin mot course ma teacher vua mo
};
//----------------------THIS IS FOR COURSE LIST--------------------
class CourseList : public arrayList<Course> {
public:
CourseList() {};
~CourseList() {};
Course* findCourseById(string id);
CourseList* findCourseByName(string name);
CourseList* findAllCourseById(arrayList<string> id_list);
CourseList* findAllCourseByName(arrayList<string> name_list);
CourseList* findCourseByFacuty(string fal);
CourseList* findAllCourseByFalcuty(arrayList<string> fal_list);
bool isCourseExist(string id);
bool addToCourseList(Course newCourse); // add a opened course to courseList ( course.csv )
void addStudentToCourse(string course_id);
void removeStudentToCourse(string course_id);
void printCourse();
};
#endif // !_COURSE_
+262
View File
@@ -0,0 +1,262 @@
#include "DBHelper.h"
bool loadUsers(UserList &user_list) {
ifstream file;
file.open("user.csv", ios::in);
if (file.is_open() == NULL) {
return false;
}
else {
string line;
while (getline(file, line)) {
User data;
string str;
stringstream ss;
ss.str(line);
getline(ss, str, ',');
data.username = str;
getline(ss, str, ',');
data.password = str;
getline(ss, str, ',');
data.role = str;
user_list.addToList(data);
}
file.close();
return true;
}
}
bool loadCourse(CourseList &courseList) {
ifstream file;
file.open("course.csv", ios::in);
if (file.is_open() == NULL) {
return false;
}
else {
string line;
while (getline(file, line)) {
Course data;
string str;
stringstream ss;
ss.str(line);
getline(ss, str, ',');
data.course_id = str;
getline(ss, str, ',');
data.falcuty = str;
getline(ss, str, ',');
data.sub_id = str;
getline(ss, str, ',');
data.sub_name = str;
getline(ss, str, ',');
istringstream(str) >> data.max_st;
getline(ss, str, ',');
istringstream(str) >> data.total_st;
getline(ss, str, ',');
istringstream(str) >> data.credit;
courseList.addToList(data);
}
file.close();
return true;
}
}
bool loadStudentCourse(StudentCourseList &st_course_list) {
ifstream file;
file.open("student_course.csv", ios::in);
if (file.is_open() == NULL) {
return false;
}
else {
string line;
while (getline(file, line)) {
studentCourse data;
string str, str1, str2, str3;
stringstream ss, sstr1, sstr2, sstr3;
ss.str(line);
getline(ss, str, ';');
getline(ss, str1, ';');
getline(ss, str2, ';');
getline(ss, str3);
istringstream(str) >> data.st_num;
sstr1.str(str1);
while (getline(sstr1, str1, ',')) {
data.st_course.addToList(str1);
}
sstr2.str(str2);
while (getline(sstr2, str2, ',')) {
int num;
istringstream(str2) >> num;
data.st_point.addToList(num);
}
double st_gpa;
istringstream(str3) >> st_gpa;
st_course_list.addToList(data);
}
file.close();
return true;
}
}
bool loadStudentInfo(StudentList &st_list) {
ifstream file;
file.open("student.csv", ios::in);
if (file.is_open() == NULL) {
return false;
}
else {
string line;
while (getline(file, line)) {
Student data;
string str;
stringstream ss;
ss.str(line);
getline(ss, str, ',');
istringstream(str) >> data.st_number;
getline(ss, str, ',');
data.st_name = str;
getline(ss, str, ',');
data.st_birthday = str;
getline(ss, str);
data.st_home_town = str;
st_list.addToList(data);
}
file.close();
return true;
}
}
bool loadTeacherInfo(TeacherList& tc_list) {
ifstream file;
file.open("teacher.csv", ios::in);
if (file.is_open() == NULL) {
return false;
}
else {
string line;
while (getline(file, line)) {
Teacher data;
string str;
stringstream ss;
ss.str(line);
getline(ss, str, ',');
data.tc_identify = str;
getline(ss, str, ',');
data.tc_name = str;
getline(ss, str, ',');
data.tc_birthday = str;
getline(ss, str, ',');
data.tc_phone_number = str;
getline(ss, str);
data.tc_home_town = str;
tc_list.addToList(data);
}
file.close();
return true;
}
}
void writeToCouresFile(CourseList &courseList) {
ofstream file;
file.open("course.csv", ios::trunc);
for (size_t i = 0; i<courseList.size; i++) {
file << courseList.list[i].course_id << ",";
file << courseList.list[i].falcuty << ",";
file << courseList.list[i].sub_id << ",";
file << courseList.list[i].sub_name << ",";
file << courseList.list[i].max_st << ",";
file << courseList.list[i].total_st << ",";
file << courseList.list[i].credit << "\n";
}
file.close();
}
void writeToStudentFile(StudentList &st_list) {
ofstream file;
file.open("student.csv", ios::trunc);
for (size_t i = 0; i< st_list.size; i++) {
file << st_list.list[i].st_number << ",";
file << st_list.list[i].st_name << ",";
file << st_list.list[i].st_birthday << ",";
file << st_list.list[i].st_home_town << "\n";
}
file.close();
}
void writeToTeacherFile(TeacherList &tc_list) {
ofstream file;
file.open("teacher.csv", ios::trunc);
for (size_t i = 0; i < tc_list.size; i++) {
file << tc_list.list[i].tc_identify << ",";
file << tc_list.list[i].tc_name << ",";
file << tc_list.list[i].tc_birthday << ",";
file << tc_list.list[i].tc_phone_number << ",";
file << tc_list.list[i].tc_home_town << "\n";
}
file.close();
}
void writeToStudentCourseFile(StudentCourseList &st_course_list) {
ofstream file;
file.open("student_course.csv", ios::trunc);
for (size_t i = 0; i< st_course_list.size; i++) {
int num = st_course_list.list[i].getCourseNum();
file << st_course_list.list[i].st_num << ";";
for (size_t j = 0; j < num; j++) {
if (j == num - 1) {
file << st_course_list.list[i].st_course.list[j] << ";";
}
else {
file << st_course_list.list[i].st_course.list[j] << ",";
}
}
for (size_t j = 0; j < num; j++) {
if (j == num - 1) {
file << st_course_list.list[i].st_point.list[j] << ";";
}
else {
file << st_course_list.list[i].st_point.list[j] << ",";
}
}
file << st_course_list.list[i].getGPA() << endl;
}
file.close();
}
void writeToUserFile(UserList &user_list) {
ofstream file;
file.open("user.csv", ios::trunc);
for (size_t i = 0; i< user_list.size; i++) {
file << user_list.list[i].username << ",";
file << user_list.list[i].password << ",";
file << user_list.list[i].role << "\n";
}
file.close();
}
+25
View File
@@ -0,0 +1,25 @@
#ifndef _DBHELPER_
#define _DBHELPER_
#include<fstream>
#include<iostream>
#include<string.h>
#include<sstream>
#include "User.h"
#include "Student.h"
#include "Teacher.h"
using namespace std;
bool loadUsers(UserList &user_list);
bool loadCourse(CourseList &courseList);
bool loadStudentCourse(StudentCourseList &st_course_list);
bool loadStudentInfo(StudentList &st_list);
bool loadTeacherInfo(TeacherList &tc_list);
void writeToCouresFile(CourseList &courseList);
void writeToStudentFile(StudentList &st_list);
void writeToTeacherFile(TeacherList &tc_list); //h
void writeToStudentCourseFile(StudentCourseList &st_course_list);
void writeToUserFile(UserList &user_list);
#endif // !_DBHELPER_
+96
View File
@@ -0,0 +1,96 @@
#ifndef _HELPER_
#define _HELPER_
#include <string.h>
using namespace std;
#define MAX_USER 100
using namespace std;
template <class T>
class arrayList {
public:
T* list;
size_t size;
size_t arrayCapacity;
public:
arrayList() {
arrayCapacity = MAX_USER;
this->list = new T[MAX_USER];
size = 0;
}
arrayList(int capacity) {
arrayCapacity = capacity;
this->list = new T[capacity];
size = 0;
}
~arrayList() {
}
void removeFromList(int index);
void removeFromList_(T data);
void addToList(T newData);
void modifyListSize();
bool isEmpty() {
if (size == 0) {
return true;
}
else return false;
}
bool isExist(T data, int&index) {
for (size_t i = 0; i < size; i++) {
if (list[i] == data) {
index = i;
return true;
}
}
index = -1;
return false;
}
arrayList<T>& operator=(arrayList<T> &r) {
if (this == &r)return *this;
this->arrayCapacity = r.arrayCapacity;
this->size = r.size;
memcpy(this->list, r.list, size * sizeof(string));
return *this;
}
};
template <class T>
void arrayList<T>::modifyListSize() {
this->arrayCapacity = this->size + 100;
T* newList = new T[arrayCapacity];
memmove(newList, this->list, sizeof(T)*size);
this->list = newList;
}
/// This function addd data at the end of array
template <class T>
void arrayList<T>::addToList(T newData) {
if (size < arrayCapacity) {
this->list[size] = newData;
this->size++;
}
if (arrayCapacity - size > 150 || arrayCapacity - size < 10) {
modifyListSize();
}
}
template <class T>
void arrayList<T>::removeFromList(int index) {
memmove(this->list + index, this->list + index + 1, sizeof(T)*size);
size--;
if (arrayCapacity - size > 100) {
modifyListSize();
}
}
template <class T>
void arrayList<T>::removeFromList_(T data) {
int index;
this->isExist(data, index);
memmove(this->list + index, this->list + index + 1, sizeof(T)*size);
size--;
if (arrayCapacity - size > 100) {
modifyListSize();
}
}
#endif // _HELPER_
+57
View File
@@ -0,0 +1,57 @@
#include <iostream>
#include "User.h"
#include "Student.h"
#include "Teacher.h"
#include "process.h"
#include "DBHelper.h"
UserList db_user_list;
CourseList db_course_list;
StudentList db_st_list;
TeacherList db_tc_list;
StudentCourseList db_st_course_list;
using namespace std;
void main() {
loadUsers(db_user_list);
loadCourse(db_course_list);
loadStudentCourse(db_st_course_list);
loadStudentInfo(db_st_list);
loadTeacherInfo(db_tc_list);
User random_user;
while (startProgram(random_user, db_user_list)) {
system("cls");
if (random_user.role == "student") {
Student st;
st = random_user;
db_st_list.getStudentInfo(st);
if (studentMenu(st, db_st_course_list, db_course_list, db_user_list) == false) {
break;
}
}
else if (random_user.role == "teacher") {
Teacher tc;
tc = random_user;
db_tc_list.getTeacherInfo(tc);
if (teacherMenu(tc, db_st_course_list, db_course_list, db_user_list) == false){
break;
}
}
else if (random_user.role == "admin") {
Admin ad;
ad.username = random_user.username;
ad.password = random_user.password;
ad.role = random_user.role;
if (adminMenu(ad, db_st_list, db_tc_list, db_user_list) == false) {
break;
}
}
}
writeToCouresFile(db_course_list);
writeToStudentCourseFile(db_st_course_list);
writeToStudentFile(db_st_list);
writeToTeacherFile(db_tc_list);
writeToUserFile(db_user_list);
return;
}
+768
View File
@@ -0,0 +1,768 @@
#include "Process.h"
#include "Student.h"
#include "Teacher.h"
#include "DBHelper.h"
#include "Admin.h"
#include <iostream>
#include <string>
#include <sstream>
#include <cctype>
using namespace std;
bool startProgram(User& random_user, UserList user_list) {
cout << "\t\t\t" << "+++++++++++++++++++++++++++++++++++++|\n\n";
cout << "\t\t\t" << "| Welcome to student manager site |\n\n";
cout << "\t\t\t" << "+++++++++++++++++++++++++++++++++++++|\n\n\n";
while (true) {
cout << "Username (Type q to exit): ";
cin >> random_user.username;
cout << "Password (Type q to exit): ";
cin >> random_user.password;
cin.ignore(INT_MAX, '\n');
if (random_user.username == "q" && random_user.password == "q") {
return false;
}
if (user_list.authentication(random_user)) {
return true;
}
else {
cout << "===================" << endl;
cout << "Login Failed" << endl;
bool rep = true;
do {
char option;
cout << "Continue? (Y/N) ";
cin >> option;
cin.ignore(INT_MAX, '\n');
switch (option) {
case 'Y':rep = false; break;
case 'N':return false;
default: {
cout << "Error: option must be Y or N " << endl;
break;
}
}
system("cls");
} while (rep);
}
}
}
bool studentMenu(Student& st, StudentCourseList db_st_course_list, CourseList db_course_list, UserList user_list) {
while (st.isLogin() == true) {
cout << setfill('-') << setw(50) << "-" << "Student: " << st.st_number << setw(50) << "-" << endl;
cout << setfill(' ') << setw(30) << left << "1. Change Password [cp]" << setw(30) << left << "2. View my courses [vc]" << setw(30) << left << "3. Search courses[sc]" << setw(30) << left << "4. Join course [jc]" << endl;
cout << setw(30) << left << "5. Cancel course [xc]" << setw(30) << left << "6. Log out [lo]" << setw(30) << left << "7. Help [h]" << endl;
cout << "Your command (press [e] to quit program): ";
string command;
stringstream ss;
string agv;
arrayList<string> agvList;
getline(cin, command);
ss.str(command);
do{
ss >> agv;
if (ss.fail() || agv == "") {
break;
}
else agvList.addToList(agv);
} while (true);
if (agvList.list[0] == "e" && agvList.size == 1) return false;
if (studentProcess(st, user_list, db_st_course_list, db_course_list, agvList) == true) {
}
else {
cout << "Error: command not found" << endl;
}
}
return true;
}
bool teacherMenu(Teacher& tc, StudentCourseList& db_st_course_list, CourseList& db_course_list, UserList user_list){
while (tc.isLogin() == true){
cout << setfill('-') << setw(30) << "-" << "Lecturer: " << tc.tc_name << setw(50) << "-" << endl;
cout << "1. Change Password [cp (new password) ]\n";
cout << "2. Open a course [oc]\n";
cout << "3. Grading student's course [gc]\n";
//cout << "4. Modify grade [mg]\n";
cout << "4. Log out [lo]\n";
cout << "5. Help [h]" << endl;
cout << "Your command (press [e] to quit program): ";
string command;
stringstream ss;
string agv;
arrayList<string> agvList;
getline(cin, command);
ss.str(command);
do{
ss >> agv;
if (ss.fail() || agv == "") {
break;
}
else agvList.addToList(agv);
} while (true);
if (agvList.list[0] == "e" && agvList.size == 1) return false;
if (teacherProcess(tc, user_list, db_st_course_list, db_course_list, agvList) == true) {
}
else {
cout << "Error: command not found" << endl;
}
}
//system("cls"); // xoa console menu sau moi lan xong 1 thao tac
return true;
}
bool studentProcess(Student&st, UserList& user_list, StudentCourseList&db_st_course_list, CourseList db_course_list, arrayList<string> agvList) {
if (agvList.list[0] == "cp") {
if (agvList.size == 2) {
string newPassword = agvList.list[1];
st.changePassword(newPassword);
user_list.updateList(st);
return true;
}
else if (agvList.size == 1){
string newPassword;
cout << "Your new password: ";
cin >> newPassword;
cin.ignore(INT_MAX, '\n');
st.changePassword(newPassword);
user_list.updateList(st);
cout << "CHANGE PASSWORD SUCCESSFULLY" << endl;
return true;
}
}
else if (agvList.list[0] == "vc") {
system("cls");
studentCourse enrolledCourse;
st.getStudentCourse(db_st_course_list, enrolledCourse);
st.showStudentCourse(&db_course_list, enrolledCourse);
return true;
}
else if (agvList.list[0] == "sc") {
if (agvList.list[1] == "-n") {
if (agvList.size > 2) {
agvList.removeFromList(0);
agvList.removeFromList(0);
CourseList* cList = db_course_list.findAllCourseByName(agvList);
if (cList->size == 0) {
cout << "Error: Failed to find data" << endl;
}
else {
system("cls");
cList->printCourse();
}
}
else if (agvList.size == 2) {
cout << "Course to search: ";
string course_name;
getline(cin, course_name);
CourseList* cList = db_course_list.findCourseByName(course_name);
if (cList->size == 0) {
cout << "Error: Failed to find data" << endl;
}
else {
system("cls");
cList->printCourse();
}
}
return true;
}
else if (agvList.list[1] == "-f") {
if (agvList.size > 2) {
agvList.removeFromList(0);
agvList.removeFromList(0);
CourseList* cList = db_course_list.findAllCourseByFalcuty(agvList);
cList->printCourse();
}
else if (agvList.size == 2) {
cout << "Falcuty to search: ";
string fal_name;
getline(cin, fal_name);
CourseList* cList = db_course_list.findCourseByFacuty(fal_name);
cList->printCourse();
}
return true;
}
}
else if (agvList.list[0] == "jc") {
studentCourse enrolledCourse;
st.getStudentCourse(db_st_course_list, enrolledCourse);
if (agvList.size > 1) {
agvList.removeFromList(0);
if (st.joinCourse(enrolledCourse, agvList, db_st_course_list, db_course_list) == false) {
if (agvList.size != 0) {
cout << "Error: Failed to join in ";
for (size_t i = 0; i < agvList.size; i++) {
cout << "'" << agvList.list[i] << "'";
}
cout << ". You has already joined the course or it is not opened." << endl;
}
}
else {
cout << "Your have successfully joined the courses." << endl;
}
}
else if (agvList.size == 1) {
string courseId;
arrayList<string> join_course;
cout << "Course to join: ";
cin >> courseId;
cin.ignore(INT_MAX, '\n');
join_course.addToList(courseId);
if (st.joinCourse(enrolledCourse, join_course, db_st_course_list, db_course_list) == false) {
cout << "Error: Failed to join in ";
for (size_t i = 0; i < join_course.size; i++) {
cout << join_course.list[i] << " | ";
}
cout << ". You has already joined the course or it is not opened." << endl;
}
else {
cout << "Your have successfully joined the courses." << endl;
}
}
return true;
}
else if (agvList.list[0] == "xc") {
studentCourse enrolledCourse;
st.getStudentCourse(db_st_course_list, enrolledCourse);
if (agvList.size > 1) {
agvList.removeFromList(0);
for (size_t i = 0; i < agvList.size; i++) {
if (enrolledCourse.hasEnrolled(agvList.list[i]) == false) {
cout << "Error: You have not joined " << agvList.list[i] << endl;
cout << endl;
}
else {
cout << "You have canceled join " << agvList.list[i] << endl;
}
}
st.cancelCourse(enrolledCourse, agvList, db_st_course_list, db_course_list);
}
else if (agvList.size == 1) {
string courseId;
arrayList<string> cancel_course;
cout << "Course to cancel: ";
cin >> courseId;
cin.ignore(INT_MAX, '\n');
cancel_course.addToList(courseId);
for (size_t i = 0; i < agvList.size; i++) {
if (enrolledCourse.hasEnrolled(cancel_course.list[i]) == false) {
cout << "Error: You have not joined " << agvList.list[i] << endl;
cout << endl;
}
else {
cout << "You have canceled join " << agvList.list[i] << endl;
}
}
st.cancelCourse(enrolledCourse, cancel_course, db_st_course_list, db_course_list);
}
return true;
}
else if (agvList.list[0] == "lo") {
st.logout();
system("cls");
return true;
}
else if (agvList.list[0] == "h") {
if (agvList.size == 1) {
system("cls");
cout << setw(40) << left << "Description " << setw(10) << left << "Command" << setw(10) << left << "Argument list" << endl;
cout << setw(100) << setfill('-') << "-" << setfill(' ') << endl;
cout << setw(40) << left << "Change password" << setw(10) << left << "cp" << setw(10) << left << "<new password> (optional)" << endl;
cout << setw(40) << left << "View all course" << setw(10) << left << "vc" << setw(10) << left << "none" << endl;
cout << setw(40) << left << "Search coures by keyword" << setw(10) << left << "sc -n" << setw(10) << left << "<list of course's name> (optional)" << endl;
cout << setw(40) << left << "Search coures by falcuty" << setw(10) << left << "sc -f" << setw(10) << left << "<list of falcuty's name> (optional)" << endl;
cout << setw(40) << left << "Cancel course" << setw(10) << left << "xc" << setw(10) << left << "<list of course id> (optional)" << endl;
cout << setw(40) << left << "Join course" << setw(10) << left << "jc" << setw(10) << left << "<list of course id> (optional)" << endl;
cout << setw(100) << setfill('=') << "=" << setfill(' ') << endl;
cout << "Press any key to exit." << endl;
getchar();
system("cls");
return true;
}
}
return false;
}
bool teacherProcess(Teacher& tc, UserList& user_list, StudentCourseList& db_st_course_list, CourseList& db_course_list, arrayList<string> agvList) {
#pragma region ChangePass
if (agvList.list[0] == "cp"){
string newPassword;
if (agvList.size == 2){
newPassword = agvList.list[1];
}
else if (agvList.size == 1){
cout << "Input your new password: ";
cin >> newPassword;
cin.ignore(INT_MAX, '\n');
}
tc.changePassword(newPassword);
user_list.updateList(tc);
cout << "CHANGE PASSWORD SUCCESSFULLY\n";
return true;
}
#pragma endregion
#pragma region OpenCourse
else if (agvList.list[0] == "oc"){
CourseList* temp = new CourseList();
temp = db_course_list.findCourseByFacuty(tc.tc_name);
if (temp->size > 5){
cout << "You has open 5 courses for this term so you cannot open more course.\n";
return true;
}
else{
string newCourse_sub_id; //ms viet tat mon hoc
string newCourse_class_id; //nhom lop
string newCourse_id; //ms mon hoc
string newCourse_name; //ten mon hoc
int newCourse_max; //so luong sv toi da
int newCourse_ncredit; //tin chi
do{
cout << "Input new sub_course ID you want to open: ";
cin >> newCourse_sub_id;
cin.ignore(INT_MAX, '\n');
cout << "Input class group: ";
cin >> newCourse_class_id;
cin.ignore(INT_MAX, '\n');
//newCourse_sub_id=toUpperCase(newCourse_sub_id);
//newCourse_class_id = toUpperCase(newCourse_class_id);
newCourse_id = newCourse_sub_id + "_" + newCourse_class_id;
if (db_course_list.isCourseExist(newCourse_id)){
cout << "You can not open an existed course. Try again! \n";
}
} while (db_course_list.isCourseExist(newCourse_id));
cout << "Input new course details.\n";
cout << "Input course name: "; getline(cin, newCourse_name);
do{
cout << "Input student number limitation (at least 10) : "; cin >> newCourse_max;
cin.clear();
cin.ignore(INT_MAX, '\n');
if (newCourse_max < 10 || cin.bad() || newCourse_max != (int)newCourse_max){
cout << "Invalid input.Try again!\n";
}
} while (cin.bad() || newCourse_max < 10 || newCourse_max != (int)newCourse_max);
do{
cout << "Input course's credit number (1-6): "; cin >> newCourse_ncredit;
cin.clear();
cin.ignore(INT_MAX, '\n');
if (!cin.good() || newCourse_ncredit<1 || newCourse_ncredit>6 || newCourse_ncredit != (int)newCourse_ncredit){
cout << "Invalid input.Try again!\n";
}
} while (cin.bad() || newCourse_ncredit < 1 || newCourse_ncredit != (int)newCourse_ncredit);
Course newCourse(newCourse_sub_id, newCourse_name, tc.tc_name);
newCourse.course_id = newCourse_id;
newCourse.total_st = 0;
newCourse.max_st = newCourse_max;
newCourse.credit = newCourse_ncredit;
cout << "SUCESSFULLY OPEN A NEW COURSE : \n";
newCourse.printCourseInfo();
cout << "Date created: " << endl;
std::time_t t = std::time(0); // get time now
std::tm* now = std::localtime(&t);
std::cout << (now->tm_year + 1900) << '-' << (now->tm_mon + 1) << '-' << now->tm_mday << "\n";
cin.ignore(INT_MAX, '\n');
db_course_list.addToCourseList(newCourse);
return true;
}//else right
}//end br
#pragma endregion
#pragma region Grading
else if (agvList.list[0] == "gc"){
CourseList* tc_open_course = new CourseList();
tc_open_course = tc.teacherCourse(db_course_list); //lay danh sach nhung course ma teacher da mo
StudentCourseList* data = new StudentCourseList();
cout << "\nYour opened course: \n";
tc.showTeacherCouser(tc_open_course);
if (tc_open_course->size == 0){
cout << "Try opening a course in main menu ! \n";
return true;
}
int option;
cout << "\n\nChose course to grade or press 0 to exit: ";
cin >> option;
cin.ignore(INT_MAX, '\n');
if (option == 0){
return true;
}
else if (option != 0){
for (size_t i = 0; i < tc_open_course->size; i++){
if (option == i + 1){
data = db_st_course_list.findStudentJoinCourse(tc_open_course->list[i].course_id); //lay danh sach sinh vien + diem ma sinh vien tham gia course;
cout << endl;
cout << setw(40) << right << "__Danh Sach Sinh Vien Da Dang Ky__\n" << endl;
cout << setw(5) << left << "STT";
cout << setw(30) << left << "MSSV";
cout << setw(20) << right << "Diem\n";
cout << setfill('-');
cout << setw(55) << "-" << endl;
cout << setfill(' ');
for (size_t j = 0; j < data->size; j++){
cout << setw(5) << left << j + 1;
cout << setw(30) << left << data->list[j].st_num;
cout << setw(20) << right << data->list[j].st_point.list[0] << endl;
}
tc.gradingCourse(*data);
db_st_course_list.updatePoint(*data);
cout << "Successfully modify student's grade!\n";
cout << "Changes preview: \n";
//*data = db_st_course_list.findStudentJoinCourse(tc_open_course->list[i].course_id); //lay danh sach sinh vien + diem ma sinh vien tham gia course;
cout << endl;
//cout << setw(40) << right << "__Danh Sach Sinh Vien Da Dang Ky__\n" << endl;
cout << setw(5) << left << "STT";
cout << setw(30) << left << "MSSV";
cout << setw(20) << right << "Diem\n";
cout << setfill('-');
cout << setw(55) << "-" << endl;
cout << setfill(' ');
for (size_t j = 0; j < data->size; j++){
cout << setw(5) << left << j + 1;
cout << setw(30) << left << data->list[j].st_num;
cout << setw(20) << right << data->list[j].st_point.list[0] << endl;
}
}
}
return true;
}
} //end else if
#pragma endregion
#pragma region logout
else if (agvList.list[0] == "lo") {
tc.logout();
system("cls");
return true;
}
#pragma endregion
#pragma region help
else if (agvList.list[0] == "h") {
if (agvList.size == 1) {
system("cls");
cout << setw(40) << left << "Description " << setw(10) << left << "Command" << setw(10) << left << "Argument list" << endl;
cout << setw(100) << setfill('-') << "-" << setfill(' ') << endl;
cout << setw(40) << left << "Change password" << setw(10) << left << "cp" << setw(10) << left << "<new password> (optional)" << endl;
cout << setw(40) << left << "Opent a course" << setw(10) << left << "oc" << setw(10) << left << "none" << endl;
cout << setw(40) << left << "Grading a course" << setw(10) << left << "gc" << setw(10) << left << "<list of course's name> (optional)" << endl;
//cout << setw(40) << left << "Modify grade" << setw(10) << left << "mg" << setw(10) << left << "<list of course's name> (optional)" << endl;
cout << setw(100) << setfill('=') << "=" << setfill(' ') << endl;
cout << "Press any key to exit." << endl;
getchar();
system("cls");
return true;
}
}
#pragma endregion
}
#pragma region Tien
void to_upper(string &s) {
for (int i = 0; i < s.length(); i++) {
s[i] = toupper(s[i]);
}
}
bool adminMenu(Admin& ad, StudentList& db_st_list, TeacherList& db_tc_list, UserList& user_list)
{
while (ad.isLogin() == true) {
cout << setw(40) << setfill('-') << "-" << "ADMIN" << setw(40) << setfill('-') << "-" << endl;
cout << setw(40) << setfill(' ') << left << "Change password" << "[cp]" << endl;
cout << setw(40) << setfill(' ') << left << "Show teacher" << "[t]" << endl;
cout << setw(40) << setfill(' ') << left << "Show student" << "[s]" << endl;
cout << setw(40) << setfill(' ') << left << "Add Teacher" << "[at]" << endl;
cout << setw(40) << setfill(' ') << left << "Add Student" << "[as]" << endl;
cout << setw(40) << setfill(' ') << left << "Remove User" << "[ru]" << endl;
cout << setw(40) << setfill(' ') << left << "Search Teacher by name" << "[st]" << endl;
cout << setw(40) << setfill(' ') << left << "Search Student by name" << "[ss]" << endl;
cout << setw(40) << setfill(' ') << left << "Log out" << "[lo]" << endl;
cout << setw(40) << setfill(' ') << left << "Help" << "[h]" << endl;
cout << "Your command (press [e] to quit program): ";
string command;
stringstream ss;
string agv;
arrayList<string> agvList;
getline(cin, command);
ss.str(command);
do {
ss >> agv;
if (ss.fail() || agv == "") {
break;
}
else agvList.addToList(agv);
} while (true);
if (agvList.list[0] == "e" && agvList.size == 1) return false;
if (adminProcess(ad, user_list, db_st_list, db_tc_list, agvList) == true) {
}
else {
cout << "Error: command not found" << endl;
}
}
return true;
}
bool adminProcess(Admin& ad, UserList& user_list, StudentList& db_st_list, TeacherList& db_tc_list, arrayList<string> agvList) {
if (agvList.list[0] == "cp") {
if (agvList.size == 2) {
string newPassword = agvList.list[1];
ad.changePassword(newPassword);
user_list.updateList(ad);
return true;
}
else if (agvList.size == 1) {
string newPassword;
cout << "Your new password: ";
cin >> newPassword;
cin.ignore(INT_MAX, '\n');
ad.changePassword(newPassword);
user_list.updateList(ad);
cout << "CHANGE PASSWORD SUCCESSFULLY" << endl;
return true;
}
}
else if (agvList.list[0] == "as")
{
if (ad.addStudent(db_st_list, user_list)) {
cout << "Add Student successful!" << endl;
}
else {
cout << "Add Student unsuccessful! May be the same username have exist." << endl;
}
return true;
}
else if (agvList.list[0] == "at")
{
if (ad.addTeacher(db_tc_list, user_list)) {
cout << "Add Teacher successful!" << endl;
}
else {
cout << "Add Teacher unsuccessful! May be the same username have exist." << endl;
}
return true;
}
else if (agvList.list[0] == "ss") {
if (agvList.size > 1) {
agvList.removeFromList(0);
for (int i = 0; i < agvList.size; i++) {
to_upper(agvList.list[i]);
}
StudentList sList = db_st_list.findStudentByNameKeyWord(agvList.list, agvList.size);
if (sList.size == 0) {
cout << "Error: Failed to find data" << endl;
}
else {
system("cls");
sList.print();
}
}
else if (agvList.size == 1) {
cout << "Students to search: ";
string command;
stringstream ss;
string st_name;
arrayList<string> st_list;
getline(cin, command);
ss.str(command);
do {
ss >> st_name;
if (ss.fail() || st_name == "") {
break;
}
else {
to_upper(st_name);
st_list.addToList(st_name);
}
} while (true);
StudentList sList = db_st_list.findStudentByNameKeyWord(st_list.list, st_list.size);
if (sList.size == 0) {
cout << "Error: Failed to find data" << endl;
}
else {
system("cls");
sList.print();
}
}
return true;
}
else if (agvList.list[0] == "st") {
if (agvList.size > 1) {
agvList.removeFromList(0);
for (int i = 0; i < agvList.size; i++) {
to_upper(agvList.list[i]);
}
TeacherList tList = db_tc_list.findTeacherByNameKeyword(agvList.list, agvList.size);
if (tList.size == 0) {
cout << "Error: Failed to find data" << endl;
}
else {
system("cls");
tList.print();
}
}
else if (agvList.size == 1) {
cout << "Teachers to search: ";
string command;
stringstream ss;
string tc_name;
arrayList<string> tc_list;
getline(cin, command);
ss.str(command);
do {
ss >> tc_name;
if (ss.fail() || tc_name == "") {
break;
}
else {
to_upper(tc_name);
tc_list.addToList(tc_name);
}
} while (true);
TeacherList tList = db_tc_list.findTeacherByNameKeyword(tc_list.list, tc_list.size);
if (tList.size == 0) {
cout << "Error: Failed to find data" << endl;
}
else {
system("cls");
tList.print();
}
}
return true;
}
else if (agvList.list[0] == "ru") {
if (agvList.size == 1) {
cout << "Input list of usernames to remove:" << endl;
string input;
stringstream ss;
string username;
arrayList<string> removeList;
getline(cin, input);
ss.str(input);
do {
ss >> username;
if (ss.fail() || username == "") {
break;
}
else removeList.addToList(username);
} while (true);
arrayList<string> remove_unsuccess;
for (int i = 1; i < removeList.size; i++) {
if (ad.removeUser(removeList.list[i], user_list, db_st_list, db_tc_list) == 1) {
}
else {
remove_unsuccess.addToList(removeList.list[i]);
}
}
if (remove_unsuccess.size == 0) {
cout << "Remove all user successful!" << endl;
}
else {
cout << "Some user remove unsuccessful! That is:" << endl;
for (int j = 0; j < remove_unsuccess.size; j++) {
cout << j + 1 << ".\t" << remove_unsuccess.list[j] << endl;
}
cout << "Other user remove successful!" << endl;
}
return true;
}
else
{
arrayList<string> remove_unsuccess;
for (int i = 1; i < agvList.size; i++) {
if (ad.removeUser(agvList.list[i], user_list, db_st_list, db_tc_list) == 1) {
}
else {
remove_unsuccess.addToList(agvList.list[i]);
}
}
if (remove_unsuccess.size == 0) {
cout << "Remove all user successful!" << endl;
}
else {
cout << "Some user remove unsuccessful! That is:" << endl;
for (int j = 0; j < remove_unsuccess.size; j++) {
cout << j + 1 << ".\t" << remove_unsuccess.list[j] << endl;
}
cout << "Other user remove successful!" << endl;
}
return true;
}
}
else if (agvList.list[0] == "h") {
if (agvList.size == 1) {
system("cls");
cout << setw(40) << setfill('-') << "-" << "HELP (ADMIN)" << setw(40) << setfill('-') << "-" << endl << endl;
cout << setw(40) << setfill(' ') << left << "Change password" << "[cp]" << endl;
cout << "Input <cp> <newpassword> to change. Or input <cp> then input <newpassword>." << endl << endl;
cout << setw(40) << setfill(' ') << left << "Show teacher" << "[t]" << endl;
cout << "Show all teacher in database." << endl << endl;
cout << setw(40) << setfill(' ') << left << "Show student" << "[s]" << endl;
cout << "Show all student in database." << endl << endl;
cout << setw(40) << setfill(' ') << left << "Add Teacher" << "[at]" << endl;
cout << "Input <at> then input teacher's informations." << endl << endl;
cout << setw(40) << setfill(' ') << left << "Add Student" << "[as]" << endl;
cout << "Input <as> then input student's informations." << endl << endl;
cout << setw(40) << setfill(' ') << left << "Remove User" << "[ru]" << endl;
cout << "Input <ru> then input list of usernames. Or input <ru> <list of username you want to remove (separate by space)." << endl << endl;
cout << setw(40) << setfill(' ') << left << "Search Teacher by name" << "[st]" << endl;
cout << "Input <st> <list of teachers' name> to search. Or input <st> then input <name>." << endl;
cout << "Input as this format <identify, name, birthday, \"phone number\", \"hometown\"> (separate by comma):" << endl << endl;
cout << setw(40) << setfill(' ') << left << "Search Student by name" << "[ss] <name>" << endl;
cout << "Input <ss> <list of students' name> to search. Or input <ss> then input <name>." << endl;
cout << "Input as this format <number, name, birthday, \"hometown\"> (separate by comma):" << endl << endl;
cout << setw(40) << setfill(' ') << left << "Log out" << "[lo]" << endl;
cout << "Input <lo> to log out. (Then you can log in as another user)." << endl << endl;
cout << "Input anything to return." << endl;
getchar();
cin.clear();
cin.ignore(INT_MAX, '\n');
system("cls");
return true;
}
}
else if (agvList.list[0] == "t") {
db_tc_list.print();
cout << "Input anything to return." << endl;
getchar();
system("cls");
cin.clear();
cin.ignore(INT_MAX, '\n');
return true;
}
else if (agvList.list[0] == "s") {
db_st_list.print();
cout << "Input anything to return." << endl;
getchar();
system("cls");
cin.clear();
cin.ignore(INT_MAX, '\n');
return true;
}
else if (agvList.list[0] == "lo") {
ad.logout();
system("cls");
return true;
}
return false;
}
#pragma endregion
+18
View File
@@ -0,0 +1,18 @@
#ifndef _PROCESS_H_
#define _PROCESS_H_
#include "User.h"
#include "Student.h"
#include "Teacher.h"
#include "Admin.h"
using namespace std;
bool startProgram(User& random_user, UserList user_list);
bool studentProcess(Student&st, UserList& user_list, StudentCourseList&db_st_course_list, CourseList db_course_list, arrayList<string> agvList);
bool studentMenu(Student& st, StudentCourseList db_st_course_list, CourseList db_course_list, UserList user_list);
bool teacherMenu(Teacher& tc, StudentCourseList& db_st_course_list, CourseList& db_course_list, UserList user_list);
bool teacherProcess(Teacher& tc, UserList& user_list, StudentCourseList&db_st_course_list, CourseList& db_course_list, arrayList<string> agvList);
bool adminMenu(Admin& ad, StudentList& db_st_list, TeacherList& db_tc_list, UserList& user_list);
bool adminProcess(Admin& ad, UserList& user_list, StudentList& db_st_list, TeacherList& db_tc_list, arrayList<string> agvList);
#endif // !_PROCESS_H_
+212
View File
@@ -0,0 +1,212 @@
#include "Student.h"
using namespace std;
bool Student::getStudentCourse(StudentCourseList db_st_course_list, studentCourse& enrolledCourse) {
for (size_t i = 0; i < db_st_course_list.size; i++) {
if (db_st_course_list.list[i].st_num == this->st_number) {
enrolledCourse = db_st_course_list.list[i];
return true;
}
}
return false;
}
bool Student::modifyBaseStudentCourse(StudentCourseList& db_st_course_list, studentCourse enrolledCourse) {
for (size_t i = 0; i < db_st_course_list.size; i++) {
if (db_st_course_list.list[i].st_num == this->st_number) {
if (enrolledCourse.isExist()){
db_st_course_list.list[i] = enrolledCourse;
}
else db_st_course_list.removeFromList_(enrolledCourse);
return true;
}
}
return false;
}
void Student::showStudentCourse(CourseList* db_courseList, studentCourse enrolledCourse) {
if (enrolledCourse.isExist()) {
CourseList* st_course_detail = db_courseList->findAllCourseById(enrolledCourse.st_course);
cout << setfill('-') << setw(115) << "-" << setfill(' ') << endl;
cout << left << setw(5) << "STT"
<< left << setw(30) << "Giao vien huong dan"
<< left << setw(20) << "Ma so khoa hoc"
<< left << setw(15) << "Ma mon hoc"
<< left << setw(30) << "Ten mon hoc"
<< left << setw(10) << "Diem"
<< left << setw(10) << "Tin chi" << endl;
cout << setfill('-') << setw(50) << setfill(' ') << endl;
for (size_t i = 0; i < enrolledCourse.st_course.size; i++) {
cout << left << setw(5) << i + 1
<< left << setw(30) << st_course_detail->list[i].falcuty
<< left << setw(20) << st_course_detail->list[i].course_id
<< left << setw(15) << st_course_detail->list[i].sub_id
<< left << setw(30) << st_course_detail->list[i].sub_name
<< left << setw(10) << enrolledCourse.st_point.list[i]
<< left << setw(10) << st_course_detail->list[i].credit << endl;
}
cout << endl;
cout << "Your GPA: " << enrolledCourse.getGPA() << endl;
}
else cout << "You haven't enroll in any course" << endl;
};
bool Student::joinCourse(studentCourse enrolledCourse, arrayList<string>&courseId, StudentCourseList& db_st_course_list, CourseList& db_course_list) {
if (st_number == enrolledCourse.st_num) {
arrayList<string> error_course;
for (size_t i = 0; i < courseId.size; i++) {
if (db_course_list.isCourseExist(courseId.list[i])) {
if (enrolledCourse.addCourse(courseId.list[i])) {
db_course_list.addStudentToCourse(courseId.list[i]);
courseId.removeFromList(i);
}
}
}
modifyBaseStudentCourse(db_st_course_list, enrolledCourse);
return true;
}
else return false;
};
bool Student::cancelCourse(studentCourse enrolledCourse, arrayList<string> courseId, StudentCourseList& db_st_course_list, CourseList& db_course_list) {
if (enrolledCourse.isExist()) {
for (size_t i = 0; i < courseId.size; i++){
enrolledCourse.st_course.removeFromList_(courseId.list[i]);
db_course_list.removeStudentToCourse(courseId.list[i]);
}
modifyBaseStudentCourse(db_st_course_list, enrolledCourse);
return true;
}
else return false;
};
CourseList* Student::searchForCourseByName(arrayList<string> cList, CourseList db_course_list) {
CourseList* course_list = NULL;
for (size_t i = 0; i < db_course_list.size; i++) {
for (size_t j = 0; j < cList.size; j++) {
course_list = db_course_list.findAllCourseById(cList);
}
}
return course_list;
}
inline bool operator==(Student &lhs, Student &rhs) {
return lhs.st_number == rhs.st_number;
}
inline bool operator==(Student &lhs, int &rhs) {
return lhs.st_number == rhs;
}
inline bool operator==(int &lhs, Student &rhs) {
return lhs == rhs.st_number;
}
inline bool operator!=(Student &lhs, Student &rhs) {
return !(lhs.st_number == rhs.st_number);
}
inline bool operator!=(Student &lhs, int &rhs) {
return !(lhs.st_number == rhs);
}
inline bool operator!=(int &lhs, Student &rhs) {
return !(lhs == rhs.st_number);
}
inline bool operator==(studentCourse &lhs, studentCourse&rhs) {
return lhs.st_num = rhs.st_num;
}
//-----------------STUDENT_LIST------------------------
StudentList StudentList::findStudentByNameKeyWord(string keyword[], size_t n) {
StudentList* stList = new StudentList();
for (size_t i = 0; i < size; i++) {
for (size_t j = 0; j < n; j++) {
if (list[i].st_name.find(keyword[j]) != string::npos) {
Student data = list[i];
stList->addToList(data);
break;
}
}
}
return *stList;
}
void StudentList::removeStudentByNameKeyWord(string keyword[], size_t n) {
for (size_t i = 0; i < size; i++) {
for (size_t j = 0; j < n; j++) {
if (list[i].st_name.find(keyword[j]) != string::npos) {
removeFromList(i);
break;
}
}
}
}
void StudentList::updateStudentList(Student data) {
for (size_t i = 0; i < size; i++) {
if (data.st_number == this->list[i].st_number) {
this->list[i] = data;
}
}
}
bool StudentList::getStudentInfo(Student& st) {
int st_num;
istringstream(st.username) >> st_num;
for (size_t i = 0; i < size; i++) {
if (st_num == this->list[i].st_number) {
st.st_number = this->list[i].st_number;
st.st_name = this->list[i].st_name;
st.st_birthday = this->list[i].st_birthday;
st.st_home_town = this->list[i].st_home_town;
return true;
}
}
return false;
}
//Tim sinh vien va diem cua sinh vien tham gia mot khoa hoc nhat dinh.
StudentCourseList* StudentCourseList::findStudentJoinCourse(string courseID){
StudentCourseList* data = new StudentCourseList();
int a = 0;
for (size_t i = 0; i < this->size; i++){
for (size_t j = 0; j < this->list[i].st_course.size; j++){
if (this->list[i].st_course.list[j].compare(courseID) == 0){
//data->addToList(this->list[i]);
data->list[a].st_num = this->list[i].st_num;
data->list[a].st_point.list[0] = this->list[i].st_point.list[j];
data->list[a].st_course.list[0] = this->list[i].st_course.list[j];
data->size++;
a++;
}
}
}
return data;
}
//Ghi diem vao file student_course.
void StudentCourseList::updatePoint(/*StudentCourseList& db_st_cl*/ StudentCourseList st_join_course){
//for (size_t i = 0; i < st_join_course.size; i++){
int i = 0;
for (size_t j = 0; j < this->size; j++){
for (int k = 0; k < this->list[j].st_course.size; k++){
if (st_join_course.list[i].st_course.list[0].compare(this->list[j].st_course.list[k]) == 0){
this->list[j].st_point.list[k] = st_join_course.list[i].st_point.list[0];
i++;
}
}
}
//}
}
//Xem khoa hoc da dc cham diem chua.
bool StudentCourseList::isGrade(){
for (int i = 0; i < this->size; i++){
if (this->list[i].st_point.list[0] != -1)
return true;
}
return false;
}
void StudentList::print()
{
cout << setw(10) << "ID" << setw(30) << "Name" << setw(15) << "Birthday" << setw(50) << "Hometown" << endl;
for (int i = 0; i < this->size; i++)
{
cout
<< setw(10) << this->list[i].st_number
<< setw(30) << this->list[i].st_name
<< setw(15) << this->list[i].st_birthday
<< setw(50) << this->list[i].st_home_town
<< endl;
}
}
+127
View File
@@ -0,0 +1,127 @@
#ifndef _STUDENT_
#define _STUDENT_
#include<string>
#include<iostream>
#include<iomanip>
#include<sstream>
#include "Course.h"
#include "Helper.h"
#include "User.h"
using namespace std;
typedef struct studentCourse {
private:
double gpa;
public:
int st_num;
arrayList<string> st_course;
arrayList<int> st_point;
studentCourse() {
this->st_num = 0;
this->gpa = 13.0;
}
bool isExist() {
if (st_course.size == 0) {
return false;
}
return true;
}
int getCourseNum() {
return this->st_course.size;
}
bool hasEnrolled(string courseId) {
for (size_t i = 0; i < this->getCourseNum(); i++) {
if (this->st_course.list[i] == courseId)return true;
}
return false;
}
bool addCourse(string courseId) {
if (hasEnrolled(courseId) == false) {
this->st_course.addToList(courseId);
this->st_point.addToList(-1);
return true;
}
return false;
}
double getGPA() { return this->gpa; }
bool setGPA(User &user, double newGPA) {
if (user.role == "teacher") {
this->gpa = newGPA;
return true;
}
else return false;
}
bool isGPAsumarized() {
if (this->gpa == 13.0)return false;
else return true;
}
studentCourse& operator=(studentCourse&data) {
this->st_num = data.st_num;
this->st_course = data.st_course;
this->st_point = data.st_point;
this->gpa = data.getGPA();
return *this;
}
};
class StudentCourseList :public arrayList<studentCourse> {
public:
StudentCourseList() {};
~StudentCourseList() {};
StudentCourseList* findStudentJoinCourse(string courseID); //tim nhung sinh vien tham gia 1 course nhat dinh (de lay diem)
void updatePoint(/*StudentCourseList& db_st_cl, */StudentCourseList st_join_course); //cap nhat diem vao database
bool isGrade(); //xem course hoc da cham diem chua ( StudentCourseList.st_point.list[0->size] full =-1)
studentCourse findStudentCourse(int st_num) {
studentCourse data;
for (size_t i = 0; i < this->size; i++) {
if (this->list[i].st_num == st_num) {
data = this->list[i];
}
}
return data;
}
};
class Student : public User{
public:
int st_number;// id for student's course
string st_name;
string st_birthday;
string st_home_town;
Student(int num) {
this->st_number = num;
};
Student() {}
~Student() {};
bool getStudentCourse(StudentCourseList db_st_course_list, studentCourse& enrolledCourse);
bool modifyBaseStudentCourse(StudentCourseList& db_st_course_list, studentCourse enrolledCourse);
void showStudentCourse(CourseList* db_courseList, studentCourse enrolledCourse);
bool joinCourse(studentCourse enrolledCourse, arrayList<string>&courseId, StudentCourseList& db_st_course_list, CourseList& db_course_list);
bool cancelCourse(studentCourse enrolledCourse, arrayList<string> courseId, StudentCourseList& db_st_course_list, CourseList& db_course_list);
CourseList* searchForCourseByName(arrayList<string> cList, CourseList db_course_list);
Student& operator=(User u) {
this->username = u.username;
this->password = u.password;
this->role = u.role;
return *this;
}
};
//-------------------------THIS IS FOR STUDENT LIST----------------------------
class StudentList : public arrayList<Student>{
public:
StudentList() {};
~StudentList() {};
StudentList findStudentByNameKeyWord(string keyword[], size_t n);
bool getStudentInfo(Student& st);
void removeStudentByNameKeyWord(string keyword[], size_t n);
void updateStudentList(Student data);
void print();
};
#endif // !_STUDENT_
+145
View File
@@ -0,0 +1,145 @@
#include "Teacher.h"
using namespace std;
CourseList* Teacher::teacherCourse(CourseList db_course_list){
return db_course_list.findCourseByFacuty(this->tc_name);
}
bool Teacher::gradingCourse(StudentCourseList& st_join_course){
if (st_join_course.isGrade()){
int index;
do{
double spoint;
cout << "Input student's index to modify grade (press 0) to exit: ";
cin >> index;
cin.ignore(INT_MAX, '\n');
if (index == 0) break;
cout << "Input new grade for " << st_join_course.list[index].st_num << " : ";
cin >> spoint;
cin.ignore(INT_MAX, '\n');
st_join_course.list[index].st_point.list[0] = spoint;
} while (index != 0||cin.bad());
}
else{
cout << "Tong ket diem: \n";
for (int i = 0; i<st_join_course.size; ++i){
double spoint;
cout << st_join_course.list[i].st_num << " : ";
cin >> spoint;
cin.ignore(INT_MAX, '\n');
st_join_course.list[i].st_point.list[0] = spoint;
}
}
return true;
}
void Teacher::showTeacherCouser(CourseList* tc_course){
if (tc_course->size>0){
cout << setfill('-') << setw(115) << "-" << setfill(' ') << endl;
cout << left << setw(5) << "STT"
<< left << setw(20) << "Ma so khoa hoc"
<< left << setw(15) << "Ma mon hoc"
<< left << setw(30) << "Ten mon hoc"
<< left << setw(10) << "Tin chi"
<< left << setw(10) << "So luong sinh vien"
<< endl;
cout << setfill('-') << setw(50) << setfill(' ') << endl;
for (size_t i = 0; i<tc_course->size; i++) {
cout << left << setw(5) << i + 1
<< left << setw(20) << tc_course->list[i].course_id
<< left << setw(15) << tc_course->list[i].sub_id
<< left << setw(30) << tc_course->list[i].sub_name
<< left << setw(10) << tc_course->list[i].credit
<< left << setw(10) << tc_course->list[i].total_st
<< endl;
}
}
else cout << "You haven't opened in any course" << endl;
}
bool Teacher::openCourse(CourseList& db_course_list, Course newCourse){
if (db_course_list.isCourseExist(newCourse.course_id)) return false;
else {
//Course newCourse;
db_course_list.addToCourseList(newCourse);
}
}
///Teacher_List_Modify
TeacherList TeacherList::findTeacherByNameKeyword(string keyword[], size_t n){
TeacherList* tList = new TeacherList();
for (size_t i = 0; i < this->size; i++) {
for (size_t j = 0; j < n; j++) {
if (list[i].tc_name.find(keyword[j]) != string::npos) {
Teacher data = list[i];
tList->addToList(data);
break;
}
}
}
return *tList;
}
bool TeacherList::getTeacherInfo(Teacher& tc){
for (size_t i = 0; i < size; i++) {
if (tc.username.compare(this->list[i].tc_identify) == 0)
{
tc.tc_identify = this->list[i].tc_identify;
tc.tc_name = this->list[i].tc_name;
tc.tc_birthday = this->list[i].tc_birthday;
tc.tc_phone_number = this->list[i].tc_phone_number;
tc.tc_home_town = this->list[i].tc_home_town;
return true;
}
}
return false;
}
void TeacherList::removeTeacherByNameKeyword(string keyword[], size_t n){
for (size_t i = 0; i < size; i++) {
for (size_t j = 0; j < n; j++) {
if (list[i].tc_name.find(keyword[j]) != string::npos) {
removeFromList(i);
break;
}
}
}
}
void TeacherList::updateTeacherList(Teacher data){
for (size_t i = 0; i < size; i++) {
if (data.tc_identify == this->list[i].tc_identify) {
this->list[i] = data;
}
}
}
void TeacherList::print()
{
cout << setw(10) << "ID" << setw(30) << "Name" << setw(15) << "Birthday" << setw(15) << "Phone Number" << setw(50) << "Hometown" << endl;
for (int i = 0; i < this->size; i++)
{
cout
<< setw(10) << this->list[i].tc_identify
<< setw(30) << this->list[i].tc_name
<< setw(15) << this->list[i].tc_birthday
<< setw(15) << this->list[i].tc_phone_number
<< setw(50) << this->list[i].tc_home_town
<< endl;
}
}
+56
View File
@@ -0,0 +1,56 @@
#ifndef _TEACHER_
#define _TEACHER_
#include<iostream>
#include <string>
#include <sstream>
#include "Helper.h"
#include "User.h"
#include "Course.h"
#include "Student.h"
using namespace std;
class Teacher :public User{
public:
string tc_identify;
string tc_name;
string tc_birthday;
string tc_phone_number;
string tc_home_town;
CourseList* teacherCourse(CourseList db_courseList); //nhung khoa hoc ma teacher da mo
Teacher(){};
Teacher(string id){
this->tc_identify = id;
}
~Teacher(){};
bool openCourse(CourseList& db_courseList, Course newCourse); //mo mot khoa hoc
bool gradingCourse(StudentCourseList& st_join_course); //tong ket diem va sua diem
void showTeacherCouser(CourseList* tc_course);//Xuat thong tin nhung khoa hoc ma teacher da mo
Teacher& operator=(User u){
this->username = u.username;
this->password = u.password;
this->role = u.role;
return *this;
}
};
//-------------------------LECTURERS LIST-------------------------
class TeacherList :public arrayList<Teacher>{
public:
TeacherList(){};
~TeacherList(){};
TeacherList findTeacherByNameKeyword(string keyword[], size_t n);
bool getTeacherInfo(Teacher& st);
void removeTeacherByNameKeyword(string keyword[], size_t n);
void updateTeacherList(Teacher data);
void print();
};
#endif
+49
View File
@@ -0,0 +1,49 @@
#include "User.h"
using namespace std;
inline bool operator==(User &lhs, User &rhs) {
return lhs.username == rhs.username;
}
inline bool operator==(User &lhs, string &rhs) {
return lhs.username == rhs;
}
inline bool operator==(string &lhs, User &rhs) {
return lhs == rhs.username;
}
inline bool operator!=(User &lhs, User &rhs) {
return !(lhs.username == rhs.username);
}
inline bool operator!=(User &lhs, string &rhs) {
return !(lhs.username == rhs);
}
inline bool operator!=(string &lhs, User &rhs) {
return !(lhs == rhs.username);
}
//-----------------------USER_LIST--------------------
int UserList::findUserByUsername(string username) {
for (size_t i = 0; i < size; i++) {
if (this->list[i] == username)return i;
}
return -1;
}
bool UserList::authentication(User& random_user) {
int index = findUserByUsername(random_user.username);
if (index != -1) {
if (random_user.password == this->list[index].password) {
random_user.role = this->list[index].role;
return true;
}
else return false;
}
else return false;
}
void UserList::updateList(User& user) {
int index = findUserByUsername(user.username);
if (index == -1);
else {
this->list[index].username = user.username;
this->list[index].password = user.password;
}
}
+49
View File
@@ -0,0 +1,49 @@
#ifndef _USER_
#define _USER_
#include <string>
#include "Helper.h"
using namespace std;
class User {
public:
string username; // id
string password;
string role;
public:
User() {}
User(string username, string password) {
this->username = username;
this->password = password;
}
~User() {};
void logout() {
this->username = "";
this->password = "";
this->role = "";
}
bool isLogin() {
if (this->username == "")return false;
else return true;
}
void changePassword(string newPassword) {
this->password = newPassword;
}
};
///--------------THIS IS FOR USER LIST----------------
class UserList :public arrayList<User> {
public:
UserList() {};
~UserList() {};
inline User& operator[](int index) {
return this->list[index];
}
int findUserByUsername(string username);
bool authentication(User& random_user);
void updateList(User& user);
};
#endif // !_USER_
+29
View File
@@ -0,0 +1,29 @@
a2001,NGUYEN MINH DUC,a2,Giai tich 1,100,89,5
a2002,HOANG LONG THANG,a2,Giai tich 1,100,80,5
a2003,PHAM LAN CHINH,a2,Giai tich 1,100,99,5
a2004,PHAM LAN CHINH,a2,Giai tich 1,100,75,5
a2005,NGUYEN CONG THUC,a2,Giai tich 1,100,95,5
a2006,VU THI MAI,a2,Giai tich 1,50,49,5
a2007,HOANG LONG THANG,a2,Giai tich 1,50,45,5
a2008,NGUYEN THI NHUNG,a2,Giai tich 1,50,40,5
a2009,NGUYEN THI NHUNG,a2,Giai tich 1,50,30,5
a2010,NGUYEN MINH DUC,a2,Giai tich 1,50,40,5
b2001,NGUYEN MINH DUC,b2,Giai tich 2,75,60,4
b2002,TRAN HUNG NGUYEN,b2,Giai tich 2,75,74,4
b2003,NINH VAN GIANG,b2,Giai tich 2,75,74,4
b2004,NGUYEN THANH NHON,b2,Giai tich 2,50,49,4
b2005,TRIEU THI YEN NHI,b2,Giai tich 2,50,30,4
c1001,TRAN THUY LINH,c1,Vat ly 1,120,100,3
c1002,DUONG THANH CONG,c1,Vat ly 1,120,90,3
c1003,TRAN HUNG NGUYEN,c1,Vat ly 1,60,53,3
c1004,DO THI MAI,c1,Vat ly 1,60,59,3
c1005,DUONG THANH CONG,c1,Vat ly 1,60,60,3
d3001,LA THI NGAT,d3,Vat ly 2,60,60,4
d3002,LA THI NGAT,d3,Vat ly 2,60,60,4
d3003,ONG THI THU,d3,Vat ly 2,60,60,4
d3004,PHAM THI HIEN,d3,Vat ly 2,50,19,4
d3_005,PHAM LAN CHINH,d3,Vat ly 2,50,20,4
sub_L02,NGUYEN THI NGOC,sub,Hung,20,0,2
sub1_L03,NGUYEN THI NGOC,sub1,Natsu,39,3,2
sub3_L01,NGUYEN THI NGOC,sub3,Natsu2,44,0,4
sub4_L02,NGUYEN THI NGOC,sub4,natsu,33,0,3
1 a2001 NGUYEN MINH DUC a2 Giai tich 1 100 89 5
2 a2002 HOANG LONG THANG a2 Giai tich 1 100 80 5
3 a2003 PHAM LAN CHINH a2 Giai tich 1 100 99 5
4 a2004 PHAM LAN CHINH a2 Giai tich 1 100 75 5
5 a2005 NGUYEN CONG THUC a2 Giai tich 1 100 95 5
6 a2006 VU THI MAI a2 Giai tich 1 50 49 5
7 a2007 HOANG LONG THANG a2 Giai tich 1 50 45 5
8 a2008 NGUYEN THI NHUNG a2 Giai tich 1 50 40 5
9 a2009 NGUYEN THI NHUNG a2 Giai tich 1 50 30 5
10 a2010 NGUYEN MINH DUC a2 Giai tich 1 50 40 5
11 b2001 NGUYEN MINH DUC b2 Giai tich 2 75 60 4
12 b2002 TRAN HUNG NGUYEN b2 Giai tich 2 75 74 4
13 b2003 NINH VAN GIANG b2 Giai tich 2 75 74 4
14 b2004 NGUYEN THANH NHON b2 Giai tich 2 50 49 4
15 b2005 TRIEU THI YEN NHI b2 Giai tich 2 50 30 4
16 c1001 TRAN THUY LINH c1 Vat ly 1 120 100 3
17 c1002 DUONG THANH CONG c1 Vat ly 1 120 90 3
18 c1003 TRAN HUNG NGUYEN c1 Vat ly 1 60 53 3
19 c1004 DO THI MAI c1 Vat ly 1 60 59 3
20 c1005 DUONG THANH CONG c1 Vat ly 1 60 60 3
21 d3001 LA THI NGAT d3 Vat ly 2 60 60 4
22 d3002 LA THI NGAT d3 Vat ly 2 60 60 4
23 d3003 ONG THI THU d3 Vat ly 2 60 60 4
24 d3004 PHAM THI HIEN d3 Vat ly 2 50 19 4
25 d3_005 PHAM LAN CHINH d3 Vat ly 2 50 20 4
26 sub_L02 NGUYEN THI NGOC sub Hung 20 0 2
27 sub1_L03 NGUYEN THI NGOC sub1 Natsu 39 3 2
28 sub3_L01 NGUYEN THI NGOC sub3 Natsu2 44 0 4
29 sub4_L02 NGUYEN THI NGOC sub4 natsu 33 0 3
+30
View File
@@ -0,0 +1,30 @@
1712350,NONG THI HANH,1987-09-07,"Huyen Luc Nam, Bac Giang"
1712351,TRAN XUAN SON,1985-10-22,"Huyen Pho Yen, Thai Nguyen"
1712352,PHAM THI TRANG,1987-03-22,"Huyen Dong Hy, Thai Nguyen"
1712353,TRAN THI NGOC ANH,1985-06-20,"Huyen Phu Binh, Thai Nguyen"
1712354,MA THI THU UYEN,1991-11-22,"Huyen Tran Yen, Yen Bai"
1712355,DAO THI DUYEN,1988-05-27,"Huyen Phu Binh, Thai Nguyen"
1712356,NONG THI SEN,1986-10-26,"Huyen Pho Yen, Thai Nguyen"
1712357,LY THI THUYEN,1989-04-06,"Huyen Pho Yen, Thai Nguyen"
1712358,DO THI HUE,1985-06-13,"Thi xa Song Cong, Thai Nguyen"
1712359,DANG THE ANH,1989-03-27,"Thanh pho Thai Nguyen, Thai Nguyen"
1712360,NGUYEN HONG HANH,1989-01-24,"Huyen Phu Luong, Thai Nguyen"
1712361,HOANG THI DINH,1991-02-02,"Huyen Phu Binh, Thai Nguyen"
1712371,NGO THI LE HANG,1991-03-20,"Huyen Quynh Nhai, Son La"
1712372,KHONG HUONG GIANG,1985-12-11,"Huyen Thuong Xuan, Thanh Hoa"
1712373,DIEP THI HONG THUY,1985-08-19,"Thanh pho Bac Ninh, Bac Ninh"
1712374,NGUYEN VAN DUY,1989-03-11,"Huyen Cam Thuy, Thanh Hoa"
1712375,VU NHU QUYNH,1987-03-27,"Huyen Phu Luong, Thai Nguyen"
1712376,PHUNG KHU PU,1987-07-18,"Huyen Dinh Hoa, Thai Nguyen"
1712377,MA THI YEN NHI,1988-07-07,"Huyen Binh Lieu, Quang Ninh"
1712378,DINH THUY NGAN,1988-01-05,"Huyen Pho Yen, Thai Nguyen"
1712379,BANG THI DUYEN,1985-12-17,"Thanh pho Thai Nguyen, Thai Nguyen"
1712486,NGUYEN THI NGOC KHANH,1987-12-17,"Huyen Pho Yen, Thai Nguyen"
1712487,NGUYEN QUYNH TRANG,1989-02-05,"Huyen Dai Tu, Thai Nguyen"
1712488,DOI THI DIEU TIEN,1986-02-06,"Huyen Dai Tu, Thai Nguyen"
1712489,HOANG HUYEN TRANG,1988-03-19,"Thanh pho Thai Nguyen, Thai Nguyen"
1712490,DO DINH DUY,1990-11-17,"Thi xa Song Cong, Thai Nguyen"
1712491,NGUYEN HOANG HIEU,1989-02-24,"Huyen Lam Thao, Phu Tho"
1712492,NGUYEN THI NHI,1988-01-27,"Thanh pho Thai Nguyen, Thai Nguyen"
1712493,NGO QUANG DUONG,1986-02-20,"Huyen Phu Luong, Thai Nguyen"
1712494,MO THI THANH KIM HUE,1991-01-16,"Thi xa Song Cong, Thai Nguyen"
1 1712350 NONG THI HANH 1987-09-07 Huyen Luc Nam, Bac Giang
2 1712351 TRAN XUAN SON 1985-10-22 Huyen Pho Yen, Thai Nguyen
3 1712352 PHAM THI TRANG 1987-03-22 Huyen Dong Hy, Thai Nguyen
4 1712353 TRAN THI NGOC ANH 1985-06-20 Huyen Phu Binh, Thai Nguyen
5 1712354 MA THI THU UYEN 1991-11-22 Huyen Tran Yen, Yen Bai
6 1712355 DAO THI DUYEN 1988-05-27 Huyen Phu Binh, Thai Nguyen
7 1712356 NONG THI SEN 1986-10-26 Huyen Pho Yen, Thai Nguyen
8 1712357 LY THI THUYEN 1989-04-06 Huyen Pho Yen, Thai Nguyen
9 1712358 DO THI HUE 1985-06-13 Thi xa Song Cong, Thai Nguyen
10 1712359 DANG THE ANH 1989-03-27 Thanh pho Thai Nguyen, Thai Nguyen
11 1712360 NGUYEN HONG HANH 1989-01-24 Huyen Phu Luong, Thai Nguyen
12 1712361 HOANG THI DINH 1991-02-02 Huyen Phu Binh, Thai Nguyen
13 1712371 NGO THI LE HANG 1991-03-20 Huyen Quynh Nhai, Son La
14 1712372 KHONG HUONG GIANG 1985-12-11 Huyen Thuong Xuan, Thanh Hoa
15 1712373 DIEP THI HONG THUY 1985-08-19 Thanh pho Bac Ninh, Bac Ninh
16 1712374 NGUYEN VAN DUY 1989-03-11 Huyen Cam Thuy, Thanh Hoa
17 1712375 VU NHU QUYNH 1987-03-27 Huyen Phu Luong, Thai Nguyen
18 1712376 PHUNG KHU PU 1987-07-18 Huyen Dinh Hoa, Thai Nguyen
19 1712377 MA THI YEN NHI 1988-07-07 Huyen Binh Lieu, Quang Ninh
20 1712378 DINH THUY NGAN 1988-01-05 Huyen Pho Yen, Thai Nguyen
21 1712379 BANG THI DUYEN 1985-12-17 Thanh pho Thai Nguyen, Thai Nguyen
22 1712486 NGUYEN THI NGOC KHANH 1987-12-17 Huyen Pho Yen, Thai Nguyen
23 1712487 NGUYEN QUYNH TRANG 1989-02-05 Huyen Dai Tu, Thai Nguyen
24 1712488 DOI THI DIEU TIEN 1986-02-06 Huyen Dai Tu, Thai Nguyen
25 1712489 HOANG HUYEN TRANG 1988-03-19 Thanh pho Thai Nguyen, Thai Nguyen
26 1712490 DO DINH DUY 1990-11-17 Thi xa Song Cong, Thai Nguyen
27 1712491 NGUYEN HOANG HIEU 1989-02-24 Huyen Lam Thao, Phu Tho
28 1712492 NGUYEN THI NHI 1988-01-27 Thanh pho Thai Nguyen, Thai Nguyen
29 1712493 NGO QUANG DUONG 1986-02-20 Huyen Phu Luong, Thai Nguyen
30 1712494 MO THI THANH KIM HUE 1991-01-16 Thi xa Song Cong, Thai Nguyen
+33
View File
@@ -0,0 +1,33 @@
1712350;c1003,b2002;9,8;13
1712351;b2004,d3003;20,0;13
1712352;b2003,c1005,c1004,sub1_L03;8,9,10,-1;13
1712353;b2002,d3004,d3005;-1,0,0;13
1712354;b2001,c1002,b2005;6,7,7;13
1712355;c1005,b2005,b2001;9,8,8;13
1712356;a2008,a2009,b2002;4,8,-1;13
1712357;c1003,b2002,a2003;10,9,9;13
1712358;a2002,b2003,c1003;5,4,6;13
1712359;d3002,b2002,c1005;8,6,7;13
1712360;d3005,a2005,d3002;3,8,9;13
1712361;d3004,b2003,d3003;4,2,-1;13
1712371;d3002,d3004,b2002;3,-1,5;13
1712372;b2005,a2007,d3001;2,6,9;13
1712373;c1005,b2002,c1001;3,5,4;13
1712374;a2004,b2001,c1004;6,2,7;13
1712375;a2001,d3001,b2003,sub1_L03;7,4,5,-1;13
1712376;a2001,d3002,b2001;8,8,7;13
1712377;a2010,a2001,d3001;5,9,6;13
1712378;a2001,d3002,a2010;9,8,7;13
1712379;b2005,a2009,c1005;6,7,8;13
1712486;a2005,c1003,c1001;10,6,9;13
1712487;b2004,c1005,c1002;20,4,-1;13
1712488;b2003,a2001,c1002;8,9,8;13
1712489;b2002,d3002,c1002;2,3,6;13
1712490;a2006,c1002,d3005;0,0,0;13
1712491;c1004,c1001,b2002;2,3,5;13
1712492;c1003,a2001,c1002;8,4,6;13
1712493;a2007,d3004,d3001;9,3,-1;13
1712494;b2001,a2006,d3005;10,8,9;13
1712494;b2001,a2006,d3005;10,8,9;13
1712494;b2001,a2006,d3005;10,8,9;13
1712494;b2001,a2006,d3005;10,8,9;13
1 1712350 c1003,b2002 9,8 13
2 1712351 b2004,d3003 20,0 13
3 1712352 b2003,c1005,c1004,sub1_L03 8,9,10,-1 13
4 1712353 b2002,d3004,d3005 -1,0,0 13
5 1712354 b2001,c1002,b2005 6,7,7 13
6 1712355 c1005,b2005,b2001 9,8,8 13
7 1712356 a2008,a2009,b2002 4,8,-1 13
8 1712357 c1003,b2002,a2003 10,9,9 13
9 1712358 a2002,b2003,c1003 5,4,6 13
10 1712359 d3002,b2002,c1005 8,6,7 13
11 1712360 d3005,a2005,d3002 3,8,9 13
12 1712361 d3004,b2003,d3003 4,2,-1 13
13 1712371 d3002,d3004,b2002 3,-1,5 13
14 1712372 b2005,a2007,d3001 2,6,9 13
15 1712373 c1005,b2002,c1001 3,5,4 13
16 1712374 a2004,b2001,c1004 6,2,7 13
17 1712375 a2001,d3001,b2003,sub1_L03 7,4,5,-1 13
18 1712376 a2001,d3002,b2001 8,8,7 13
19 1712377 a2010,a2001,d3001 5,9,6 13
20 1712378 a2001,d3002,a2010 9,8,7 13
21 1712379 b2005,a2009,c1005 6,7,8 13
22 1712486 a2005,c1003,c1001 10,6,9 13
23 1712487 b2004,c1005,c1002 20,4,-1 13
24 1712488 b2003,a2001,c1002 8,9,8 13
25 1712489 b2002,d3002,c1002 2,3,6 13
26 1712490 a2006,c1002,d3005 0,0,0 13
27 1712491 c1004,c1001,b2002 2,3,5 13
28 1712492 c1003,a2001,c1002 8,4,6 13
29 1712493 a2007,d3004,d3001 9,3,-1 13
30 1712494 b2001,a2006,d3005 10,8,9 13
31 1712494 b2001,a2006,d3005 10,8,9 13
32 1712494 b2001,a2006,d3005 10,8,9 13
33 1712494 b2001,a2006,d3005 10,8,9 13
+50
View File
@@ -0,0 +1,50 @@
S0951,BUI QUOC TRUNG,1989-10-09,"01268024528","Huyen Bac Quang, Ha Giang"
S0952,NGUYEN THI NGOC,1991-05-02,"01262228406","Huyen Phong Tho, Lai Chau"
S0953,TRAN HUNG NGUYEN,1987-02-24,"01676288131","Huyen Dinh Hoa, Thai Nguyen"
S0954,NGUYEN TAN DUNG,1989-04-10,"0968562100","Huyen Tien Du, Bac Ninh"
S0955,DO THI THUONG,1990-02-08,"01264232833","Huyen Viet Yen, Bac Giang"
S0956,NGUYEN THI NHUNG,1987-01-14,"01249854229","Huyen Na Ri, Bac Kan"
S0957,NGUYEN THI LOAN,1990-07-10,"01235747029","Thi xa Song Cong, Thai Nguyen"
S0958,LE THI NGOC TRANG,1990-08-24,"01243175018","Huyen Pho Yen, Thai Nguyen"
S0959,TRAN CONG MINH,1990-11-23,"01686151088","Huyen Pho Yen, Thai Nguyen"
S0960,NGUYEN THI NGOC ANH,1988-04-13,"01672997174","Huyen Dong Hy, Thai Nguyen"
S0961,LA THI NGAT,1991-10-25,"01237300992","Huyen Phu Binh, Thai Nguyen"
S0962,PHAM THI MINH CHAM,1988-12-17,"01651757943","Huyen Yen Son, Tuyen Quang"
S0963,NGUYEN THI TUOI,1985-02-16,"0965570211","Thanh pho Lang Son, Lang Son"
S0964,LE MINH HUNG,1986-03-18,"01685174289","Thi xa Song Cong, Thai Nguyen"
S0965,ONG THI THU,1988-10-03,"01234640825","Huyen Son Dong, Bac Giang"
S0966,NGUYEN THI KHANH HUYEN,1985-06-18,"01688673221","Huyen Phu Binh, Thai Nguyen"
S0967,NGUYEN THANH NHON,1990-09-28,"01651137554","Thanh pho Thai Nguyen, Thai Nguyen"
S0968,NGUYEN THI HONG,1988-10-23,"0981689837","Huyen Chi Lang, Lang Son"
S0969,THIEU THI DUNG,1986-12-14,"01658590942","Huyen Bao Lam, Cao Bang"
S0970,NGUYEN HUU THANG,1988-04-15,"0966094621","Huyen Pho Yen, Thai Nguyen"
S0971,TA THI HOAI THUONG,1989-12-21,"01671984944","Huyen Muong Te, Lai Chau"
S0972,MAI VIET ANH,1990-02-02,"0987525935","Huyen Mai Son, Son La"
S0973,KHUC THI THANH XUYEN,1991-12-20,"01269605742","Thanh pho Thai Nguyen, Thai Nguyen"
S0974,VU THI MAI,1988-08-03,"0983964837","Thanh pho Thai Nguyen, Thai Nguyen"
S0975,NGUYEN VAN TU,1991-05-15,"01651078560","Thanh pho Thai Nguyen, Thai Nguyen"
S0976,NINH VAN GIANG,1990-02-06,"01682298994","Thanh pho Thai Nguyen, Thai Nguyen"
S0977,TRIEU THI YEN NHI,1988-06-22,"0965488514","Huyen Cho Moi, Bac Kan"
S0978,NGUYEN THI BUNG,1987-04-13,"01681130368","Thanh pho Lao Cai, Lao Cai"
S0979,NGUYEN TRONG TON,1985-03-03,"01651968803","Huyen Quang Xuong, Thanh Hoa"
S0980,TRAN THUY LINH,1987-11-12,"01683529386","Huyen Dinh Hoa, Thai Nguyen"
S0981,TRAN VAN THE,1988-03-20,"01677867647","Huyen Dong Hy, Thai Nguyen"
S0982,NGUYEN MINH DUC,1989-01-04,"01248224532","Huyen Vo Nhai, Thai Nguyen"
S0983,NGUYEN CONG THUC,1985-11-14,"01677048699","Thanh pho Yen Bai, Yen Bai"
S0984,CAO XUAN VU,1990-01-11,"01263131000","Thi xa Song Cong, Thai Nguyen"
S0985,PHAM LAN CHINH,1985-01-04,"0987285420","Huyen Pho Yen, Thai Nguyen"
S0986,NGUYEN QUANG HUY,1988-12-12,"01658548002","Huyen Dinh Hoa, Thai Nguyen"
S0987,TRAN HIEN CHUNG,1990-09-21,"01232341463","Huyen Dai Tu, Thai Nguyen"
S0988,LE THI QUYNH TRANG,1990-10-21,"01244931089","Huyen Phu Binh, Thai Nguyen"
S0989,CHU BA THANH,1987-10-04,"0967479093","Huyen Pho Yen, Thai Nguyen"
S0990,HOANG LONG THANG,1985-01-24,"01261757930","Huyen Tan Yen, Bac Giang"
S0991,DUONG THANH CONG,1990-01-21,"01659655144","Thanh pho Thai Nguyen, Thai Nguyen"
S0992,DANG DUC DAI,1991-04-19,"01674865304","Huyen Dong Hy, Thai Nguyen"
S0993,DO THI MAI,1990-12-17,"01672218926","Huyen Si Ma Cai, Lao Cai"
S0994,CHAU THI NGUYET,1987-03-08,"01262412050","Thi xa Song Cong, Thai Nguyen"
S0995,TRIEU THI THAO,1985-12-04,"01263314285","Thi xa Song Cong, Thai Nguyen"
S0996,NGUYEN THI HOANG ANH,1990-02-25,"0984679722","Huyen Pho Yen, Thai Nguyen"
S0997,DANG THI HUONG,1987-12-05,"01657457229","Huyen Dong Hy, Thai Nguyen"
S0998,PHAM THI HIEN,1986-10-12,"01265612176","Huyen Bach Thong, Bac Kan"
S0999,TRUONG THI HANH,1991-12-20,"01657495907","Huyen Phu Luong, Thai Nguyen"
S1000,NGUYEN THI NGOC ANH,1991-08-22,"01657462318","Thanh pho Thai Nguyen, Thai Nguyen"
1 S0951 BUI QUOC TRUNG 1989-10-09 01268024528 Huyen Bac Quang, Ha Giang
2 S0952 NGUYEN THI NGOC 1991-05-02 01262228406 Huyen Phong Tho, Lai Chau
3 S0953 TRAN HUNG NGUYEN 1987-02-24 01676288131 Huyen Dinh Hoa, Thai Nguyen
4 S0954 NGUYEN TAN DUNG 1989-04-10 0968562100 Huyen Tien Du, Bac Ninh
5 S0955 DO THI THUONG 1990-02-08 01264232833 Huyen Viet Yen, Bac Giang
6 S0956 NGUYEN THI NHUNG 1987-01-14 01249854229 Huyen Na Ri, Bac Kan
7 S0957 NGUYEN THI LOAN 1990-07-10 01235747029 Thi xa Song Cong, Thai Nguyen
8 S0958 LE THI NGOC TRANG 1990-08-24 01243175018 Huyen Pho Yen, Thai Nguyen
9 S0959 TRAN CONG MINH 1990-11-23 01686151088 Huyen Pho Yen, Thai Nguyen
10 S0960 NGUYEN THI NGOC ANH 1988-04-13 01672997174 Huyen Dong Hy, Thai Nguyen
11 S0961 LA THI NGAT 1991-10-25 01237300992 Huyen Phu Binh, Thai Nguyen
12 S0962 PHAM THI MINH CHAM 1988-12-17 01651757943 Huyen Yen Son, Tuyen Quang
13 S0963 NGUYEN THI TUOI 1985-02-16 0965570211 Thanh pho Lang Son, Lang Son
14 S0964 LE MINH HUNG 1986-03-18 01685174289 Thi xa Song Cong, Thai Nguyen
15 S0965 ONG THI THU 1988-10-03 01234640825 Huyen Son Dong, Bac Giang
16 S0966 NGUYEN THI KHANH HUYEN 1985-06-18 01688673221 Huyen Phu Binh, Thai Nguyen
17 S0967 NGUYEN THANH NHON 1990-09-28 01651137554 Thanh pho Thai Nguyen, Thai Nguyen
18 S0968 NGUYEN THI HONG 1988-10-23 0981689837 Huyen Chi Lang, Lang Son
19 S0969 THIEU THI DUNG 1986-12-14 01658590942 Huyen Bao Lam, Cao Bang
20 S0970 NGUYEN HUU THANG 1988-04-15 0966094621 Huyen Pho Yen, Thai Nguyen
21 S0971 TA THI HOAI THUONG 1989-12-21 01671984944 Huyen Muong Te, Lai Chau
22 S0972 MAI VIET ANH 1990-02-02 0987525935 Huyen Mai Son, Son La
23 S0973 KHUC THI THANH XUYEN 1991-12-20 01269605742 Thanh pho Thai Nguyen, Thai Nguyen
24 S0974 VU THI MAI 1988-08-03 0983964837 Thanh pho Thai Nguyen, Thai Nguyen
25 S0975 NGUYEN VAN TU 1991-05-15 01651078560 Thanh pho Thai Nguyen, Thai Nguyen
26 S0976 NINH VAN GIANG 1990-02-06 01682298994 Thanh pho Thai Nguyen, Thai Nguyen
27 S0977 TRIEU THI YEN NHI 1988-06-22 0965488514 Huyen Cho Moi, Bac Kan
28 S0978 NGUYEN THI BUNG 1987-04-13 01681130368 Thanh pho Lao Cai, Lao Cai
29 S0979 NGUYEN TRONG TON 1985-03-03 01651968803 Huyen Quang Xuong, Thanh Hoa
30 S0980 TRAN THUY LINH 1987-11-12 01683529386 Huyen Dinh Hoa, Thai Nguyen
31 S0981 TRAN VAN THE 1988-03-20 01677867647 Huyen Dong Hy, Thai Nguyen
32 S0982 NGUYEN MINH DUC 1989-01-04 01248224532 Huyen Vo Nhai, Thai Nguyen
33 S0983 NGUYEN CONG THUC 1985-11-14 01677048699 Thanh pho Yen Bai, Yen Bai
34 S0984 CAO XUAN VU 1990-01-11 01263131000 Thi xa Song Cong, Thai Nguyen
35 S0985 PHAM LAN CHINH 1985-01-04 0987285420 Huyen Pho Yen, Thai Nguyen
36 S0986 NGUYEN QUANG HUY 1988-12-12 01658548002 Huyen Dinh Hoa, Thai Nguyen
37 S0987 TRAN HIEN CHUNG 1990-09-21 01232341463 Huyen Dai Tu, Thai Nguyen
38 S0988 LE THI QUYNH TRANG 1990-10-21 01244931089 Huyen Phu Binh, Thai Nguyen
39 S0989 CHU BA THANH 1987-10-04 0967479093 Huyen Pho Yen, Thai Nguyen
40 S0990 HOANG LONG THANG 1985-01-24 01261757930 Huyen Tan Yen, Bac Giang
41 S0991 DUONG THANH CONG 1990-01-21 01659655144 Thanh pho Thai Nguyen, Thai Nguyen
42 S0992 DANG DUC DAI 1991-04-19 01674865304 Huyen Dong Hy, Thai Nguyen
43 S0993 DO THI MAI 1990-12-17 01672218926 Huyen Si Ma Cai, Lao Cai
44 S0994 CHAU THI NGUYET 1987-03-08 01262412050 Thi xa Song Cong, Thai Nguyen
45 S0995 TRIEU THI THAO 1985-12-04 01263314285 Thi xa Song Cong, Thai Nguyen
46 S0996 NGUYEN THI HOANG ANH 1990-02-25 0984679722 Huyen Pho Yen, Thai Nguyen
47 S0997 DANG THI HUONG 1987-12-05 01657457229 Huyen Dong Hy, Thai Nguyen
48 S0998 PHAM THI HIEN 1986-10-12 01265612176 Huyen Bach Thong, Bac Kan
49 S0999 TRUONG THI HANH 1991-12-20 01657495907 Huyen Phu Luong, Thai Nguyen
50 S1000 NGUYEN THI NGOC ANH 1991-08-22 01657462318 Thanh pho Thai Nguyen, Thai Nguyen
+81
View File
@@ -0,0 +1,81 @@
1712350,123456,student
1712351,1712351,student
1712352,1712352,student
1712353,1712353,student
1712354,1712354,student
1712355,abc123,student
1712356,1712356,student
1712357,1712357,student
1712358,1712358,student
1712359,1712359,student
1712360,1712360,student
1712361,1712361,student
1712371,1712371,student
1712372,haidang,student
1712373,1712373,student
1712374,1712374,student
1712375,1712375,student
1712376,1712376,student
1712377,1712377,student
1712378,1712378,student
1712379,1712379,student
1712486,1712486,student
1712487,1712487,student
1712488,1712488,student
1712489,1712489,student
1712490,1712490,student
1712491,1712491,student
1712492,1712492,student
1712493,1712493,student
1712494,1712494,student
S0951,Sabcd,teacher
S0952,S0952,teacher
S0953,S0953,teacher
S0954,S0954,teacher
S0955,S0955,teacher
S0956,S0956,teacher
S0957,S0957,teacher
S0958,hahu,teacher
S0959,S0959,teacher
S0960,S0960,teacher
S0961,S0961,teacher
S0962,S0962,teacher
S0963,S0963,teacher
S0964,S0964,teacher
S0965,S0965,teacher
S0966,S0966,teacher
S0967,S0967,teacher
S0968,S0968,teacher
S0969,S0969,teacher
S0970,S0970,teacher
S0971,S0971,teacher
S0972,S0972,teacher
S0973,S0973,teacher
S0974,S0974,teacher
S0975,S0975,teacher
S0976,S0976,teacher
S0977,S0977,teacher
S0978,S0978,teacher
S0979,S0979,teacher
S0980,S0980,teacher
S0981,S0981,teacher
S0982,S0982,teacher
S0983,S0983,teacher
S0984,S0984,teacher
S0985,S0985,teacher
S0986,S0986,teacher
S0987,S0987,teacher
S0988,S0988,teacher
S0989,S0989,teacher
S0990,S0990,teacher
S0991,S0991,teacher
S0992,S0992,teacher
S0993,S0993,teacher
S0994,S0994,teacher
S0995,S0995,teacher
S0996,S0996,teacher
S0997,S0997,teacher
S0998,S0998,teacher
S0999,S0999,teacher
S1000,S1000,teacher
admin,a,admin
1 1712350 123456 student
2 1712351 1712351 student
3 1712352 1712352 student
4 1712353 1712353 student
5 1712354 1712354 student
6 1712355 abc123 student
7 1712356 1712356 student
8 1712357 1712357 student
9 1712358 1712358 student
10 1712359 1712359 student
11 1712360 1712360 student
12 1712361 1712361 student
13 1712371 1712371 student
14 1712372 haidang student
15 1712373 1712373 student
16 1712374 1712374 student
17 1712375 1712375 student
18 1712376 1712376 student
19 1712377 1712377 student
20 1712378 1712378 student
21 1712379 1712379 student
22 1712486 1712486 student
23 1712487 1712487 student
24 1712488 1712488 student
25 1712489 1712489 student
26 1712490 1712490 student
27 1712491 1712491 student
28 1712492 1712492 student
29 1712493 1712493 student
30 1712494 1712494 student
31 S0951 Sabcd teacher
32 S0952 S0952 teacher
33 S0953 S0953 teacher
34 S0954 S0954 teacher
35 S0955 S0955 teacher
36 S0956 S0956 teacher
37 S0957 S0957 teacher
38 S0958 hahu teacher
39 S0959 S0959 teacher
40 S0960 S0960 teacher
41 S0961 S0961 teacher
42 S0962 S0962 teacher
43 S0963 S0963 teacher
44 S0964 S0964 teacher
45 S0965 S0965 teacher
46 S0966 S0966 teacher
47 S0967 S0967 teacher
48 S0968 S0968 teacher
49 S0969 S0969 teacher
50 S0970 S0970 teacher
51 S0971 S0971 teacher
52 S0972 S0972 teacher
53 S0973 S0973 teacher
54 S0974 S0974 teacher
55 S0975 S0975 teacher
56 S0976 S0976 teacher
57 S0977 S0977 teacher
58 S0978 S0978 teacher
59 S0979 S0979 teacher
60 S0980 S0980 teacher
61 S0981 S0981 teacher
62 S0982 S0982 teacher
63 S0983 S0983 teacher
64 S0984 S0984 teacher
65 S0985 S0985 teacher
66 S0986 S0986 teacher
67 S0987 S0987 teacher
68 S0988 S0988 teacher
69 S0989 S0989 teacher
70 S0990 S0990 teacher
71 S0991 S0991 teacher
72 S0992 S0992 teacher
73 S0993 S0993 teacher
74 S0994 S0994 teacher
75 S0995 S0995 teacher
76 S0996 S0996 teacher
77 S0997 S0997 teacher
78 S0998 S0998 teacher
79 S0999 S0999 teacher
80 S1000 S1000 teacher
81 admin a admin