Xây dựng chương trình quản lý sách với yêu cầu tạo danh mục sách, tên sách, tác giả, nhà xuất bản . . . bằng ngôn ngữ C trong học phần kỹ th...
Xây dựng chương trình quản lý sách với yêu cầu tạo danh mục sách, tên sách, tác giả, nhà xuất bản . . . bằng ngôn ngữ C trong học phần kỹ thuật lập trình cơ bản của học viện kỹ thuật mật mã.
Xây dựng chương trình C quản lý sách như sau:
Cấu trúc Sach các trường:
MaSach: kiểu số nguyên
TenSach: kiểu mảng ký tự. Tối đa 100 ký tự
TacGia: kiểu mảng ký tư. Tối đa 100 ký tự
MaNXB: lưu mã số nhà xuất bản. kiểu int
Các hàm sau:
Hàm main() thực hiện công việc sau:
Hiển thị menu nhu sau:
1. Chon 1 de Tao danh muc sach
2. Chon 2 de Hien thi cac sach trong cung nha xuat ban
3. Chon 3 de Ket thuc
Chon:
- Khi người dùng chọn 1 thì gọi hàm TaoDanhMucSach() cho phép người dùng nhập vào một số lượng đầu sách và nhập thông tin chi tiết cho từng đầu sách cụ thể. Hai đầu sách khác nhau phải có mã sách khác nhau
- Khi người dùng chọn 2 thì gọi hàm HienThiSachTrongNXB() cho phép người dùng nhập vào mã số nhà xuất bản (phải là một số nguyên dương). Hiển thị tất cả các đầu sách của cùng nhà xuất bản này. Đồng thời hiển thị số lượng đầu sách của nhà xuất bản.
- Chọn 3 để kết thúc chương trình.
Yêu cầu:
- Viết chương trình thực hiện các chức năng trên
- Cải tiến chương trình để tối ưu hiệu năng
Bài giải [Code]
#include<stdio.h>
#include<conio.h>
#include<windows.h>
typedef struct {
int MaSach;
char TenSach[100];
char TacGia[100];
int MaNXB;
} Sach;
void nhap(int *n,Sach s[100])
{
printf("\nNhap so luong sach: ");
scanf("%d",n);
for(int i=0;i<*n;i++)
{
printf("\nNhap thong tin sach so %d",i+1);
printf("\nMa sach: ");
scanf("%d",&s[i].MaSach);
printf("\nTen Sach: ");
fflush(stdin);
gets(s[i].TenSach);
printf("\nTac Gia: ");
fflush(stdin);
gets(s[i].TacGia);
printf("\nMa Nha Xuat Ban: ");
scanf("%d",&s[i].MaNXB);
}
}
void HienthisachtrongNXB(int n,Sach s[100])
{
int i;
int nxb;
printf("\nNhap ma nha xuat ban: ");
scanf("%d",&nxb);
printf("\nMa Sach/Ten Sach/Tac Gia/Ma NXB");
for(i=0;i<n;i++)
{
if(s[i].MaNXB == nxb)
printf("\n%d\t%s\t%s\t%d",s[i].MaSach,s[i].TenSach,s[i].TacGia,s[i].MaNXB);
}
}
main()
{
int c,n;
Sach s[100];
while(c!=3)
{
printf("\nChon 1: Tao danh muc sach");
printf("\nChon 2: Hien thi cac sach trong cung nha xuat ban");
printf("\nChon 3: Ket thuc");
printf("\nMoi ban chon: ");
scanf("%d",&c);
switch(c)
{
case 1:
nhap(&n,s);
break;
case 2:
HienthisachtrongNXB(n,s);
break;
default:
printf("Khong hop le");
system("pause");
system("cls");
}
}
}
COMMENTS