用C语言设计一个计算机管理系统完成图书管理基本业务。 基本要求每种书的登记内容包括书号、书名、著作者、现存量和库存量;系统主要功能如下:采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;归还:注销对借阅者的登记,改变该书的现存量
时间: 2024-02-16 08:59:56 浏览: 71
好的,这是一个计算机管理系统的设计问题,需要考虑到数据结构和算法的实现。以下是我对这个问题的解答:
首先,我们需要定义一个结构体来存储每一本书的信息,包括书号、书名、著作者、现存量和库存量。可以定义如下:
```
struct book {
int id; // 书号
char name[50]; // 书名
char author[50]; // 著作者
int current_count; // 现存量
int total_count; // 库存量
};
```
接下来,我们需要建立一个数组来存储所有的书。每个元素是一个 book 结构体。可以定义如下:
```
struct book library[1000];
int book_count = 0;
```
其中 book_count 表示当前库存中书的数量。
采编入库操作可以定义为一个函数,输入为一个 book 结构体,输出为修改后的库存数组。如果表中已有该书,则只需要将库存量增加;否则,将该书加入库存数组中。
```
void add_book(struct book b) {
int i;
for (i = 0; i < book_count; i++) {
if (library[i].id == b.id) {
library[i].total_count += b.total_count;
return;
}
}
library[book_count] = b;
book_count++;
}
```
借阅操作也可以定义为一个函数,输入为一个书号,输出为修改后的库存数组。如果该书的现存量大于0,则将现存量减1,同时登记借阅者的书证号和归还期限。
```
void borrow_book(int id, int card_no, int due_date) {
int i;
for (i = 0; i < book_count; i++) {
if (library[i].id == id && library[i].current_count > 0) {
library[i].current_count--;
// 登记借阅者的书证号和归还期限
// 这里可以设计一个 borrower 结构体来存储借阅者的信息
// 为了简化,这里只是将借阅者的信息存储在了书的结构体中
library[i].borrower_card_no = card_no;
library[i].due_date = due_date;
return;
}
}
}
```
归还操作也可以定义为一个函数,输入为一个书号,输出为修改后的库存数组。将该书的现存量加1,并注销对借阅者的登记。
```
void return_book(int id) {
int i;
for (i = 0; i < book_count; i++) {
if (library[i].id == id) {
library[i].current_count++;
// 注销对借阅者的登记
library[i].borrower_card_no = 0;
library[i].due_date = 0;
return;
}
}
}
```
最后,我们需要一个主函数来调用上述三个操作函数,并提供用户交互界面。用户可以选择采编入库、借阅或归还操作,输入对应的书号或相关信息,程序会自动调用对应的函数进行处理。
```
int main() {
int choice, id, total_count, card_no, due_date;
char name[50], author[50];
while (1) {
printf("\n1. 采编入库\n2. 借阅\n3. 归还\n4. 退出\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入书号、书名、著作者、现存量和库存量:");
scanf("%d%s%s%d%d", &id, name, author, ¤t_count, &total_count);
struct book b = {id, name, author, current_count, total_count};
add_book(b);
break;
case 2:
printf("请输入书号、借阅者的书证号、归还期限:");
scanf("%d%d%d", &id, &card_no, &due_date);
borrow_book(id, card_no, due_date);
break;
case 3:
printf("请输入书号:");
scanf("%d", &id);
return_book(id);
break;
case 4:
return 0;
default:
printf("无效的选择!\n");
}
}
return 0;
}
```
以上就是一个简单的计算机管理系统的设计。当然,还有很多细节需要考虑,比如输入输出的格式、错误处理等等。但是,这个框架应该可以满足基本要求了。
阅读全文