Tải bản đầy đủ (.docx) (18 trang)

FILE_20191025_214306_ĐỒ ÁN LẬP TRÌNH

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (129.5 KB, 18 trang )

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



×