BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ
------------
BÁO CÁO ĐỒ ÁN
……..
QUẢN LÍ LƯU TRỮ VÀ TÌM KIẾM HỆ THỐNG
SÁCH
CÁN BỘ HƯỚNG DẪN:
GV. Phạm Duy Nghiệp
NHÓM SV THỰC HIỆN: nhóm 2
Lê Trọng Nguyễn MSSV: B1806931
(Trưởng nhóm)
Trần Võ Vĩnh Hưng MSSV: B1806913
Lâm Văn Hiếu MSSV: B1806907
Nguyễn Quang Linh
MSSV: B1806921
Phạm Chí Tâm MSSV: B1806941
Trương Bảo Khang MSSV: B1806915
Nguyễn Minh Tới MSSV: B1806951
Lâm Quang Vịnh
MSSV: B1806959
Đề tài: quản lí lưu trữ và tìm kiếm hệ thống sách
Mục Lục
I.
II.
III.
GIỚI THIỆU ĐỀ TÀI
1. Giới thiệu chung
2. Yêu cầu
3. Giới hạn và hướng giải quyết
NGHIÊN CỨU VÀ VIẾT CHƯƠNG TRÌNH
1. Tóm tắt các công việt của một chương trình
2. Lưu đồ chương trình
i. Lưu đồ chương trình chính
ii. Lưu đồ chương trình con
3. Chương trình chi tiết
KẾT LUẬN
1. Kết quả
2. Hướng dẫn sử dụng
3. Nhận xét, giải quyết mở rộng
2
3
3
3
3
3
4
4
5
9
16
16
17
17
I.GIỚI THIỆU ĐỀ TÀI
1. Giới thiệu chung
Hiện nay với nhu cầu học tập, nghiên cứu cũng như giải trí ngày càng cao
nên việc sử dụng sách giáo khoa, sách tham khảo, cùng nhiều loại sách văn học,
giải trí khác nhau cũng từ đó tăng cao. Để đáp ứng nhu cầu ngày càng tăng và đa
dạng này, buộc nhiều nhà sách phải nhập về và lưu trữ nhiều loại sách khác nhau.
Từ đây việc quản lí tìm kiếm một cuốn sách trong một hệ thống nhà sách với
muôn vàn cuốn sách khác nhau trở nên khó khăn hơn.
2.Yêu cầu
Cần phải có một chương trình giúp các chủ nhà sách quản lí một hệ thống
sách đa dạng, ghi nhận lại thông tin từng loại sách khi được nhập vào nhà sách
cùng với đó là tìm kiếm phải thật dễ dàng vị trí cuốn sách để mỗi lần có nhu cầu
thì tìm được nhanh và dễ dàng.
3. Giới hạn và hướng giải quyết
Với những khó khăn và yêu cầu thiết thực trên nhóm em đã nghiên cứu và
thực hiện một chương trình giúp các nhà quản lí sách có thể nhập và xuất ra
thông tin danh sách những quyển sách được lưu trữ ở nhà sách, tìm kiếm những
quyển sách có cùng thể loại hoặc cùng một vị trí được sắp xếp ở đâu đó. Hay dựa
trên nhu cầu khách hàng (tên sách, giá tiền…) mà người quản lí có thể tìm kiếm.
II.NGHÊN CỨU VÀ VIẾT CHƯƠNG TRÌNH
1. Tóm tắt công việc của một chương trình:
+ Tạo một mảng dữ liệu:
•
•
Nhập (thêm) thông tin một quyển sách vào danh sách dữ liệu
In (xuất) ra màn hình danh sách thông tin những quyển sách được nhập ở
trên
• Tìm kiếm thông tin một quyển sách trong danh sách dữ liệu
• Xóa thông tin một quyển sách trong danh sách dữ liệu
• Thay đổi thông tin một quyển sách trong danh sách dữ liệu
2. Lưu đồ chương trình
i. Lưu đồ chương trình chính:
3
Begin
Chọn 0,1,2,3,4,5,
Chọn 2
Chọn 1
Nhập thông
tin danh sách
In thông tin
danh sách sách
Chọn 0
Chọn 4
Chọn 3
Tìm kiếm
thông tin sách
Thoát
Xóa thông tin
sách
Chọn 5
Thay đổi thông
tin sách
1,2,3,4
NHẬP
IN
1
3
2
Mã số
IN
End
4
Tên
Tác giả
IN
IN
Nhập mã
xóa
Nhập mã
đổi
Nhập
Nhập
ii. lưu đồ chương trình con:
chương trình con nhập thông tin sách
Nhập thông tin
Bạn muốn nhập
bao nhiêu sách
NHẬP
END
Chương trình con in thông tin sách
In thông tin
IN
END
5
Chương trình con tìm kiếm thông tin sách
Tìm kiếm
thông tin
1,2,3,4
1
2
Mã số
Tên
Nhập mã cần tìm
Nhập tên cần tìm
tìm trong danh sách
tìm trong danh sách
Thấy
không
Thấy
3
4
Tác giả
Thoát
Nhập tác giả cần
tìm
không
tìm trong danh sách
Thấy
không
In ra sách
đó
Không có
sách đó
In ra sách
đó
Không có
sách đó
In ra sách
đó
Không có
sách đó
IN
IN
IN
IN
IN
IN
END
6
Chương trình con xóa thông tin sách
Xóa thông tin
sách
Nhập mã để xóa
NHẬP
So sánh trong danh sách
khác mã để xóa
Giống mã để xóa
Không tìm thấy
sách để xóa
Xóa thông tin quyển
sách đó
XÓA
END
7
Chương trình con thay đổi thông tin sách
Thay đổi thông tin
sách
Nhập mã để sửa
NHẬP
So sánh trong danh sách
Giống mã để sửa
khác mã để sửa
Sửa thông tin sách
Không tìm thấy để sửa
1,2,3
1
2
3
Tên
Tác giả
SỬA
SỬA
Kệ số
SỬA
END
8
3. Chương trình chi tiết
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<windows.h>
typedef struct
{
char TacGia[20];
char MaSach[10];
char TenSach[20];
char GiaSach[10];
char KeSach[10];
} NhapDS;
void wWriteFile(char *FileName)
{
FILE *f;
f=fopen(FileName,"ab"); //ab
int n,i;
NhapDS nds;
printf("
Co bao nhieu cuon sach ? ");
scanf("%d",&n);
fflush(stdin);
for(i=1;i<=n;i++)
{
printf("Quyen sach thu %i\n",i);
printf("
Ma Sach: "); gets(nds.MaSach);
fflush(stdin);
printf("
Ten Sach: ");gets(nds.TenSach);
printf("
Tac gia: "); gets(nds.TacGia);
printf("
Gia sach: ");gets(nds.GiaSach);
fflush(stdin);
printf("
Ke sach: ");gets(nds.KeSach);
fwrite(&nds,sizeof(nds),1,f);
fflush(stdin);
}
fclose(f);
printf(" anh phim [Enter] de tiep tuc");
getch();
system("cls");
}
void wReadFile(char *FileName)
{
FILE *f;
NhapDS nds;
f=fopen(FileName,"rb");
printf(" Ma sach |
Ten sach
|
Tac gia
|
Gia sach | Ke sach \n");
fread(&nds,sizeof(nds),1,f);
while(!feof(f))
{
9
printf("%10s|%20s|%20s|%12s|
%9s\n",nds.MaSach,nds.TenSach,nds.TacGia,nds.GiaSach,nds.KeSach);
fread(&nds,sizeof(nds),1,f) ;
}
printf("\n \n \n[Enter] de tiep tuc");
getch();
system("cls");
}
void Search(char *FileName)
{
int LuaChon;
do{
printf("Ban muon tim kiem NTN\n 1 Tim theo ma so\n 2 Tim
theo Ten\n 3 Tim theo Tac gia\n 4
Thoat\n-----------------------\n");
scanf("%d",&LuaChon);
if(LuaChon==1)
{
char MaSachCanTim[10];
fflush(stdin);
printf("Ma sach can tim la :");
gets(MaSachCanTim);
FILE *f;
int DK=0; //DK= 0 la khong co, 1 la co;
NhapDS nds;
f=fopen(FileName,"rb");
while(!feof(f) && DK==0)
{
fread(&nds,sizeof(nds),1,f);
if(strcmp(MaSachCanTim, nds.MaSach)==0)
DK=1;
}
fclose(f);
if(DK==1)
{
printf("
Tim thay sach co ma
%s \n
Ten sach la: %s\n
Tac gia la: %s\n
Gia sach: %s\n",nds.MaSach,nds.TenSach,nds.TacGia,nds.GiaSach);
}
else
{
printf("ma sach %s ban nhap khong co o thu
vien",MaSachCanTim);
}
printf("Nhan [Enter] de tiep tuc\n");
getch();
break;
}
else if(LuaChon==2)
{
char TenSachCanTim[30];
fflush(stdin);
printf("Ten sach can tim la :");
gets(TenSachCanTim);
FILE *f;
int DK=0;
NhapDS nds;
10
f=fopen(FileName,"rb");
while(!feof(f) && DK==0)
{
fread(&nds,sizeof(nds),1,f);
if(strcmp(TenSachCanTim,nds.TenSach)==0)
DK=1;
}
fclose(f);
if(DK==1)
{
printf("Tim thay sach co ma %s \nTen sach la:
%s\nTac gia la: %s\nGia sach:
%s\n",nds.MaSach,nds.TenSach,nds.TacGia,nds.GiaSach);
}
else
{
printf("ma sach %s ban nhap khong co o thu
vien",TenSachCanTim);
}
printf("Nhan [Enter] de tiep tuc\n");
getch();
break;
}
else if(LuaChon==3)
{
char TacGiaCanTim[30];
fflush(stdin);
printf("Tac gia can tim la :");
gets(TacGiaCanTim);
FILE *f;
int DK=0;
NhapDS nds;
f=fopen(FileName,"rb");
while(!feof(f) && DK==0)
{
fread(&nds,sizeof(nds),1,f);
if(strcmp(TacGiaCanTim,nds.TacGia)==0)
DK=1;
}
fclose(f);
if(DK==1)
{
printf("Tim thay sach co ma %s \nTen sach la:
%s\nTac gia la: %s\nGia sach:
%s\n",nds.MaSach,nds.TenSach,nds.TacGia,nds.GiaSach);
}
else
{
printf("Tac gia %s ban nhap khong co o thu
vien",TacGiaCanTim);
}
printf("Nhan [Enter] de tiep tuc\n");
getch();
break;
}
else if(LuaChon==4)
{
11
break;
}
else if(LuaChon!=4 || LuaChon!=3 || LuaChon!=2 ||
LuaChon!=1)
{
printf("Ban da chon sai\n [Enter]
ve Menu chinh");
getch();
system("cls");
break;
}
}
while(LuaChon!=0);
system("cls");
}
void ThayDoiThongTinSach(char *FileName)
{
NhapDS nds;
char MaSachTK[10];
int isFound = 0;
fflush(stdin);
printf(" Nhap ma so sach:\t\t\t");gets(MaSachTK);
FILE *f;
f = fopen(FileName,"rb+");
while(fread(&nds,-sizeof(nds),1,f) == 1){
if(strcmp(MaSachTK,nds.MaSach) == 0){
fflush(stdin);
printf("
Ma Sach: ");
gets(nds.MaSach);
printf("
Ten Sach: ");gets(nds.TenSach);
printf("
Tac gia: "); gets(nds.TacGia);
printf("
Gia sach: ");gets(nds.GiaSach);
printf("
Ke sach: ");gets(nds.KeSach);
printf(" \nThay doi thong tin thanh cong\n");
fseek(f,-sizeof(nds), SEEK_CUR);
fwrite(&nds,sizeof(nds), 1, f);
isFound = 1;
break;
}
}
if(!isFound)
printf("\nKhong tim thay sach co ma %s",MaSachTK);
fclose(f);
}
void XoaThongTin(char *FileName)
{
FILE *f, *f1;
f=fopen(FileName,"rb+");
f1=fopen("D:\\Demo\\DATAbookTam.dat", "w+b");
NhapDS nds;
char FOUND=0;
12
de
char MS[10];
fflush(stdin);
printf("\n
Nhap ma so sach: ");
gets(MS);
while(!feof(f) && FOUND==0)
{
fread(&nds, sizeof(nds), 1, f);
if(strcmp(MS, nds.MaSach)==0)
FOUND=1;
}
if (FOUND == 1)
{
printf("
Tim thay sach co ma %s \n
Ten sach la: %s\n
Tac gia la: %s\n
Gia sach:
%s\n",nds.MaSach,nds.TenSach,nds.TacGia,nds.GiaSach);
printf("\n\n
Co dung thong tin sach ma
ban can xoa khong? \n");
printf("
Khong (0), Co (1)\n");
printf("\n
Lua chon cua ban: ");
int c1;
scanf("%d",&c1);
switch(c1)
{
case 1:
{
printf("
Ban co muon xoa khong? Khong (0); Co (1) ?");
int c2;
printf("\n
Nhap su lua chon: ");
scanf("%d",&c2);
switch(c2)
{
case 1:
FOUND;
fclose(f1);
f1=fopen("D:\\Demo\\DATAbookTam.dat", "ab");
rewind(f);
while (!feof(f))
{
{
if (strcmp(MS, nds.MaSach)==0)
FOUND=1;
else
FOUND=0;
13
}
if (FOUND==0)
{
fwrite(&nds, sizeof(nds), 1, f1);
}
fread(&nds, sizeof(nds), 1, f);
}
fclose(f); fclose(f1);
f1=fopen("D:\\Demo\\DATAbookTam.dat", "rb");
f=fopen(FileName, "wb");
fclose(f);
f=fopen(FileName, "ab");
fread(&nds, sizeof(nds), 1, f1);
while(!feof(f1))
{
fwrite(&nds, sizeof(nds), 1, f);
fread(&nds, sizeof(nds), 1, f1);
}
fclose(f); fclose(f1);
printf("
chinh.");
Xoa thanh cong. [Enter] de tro ve man hinh
break;
case 0:
printf("
chinh.");
Bam phim bat ky de tro ve man hinh
break;
14
default:
printf("Su lua chon khong dung \n");
printf("Bam phim bat ky de tro ve man hinh chinh.");
break;
}
}
break;
case 0:
printf("
Vui long thu
lai cac thao tac. Bam phim bat ky de tro ve man hinh chinh.");
break;
default:
printf("Su lua chon khong
dung. \n");
printf("Bam phim bat ky de
tro ve man hinh chinh.");
break;
}
}
else
{
printf("
nguoi co ma so %s ", MS);
printf("\n\n
thu lai.");
}
}
Khong tim thay thong tin cua
Ban vui long
int main()
{
int LC;
do{
printf("
=-=-=-=-==MENU=-=-=-=-=-=
\n");
printf("+
HAY LUA CHON
TINH NANG
+\n");
printf("|
1 Nhap danh sach thong tin sach \n| 2
In danh sach thong tin sach\n|
3 Tim kiem thong tin sach\n| 4
Xoa thong tin sach\n| 5 Thay doi thong tin sach\n| 0 Thoat chuong
trinh\n");
printf("___________________________________________________________
____________________\n
Ban chon so
may ?\n");
scanf("%d",&LC);
switch(LC)
{
case 0: { printf("Nhan Enter de thoat chuong
trinh"); exit(0); break;}
case 1:
{
15
printf("ban da chon so 1 \n ");
wWriteFile("D:\\Demo\\DATAbook.dat"); //dat
break;
}
case 2: {
printf("ban da chon so 2 \n ");
wReadFile("D:\\Demo\\DATAbook.dat"); //dat
break;
}
case 3: {
int Chon;
printf("ban da chon so 3 \n");
Search("D:\\Demo\\DATAbook.dat");
break;
}
case 4: {
printf("ban da chon so 4\n");
XoaThongTin("D:\\Demo\\DATAbook.dat");
getch();
system("cls");
break;
}
case 5: {
printf("Ban da
chon so
5\n"); // chuc nang thay doi tt
ThayDoiThongTinSach("D:\\Demo\\DATAbook.dat");
getch();
system("cls");
break;
}
default :
{
printf("Ban da chon sai xin
chon lai [Enter] de tiep tuc\n");
getch();
system("cls");
break;
}
}
}
while(LC!=0);
getch();
system("cls");
return 1;
}
16
III. KẾT LUẬN
1.
Kết quả
Chương trình thực hiện được và ổn định.
2.
Hướng dẫn sử dụng
Khi mở thực hiện chương trình sẽ có lệnh nhập một số từ 0 đến 5 ứng với:
Số 1: Nhập danh sách thông tin sách gồm các thông tin tên sách, mã sách, giá
tiền, tác giả, kệ sách cho chúng ta nhập vào.
Số 2: Sẽ in ra toàn bộ danh sách mà ta đã nhập trước đó.
Số 3: Sẽ thực hiện lên một lệnh tìm kiếm thông tin sách và bắt ta phải chọn một
trong bốn lệnh.
•
Tìm theo mã số sách: lúc này ta sẽ nhập mã số sách cần tìm vào và
ENTER thì tất cả những quyển sách ta cần tìm sẽ hiện ra.
• Tìm theo tên sách: lúc này ta sẽ nhập tên sách cần tìm thì hệ thống sẽ in ra
•
những quyển sách đó.
Tìm theo tác giả: lúc này ta chỉ cần nhập tác giả cần tìm thì hệ thống sẽ
tìm ra những quyển sách đó
Số 4: xóa thông tin sách: đầu tiên ta sẽ nhập vào mã số sách cần xóa sau đó hệ
thốn sẽ hiện lên và hỏi chúng ta có muốn xóa hay không bằng cách xác nhập
bằng số 0 và 1.
Số 5: thay đổi thông tin sách: đầu tiên ta sẽ nhập mã số sách cần thay đổi tiếp
theo ta sẽ chọn thay đổi những thông tin gồm tên sách, tác giả, vị trí để sách.
Số 0: giúp ta thoát ra khỏi toàn bộ chương trình.
3. Nhận xét, giải quyết mở rộng
Chương trình này giải quyết được 80% nhu cầu quản lí thông tin và tìm kiếm
một quyển sách ở một nhà sách. Tuy nhiên vẫn chưa thực hiện được lệnh giá tiền
nếu khách hàng có nhu cầu muốn những loại sách có giá trong khoảng nào đó và
lệnh thay đổi thông tin còn nhìu thiếu xót chỉ thay đổi được một vài giá trị đầu.
Từ chương trình này chúng ta có thể mở rộng và thay đổi để phù hợp cho
quản lí ở một số nơi có tính chất tương tự chẳng hạn như tiệm tạp hóa, Vinmart,
siêu thị…
17
Tài liệu tham khảm
1.Giáo trình lập trình căn bản-điện tử khoa công nghệ Đại học Cần Thơ
2. />3. />
END
18