Admin Admin
Tổng số bài gửi : 99 Join date : 16/01/2008 Age : 42
| Tiêu đề: Bai C quan ly lop hoc va sinh vien, anh em tham khao, bai nay hay lam Sun Mar 09, 2008 2:44 am | |
| #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <ctype.h> #include <string.h> //==================================== //Cau truc mo ta thong tin mot lop hoc (class) typedef struct {char ClassName[10],HeadTeacher[30],RoomNo[40],TimeSlot[40]; int StudentNr;//So sinh vien } CL; /* Vidu: Class Name: C0611L Head Teacher: Phan Dang Cau Room No: Class 1, Lab 1 Time Slot: 17:30 - 19:30 Student Number: 24 (luu y: StudentNr>=16 va <=30) */ //================================= //Khai bao cac bien toan cuc, tep Class.dat chua thong tin ve lop hoc char *CL_file="Class.dat";FILE *CL_f; //================================= //Khai bao nguyen mau cac ham char* UpperStr(char *p); //loai bo dau cach va chuyen thanh chu in hoa. void OpenFiles(); //Mo va kiem tra cac tep du lieu int CL_count();//Ham tra ve so lop hoc int CL_search(char xCL[10]);//Tim kiem ma mon hoc va tra ve vi tri tim thay void CL_sort();//Sap xep tep tang dan theo ten lop void CL_AddNew();//Nhap cac lop hoc moi void CL_edit();//Sua thong tin ve lop (khong sua ten lop) void CL_dele();//Xoa lop hoc void CL_view();//Hien thi danh sach lop tren man hinh void CL_menu();//Hien thuc don thong tin ve lop hoc //=============================== /*Ham nay co dau vao la chuoi ky tu p, ham xu ly va tra ve chuoi p nhung da loai bo dau cach va chuyen thanh chu in hoa. Ham nay dung de bien doi chuoi nhap vao thanh ten lop hop le: chi chua chu in hoa va khong co dau cach*/ char* UpperStr(char *p) {int i,k,n;char *q; n=strlen(p);q = (char*) malloc(sizeof(char)*(n+1)); k=0; for(i=0;i<n;i++) if(p[i]!=' ') q[k++]=toupper(p[i]); q[k]='\0'; strcpy(p,q);free(q); return(p); } //================================= //Mo va kiem tra cac tep du lieu void OpenFiles() {char ch; //Kiem tra xem tep tepCL da co chua va mo tep de thao tac CL_f=fopen(CL_file,"r+b");//Mo tep theo cach truy cap nhi phan doc/ghi if(CL_f==NULL) //Tep CL_file chua ton tai {CL_f=fopen(CL_file,"w+b");//Tao tep moi co the doc/ghi } else //Tep da co, hoi co ghi de khong? {printf("\nTep du lieu %s da co, co tao moi khong?(Y/N) ",CL_file); ch=toupper(getch()); if(ch=='Y') CL_f=fopen(CL_file,"w+b");//Tao tep moi co the doc/ghi } } //================================= //Ham tra ve so lop hoc int CL_count() {int n; fseek(CL_f,0,2); n=ftell(CL_f)/sizeof(CL); return(n); } //================================= //Tim kiem ma lop hoc va tra ve vi tri tim thay (0 la vi tri dau tien) int CL_search(char xCL[10]) {int i;CL t; i=0; fseek(CL_f,0,0);//Tro ve dau tep while(fread(&t,sizeof(CL),1,CL_f)>0) {if(strcmpi(t.ClassName,xCL)==0) //So sanh khong phan biet chu hoa chu thuong return(i);i++; } return(-1);//Khong tim thay, tra ve vi tri -1, ngu y la khong tim thay } //================================= //Sap xep tep bang cach do du lieu vao bo nho, sap xep roi do tro lai tep void CL_sort() {int n,i,j;CL *p,t; n=CL_count(); p = (CL *) malloc(n*sizeof(CL)); fseek(CL_f,0,0);//Tro ve dau tep fread(p,sizeof(CL),n,CL_f);//Do tat ca du lieu vao mang p //Sap xep tang dan theo MaCL for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strcmpi(p[j].ClassName,p[i].ClassName)<0) {t=p[i];p[i]=p[j];p[j]=t;}//Doi gia tri p[i] va p[j] fseek(CL_f,0,0); fwrite(p,sizeof(CL),n,CL_f);//Do tat ca du lieu da sap xep vao mang p } //================================= /*Them lop hoc moi Ham nay moi chi kiem tra xem lop da ton tai chua, neu ton tai roi thi thong bao va khong nhap */ void CL_AddNew() {CL t;char Save, Cont; fseek(CL_f,0,2);//Chuyen ve cuoi tep chuan bi nhap lop hoc moi while(1) {clrscr(); printf("\nThem lop hoc moi:"); printf("\nNhap ten lop hoc: ");fflush(stdin);gets(t.ClassName); printf("\nGiao vien chu nhiem: ");fflush(stdin);gets(t.HeadTeacher); printf("\nPhong hoc: ");fflush(stdin);gets(t.RoomNo); printf("\nThoi gian: ");fflush(stdin);gets(t.TimeSlot); printf("\nSo sinh vien: ");scanf("%d",&t.StudentNr); UpperStr(t.ClassName);//Chuyen thanh chu hoa va loai bo dau cach if(CL_search(t.ClassName)>=0)//Lop hoc da co {printf("\nTen lop da co, hay nhap lai!");getch();continue;}
printf("\nDo you want to save?(y/n): "); Save=toupper(getche()); if(Save=='Y') fwrite(&t,sizeof(CL),1,CL_f); printf("\nDo you want to continue?(y/n): "); Cont=toupper(getche()); if(Cont!='Y') break; } } //================================= /*Sua lop hoc da co (khong sua ten lop) Ham nay yeu cau tim lop, cho hien thi thong tin cu, yeu cau nhap thong tin moi (ClassName thi khong thay doi) */ void CL_edit() {CL t;char xCL[10],Save, Cont; int k; while(1) {clrscr(); printf("\nSua thong tin lop hoc da co:"); printf("\nNhap ten lop hoc can sua: ");fflush(stdin);gets(xCL); UpperStr(xCL);//Chuyen thanh chu hoa va loai bo dau cach
k = CL_search(xCL); if(k<0)//Khong tim thay lop hoc {printf("\nTen lop chua ton tai, hay nhap lai!");getch();continue;} fseek(CL_f,k*sizeof(CL),0);//Chuyen den lop can sua fread(&t,sizeof(CL),1,CL_f); printf("\n------------------------------------"); printf("\nThong tin cu:"); printf("\n------------------------------------"); printf("\nGiao vien chu nhiem: ");puts(t.HeadTeacher); printf("\nPhong hoc: ");puts(t.RoomNo); printf("\nThoi gian: ");puts(t.TimeSlot); printf("\nSo sinh vien: %d",t.StudentNr); printf("\n------------------------------------"); printf("\nSua lai la:"); printf("\n------------------------------------"); printf("\nGiao vien chu nhiem: ");fflush(stdin);gets(t.HeadTeacher); printf("\nPhong hoc: ");fflush(stdin);gets(t.RoomNo); printf("\nThoi gian: ");fflush(stdin);gets(t.TimeSlot); printf("\nSo sinh vien: ");scanf("%d",&t.StudentNr); UpperStr(t.ClassName);//Chuyen thanh chu hoa va loai bo dau cach printf("\nDo you want to save?(y/n): "); Save=toupper(getche()); if(Save=='Y') {fseek(CL_f,k*sizeof(CL),0);//Chuyen den lop can sua fwrite(&t,sizeof(CL),1,CL_f); } printf("\nDo you want to continue?(y/n): "); Cont=toupper(getche()); if(Cont!='Y') break; } } //================================= /*Xoa mon hoc da co Ham nay yeu cau tim lop, cho hien thi thong tin, yeu cau nguoi su dung khang dinh co muon xoa hay khong. */ void CL_dele() {CL t;char xCL[10],Dele, Cont; int i,k,n,mm; mm=sizeof(CL); while(1) {clrscr(); printf("\nXoa lop hoc da co:"); printf("\nNhap ten lop hoc can xoa: ");fflush(stdin);gets(xCL); UpperStr(xCL);//Chuyen thanh chu hoa va loai bo dau cach
k = CL_search(xCL); if(k<0)//Khong tim thay lop hoc {printf("\nTen lop chua ton tai, hay nhap lai!");getch();continue;} fseek(CL_f,k*sizeof(CL),0);//Chuyen den lop can sua fread(&t,sizeof(CL),1,CL_f); printf("\n------------------------------------"); printf("\nThong tin ve lop can xoa:"); printf("\n------------------------------------"); printf("\nTen lop: ");puts(t.ClassName); printf("\nGiao vien chu nhiem: ");puts(t.HeadTeacher); printf("\nPhong hoc: ");puts(t.RoomNo); printf("\nThoi gian: ");puts(t.TimeSlot); printf("\nSo sinh vien: %d",t.StudentNr); printf("\n------------------------------------"); printf("\nDo you want to delete?(y/n): "); Dele=toupper(getche()); if(Dele=='Y') {n=CL_count(); FILE *f2=fopen("tmp.dat","wb");//Tao ra mot tep tam thoi rewind(CL_f);//Ve dau tep for(i=0;i<n;i++) {fread(&t,mm,1,CL_f); if(i==k) continue;//Bo qua lop can xoa fwrite(&t,mm,1,f2); } fclose(CL_f); fclose(f2); remove(CL_file);//Xoa tep Class.dat rename("tmp.dat",CL_file);//Doi ten tep tmp.dat thanh Class.dat CL_f=fopen(CL_file,"r+b");//Mo de thao tac } printf("\nDo you want to continue?(y/n): "); Cont=toupper(getche()); if(Cont!='Y') break; } } //================================= /*Hien thi danh sach cac lop hoc tren man hinh Ham nay moi chi hien thi ten lop, gv chu nhiem va so sinh vien, cac ban bo sung them cac thong tin khac */ void CL_view() {CL t; if(CL_count()<1) {printf("\nKhong co lop hoc nao");return;} printf("\n\nDanh sach cac lop hoc:"); printf("\nTen lop Gv chu nhiem So sv"); fseek(CL_f,0,0); while(fread(&t,sizeof(CL),1,CL_f)>0) printf("\n%-10s %-10s %d",t.ClassName,t.HeadTeacher,t.StudentNr); } //================================= void CL_menu() {char chon; while(1) {clrscr(); printf("\n Thong tin ve lop hoc"); printf("\n ===================="); printf("\n1. Them lop hoc moi"); printf("\n2. Sua thong tin lop hoc"); printf("\n3. Xoa lop hoc"); printf("\n4. Sap xep theo ten lop"); printf("\n5. Danh sach lop hoc"); printf("\n6. Tro ve thuc don chinh"); printf("\n7. Ket thuc"); printf("\n\nHay nhan phim 1 -> 7: "); chon=getch(); if(chon=='6') return;//Tro ve thuc don chinh if(chon=='7') {fcloseall();exit(0);}//Ket thuc chuong trinh switch(chon) {case '1': CL_AddNew();break; case '2': CL_edit();break; case '3': CL_dele();break; case '4': CL_sort();CL_view();break; case '5': CL_view();break; } printf("\n\nNhan phim bat ky de tiep tuc"); getch(); } } //================== void main() {char chon; clrscr(); OpenFiles(); while(1) {clrscr(); printf("\n ÖÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ·"); printf("\n º º"); printf("\n º HE THONG QUAN LY DIEM º"); printf("\n º º"); printf("\n ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ"); printf("\n º º"); printf("\n º 1. Thong tin ve lop hoc º"); printf("\n º º"); printf("\n º 2. Thong tin ve sinh vien º"); printf("\n º º"); printf("\n º 3. Thong tin ve diem º"); printf("\n º º"); printf("\n º 4. Ket thuc º"); printf("\n º º"); printf("\n ÓÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĽ"); printf("\n Hay nhan phim 1 -> 4:"); chon=getch(); if(chon=='4') break; switch(chon) {case '1': CL_menu();break; case '2': ;break; case '3': ;break; } } fcloseall(); } | |
|
Dragonsilver
Tổng số bài gửi : 36 Join date : 18/01/2008 Age : 34 Đến từ : Ha Noi
| Tiêu đề: Re: Bai C quan ly lop hoc va sinh vien, anh em tham khao, bai nay hay lam Sun Mar 09, 2008 11:54 pm | |
| bác Minh ơi...bác viết như thế này thì đọc bao giờ cho thành pro đây hả bác?bác giải thích dễ hiểu 1 tý đi.e xem và căng hết mắt+tận dụng trí óc ra mới hiểu dc có 70% à...bác xem thế nào đi chứ...sắp thi rùi đoá... | |
|