用c语言写图示信息管理系统,并实现以下功能管理员:实现用户信息(编号、密码、姓名、联系电话);图书信息(图书编号、图书名称、价格、出版社、出版时间)的增、删、改、查;好书排行榜(根据书籍被借阅数量进行排序); 用户:查询、修改个人信息;查找、借阅和归还图书,个人中心(借阅的历史记录)
时间: 2023-06-19 07:04:49 浏览: 109
图书信息管理系统c语言
这是一个较大的项目,需要分多个模块来实现。以下是可能的实现思路:
1. 定义结构体
定义结构体来存储用户和图书信息:
```c
typedef struct user {
int id; // 用户编号
char password[20]; // 密码
char name[20]; // 姓名
char phone[20]; // 联系电话
} User;
typedef struct book {
int id; // 图书编号
char name[50]; // 图书名称
float price; // 图书价格
char publisher[50]; // 出版社
char publish_time[20]; // 出版时间
int borrow_count; // 借阅数量
} Book;
```
2. 实现增、删、改、查功能
通过文件来存储用户和图书信息,可以使用文件操作函数来实现增、删、改、查功能。例如,添加用户信息可以按照以下方式实现:
```c
void add_user() {
User user;
printf("请输入用户编号:");
scanf("%d", &user.id);
printf("请输入密码:");
scanf("%s", user.password);
printf("请输入姓名:");
scanf("%s", user.name);
printf("请输入联系电话:");
scanf("%s", user.phone);
FILE *fp = fopen("user.txt", "a");
fprintf(fp, "%d %s %s %s\n", user.id, user.password, user.name, user.phone);
fclose(fp);
printf("用户信息添加成功!\n");
}
```
3. 实现好书排行榜
可以通过读取图书信息文件并对借阅数量进行排序,然后输出排行榜。例如:
```c
void show_rank() {
Book books[100];
int count = read_books(books); // 从文件中读取图书信息
// 冒泡排序
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - i - 1; j++) {
if (books[j].borrow_count < books[j + 1].borrow_count) {
Book temp = books[j];
books[j] = books[j + 1];
books[j + 1] = temp;
}
}
}
printf("好书排行榜:\n");
for (int i = 0; i < count; i++) {
printf("%d. %s(借阅数量:%d)\n", i + 1, books[i].name, books[i].borrow_count);
}
}
```
4. 实现用户个人信息查询和修改
可以先获取用户输入的编号和密码,然后在用户信息文件中找到对应的用户信息并输出。修改用户信息可以先查询用户信息,然后让用户输入新的信息并更新到文件中。例如:
```c
void show_user_info() {
int id;
char password[20];
printf("请输入用户编号:");
scanf("%d", &id);
printf("请输入密码:");
scanf("%s", password);
User user;
if (find_user_by_id(id, password, &user)) {
printf("用户信息如下:\n");
printf("编号:%d\n", user.id);
printf("姓名:%s\n", user.name);
printf("联系电话:%s\n", user.phone);
} else {
printf("用户编号或密码错误!\n");
}
}
void modify_user_info() {
int id;
char password[20];
printf("请输入用户编号:");
scanf("%d", &id);
printf("请输入密码:");
scanf("%s", password);
User user;
if (find_user_by_id(id, password, &user)) {
printf("请输入新的姓名:");
scanf("%s", user.name);
printf("请输入新的联系电话:");
scanf("%s", user.phone);
modify_user_info_file(user); // 更新用户信息文件
printf("用户信息修改成功!\n");
} else {
printf("用户编号或密码错误!\n");
}
}
```
5. 实现图书查找、借阅和归还功能
可以通过读取图书信息文件来实现图书查找和借阅功能。借阅时需要将借阅数量加1并将借阅记录写入借阅历史记录文件。归还时需要将借阅数量减1并更新借阅历史记录文件。例如:
```c
void search_book() {
char name[50];
printf("请输入图书名称:");
scanf("%s", name);
Book book;
if (find_book_by_name(name, &book)) {
printf("图书信息如下:\n");
printf("编号:%d\n", book.id);
printf("价格:%.2f\n", book.price);
printf("出版社:%s\n", book.publisher);
printf("出版时间:%s\n", book.publish_time);
printf("借阅数量:%d\n", book.borrow_count);
} else {
printf("未找到该图书!\n");
}
}
void borrow_book() {
int id;
char password[20];
printf("请输入用户编号:");
scanf("%d", &id);
printf("请输入密码:");
scanf("%s", password);
User user;
if (!find_user_by_id(id, password, &user)) {
printf("用户编号或密码错误!\n");
return;
}
char name[50];
printf("请输入图书名称:");
scanf("%s", name);
Book book;
if (find_book_by_name(name, &book)) {
book.borrow_count++;
modify_book_info_file(book); // 更新图书信息文件
time_t now = time(NULL);
struct tm *t = localtime(&now);
char borrow_time[20];
sprintf(borrow_time, "%d-%02d-%02d", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday);
FILE *fp = fopen("borrow_history.txt", "a");
fprintf(fp, "%d %d %s\n", id, book.id, borrow_time);
fclose(fp);
printf("借阅成功!\n");
} else {
printf("未找到该图书!\n");
}
}
void return_book() {
int id;
char password[20];
printf("请输入用户编号:");
scanf("%d", &id);
printf("请输入密码:");
scanf("%s", password);
User user;
if (!find_user_by_id(id, password, &user)) {
printf("用户编号或密码错误!\n");
return;
}
char name[50];
printf("请输入图书名称:");
scanf("%s", name);
Book book;
if (find_book_by_name(name, &book)) {
if (book.borrow_count > 0) {
book.borrow_count--;
modify_book_info_file(book); // 更新图书信息文件
time_t now = time(NULL);
struct tm *t = localtime(&now);
char return_time[20];
sprintf(return_time, "%d-%02d-%02d", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday);
FILE *fp = fopen("borrow_history.txt", "a");
fprintf(fp, "%d %d %s\n", id, book.id, return_time);
fclose(fp);
printf("归还成功!\n");
} else {
printf("该图书没有被借阅!\n");
}
} else {
printf("未找到该图书!\n");
}
}
```
6. 实现个人中心
可以从借阅历史记录文件中读取用户的借阅历史记录,并输出到屏幕上。例如:
```c
void show_borrow_history() {
int id;
char password[20];
printf("请输入用户编号:");
scanf("%d", &id);
printf("请输入密码:");
scanf("%s", password);
User user;
if (!find_user_by_id(id, password, &user)) {
printf("用户编号或密码错误!\n");
return;
}
printf("借阅历史记录:\n");
FILE *fp = fopen("borrow_history.txt", "r");
while (!feof(fp)) {
int user_id, book_id;
char time[20];
fscanf(fp, "%d %d %s\n", &user_id, &book_id, time);
if (user_id == id) {
Book book;
if (find_book_by_id(book_id, &book)) {
printf("%s 借阅了 %s\n", time, book.name);
}
}
}
fclose(fp);
}
```
以上是一个可能的实现思路,具体实现还需要根据实际情况进行调整和完善。
阅读全文