#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义学生信息结构体
typedef struct Student {
int id; // 学号
char name[20]; // 姓名
char grade[10]; // 年级
int borrowed_book_id; // 借阅图书的编号
struct Student *next; // 指向下一学生的指针
} Student;
// 定义图书信息结构体
typedef struct Book {
int id; // 编号
char title[50]; // 书名
char author[20]; // 作者名
char publisher[50]; // 出版社
float price; // 价格
char publish_date[20]; // 出版时间
int is_borrowed; // 是否借出(0表示未借,1表示借出)
int borrower_id; // 借书学生的编号
struct Book *next; // 指向下一图书的指针
} Book;
// 初始化图书和学生链表的头结点
Book *book_head = NULL;
Student *student_head = NULL;
// 创建新的图书节点
Book* create_book(int id, const char *title, const char *author, const char *publisher, float price, const char *publish_date) {
Book *new_book = (Book*)malloc(sizeof(Book));
new_book->id = id;
strncpy(new_book->title, title, 49);
new_book->title[49] = '\0'; // 确保字符串以空字符结尾
strncpy(new_book->author, author, 19);
new_book->author[19] = '\0'; // 确保字符串以空字符结尾
strncpy(new_book->publisher, publisher, 49);
new_book->publisher[49] = '\0'; // 确保字符串以空字符结尾
new_book->price = price;
strncpy(new_book->publish_date, publish_date, 19);
new_book->publish_date[19] = '\0'; // 确保字符串以空字符结尾
new_book->is_borrowed = 0;
new_book->borrower_id = -1; // -1 表示没有借阅者
new_book->next = NULL;
return new_book;
}
// 创建新的学生节点
Student* create_student(int id, const char *name, const char *grade) {
Student *new_student = (Student*)malloc(sizeof(Student));
new_student->id = id;
strncpy(new_student->name, name, 19);
new_student->name[19] = '\0'; // 确保字符串以空字符结尾
strncpy(new_student->grade, grade, 9);
new_student->grade[9] = '\0'; // 确保字符串以空字符结尾
new_student->borrowed_book_id = -1; // -1 表示没有借阅图书
new_student->next = NULL;
return new_student;
}
// 添加图书到图书链表末尾
void add_book(Book *book) {
if (book_head == NULL) {
book_head = book;
} else {
Book *current = book_head;
while (current->next != NULL) {
current = current->next;
}
current->next = book;
}
}
// 添加学生到学生链表末尾
void add_student(Student *student) {
if (student_head == NULL) {
student_head = student;
} else {
Student *current = student_head;
while (current->next != NULL) {
current = current->next;
}
current->next = student;
}
}
// 打印图书信息
void printBook(Book* book) {
if (book != NULL) {
printf("编号: %d\n", book->id);
printf("书名: %s\n", book->title);
printf("作者: %s\n", book->author);
printf("出版社: %s\n", book->publisher);
printf("价格: %.2f\n", book->price);
printf("出版时间: %s\n", book->publish_date);
printf("是否借出: %d\n", book->is_borrowed);
printf("借书学生ID: %d\n", book->borrower_id);
} else {
printf("未找到对应图书信息!\n");
}
}
// 打印所有图书信息
void print_books() {
Book *current = book_head;
char str[20];
printf("%-5s %-20s %-10s %-20s %-10s %-12s %-10s %-10s\n",
"编号", "书名", "作者", "出版社", "价格", "出版时间", "是否借出", "借书学生ID");
printf("-----------------------------------------------------------------------------------------------------------\n");
while (current != NULL) {
sprintf(str, "%d", current->borrower_id);
printf("%-5d %-20s %-10s %-20s %-10.2f %-12s %-10s %-10s\n",
current->id, current->title, current->author, current->publisher,
current->price, current->publish_date, (current->is_borrowed)?"是":"否", (current->borrower_id==-1)?"无":str);
current = current->next;
}
printf("\n");
}
// 打印所有学生信息
void print_students() {
Student *current = student_head;
char str[20];
printf("%-5s %-10s %-10s %-20s\n", "学号", "姓名", "年级", "借阅图书编号");
printf("-------------------------------------------\n");
while (current != NULL) {
sprintf(str, "%d", current->borrowed_book_id);
printf("%-5d %-10s %-10s %-20s\n",
current->id, current->name, current->grade, (current->borrowed_book_id==-1)?"无":str);
current = current->next;
}
printf("\n");
}
// 从文件读取图书数据并存入链表
void get_book(const char *filename) {
FILE *file = fopen(filename, "r");
char line[256];
Book *book;
if (!file) {
perror("无法打开文件");
return;
}
while (fgets(line, sizeof(line), file)) {
int id, is_borrowed, borrower_id;
char title[50], author[20], publisher[50], publish_date[20];
float price;
sscanf(line, "%d,%49[^,],%19[^,],%49[^,],%f,%19[^,],%d,%d",
&id, title, author, publisher, &price, publish_date, &is_borrowed, &borrower_id);
book = create_book(id, title, author, publisher, price, publish_date);
book->is_borrowed = is_borrowed;
book->borrower_id = borrower_id;
add_book(book);
}
fclose(file);
}
// 将图书链表数据写入文件
void set_book(const char *filename) {
FILE *file = fopen(filename, "w");
Book *current;
if (!file) {
perror("无法打开文件");
return;
}
current = book_head;
while (current != NULL) {
fprintf(file, "%d,%s,%s,%s,%.2f,%s,%d,%d\n",
current->id, current->title, current->author, current->publisher,
current->price, current->publish_date, current->is_borrowed, current->borrower_id);
current = current->next;
}
fclose(file);
}
// 从文件读取学生数据并存入链表
void get_student(const char *filename) {
FILE *file = fopen(filename, "r");
char line[256];
Student *student;
if (!file) {
perror("无法打开文件");
return;
}
while (fgets(line, sizeof(line), file)) {
int id, borrowed_book_id;
char name[20], grade[10];
sscanf(line, "%d,%19[^,],%9[^,],%d", &id, name, grade, &borrowed_book_id);
student = create_student(id, name, grade);
student->borrowed_book_id = borrowed_book_id;
add_student(student);
}
fclose(file);
}
// 将学生链表数据写入文件
void set_student(const char *filename) {
FILE *file = fopen(filename, "w");
Student *current = student_head;
if (!file) {
perror("无法打开文件");
return;
}
while (current != NULL) {
fprintf(file, "%d,%s,%s,%d\n",current->id, current->name, current->grade, current->borrowed_book_id);
current = current->next;
}
fclose(file);
}
void display_main(){
system("cls");
printf("==============================\n");
printf("| 欢迎使用图书借阅管理系统 |\n");
printf("==============================\n");
printf("| |\n");
printf("| 1.图书管理系统 |\n");
printf("| 2.学生管理系统 |\n");
printf("| 3.借阅系统 |\n");
printf("| 0.退出 |\n");
printf("| |\n");
printf("==============================\n");
}
void display_book(){
system("cls");
printf("==============================\n");
printf("| 欢迎使用图书借阅管理系统 |\n");
printf("==============================\n");
printf("| |\n");
printf("| 1.显示图书信息 |\n");
printf("| 2.添加图书信息 |\n");
printf("| 3.查询图书信息 |\n");
printf("| 4.修改图书信息 |\n");
printf("| 5.删除图书信息 |\n");
printf("| 0.返回 |\n");
printf("|
没有合适的资源?快使用搜索试试~ 我知道了~
C语言期末/课程设计:图书借阅管理系统
共54个文件
tlog:31个
pdb:2个
manifest:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 8 下载量 31 浏览量
2024-05-19
09:02:19
上传
评论 4
收藏 815KB RAR 举报
温馨提示
图书管理信息包括:图书编号、图书名称、单价、作者、数量、存在状态(可以设为型,0为未借,1为已借)、借书人学号、姓名。 实现以下菜单显示的功能: 1、新进图书基本信息的录入,按书号从小到大的顺序将图书信息存入文件中。 2、办理借书手续。 提示:借书时,图书数量会减少,存在状态有修改 3、办理还书手续 提示:还书时,图书数量会增加,存在状态有修改 4、图书管理信息的查询,查询图书借阅情况。 按图书编号查询借阅情况 按借书人学号查询借阅情况 5、图书基本信息的删除。 6、浏览,从文件中读取每本图书的借阅信息并显示。 7、退出 要求:使用文件存储数据,系统以菜单方式工作。
资源推荐
资源详情
资源评论
收起资源包目录
图书借阅管理系统.rar (54个子文件)
图书借阅管理系统
图书借阅管理系统.suo 10KB
图书借阅管理系统.sln 944B
图书借阅管理系统
图书借阅管理系统.vcxproj.user 143B
student.csv 57B
图书借阅管理系统.vcxproj.filters 940B
main.c 20KB
Debug
link.22152-cvtres.write.1.tlog 2B
link.1904.read.1.tlog 2B
CL.write.1.tlog 242B
link.22152-cvtres.read.1.tlog 2B
link.1904-cvtres.write.1.tlog 2B
rc.command.1.tlog 482B
link.22152.write.1.tlog 2B
图书借阅管理系统.exe.intermediate.manifest 381B
rc.write.1.tlog 242B
link.18856-cvtres.read.1.tlog 2B
link.18856-cvtres.write.1.tlog 2B
mt.command.1.tlog 364B
link.7276.read.1.tlog 2B
mt.read.1.tlog 262B
rc.read.1.tlog 234B
link.1904.write.1.tlog 2B
图书借阅管理系统_manifest.rc 206B
vc100.idb 27KB
图书借阅管理系统.lastbuildstate 68B
link.18856.read.1.tlog 2B
图书借阅管理系统.write.1.tlog 0B
vc100.pdb 60KB
link.7276-cvtres.write.1.tlog 2B
link.7276.write.1.tlog 2B
图书借阅管理系统.vcxprojResolveAssemblyReference.cache 713B
图书借阅管理系统.exe.embed.manifest 406B
link.command.1.tlog 1KB
link-cvtres.read.1.tlog 2B
图书借阅管理系统.exe.embed.manifest.res 472B
link.1904-cvtres.read.1.tlog 2B
link.7276-cvtres.read.1.tlog 2B
link.read.1.tlog 3KB
cl.command.1.tlog 582B
link.write.1.tlog 574B
link.18856.write.1.tlog 2B
link-cvtres.write.1.tlog 2B
mt.write.1.tlog 262B
main.obj 78KB
link.22152.read.1.tlog 2B
图书借阅管理系统.log 17KB
CL.read.1.tlog 978B
图书借阅管理系统.vcxproj 4KB
book.csv 176B
ipch
图书借阅管理系统-b7044ea1
图书借阅管理系统-330c5b35.ipch 2.25MB
图书借阅管理系统.sdf 1.89MB
Debug
图书借阅管理系统.pdb 475KB
图书借阅管理系统.exe 45KB
图书借阅管理系统.ilk 461KB
共 54 条
- 1
小辰代写
- 粉丝: 3848
- 资源: 84
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页