fork download
  1. #include<bits/stdc++.h>
  2. //Phan Thanh Nhàn
  3. using namespace std;
  4. #define MAX_SV 100
  5. struct SINHVIEN {
  6. string MaSV, GioiTinh, HoTenSV, NamSinh;
  7. double TrungBinhHK;
  8. };
  9.  
  10. string dang_nhap(const string& tenFile) {
  11. ifstream file(tenFile);
  12. if (!file) {
  13. cerr << "Khong the mo file dang nhap!" << endl;
  14. return "";
  15. }
  16. map<string, string> taiKhoan;
  17. string maSV, matKhau;
  18. while (file >> maSV >> matKhau) {
  19. taiKhoan[maSV] = matKhau;
  20. }
  21. file.close();
  22.  
  23. int soLanSai = 0;
  24. while (soLanSai < 5) {
  25. string nhapMaSV, nhapMatKhau;
  26. cout << "Nhap ma sinh vien: ";
  27. cin >> nhapMaSV;
  28. cout << "Nhap mat khau: ";
  29. cin >> nhapMatKhau;
  30.  
  31. if (taiKhoan.find(nhapMaSV) != taiKhoan.end() && taiKhoan[nhapMaSV] == nhapMatKhau) {
  32. cout << "Dang nhap thanh cong!\n";
  33. return nhapMaSV;
  34. } else {
  35. cout << "Sai ma sinh vien hoac mat khau. Thu lai!\n";
  36. soLanSai++;
  37. }
  38. }
  39. cout << "Ban da nhap sai qua 5 lan. Thoat chuong trinh!\n";
  40. return "";
  41. }
  42.  
  43. int nhap_TT(const string& tenFile, SINHVIEN danhSach[], int &soLuong) {
  44. ifstream file(tenFile);
  45. if (!file) {
  46. cerr << "Khong the mo file!" << endl;
  47. return 0;
  48. }
  49. string maSV, gioiTinh, namSinh, hoTen;
  50. soLuong = 0;
  51. while (file >> maSV >> gioiTinh >> namSinh) {
  52. getline(file >> ws, hoTen);
  53. danhSach[soLuong].MaSV = maSV;
  54. danhSach[soLuong].GioiTinh = gioiTinh;
  55. danhSach[soLuong].NamSinh = namSinh;
  56. danhSach[soLuong].HoTenSV = hoTen;
  57. danhSach[soLuong].TrungBinhHK = 0.0;
  58. soLuong++;
  59. }
  60. file.close();
  61. return soLuong;
  62. }
  63.  
  64. void nhap_diem(const string& tenFile, SINHVIEN danhSach[], int soLuong) {
  65. ifstream file(tenFile);
  66. if (!file) {
  67. cerr << "Khong the mo file diem!" << endl;
  68. return;
  69. }
  70. string maSV;
  71. double ktlt, mmt, ctdl;
  72. while (file >> maSV >> ktlt >> mmt >> ctdl) {
  73. for (int i = 0; i < soLuong; i++) {
  74. if (danhSach[i].MaSV == maSV) {
  75. danhSach[i].TrungBinhHK = (ktlt * 4 + mmt * 3 + ctdl * 3) / 10.0;
  76. break;
  77. }
  78. }
  79. }
  80. file.close();
  81. }
  82.  
  83. void xuat(const SINHVIEN& sv) {
  84. cout << "MaSV: " << sv.MaSV << "\n"
  85. << "GioiTinh: " << sv.GioiTinh << "\n"
  86. << "HoTenSV: " << sv.HoTenSV << "\n"
  87. << "NamSinh: " << sv.NamSinh << "\n"
  88. << fixed << setprecision(2)
  89. << "TrungBinhHK: " << sv.TrungBinhHK << "\n";
  90. cout << "--------------------------\n";
  91. }
  92.  
  93. void them_sinh_vien(SINHVIEN danhSach[], int &soLuong) {//1
  94. if (soLuong >= MAX_SV) {
  95. cout << "Danh sach da day, khong the them sinh vien!\n";
  96. return;
  97. }
  98. cout << "Nhap MaSV: ";
  99. cin >> danhSach[soLuong].MaSV;
  100. for (int i = 0; i < soLuong; i++) {
  101. if (danhSach[i].MaSV == danhSach[soLuong].MaSV) {
  102. cout << "MaSV da ton tai! Them that bai.\n";
  103. return;
  104. }
  105. }
  106. cout << "Nhap ho ten: ";
  107. cin.ignore();
  108. getline(cin, danhSach[soLuong].HoTenSV);
  109. cout << "Nhap gioi tinh: ";
  110. cin >> danhSach[soLuong].GioiTinh;
  111. cout << "Nhap nam sinh: ";
  112. cin >> danhSach[soLuong].NamSinh;
  113. double ktlt, mmt, ctdl;
  114. cout << "Nhap diem KTLT: ";
  115. cin >> ktlt;
  116. cout << "Nhap diem MMT: ";
  117. cin >> mmt;
  118. cout << "Nhap diem CTDL: ";
  119. cin >> ctdl;
  120. danhSach[soLuong].TrungBinhHK = (ktlt * 4 + mmt * 3 + ctdl * 3) / 10.0;
  121. soLuong++;
  122. cout << "Them sinh vien thanh cong!\n";
  123. }
  124.  
  125. void cap_nhat_sinh_vien(SINHVIEN danhSach[], int soLuong) {//2
  126. string maSV;
  127. cout << "Nhap MaSV can cap nhat: ";
  128. cin >> maSV;
  129. for (int i = 0; i < soLuong; i++) {
  130. if (danhSach[i].MaSV == maSV) {
  131. cout << "Nhap ho ten moi: ";
  132. cin.ignore();
  133. getline(cin, danhSach[i].HoTenSV);
  134. cout << "Nhap gioi tinh moi: ";
  135. cin >> danhSach[i].GioiTinh;
  136. cout << "Nhap nam sinh moi: ";
  137. cin >> danhSach[i].NamSinh;
  138. double ktlt, mmt, ctdl;
  139. cout << "Nhap diem KTLT moi: ";
  140. cin >> ktlt;
  141. cout << "Nhap diem MMT moi: ";
  142. cin >> mmt;
  143. cout << "Nhap diem CTDL moi: ";
  144. cin >> ctdl;
  145. danhSach[i].TrungBinhHK = (ktlt * 4 + mmt * 3 + ctdl * 3) / 10.0;
  146. cout << "Cap nhat thanh cong!\n";
  147. return;
  148. }
  149. }
  150. cout << "Khong tim thay sinh vien voi MaSV: " << maSV << "\n";
  151. }
  152.  
  153. void tim_kiem_sinh_vien(SINHVIEN danhSach[], int soLuong) {//3
  154. string maSV;
  155. cout << "Nhap MaSV can tim: ";
  156. cin >> maSV;
  157. for (int i = 0; i < soLuong; i++) {
  158. if (danhSach[i].MaSV == maSV) {
  159. xuat(danhSach[i]);
  160. return;
  161. }
  162. }
  163. cout << "Khong tim thay sinh vien voi MaSV: " << maSV << "\n";
  164. }
  165.  
  166. void xoa_sinh_vien(SINHVIEN danhSach[], int &soLuong) {//4
  167. string maSV;
  168. cout << "Nhap MaSV can xoa: ";
  169. cin >> maSV;
  170. for (int i = 0; i < soLuong; i++) {
  171. if (danhSach[i].MaSV == maSV) {
  172. for (int j = i; j < soLuong - 1; j++) {
  173. danhSach[j] = danhSach[j + 1];
  174. }
  175. soLuong--;
  176. cout << "Xoa sinh vien thanh cong!\n";
  177. return;
  178. }
  179. }
  180. cout << "Khong tim thay sinh vien voi MaSV: " << maSV << "\n";
  181. }
  182.  
  183. void hien_thi_khong_canh_bao(SINHVIEN danhSach[], int soLuong) {//
  184. bool coSV = false;
  185. cout << "Danh sach sinh vien khong canh bao hoc tap:\n";
  186. for (int i = 0; i < soLuong; i++) {
  187. if (danhSach[i].TrungBinhHK >= 4.0) {
  188. xuat(danhSach[i]);
  189. coSV = true;
  190. }
  191. }
  192. if (!coSV)
  193. cout << "Khong co sinh vien nao khong bi canh bao hoc tap!\n";
  194.  
  195. }
  196.  
  197. void xuat_danh_sach_sinh_vien_ra_file(SINHVIEN danhSach[], int soLuong) {
  198. ofstream file("thongtinSV_export.txt");
  199. if (!file) {
  200. cerr << "Khong the mo file de ghi!" << endl;
  201. return;
  202. }
  203. for (int i = 0; i < soLuong; i++) {
  204. file << danhSach[i].MaSV << " "
  205. << danhSach[i].GioiTinh << " "
  206. << danhSach[i].NamSinh << " "
  207. << danhSach[i].HoTenSV << " "
  208. << fixed << setprecision(2) << danhSach[i].TrungBinhHK << "\n";
  209. }
  210. file.close();
  211. cout << "Da xuat danh sach sinh vien ra file thongtinSV_export.txt thanh cong!\n";
  212. }
  213.  
  214. void menu_giang_vien(SINHVIEN danhSach[], int &soLuong) {
  215. int luaChon;
  216. do {
  217. cout << "\n_____ MENU GIANG VIEN _____\n";
  218. cout << "1. Them sinh vien\n";
  219. cout << "2. Cap nhat thong tin sinh vien\n";
  220. cout << "3. Tim kiem sinh vien theo MaSV\n";
  221. cout << "4. Xoa sinh vien\n";
  222. cout << "5. Hien thi sinh vien khong canh bao hoc tap\n";
  223. cout << "6. Xuat danh sach sinh vien ra file.\n";
  224. cout << "7. Thoat\n";
  225. cout << "===========================\n";
  226. cout << "Nhap lua chon: ";
  227. cin >> luaChon;
  228.  
  229. switch (luaChon) {
  230. case 1:
  231. them_sinh_vien(danhSach, soLuong);
  232. break;
  233. case 2:
  234. cap_nhat_sinh_vien(danhSach, soLuong);
  235. break;
  236. case 3:
  237. tim_kiem_sinh_vien(danhSach, soLuong);
  238. break;
  239. case 4:
  240. xoa_sinh_vien(danhSach, soLuong);
  241. break;
  242. case 5:
  243. hien_thi_khong_canh_bao(danhSach, soLuong);
  244. break;
  245. case 6:
  246. xuat_danh_sach_sinh_vien_ra_file(danhSach, soLuong);
  247. break;
  248. case 7:
  249. cout << "THOAT\n";
  250. break;
  251. default:
  252. cout << "Lua chon khong hop le. Vui long chon lai!\n";
  253. }
  254. } while (luaChon != 7);
  255. }
  256.  
  257. int main() {
  258. SINHVIEN danhSach[MAX_SV];
  259. int soLuong = 0;
  260. string fileDangNhap = "dangnhap.txt";
  261. string fileDiem = "diemso.txt";
  262. string fileThongTin = "thongtinSV.txt";
  263. string maSV = dang_nhap(fileDangNhap);
  264. string inf="thongtinSV_export.txt";
  265. if (maSV.empty()) return 0;
  266. soLuong = nhap_TT(fileThongTin, danhSach, soLuong);
  267. nhap_diem(fileDiem, danhSach, soLuong);
  268. if (maSV == "11377")
  269. menu_giang_vien(danhSach, soLuong);
  270. else{
  271. for (int i = 0; i < soLuong; i++)
  272. if (danhSach[i].MaSV == maSV) {
  273. xuat(danhSach[i]);
  274. break;
  275. }
  276. }
  277. }
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
Success #stdin #stdout #stderr 0s 5292KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
Khong the mo file dang nhap!