update,
This commit is contained in:
297
marissa.sam/task1/src - Copy/main copy.cpp
Normal file
297
marissa.sam/task1/src - Copy/main copy.cpp
Normal file
@@ -0,0 +1,297 @@
|
||||
#include <iostream>
|
||||
#include <iomanip>
|
||||
#include <fstream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
using namespace std;
|
||||
|
||||
struct MarksRecord {
|
||||
string name;
|
||||
int maths_marks, chinese_marks, english_marks;
|
||||
string grade;
|
||||
};
|
||||
|
||||
vector<MarksRecord> records;
|
||||
|
||||
string functionGetGrade(int maths_marks, int chinese_marks, int english_marks){
|
||||
string grade;
|
||||
int marks_sum;
|
||||
float marks_avg;
|
||||
|
||||
marks_sum = 1;
|
||||
marks_sum = (maths_marks + chinese_marks + english_marks);
|
||||
marks_avg = marks_sum / 3;
|
||||
|
||||
if (marks_avg > 90) return "A";
|
||||
if (marks_avg > 80) return "B";
|
||||
if (marks_avg > 70) return "C";
|
||||
return "D";
|
||||
}
|
||||
|
||||
void print_menu() {
|
||||
cout << "\n";
|
||||
cout << "Mark Record System\n";
|
||||
cout << "\n";
|
||||
cout << "------------------------------------------\n";
|
||||
cout << "1. Add marks record \n";
|
||||
cout << "2. Delete marks record \n";
|
||||
cout << "3. Edit marks record \n";
|
||||
cout << "4. Print current marks record in system \n";
|
||||
cout << "5. import records from file \n";
|
||||
cout << "6. export records to file \n";
|
||||
cout << "------------------------------------------\n";
|
||||
cout << "E. Exit\n";
|
||||
cout << "Enter your choice: ";
|
||||
}
|
||||
|
||||
void functionAdd() {
|
||||
string temp;
|
||||
bool name_pass;
|
||||
name_pass = false;
|
||||
|
||||
MarksRecord record;
|
||||
|
||||
while (!name_pass){
|
||||
bool error;
|
||||
error = false;
|
||||
|
||||
cout << "Enter name: ";
|
||||
cin >> temp;
|
||||
|
||||
for (size_t i = 0; i < records.size(); i++) {
|
||||
if (records[i].name == temp) {
|
||||
error = true;
|
||||
cout << "ERROR: duplicated student name found"<<"\n";
|
||||
}
|
||||
}
|
||||
|
||||
// check if name entered is empty
|
||||
if (temp == string()){
|
||||
error = true;
|
||||
}
|
||||
|
||||
if (!error) {
|
||||
record.name = temp;
|
||||
name_pass = true;
|
||||
}
|
||||
}
|
||||
|
||||
cout << "Enter maths marks: ";
|
||||
cin >> record.maths_marks;
|
||||
cout << "Enter chinese marks: ";
|
||||
cin >> record.chinese_marks;
|
||||
cout << "Enter english marks: ";
|
||||
cin >> record.english_marks;
|
||||
records.push_back(record);
|
||||
}
|
||||
|
||||
void functionDelete() {
|
||||
string name;
|
||||
bool user_found;
|
||||
user_found = false;
|
||||
|
||||
cout << "Enter name to delete: ";
|
||||
cin >> name;
|
||||
for (size_t i = 0; i < records.size(); i++) {
|
||||
if (records[i].name == name) {
|
||||
records.erase(records.begin() + i);
|
||||
user_found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!user_found){
|
||||
cout << "ERROR: student record not found";
|
||||
}else{
|
||||
cout << "1 record deleted.";
|
||||
}
|
||||
}
|
||||
|
||||
void functionEdit() {
|
||||
string name;
|
||||
string temp;
|
||||
bool user_found;
|
||||
|
||||
cout << "Enter name to edit: ";
|
||||
cin >> name;
|
||||
for (size_t i = 0; i < records.size(); i++) {
|
||||
if (records[i].name == name) {
|
||||
user_found = true;
|
||||
cout << "Enter new maths marks [- to skip]: ";
|
||||
cin >> temp;
|
||||
if (temp != "-") {
|
||||
records[i].maths_marks = stoi(temp);
|
||||
}
|
||||
|
||||
cout << "Enter new chinese marks [- to skip]: ";
|
||||
cin >> temp;
|
||||
if (temp != "-") {
|
||||
records[i].chinese_marks = stoi(temp);
|
||||
}
|
||||
|
||||
cout << "Enter new english marks [- to skip]: ";
|
||||
cin >> temp;
|
||||
if (temp != "-") {
|
||||
records[i].english_marks = stoi(temp);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!user_found){
|
||||
cout << "sorry but no user found to update record";
|
||||
}else{
|
||||
cout << "1 record updated";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void functionPrint() {
|
||||
cout << endl;
|
||||
cout
|
||||
<< setw(10) << setfill(' ') << left << "Name" << setw(10)
|
||||
<< setw(10) << setfill(' ') << left << "Maths" << setw(10)
|
||||
<< setw(10) << setfill(' ') << left << "Chinese" << setw(10)
|
||||
<< setw(10) << setfill(' ') << left << "English" << setw(10)
|
||||
<< setw(10) << setfill(' ') << left << "Grade" << setw(10);
|
||||
|
||||
cout << "" << setw(50) << setfill('-') << "\n";
|
||||
cout << "\n";
|
||||
|
||||
for (const auto& record : records) {
|
||||
string calc_grade;
|
||||
calc_grade = functionGetGrade(record.maths_marks, record.chinese_marks, record.english_marks);
|
||||
|
||||
cout
|
||||
<< setw(10) << setfill(' ') << left << record.name
|
||||
<< setw(10) << setfill(' ') << left << record.maths_marks
|
||||
<< setw(10) << setfill(' ') << left << record.chinese_marks
|
||||
<< setw(10) << setfill(' ') << left << record.english_marks
|
||||
|
||||
// append 2 chars on the left
|
||||
<< setw(2) << setfill(' ') << left << " "
|
||||
<< setw(10) << setfill(' ') << left << calc_grade << "\n";
|
||||
}
|
||||
cout << "\n";
|
||||
}
|
||||
|
||||
|
||||
void functionImport(){
|
||||
ifstream inFile;
|
||||
ofstream outFile;
|
||||
string student_name, maths_mark, chinese_mark, english_mark, grade;
|
||||
int record_added;
|
||||
record_added = 0;
|
||||
|
||||
string filename;
|
||||
|
||||
cout << "Please enter a file with list of student: ";
|
||||
cin >> filename;
|
||||
|
||||
inFile.open(filename);
|
||||
if (!inFile) {
|
||||
cout << "Cannot open the input file." << endl;
|
||||
// << "The program terminates." << endl;
|
||||
// return 1;
|
||||
}else{
|
||||
while (true){
|
||||
inFile >> student_name;
|
||||
|
||||
if (student_name == "END") {
|
||||
break;
|
||||
}else{
|
||||
inFile >> maths_mark >> chinese_mark >> english_mark;
|
||||
MarksRecord record;
|
||||
record.name = student_name;
|
||||
record.maths_marks = stoi(maths_mark);
|
||||
record.chinese_marks = stoi(chinese_mark);
|
||||
record.english_marks = stoi(english_mark);
|
||||
|
||||
records.push_back(record);
|
||||
|
||||
record_added = record_added + 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
cout << "record imported : " << record_added << "\n";
|
||||
cout << "\n";
|
||||
|
||||
|
||||
inFile.close();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void functionExport(){
|
||||
ofstream outFile;
|
||||
string filename;
|
||||
|
||||
cout << "Please enter a file to export: ";
|
||||
cin >> filename;
|
||||
|
||||
outFile.open(filename);
|
||||
|
||||
outFile << setw(10) << setfill(' ') << ""
|
||||
<< "~ STUDENT RECORDS ~";
|
||||
outFile << "\n";
|
||||
outFile << "\n";
|
||||
|
||||
outFile
|
||||
<< setw(10) << setfill(' ') << left << "Name" << setw(10)
|
||||
<< setw(10) << setfill(' ') << left << "Maths" << setw(10)
|
||||
<< setw(10) << setfill(' ') << left << "Chinese" << setw(10)
|
||||
<< setw(10) << setfill(' ') << left << "English" << setw(10)
|
||||
<< setw(10) << setfill(' ') << left << "Grade" << setw(10);
|
||||
|
||||
outFile << "" << setw(50) << setfill('-') << "\n";
|
||||
outFile << "\n";
|
||||
|
||||
for (const auto& record : records) {
|
||||
string calc_grade;
|
||||
calc_grade = functionGetGrade(record.maths_marks, record.chinese_marks, record.english_marks);
|
||||
|
||||
outFile
|
||||
<< setw(10) << setfill(' ') << left << record.name
|
||||
<< setw(10) << setfill(' ') << left << record.maths_marks
|
||||
<< setw(10) << setfill(' ') << left << record.chinese_marks
|
||||
<< setw(10) << setfill(' ') << left << record.english_marks
|
||||
|
||||
// append 2 chars on the left
|
||||
<< setw(2) << setfill(' ') << left << " "
|
||||
<< setw(10) << setfill(' ') << left << calc_grade << "\n";
|
||||
}
|
||||
outFile << "\n";
|
||||
cout << "export done !" << "\n";
|
||||
}
|
||||
|
||||
int main() {
|
||||
char choice;
|
||||
while (true) {
|
||||
print_menu();
|
||||
cin >> choice;
|
||||
|
||||
switch (choice) {
|
||||
case '1': functionAdd(); break;
|
||||
case '2': functionDelete(); break;
|
||||
case '3': functionEdit(); break;
|
||||
case '4': functionPrint(); break;
|
||||
case '5': functionImport(); break;
|
||||
case '6': functionExport(); break;
|
||||
|
||||
// exit handler
|
||||
case 'E':
|
||||
case 'e':
|
||||
return 0;
|
||||
|
||||
// exception handler
|
||||
default:
|
||||
cout << "Invalid choice. Please try again.\n";
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
299
marissa.sam/task1/src - Copy/main.cpp
Normal file
299
marissa.sam/task1/src - Copy/main.cpp
Normal file
@@ -0,0 +1,299 @@
|
||||
#include <iostream>
|
||||
#include <iomanip>
|
||||
#include <fstream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
using namespace std;
|
||||
|
||||
struct MarksRecord {
|
||||
string name;
|
||||
int maths_marks, chinese_marks, english_marks;
|
||||
string grade;
|
||||
};
|
||||
|
||||
vector<MarksRecord> records;
|
||||
|
||||
string functionGetGrade(int maths_marks, int chinese_marks, int english_marks){
|
||||
string grade;
|
||||
int marks_sum;
|
||||
float marks_avg;
|
||||
|
||||
marks_sum = 1;
|
||||
marks_sum = (maths_marks + chinese_marks + english_marks);
|
||||
marks_avg = marks_sum / 3;
|
||||
|
||||
if (marks_avg > 90) return "A";
|
||||
if (marks_avg > 80) return "B";
|
||||
if (marks_avg > 70) return "C";
|
||||
return "D";
|
||||
}
|
||||
|
||||
void print_menu() {
|
||||
cout << "\n";
|
||||
cout << "Mark Record System\n";
|
||||
cout << "\n";
|
||||
cout << "------------------------------------------\n";
|
||||
cout << "1. Add marks record \n";
|
||||
cout << "2. Delete marks record \n";
|
||||
cout << "3. Edit marks record \n";
|
||||
cout << "4. Print current marks record in system \n";
|
||||
cout << "5. import records from file \n";
|
||||
cout << "6. export records to file \n";
|
||||
cout << "------------------------------------------\n";
|
||||
cout << "E. Exit\n";
|
||||
cout << "Enter your choice: ";
|
||||
}
|
||||
|
||||
void functionAdd() {
|
||||
string temp;
|
||||
bool name_pass;
|
||||
name_pass = false;
|
||||
|
||||
MarksRecord record;
|
||||
|
||||
while (!name_pass){
|
||||
bool error;
|
||||
error = false;
|
||||
|
||||
cout << "Enter name: ";
|
||||
cin >> temp;
|
||||
|
||||
for (size_t i = 0; i < records.size(); i++) {
|
||||
if (records[i].name == temp) {
|
||||
error = true;
|
||||
cout << "ERROR: duplicated student name found"<<"\n";
|
||||
}
|
||||
}
|
||||
|
||||
// check if name entered is empty
|
||||
if (temp == string()){
|
||||
error = true;
|
||||
}
|
||||
|
||||
if (!error) {
|
||||
record.name = temp;
|
||||
name_pass = true;
|
||||
}
|
||||
}
|
||||
|
||||
cout << "Enter maths marks: ";
|
||||
cin >> record.maths_marks;
|
||||
cout << "Enter chinese marks: ";
|
||||
cin >> record.chinese_marks;
|
||||
cout << "Enter english marks: ";
|
||||
cin >> record.english_marks;
|
||||
|
||||
records.push_back(record);
|
||||
cout << "1 record added.";
|
||||
}
|
||||
|
||||
void functionDelete() {
|
||||
string name;
|
||||
bool user_found;
|
||||
user_found = false;
|
||||
|
||||
cout << "Enter name to delete: ";
|
||||
cin >> name;
|
||||
for (size_t i = 0; i < records.size(); i++) {
|
||||
if (records[i].name == name) {
|
||||
records.erase(records.begin() + i);
|
||||
user_found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!user_found){
|
||||
cout << "ERROR: student record not found";
|
||||
}else{
|
||||
cout << "1 record deleted.";
|
||||
}
|
||||
}
|
||||
|
||||
void functionEdit() {
|
||||
string name;
|
||||
string temp;
|
||||
bool user_found;
|
||||
|
||||
cout << "Enter name to edit: ";
|
||||
cin >> name;
|
||||
for (size_t i = 0; i < records.size(); i++) {
|
||||
if (records[i].name == name) {
|
||||
user_found = true;
|
||||
cout << "Enter new maths marks [- to skip]: ";
|
||||
cin >> temp;
|
||||
if (temp != "-") {
|
||||
records[i].maths_marks = stoi(temp);
|
||||
}
|
||||
|
||||
cout << "Enter new chinese marks [- to skip]: ";
|
||||
cin >> temp;
|
||||
if (temp != "-") {
|
||||
records[i].chinese_marks = stoi(temp);
|
||||
}
|
||||
|
||||
cout << "Enter new english marks [- to skip]: ";
|
||||
cin >> temp;
|
||||
if (temp != "-") {
|
||||
records[i].english_marks = stoi(temp);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!user_found){
|
||||
cout << "sorry but no user found to update record";
|
||||
}else{
|
||||
cout << "1 record updated.";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void functionPrint() {
|
||||
cout << endl;
|
||||
cout
|
||||
<< setw(10) << setfill(' ') << left << "Name" << setw(10)
|
||||
<< setw(10) << setfill(' ') << left << "Maths" << setw(10)
|
||||
<< setw(10) << setfill(' ') << left << "Chinese" << setw(10)
|
||||
<< setw(10) << setfill(' ') << left << "English" << setw(10)
|
||||
<< setw(10) << setfill(' ') << left << "Grade" << setw(10);
|
||||
|
||||
cout << "" << setw(50) << setfill('-') << "\n";
|
||||
cout << "\n";
|
||||
|
||||
for (const auto& record : records) {
|
||||
string calc_grade;
|
||||
calc_grade = functionGetGrade(record.maths_marks, record.chinese_marks, record.english_marks);
|
||||
|
||||
cout
|
||||
<< setw(10) << setfill(' ') << left << record.name
|
||||
<< setw(10) << setfill(' ') << left << record.maths_marks
|
||||
<< setw(10) << setfill(' ') << left << record.chinese_marks
|
||||
<< setw(10) << setfill(' ') << left << record.english_marks
|
||||
|
||||
// append 2 chars on the left
|
||||
<< setw(2) << setfill(' ') << left << " "
|
||||
<< setw(10) << setfill(' ') << left << calc_grade << "\n";
|
||||
}
|
||||
cout << "\n";
|
||||
}
|
||||
|
||||
|
||||
void functionImport(){
|
||||
ifstream inFile;
|
||||
ofstream outFile;
|
||||
string student_name, maths_mark, chinese_mark, english_mark, grade;
|
||||
int record_added;
|
||||
record_added = 0;
|
||||
|
||||
string filename;
|
||||
|
||||
cout << "Please enter a file with list of student: ";
|
||||
cin >> filename;
|
||||
|
||||
inFile.open(filename);
|
||||
if (!inFile) {
|
||||
cout << "Cannot open the input file." << endl;
|
||||
// << "The program terminates." << endl;
|
||||
// return 1;
|
||||
}else{
|
||||
while (true){
|
||||
inFile >> student_name;
|
||||
|
||||
if (student_name == "END") {
|
||||
break;
|
||||
}else{
|
||||
inFile >> maths_mark >> chinese_mark >> english_mark;
|
||||
MarksRecord record;
|
||||
record.name = student_name;
|
||||
record.maths_marks = stoi(maths_mark);
|
||||
record.chinese_marks = stoi(chinese_mark);
|
||||
record.english_marks = stoi(english_mark);
|
||||
|
||||
records.push_back(record);
|
||||
|
||||
record_added = record_added + 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
cout << "record imported : " << record_added << "\n";
|
||||
cout << "\n";
|
||||
|
||||
|
||||
inFile.close();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void functionExport(){
|
||||
ofstream outFile;
|
||||
string filename;
|
||||
|
||||
cout << "Please enter a file to export: ";
|
||||
cin >> filename;
|
||||
|
||||
outFile.open(filename);
|
||||
|
||||
outFile << setw(10) << setfill(' ') << ""
|
||||
<< "~ STUDENT RECORDS ~";
|
||||
outFile << "\n";
|
||||
outFile << "\n";
|
||||
|
||||
outFile
|
||||
<< setw(10) << setfill(' ') << left << "Name" << setw(10)
|
||||
<< setw(10) << setfill(' ') << left << "Maths" << setw(10)
|
||||
<< setw(10) << setfill(' ') << left << "Chinese" << setw(10)
|
||||
<< setw(10) << setfill(' ') << left << "English" << setw(10)
|
||||
<< setw(10) << setfill(' ') << left << "Grade" << setw(10);
|
||||
|
||||
outFile << "" << setw(50) << setfill('-') << "\n";
|
||||
outFile << "\n";
|
||||
|
||||
for (const auto& record : records) {
|
||||
string calc_grade;
|
||||
calc_grade = functionGetGrade(record.maths_marks, record.chinese_marks, record.english_marks);
|
||||
|
||||
outFile
|
||||
<< setw(10) << setfill(' ') << left << record.name
|
||||
<< setw(10) << setfill(' ') << left << record.maths_marks
|
||||
<< setw(10) << setfill(' ') << left << record.chinese_marks
|
||||
<< setw(10) << setfill(' ') << left << record.english_marks
|
||||
|
||||
// append 2 chars on the left
|
||||
<< setw(2) << setfill(' ') << left << " "
|
||||
<< setw(10) << setfill(' ') << left << calc_grade << "\n";
|
||||
}
|
||||
outFile << "\n";
|
||||
cout << "export done !" << "\n";
|
||||
}
|
||||
|
||||
int main() {
|
||||
char choice;
|
||||
while (true) {
|
||||
print_menu();
|
||||
cin >> choice;
|
||||
|
||||
switch (choice) {
|
||||
case '1': functionAdd(); break;
|
||||
case '2': functionDelete(); break;
|
||||
case '3': functionEdit(); break;
|
||||
case '4': functionPrint(); break;
|
||||
case '5': functionImport(); break;
|
||||
case '6': functionExport(); break;
|
||||
|
||||
// exit handler
|
||||
case 'E':
|
||||
case 'e':
|
||||
return 0;
|
||||
|
||||
// exception handler
|
||||
default:
|
||||
cout << "Invalid choice. Please try again.\n";
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
5
marissa.sam/task1/src - Copy/mark_list.txt
Normal file
5
marissa.sam/task1/src - Copy/mark_list.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
Ivy 86 96 83
|
||||
Anson 55 70 67
|
||||
Mark 56 89 74
|
||||
Candy 78 63 97
|
||||
END
|
Reference in New Issue
Block a user