c语言:书写管理员系统,用结构体,文件,链表;里面要求分用户和管理员可以多个用户注册登录,用户可以借书,还书,查询借书信息,管理员可以对书籍进行增删,以及遍历查询
时间: 2024-03-18 22:40:26 浏览: 51
好的,这是一个比较完整的需求,需要涉及到结构体、文件、链表等知识。我会尽力给您提供一些帮助,但由于篇幅所限,无法提供完整的代码实现。以下是一些思路和提示:
首先,我们需要定义几个结构体,包括书籍信息、用户信息、借书信息等。例如:
```c
// 书籍信息
typedef struct Book {
char name[50]; // 书名
char author[50]; // 作者
char press[50]; // 出版社
int count; // 库存数量
float price; // 单价
struct Book *next; // 链表指针
} Book;
// 用户信息
typedef struct User {
char username[20]; // 用户名
char password[20]; // 密码
int isAdmin; // 是否是管理员,0表示普通用户,1表示管理员
struct User *next; // 链表指针
} User;
// 借书信息
typedef struct Borrow {
char username[20]; // 用户名
char bookname[50]; // 书名
char borrowTime[20]; // 借书时间
char returnTime[20]; // 还书时间
float price; // 单价
struct Borrow *next; // 链表指针
} Borrow;
```
接着,我们需要设计程序的菜单和一些基本函数,例如:
```c
// 显示菜单
void showMenu(int isAdmin);
// 注册
void registerUser(User *head);
// 登录
User *login(User *head);
// 添加书籍
void addBook(Book *head);
// 删除书籍
void deleteBook(Book *head);
// 遍历书籍
void traverseBooks(Book *head);
// 借书
void borrowBook(User *userHead, Book *bookHead, Borrow *borrowHead);
// 还书
void returnBook(User *userHead, Book *bookHead, Borrow *borrowHead, char *username, char *bookname);
// 查询借书信息
void checkBorrowInfo(Borrow *borrowHead, char *username);
```
在函数实现过程中,需要注意文件的读写和链表的操作。例如,添加书籍函数可以这样实现:
```c
void addBook(Book *head) {
// 找到链表尾部
Book *p = head;
while (p->next != NULL) {
p = p->next;
}
// 输入新书信息
Book *newBook = (Book *)malloc(sizeof(Book));
printf("请输入书名:");
scanf("%s", newBook->name);
printf("请输入作者:");
scanf("%s", newBook->author);
printf("请输入出版社:");
scanf("%s", newBook->press);
printf("请输入库存数量:");
scanf("%d", &newBook->count);
printf("请输入单价:");
scanf("%f", &newBook->price);
newBook->next = NULL;
// 将新书添加到链表尾部
p->next = newBook;
// 将新书信息写入文件
FILE *fp = fopen("books.dat", "ab");
if (fp == NULL) {
printf("打开文件失败!\n");
exit(-1);
}
fwrite(newBook, sizeof(Book), 1, fp);
fclose(fp);
printf("添加成功!\n");
}
```
其他函数的实现方式类似,需要根据具体需求进行调整。希望这些提示能够对您有所帮助!
阅读全文