Admins Thái Thượng Hoàng
Tổng số bài gửi : 336 Age : 35 Đến từ : cát bụi Registration date : 03/04/2008
| Tiêu đề: strutc sinh vien hoc thuoc Sun Jun 29, 2008 10:51 pm | |
| - Code:
-
/* VIET CHUONG TRINH QUAN LY DSSV THONG TIN MOI SV GOM: - MaSo, Ho, Ten - Diem CTDL, CSDL, PTTK, DTB - Ket Qua Yeu Cau Xau Dung Cac Tac Vu: - Nhap DS - In DS - Them 1 PTu Vao DS - Xoa 1 PTu Trong DS - Tiem Kiem Bang Cac PP Da Hoc - Sap Xep Bang Cac PP Da Hoc - In DS Sinh Vien Dat - Hieu Chinh Thong Tin - ... */ #include <stdio.h> #include <conio.h> #include <string.h> struct ttsinhvien { char MaSV[10], HoVaTL[20], Ten[10]; float CTDL, CSDL, PTTK; float DTB; char KQ[15]; }; typedef struct ttsinhvien SVIEN; //Dinh Nghia KDL Co Ten "SVIEN"
//===================================== //khai bao prototype SVIEN Nhap1PT(); void NhapDS (SVIEN dssv[], int n); void In1PT(SVIEN sv); void XuatDS (SVIEN dssv[], int n); void XuatDS_BT (SVIEN dssv[], int n); void Them1PT (SVIEN dssv[], int vt, int *n, SVIEN sv); void Xoa1PT (SVIEN dssv[], int vt, int *n); void HieuChinh(SVIEN dssv[], int n, int vt, SVIEN sv); void XuatDS_Dat (SVIEN dssv[], int n); void XuatDS_KDat (SVIEN dssv[], int n); //Nhung Tac Vu (Prototype) O Tren Se Co Trong tac Cac Cac Bai Tap Khac
//====================================== //Cac Prototype O Phia Duoi Se Khac Nhau Trong Tung Bai Tap int LinearSearchTen (SVIEN dssv[], int n, char *ten); void InterchangeSort_CTDL (SVIEN dssv[], int n);
//...........
//===================================== //Chuong trinh Chinh
void main() { clrscr(); SVIEN dssv[20], sv; int n, chon, kt, vt; char ht[20], ms[10], ch; printf("\n\tNhap So SV : "); scanf("%d", &n); printf("\n\tNhap DS SV !");
NhapDS (dssv, n); //Goi Ham do { clrscr(); printf("\n\n\tBAI TAP CHUKNG HAI !"); printf("\n\t1 : Nhap DS Moi !"); printf("\n\t2 : Xuat Danh Sach !"); printf("\n\t3 : Them 1 Phan Tu vao DS !"); printf("\n\t4 : Xoa 1 Phan Tu Trong DS !"); printf("\n\t5 : Tim Kiem Theo Ten !"); printf("\n\t6 : Tim Kiem Theo ma So !"); printf("\n\t7 : Sap Xep DS bang PPhap InsertionSort Dua Vao Ten !"); printf("\n\t8 : Sap Xep DS bang PPhap SelectionSort Dua Vao Ma So !"); printf("\n\t9 : Sap Xep DS bang PPhap InterchangeSort Dua Vao Diem CTDL !"); printf("\n\t10 : Sap Xep DS bang PPhap BubbleSort Dua Vao Diem TB !"); printf("\n\t11 : Sap Xep DS bang PPhap QuickSort Dua Vao Diem CSDL !"); printf("\n\t12 : Hieu Chinh Noi Dung 1 Phan Tu !"); printf("\n\t13 : Danh Sach Nhung SVien Dat !"); printf("\n\t14 : Danh Sach Nhung SVien Khong Dat !"); printf("\n\t15 : Xuat Danh Sach Dang BTHuong !"); printf("\n\t.....!"); printf("\n\t0 : THOAT KHOI CHUONG TRINH !"); printf("\n\tBan Chon Chuc Nang Nao ? "); scanf ("%d", &chon); switch(chon) { case 1: { clrscr(); printf("\n\tNhap DS Sinh Vien Moi !"); printf("\n\tNhap So SV : "); scanf("%d", &n); printf("\n\tNhap DS Sinh Vien !"); NhapDS (dssv, n); //Goi Ham break; } case 2: { clrscr(); printf("\n\tDanh Sach Sinh Vien Hien tai !\n"); XuatDS (dssv, n); //Goi Ham getch(); break;
} case 3: { clrscr(); printf("\n\tThem 1 Phan Tu Vao DS !"); printf("\n\tDS Truoc Khi Them !"); XuatDS (dssv, n); getch(); do { printf("\n\tNhap Vi Tri Can Them (0 -> %d) : ", n); scanf ("%d", &vt); }while (vt < 0 || vt > n); printf("\n\tNhap Noi Dung Phan Tu Can Them !"); sv = Nhap1PT(); Them1PT (dssv, vt, &n, sv); printf("\n\tDS Sau Khi Them !"); XuatDS (dssv, n); getch(); break; } case 4: { clrscr(); printf("\n\tXoa 1 Phan Tu Trong DS !"); printf("\n\tDS Truoc Khi Xoa !"); XuatDS (dssv, n); getch(); do { printf("\n\tNhap Vi Tri Can Xoa (0 -> %d) : ", n - 1); scanf ("%d", &vt); }while (vt < 0 || vt >= n); printf("\n\tThong Tin Hoc Sinh Can Xoa La !"); In1PT (dssv[vt]); printf("\n\tBan Co Chac Chan Xoa Khong (Y/N) ? "); ch = getch(); if ((ch == 'y') || (ch == 'Y')) { Xoa1PT (dssv, vt, &n); printf("\n\tDS Sau Khi Xoa !"); XuatDS (dssv, n); } else printf("\n\tKhong Xoa Mau Tin Tren !"); getch(); break; } case 5: { clrscr(); printf("\n\tTim Kiem 1 SVien Trong DS Bang PPhap Tuyen Tinh !"); printf("\n\tNhap ten Can Tim (Chi Nhap Ten) : "); fflush(stdin); gets(ht); kt = LinearSearchTen (dssv, n, ht); //Goi Ham if (kt != -1) { printf("\n\tTim Thay SV Co ten \"%s\" Tai Vi Tri %d !", ht, kt + 1); printf("\n\tThong Tin SV Vua Tim La !"); In1PT (dssv[kt]); //Goi Ham } else printf("\n\tKhong Tim Thay SV Co Ten \"%s\" Trong DS !", ht); getch(); break; } case 9: { clrscr(); printf("\n\tSap Xep DS Dua Vao Diem CTDL Bang PP InterchangeSort !"); printf("\n\tDanh Sach Truoc Khi Sap Xep !\n"); XuatDS (dssv, n); //Goi Ham getch(); InterchangeSort_CTDL (dssv, n); //Goi Ham printf("\n\tDanh Sach Sau Khi Sap Xep !\n"); XuatDS (dssv, n); //Goi Ham getch(); break; } case 12: { clrscr(); printf("\n\tHieu Chinh Noi Dung 1 Phan Tu !"); do { printf("\n\tNhap Vi Tri Phan Tu Can HChinh (0 -> %d) : ", n - 1); scanf("%d", &vt); }while (vt < 0 || vt >=n); printf("\n\tThong Tin Phan Tu Can HChinh !"); In1PT(dssv[vt]); printf("\n\tNhap Noi Dung Moi !"); sv = Nhap1PT(); HieuChinh( dssv, n, vt, sv); clrscr(); printf("\n\tThong Tin Sau Khi HChinh !"); In1PT(dssv[vt]); getch(); break; } case 13: { clrscr(); printf("\n\tDanh Sach Sinh Vien Dat !\n"); XuatDS_Dat (dssv, n); //Goi Ham getch(); break; } case 14: { clrscr(); printf("\n\tDanh Sach Sinh Vien Khong Dat !\n"); XuatDS_KDat (dssv, n); //Goi Ham getch(); break; } case 15: { clrscr(); printf("\n\tDanh Sach Sinh Vien Hien tai !\n"); XuatDS_BT (dssv, n); //Goi Ham getch(); break; } }//KT Switch }while (chon > 0); getch(); }//KT CTChinh
//CD Cac prototype o tren //===================================== //Tac Vu Nay Tuong Tu Cho Cac bai Tap Khac Ve Cau Truc SVIEN Nhap1PT () { SVIEN sv; char st[30]; float d; printf("\n\t\tNhap Ma So SV : "); scanf ("%s", &sv.MaSV); printf("\t\tNhap Ho & TL : "); fflush(stdin); gets (st); strcpy (sv.HoVaTL, st); printf("\t\tNhap Ten SV : "); fflush(stdin); gets (st); strcpy (sv.Ten, st); printf("\t\tNhap Diem !"); do { printf("\n\t\tCTDL : "); scanf ("%f", &d); sv.CTDL = d; }while ((sv.CTDL < 0) || (sv.CTDL > 10)); do { printf("\t\tCSDL : "); scanf ("%f", &d); sv.CSDL = d; }while ((sv.CSDL < 0) || (sv.CSDL > 10)); do { printf("\t\tPTTK : "); scanf ("%f", &d); sv.PTTK = d; }while ((sv.PTTK < 0) || (sv.PTTK > 10)); sv.DTB = (sv.CTDL + sv.CSDL + sv.PTTK)/3; if ((sv.DTB >= 5) && (sv.CTDL >= 4) && (sv.CSDL >=4 ) && (sv.PTTK >= 4)) strcpy (sv.KQ, "DAT"); else strcpy (sv.KQ, "Khong Dat"); return sv; }
//===================================== //Tac Vu Nay Tuong Tu Cho Cac bai Tap Khac Ve Cau Truc void NhapDS (SVIEN dssv[], int n) { int i; for (i = 0; i < n; i++) { printf("\n\tNhap Thong Tinh SV Thu %d !", i+1); dssv[i] = Nhap1PT(); }} //===================================== //Tac Vu Nay Tuong Tu Cho Cac bai Tap Khac Ve Cau Truc void In1PT(SVIEN sv) { printf("\n\t\tMa So Sinh Vien : %s !", sv.MaSV); printf("\n\t\tHo va ten Sinh Vien : %s %s !",sv.HoVaTL, sv.Ten); printf("\n\t\tDiem CTDL : %7.1f ; CSDL : %7.1fd ; PTTK : %7.1f ; DTB : %7.1f !",sv.CTDL, sv.CSDL, sv.PTTK, sv.DTB); printf("\n\t\tKet Qua Cua SV : %s !", sv.KQ); } //===================================== //Tac Vu Nay Tuong Tu Cho Cac bai Tap Khac Ve Cau Truc //Dang Nay Xuat DS Dang Binh Thuong void XuatDS (SVIEN dssv[], int n) { int i; for (i = 0; i < n; i++) { printf("\n\tThong Tin SV Thu %d !", i+1); In1PT (dssv[i]); } }
//===================================== //Tac Vu Nay Tuong Tu Cho Cac bai Tap Khac Ve Cau Truc void XuatDS_BT (SVIEN dssv[], int n) { int i; printf("\nÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"); printf("\n³STT³ MaSV ³ Ho va Ten ³CTDL³CSDL³PTTK³ DTB ³ Ket Qua ³"); for (i = 0; i < n; i++) { printf("\nÃÄÄÄ+ÄÄÄÄÄÄÄÄÄÄ+ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ+ÄÄÄÄ+ÄÄÄÄ+ÄÄÄÄ+ÄÄÄÄÄ+ÄÄÄÄÄÄÄÄÄÄÄ´"); printf("\n³%-3d³ %-9s³ %-18s %-9s³ %-3.1f³ %-3.1f³ %-3.1f³ %-4.1f³%-11s³", i + 1, dssv[i].MaSV, dssv[i].HoVaTL , dssv[i].Ten, dssv[i].CTDL, dssv[i].CSDL, dssv[i].PTTK, dssv[i].DTB, dssv[i].KQ); } printf("\nÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ"); } //===================================== //In DS Nhung Sinh Vien Dat void XuatDS_Dat (SVIEN dssv[], int n) { int i; printf("\nÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"); printf("\n³STT³ MaSV ³ Ho va Ten ³CTDL³CSDL³PTTK³ DTB ³ Ket Qua ³"); for (i = 0; i < n; i++) if (stricmp(dssv[i].KQ, "DAT") == 0) { printf("\nÃÄÄÄ+ÄÄÄÄÄÄÄÄÄÄ+ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ+ÄÄÄÄ+ÄÄÄÄ+ÄÄÄÄ+ÄÄÄÄÄ+ÄÄÄÄÄÄÄÄÄÄÄ´"); printf("\n³%-3d³ %-9s³ %-18s %-9s³ %-3d³ %-3d³ %-3d³ %-4.1f³%-11s³", i + 1, dssv[i].MaSV, dssv[i].HoVaTL , dssv[i].Ten, dssv[i].CTDL, dssv[i].CSDL, dssv[i].PTTK, dssv[i].DTB, dssv[i].KQ); } printf("\nÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ"); } //===================================== //In DS Nhung Sinh Vien Khong Dat void XuatDS_KDat (SVIEN dssv[], int n) { int i; printf("\nÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿"); printf("\n³STT³ MaSV ³ Ho va Ten ³CTDL³CSDL³PTTK³ DTB ³ Ket Qua ³"); for (i = 0; i < n; i++) if (stricmp(dssv[i].KQ, "DAT") != 0) { printf("\nÃÄÄÄ+ÄÄÄÄÄÄÄÄÄÄ+ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ+ÄÄÄÄ+ÄÄÄÄ+ÄÄÄÄ+ÄÄÄÄÄ+ÄÄÄÄÄÄÄÄÄÄÄ´"); printf("\n³%-3d³ %-9s³ %-18s %-9s³ %-3.1f³ %-3.1f³ %-3.1f³ %-4.1f³%-11s³", i + 1, dssv[i].MaSV, dssv[i].HoVaTL , dssv[i].Ten, dssv[i].CTDL, dssv[i].CSDL, dssv[i].PTTK, dssv[i].DTB, dssv[i].KQ); } printf("\nÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ"); }
//===================================== //Tac Vu Nay Tuong Tu Cho Cac bai Tap Khac Ve Cau Truc void Them1PT (SVIEN dssv[], int vt, int *n, SVIEN sv) { int i; if ((vt < 0) || (vt > *n)) printf("\n\tvi Tri Them Khong Hop le !"); else { //Doi Cac Phan Tu Tu Cuoi Den VTThem Len 1 VTri for (i = *n; i > vt; i--) dssv[i] = dssv[i - 1]; //KT Qua Trinh Doi dssv[vt] = sv; *n = *n + 1; //Tang SPTu len 1 DV } }
//===================================== //Tac Vu Nay Tuong Tu Cho Cac bai Tap Khac Ve Cau Truc void Xoa1PT (SVIEN dssv[], int vt, int *n) { int i; if ((vt < 0) || (vt >= *n)) printf("\n\tVi Tri Xoa Khong Hop le !"); else { //Doi Cac Phan Tu Tu VTXoa Den Cuoi Xuong 1 VT for (i = vt + 1; i < *n; i++) dssv[i - 1] = dssv[i]; //KT Qua Trinh Doi *n = *n - 1; //Tang SPTu len 1 DV } }
//===================================== int LinearSearchTen1 (SVIEN dssv[], int n, char *ten) { int i = 0; while ((i < n) && (stricmp (dssv[i].Ten, ten) != 0)) i++; if (i < n) return i; //Tim Thay return -1; //Khong Tim Thay }
int LinearSearchTen (SVIEN dssv[], int n, char *ten) { int i = 0; for (i = 0; i < n; i++) if(stricmp (dssv[i].Ten, ten) == 0) //if (a[i] == x) return i; //Tim Thay return -1; //Khong Tim Thay }
//===================================== void HoanVi (SVIEN *sv1, SVIEN *sv2) { SVIEN temp; temp = *sv1; *sv1 = *sv2; *sv2 = temp; }
//===================================== //Sap Xep Bang PP Doi Cho Truc Tiep Dua Vao Diem CTDL void InterchangeSort_CTDL (SVIEN dssv[], int n) { int i, j; for (i = 0; i < n - 1; i++) for (j = i+ 1; j < n; j++) if (dssv[i].CTDL > dssv[j].CTDL) HoanVi (&dssv[i], &dssv[j]); }
//===================================== void HieuChinh(SVIEN dssv[], int n,int vt, SVIEN sv) { if (vt < 0 || vt >= n) printf("\n\tVi Tri Hieu Chinh Khong Hop Le !"); else dssv[vt] = sv; } //=====================================
| |
|