您的位置:首页 > 科技 > 能源 > 精准营销定义_专业app定制开发公司_广告设计需要学什么_关键词优化排名费用

精准营销定义_专业app定制开发公司_广告设计需要学什么_关键词优化排名费用

2024/9/30 16:02:45 来源:https://blog.csdn.net/m0_73678713/article/details/142503416  浏览:    关键词:精准营销定义_专业app定制开发公司_广告设计需要学什么_关键词优化排名费用
精准营销定义_专业app定制开发公司_广告设计需要学什么_关键词优化排名费用

文章目录

    • 题目二:图书信息管理系统设计
      • bookManagement.h
      • bookManagement.c
      • test.c
      • 终端测试截图

题目二:图书信息管理系统设计

图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
设计图书信息管理系统,功能包括:

  1. 系统以菜单方式工作。
  2. 图书信息录入功能(图书信息用文件保存)--输入。
  3. 图书信息浏览功能--输出。
  4. 图书信息查询功能--算法。
    查询方式
    • 按书名查询。
    • 按作者名查询。
  5. 图书信息的删除与修改(可选项)。

bookManagement.h

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define MAX_BOOKS 100  // 最大图书数量
#define FILE_NAME "books.txt"  // 文件名// 定义图书结构体
typedef struct {int loginNo;      // 登录号char title[100];  // 书名char author[100]; // 作者名char category[50]; // 分类号char publisher[100]; // 出版单位char publicationDate[20]; // 出版时间double price;     // 价格
} Book;// 函数声明
void showMenu();
void menu(Book* books, int* count);
void printBook(Book book);
void addBook(Book* books, int* count);
void displayBooks(Book* books, int count);
void searchByTitle(Book* books, int count);
void searchByAuthor(Book* books, int count);
void deleteByTitle(Book* books, int* count);
void deleteByAuthor(Book* books, int* count);
void deleteByLoginNo(Book* books, int* count);
void modifyByLoginNoAndTitle(Book* books, int count);
void saveToFile(Book* books, int count);
void loadFromFile(Book* books, int* count);

bookManagement.c

#include"bookManagement.h"
void showMenu() {printf("\n");printf("+----------------------------------+\n");printf("|    图书信息管理系统              |\n");printf("+----------------------------------+\n");printf("|  1. 录入图书信息                 |\n");printf("|  2. 浏览图书信息                 |\n");printf("|  3. 按书名查询图书信息           |\n");printf("|  4. 按作者名查询图书信息         |\n");printf("|  5. 按登录号删除图书信息         |\n");printf("|  6. 按书名删除图书信息           |\n");printf("|  7. 按作者名删除图书信息         |\n");printf("|  8. 按登录号修改图书信息         |\n");printf("|  9. 保存并退出                   |\n");printf("+----------------------------------+ \n");printf("请选择操作: ");
}
void menu(Book* books, int* count) {int choice;loadFromFile(books, count);  // 初始化时从文件加载图书信息while (1) {showMenu();scanf("%d", &choice);switch (choice) {case 1:addBook(books, count);  // 添加图书信息break;case 2:displayBooks(books, *count);  // 显示所有图书信息break;case 3:searchByTitle(books, *count);  // 按书名查询图书信息break;case 4:searchByAuthor(books, *count);  // 按作者名查询图书信息break;case 5:deleteByLoginNo(books, count);  // 按登录号删除图书信息break;case 6:deleteByTitle(books, count);  // 按书名删除图书信息break;case 7:deleteByAuthor(books, count);  // 按作者名删除图书信息break;case 8:modifyByLoginNoAndTitle(books, *count);  // 按登录号书名修改图书信息break;case 9:saveToFile(books, *count);  // 保存图书信息并退出return;default:printf("无效的选择,请重新输入。\n");}}
}
void printBook(Book book) {printf("登录号: %d\n", book.loginNo);printf("书名: %s\n", book.title);printf("作者名: %s\n", book.author);printf("分类号: %s\n", book.category);printf("出版单位: %s\n", book.publisher);printf("出版时间: %s\n", book.publicationDate);printf("价格: %.2f\n", book.price);printf("\n");
}
void addBook(Book* books, int* count) {if (*count >= MAX_BOOKS) {printf("已达到最大容量,无法添加更多图书。\n");return;}Book* book = &books[*count];printf("请输入登录号: ");scanf("%d", &book->loginNo);printf("请输入书名: ");scanf("%s", book->title);printf("请输入作者名: ");scanf("%s", book->author);printf("请输入分类号: ");scanf("%s", book->category);printf("请输入出版单位: ");scanf("%s", book->publisher);printf("请输入出版时间: ");scanf("%s", book->publicationDate);printf("请输入价格: ");scanf("%lf", &book->price);(*count)++;printf("图书信息录入成功\n");
}
void displayBooks(Book* books, int count) {for (int i = 0; i < count; i++) {printBook(books[i]);}
}
void searchByTitle(Book* books, int count) {char title[100];printf("请输入书名进行查询: ");scanf("%s", title);int found = 0;for (int i = 0; i < count; i++) {if (strcmp(books[i].title, title) == 0) {printBook(books[i]);found = 1;}}if (!found) {printf("没有找到符合条件的图书。\n");}
}
void searchByAuthor(Book* books, int count) {char author[100];printf("请输入作者名进行查询: ");scanf("%s", author);int found = 0;for (int i = 0; i < count; i++) {if (strcmp(books[i].author, author) == 0) {printBook(books[i]);found = 1;}}if (!found) {printf("没有找到符合条件的图书。\n");}
}
void deleteByTitle(Book* books, int* count) {char title[100];printf("请输入要删除的书名: ");scanf("%s", title);int deleted = 0;for (int i = 0; i < *count; i++) {if (strcmp(books[i].title, title) == 0) {for (int j = i; j < *count - 1; j++) {books[j] = books[j + 1];}(*count)--;printf("书名 %s 的图书信息已经删除。\n", title);deleted = 1;break;}}if (!deleted) {printf("没有找到符合条件的图书信息。\n");}
}
void deleteByAuthor(Book* books, int* count) {char author[100];printf("请输入要删除的作者名: ");scanf("%s", author);int deleted = 0;int newCount = 0;Book tempBooks[MAX_BOOKS];for (int i = 0; i < *count; i++) {if (strcmp(books[i].author, author) != 0) {tempBooks[newCount++] = books[i];}else {printf("作者名 %s 的图书信息已经删除。\n", author);deleted = 1;}}if (!deleted) {printf("没有找到符合条件的图书信息。\n");}// 更新书籍数组for (int i = 0; i < newCount; i++) {books[i] = tempBooks[i];}*count = newCount;
}
void deleteByLoginNo(Book* books, int* count) {int loginNo;printf("请输入要删除的登录号: ");scanf("%d", &loginNo);int newCount = 0;int deleted = 0;// 创建一个临时数组来存储未被删除的图书信息Book tempBooks[MAX_BOOKS];for (int i = 0; i < *count; i++) {if (books[i].loginNo != loginNo) {tempBooks[newCount++] = books[i];}else {deleted = 1;}}// 将未被删除的图书信息复制回原数组for (int i = 0; i < newCount; i++) {books[i] = tempBooks[i];}*count = newCount;if (deleted) {printf("登录号 %d 的所有图书信息已经删除。\n", loginNo);}else {printf("没有找到符合条件的图书信息。\n");}
}void modifyByLoginNoAndTitle(Book* books, int count) {int loginNo;printf("请输入要修改的登录号: ");scanf("%d", &loginNo);int found = 0;for (int i = 0; i < count; i++) {if (books[i].loginNo == loginNo) {printf("当前信息:\n");printBook(books[i]);char confirm;printf("确认修改此图书信息吗?(y/n): ");scanf(" %c", &confirm);if (confirm == 'y' || confirm == 'Y') {char title[100];printf("请输入要修改的书名: ");scanf("%s", title);int modified = 0;for (int j = 0; j < count; j++) {if (books[j].loginNo == loginNo && strcmp(books[j].title, title) == 0) {printf("请输入新的书名: ");scanf("%s", books[j].title);printf("请输入新的作者名: ");scanf("%s", books[j].author);printf("请输入新的分类号: ");scanf("%s", books[j].category);printf("请输入新的出版单位: ");scanf("%s", books[j].publisher);printf("请输入新的出版时间: ");scanf("%s", books[j].publicationDate);printf("请输入新的价格: ");scanf("%lf", &books[j].price);printf("图书信息已更新。\n");modified = 1;}}if (!modified) {printf("没有找到指定书名的图书信息。\n");}found = 1;break;}else {printf("取消修改。\n");break;}}}if (!found) {printf("没有找到指定登录号的图书信息。\n");}
}
void saveToFile(Book* books, int count) {FILE* fp = fopen(FILE_NAME, "w");if (fp == NULL) {printf("无法打开文件 '%s' 进行写入。\n", FILE_NAME);return;}for (int i = 0; i < count; i++) {fprintf(fp, "%d,%s,%s,%s,%s,%s,%.2f\n",books[i].loginNo,books[i].title,books[i].author,books[i].category,books[i].publisher,books[i].publicationDate,books[i].price);}fclose(fp);printf("图书信息保存成功。\n");
}
void loadFromFile(Book* books, int* count) {FILE* fp = fopen(FILE_NAME, "r");if (fp == NULL) {printf("文件 '%s' 不存在,创建新文件。\n", FILE_NAME);fp = fopen(FILE_NAME, "w");fclose(fp);return;}*count = 0;while (fscanf(fp, "%d,%[^,],%[^,],%[^,],%[^,],%[^,],%lf",&books[*count].loginNo,books[*count].title,books[*count].author,books[*count].category,books[*count].publisher,books[*count].publicationDate,&books[*count].price) != EOF) {(*count)++;}fclose(fp);printf("图书信息加载成功。\n");
}

test.c

#include"bookManagement.h"int main() {Book books[MAX_BOOKS];int count = 0;menu(books, &count);return 0;
}

终端测试截图

添加图书
在这里插入图片描述
按下9 保存退出后,再次启动,按下2,浏览,没有问题
在这里插入图片描述
继续添加图书

199,西游记,吴承恩,I242.4,浙江古籍出版社,2010,35.00
199,鲁迅全集,鲁迅,略,略,略,900.00
199,呐喊,鲁迅,略,略,略,56.00
199,三国演义,罗贯中,略,略,略,79.00
89,红楼梦,曹雪芹,略,略,略,89.00
89,水浒传,施耐庵,略,略,略,99.00
19,测试,测试,测试,测试,测试,55.00
19,测试,测试,测试,测试,测试,35.00

根据书名查询图书
在这里插入图片描述
根据作者查询图书
在这里插入图片描述
一次性删除所有该登录号信息

199,西游记,吴承恩,I242.4,浙江古籍出版社,2010,35.00
199,鲁迅全集,鲁迅,略,略,略,900.00
199,呐喊,鲁迅,略,略,略,56.00
199,三国演义,罗贯中,略,略,略,79.00
89,红楼梦,曹雪芹,略,略,略,89.00
89,水浒传,施耐庵,略,略,略,99.00

在这里插入图片描述
没有登录号19的图书
在这里插入图片描述
删除图书

在这里插入图片描述
删除作者的图书
在这里插入图片描述
修改登录号下的图书
在这里插入图片描述

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com