当前位置: 首页 > news >正文

网站建设站申请域名要多少钱

网站建设站,申请域名要多少钱,wordpress头像大小不一,计算机哪个专业好一、系统介绍 这是一个基于C语言开发的终端图书管理系统#xff0c;采用链表数据结构​​二进制文件存储技术实现。系统具有以下特点#xff1a; ​双角色系统​#xff1a;管理员#xff08;管理图书#xff09;和读者#xff08;借阅/归还#xff09;​完整功能​采用链表数据结构​​二进制文件存储技术实现。系统具有以下特点 ​双角色系统​管理员管理图书和读者借阅/归还​完整功能​图书添加、搜索、借阅、归还、显示等功能​数据持久化​所有图书信息保存在文件中重启不丢失​健壮性设计​完善的输入验证和错误处理 二、系统完整代码 #include stdio.h #include stdlib.h #include string.h #include time.h/* 宏定义 */ #define MAX_NAME 50 // 名称最大长度 #define MAX_ID 20 // ID最大长度 #if defined(_WIN32)#define CLEAR_SCREEN system(cls) // Windows清屏 #else#define CLEAR_SCREEN system(clear) // Linux/Mac清屏 #endif/* 数据结构 */ // 图书结构 typedef struct Book {char isbn[MAX_ID]; // ISBN号char title[MAX_NAME]; // 书名char author[MAX_NAME]; // 作者int total_count; // 总数量int available_count; // 可借数量struct Book *next; // 链表指针 } Book;// 借阅记录 typedef struct BorrowRecord {char user_id[MAX_ID]; // 借阅者IDchar book_isbn[MAX_ID]; // 图书ISBNtime_t borrow_date; // 借书日期时间戳time_t return_date; // 还书日期struct BorrowRecord *next; // 链表指针 } BorrowRecord;/* 全局变量 */ Book *book_list NULL; // 图书链表头指针 BorrowRecord *borrow_list NULL; // 借阅记录链表头指针/************************************* 工具函数清空输入缓冲区************************************/ void clear_input_buffer() {int c;while ((c getchar()) ! \n c ! EOF); }/************************************* 数据加载从文件读取图书数据************************************/ void load_books() {FILE *fp fopen(books.dat, rb);if (fp NULL) return;Book book_temp;while (fread(book_temp, sizeof(Book), 1, fp) 1) {Book *new_book (Book*)malloc(sizeof(Book));*new_book book_temp;new_book-next book_list;book_list new_book;}fclose(fp); }/************************************* 数据保存将当前图书数据写入文件************************************/ void save_books() {FILE *fp fopen(books.dat, wb);if (fp NULL) {printf(错误无法保存数据\n);return;}Book *current book_list;while (current ! NULL) {fwrite(current, sizeof(Book), 1, fp);current current-next;}fclose(fp); }/************************************* 功能添加新书管理员权限************************************/ void add_book() {CLEAR_SCREEN;printf(\n 添加新书 \n);Book *new_book (Book*)malloc(sizeof(Book));// 输入ISBN并查重printf(ISBN: );scanf(%19s, new_book-isbn);clear_input_buffer();Book *current book_list;while (current ! NULL) {if (strcmp(current-isbn, new_book-isbn) 0) {printf(错误ISBN已存在\n);free(new_book);return;}current current-next;}// 输入其他信息printf(书名: );fgets(new_book-title, MAX_NAME, stdin);new_book-title[strcspn(new_book-title, \n)] \0; // 去掉换行符printf(作者: );fgets(new_book-author, MAX_NAME, stdin);new_book-author[strcspn(new_book-author, \n)] \0;printf(总数量: );scanf(%d, new_book-total_count);new_book-available_count new_book-total_count;clear_input_buffer();// 插入链表new_book-next book_list;book_list new_book;printf(\n图书《%s》添加成功\n, new_book-title);save_books(); // 保存到文件 }/************************************* 功能按关键字搜索图书支持模糊搜索************************************/ void search_book() {CLEAR_SCREEN;printf(\n 图书搜索 \n);char keyword[MAX_NAME];printf(输入ISBN/书名/作者关键字: );fgets(keyword, MAX_NAME, stdin);keyword[strcspn(keyword, \n)] \0; // 去掉换行符if (strlen(keyword) 0) {printf(搜索内容不能为空\n);return;}Book *current book_list;int found 0;while (current ! NULL) {// 检查ISBN、书名、作者是否匹配if (strstr(current-isbn, keyword) ! NULL || strstr(current-title, keyword) ! NULL || strstr(current-author, keyword) ! NULL) {printf(\n--------------------);printf(\nISBN: %s\n书名: %s\n作者: %s\n数量: %d/%d\n,current-isbn, current-title, current-author,current-available_count, current-total_count);found 1;}current current-next;}if (!found) {printf(未找到匹配的图书\n);} }/************************************* 功能借阅图书读者权限************************************/ void borrow_book(char *user_id) {CLEAR_SCREEN;printf(\n 借阅图书 \n);char isbn[MAX_ID];printf(输入要借阅的图书ISBN: );scanf(%19s, isbn);clear_input_buffer();// 查找图书Book *book book_list;while (book ! NULL) {if (strcmp(book-isbn, isbn) 0) break;book book-next;}// 检查图书状态if (book NULL) {printf(错误找不到该图书\n);return;} else if (book-available_count 0) {printf(错误该书已全部借出\n);return;}// 创建借阅记录BorrowRecord *record (BorrowRecord*)malloc(sizeof(BorrowRecord));strcpy(record-user_id, user_id);strcpy(record-book_isbn, isbn);record-borrow_date time(NULL); // 当前时间record-return_date 0; // 0表示未归还// 更新图书库存book-available_count--;// 添加记录到链表record-next borrow_list;borrow_list record;printf(\n借阅成功\n);printf(归还期限: 30天内\n);printf(借阅时间: %s, ctime(record-borrow_date));save_books(); // 保存库存变更 }/************************************* 功能归还图书读者权限************************************/ void return_book(char *user_id) {CLEAR_SCREEN;printf(\n 归还图书 \n);char isbn[MAX_ID];printf(输入要归还的图书ISBN: );scanf(%19s, isbn);clear_input_buffer();// 查找借阅记录未归还状态BorrowRecord *prev NULL;BorrowRecord *current borrow_list;int found 0;while (current ! NULL) {if (strcmp(current-user_id, user_id) 0 strcmp(current-book_isbn, isbn) 0 current-return_date 0) {found 1;// 更新图书库存Book *book book_list;while (book ! NULL) {if (strcmp(book-isbn, isbn) 0) {book-available_count;break;}book book-next;}// 更新归还日期current-return_date time(NULL);printf(\n归还成功\n);printf(归还时间: %s, ctime(current-return_date));save_books();return;}prev current;current current-next;}if (!found) {printf(错误未找到借阅记录或已归还\n);} }/************************************* 功能显示所有图书信息************************************/ void display_all_books() {CLEAR_SCREEN;printf(\n 所有图书 \n);printf(%-15s %-25s %-20s %-10s\n, ISBN, 书名, 作者, 库存(可借/总数));Book *current book_list;while (current ! NULL) {printf(%-15s %-25s %-20s %d/%d\n, current-isbn, current-title, current-author, current-available_count, current-total_count);current current-next;} }/************************************* 管理员菜单************************************/ void admin_menu() {int choice;while (1) {CLEAR_SCREEN;printf(\n 管理员菜单 \n);printf(1. 添加图书\n);printf(2. 搜索图书\n);printf(3. 查看所有图书\n);printf(0. 退出\n);printf(请选择操作: );scanf(%d, choice);clear_input_buffer();switch (choice) {case 1: add_book(); break;case 2: search_book(); break;case 3: display_all_books(); break;case 0: return;default: printf(无效选择\n);}printf(\n按回车键继续...);getchar();} }/************************************* 读者菜单************************************/ void reader_menu(char *user_id) {int choice;while (1) {CLEAR_SCREEN;printf(\n 读者菜单 \n);printf(读者ID: %s\n, user_id);printf(1. 借阅图书\n);printf(2. 归还图书\n);printf(3. 搜索图书\n);printf(4. 查看所有图书\n);printf(0. 退出\n);printf(请选择操作: );scanf(%d, choice);clear_input_buffer();switch (choice) {case 1: borrow_book(user_id); break;case 2: return_book(user_id); break;case 3: search_book(); break;case 4: display_all_books(); break;case 0: return;default: printf(无效选择\n);}printf(\n按回车键继续...);getchar();} }/************************************* 主函数************************************/ int main() {load_books(); // 启动时加载图书数据while (1) {CLEAR_SCREEN;printf( 图书管理系统 \n);printf(1. 管理员登录\n);printf(2. 读者登录\n);printf(0. 退出系统\n);printf(请选择: );int option;if (scanf(%d, option) ! 1) {clear_input_buffer();continue;}clear_input_buffer();switch (option) {case 1: admin_menu(); break;case 2: {char user_id[MAX_ID];printf(请输入读者ID: );fgets(user_id, MAX_ID, stdin);user_id[strcspn(user_id, \n)] \0;reader_menu(user_id);break;}case 0: {// 程序退出前保存数据save_books();printf(感谢使用再见\n);return 0;}default: printf(无效选择\n);}} } 三、系统功能详解 1. 主要功能模块 功能模块描述访问权限图书添加添加新书到系统包含ISBN、书名、作者等信息管理员图书搜索通过ISBN、书名或作者关键字查找图书所有用户借阅管理借阅图书并自动记录借阅时间和读者ID读者归还管理归还已借阅图书并更新库存读者图书显示以表格形式展示所有图书信息所有用户 2. 数据结构设计 3. 文件存储机制 系统使用二进制文件books.dat保存所有图书数据采用以下技术 ​序列化存储​直接将内存中的结构体写入文件​链表遍历​通过fwrite逐个节点写入文件​读取加载​启动时重新构建链表结构​自动保存​每次数据变更后自动更新文件 四、使用说明 1. 编译运行 ​Windows系统​ gcc library.c -o library library.exe ​Linux/Mac系统​​ gcc library.c -o library ./library 2. 操作流程示例 ​管理员操作​​ 选择管理员登录添加图书搜索图书输入C程序 读者操作​​ 选择读者登录输入任意ID如2023001借阅图书输入ISBN号查看图书选择查看所有图书归还图书选择归还并输入ISBN号 3. 系统界面示例 图书管理系统 1. 管理员登录 2. 读者登录 0. 退出系统 请选择: 1 管理员菜单 1. 添加图书 2. 搜索图书 3. 查看所有图书 0. 退出 请选择操作: 1 添加新书 ISBN: 1234567890 书名: C程序设计语言 作者: XXXX 总数量: 10图书《C程序设计语言》添加成功 五、扩展与优化建议 1. 可扩展功能 ​借阅记录持久化​添加borrow.dat保存借阅记录​逾期计算​根据借阅时间自动计算逾期费用​管理员密码​增加管理员登录验证​批量导入​支持从CSV文件批量导入图书 2. 性能优化 // 示例优化查找函数哈希表实现 #define HASH_SIZE 100typedef struct HashTable {Book *table[HASH_SIZE]; } HashTable;// ISBN哈希函数 unsigned int hash_function(char *isbn) {unsigned int hash 0;for (int i 0; i strlen(isbn); i) {hash 31 * hash isbn[i];}return hash % HASH_SIZE; }// 添加图书到哈希表 void add_to_hash(Book *book, HashTable *hash_table) {unsigned int index hash_function(book-isbn);book-next hash_table-table[index];hash_table-table[index] book; } 3. 增强安全性 ​输入验证​添加更严格的ISBN格式检查​密码加密​管理员密码使用MD5/SHA加密存储​访问控制​不同读者只能查看自己的借阅记录 六、总结 这个C语言图书管理系统具有完整的功能实现、清晰的代码结构和良好的扩展性适合用作课程设计或学习项目。系统特点包括 采用链表数据结构动态管理数据文件存储实现数据持久化模块化设计便于功能扩展完整的输入验证和错误处理跨平台兼容性Windows/Linux/Mac 将整个代码复制到library.c文件中即可编译运行无需任何外部依赖库。 资源推荐 C/C学习交流君羊 C/C教程 C/C学习路线就业咨询技术提升
http://www.w-s-a.com/news/763314/

相关文章:

  • 阿里云服务起做网站抖音seo推荐算法
  • 免费建站工具机械网站建设公司推荐
  • 怎么用自己主机做网站_如何做简单的网站
  • 阿里巴巴国际站跨境电商平台为什么有点网站打不开
  • 甘肃做网站哪家好网站开发 都包含什么语言
  • 合肥哪里有做网站的广告型网站怎么做的
  • 用dede做的网站国外免费空间哪个好
  • dede个人网站模板企点
  • 韩雪个人网站wordpress 怎么添加网站备案信息
  • 个人网站可以做地方技能培训班
  • 品牌营销策略研究无锡 网站 seo 优化
  • 在线推广网站的方法有哪些织梦网站首页目录在哪
  • 做爰全过程免费网站的视频做网站的几个步骤
  • cpa建站教程青海西宁制作网站企业
  • 简易的在线数据库网站模板网站多服务器建设
  • 成都seo网站建设花店网页模板html
  • 义乌市网站制作网络营销策略名词解释
  • 高端品牌网站建设图片wordpress 资源站主题
  • 上海建设工程监督总站网站电商网站wordpress
  • 网站建设 医院菏泽网站建设熊掌号
  • 成都网站建设企业预约网免费建站流程
  • 网站建设胶州中国政务网站建设绩效评估
  • 合肥知名网站推广胶东国际机场建设有限公司网站
  • asp.ney旅游信息网站下载 简洁濮阳微信网站开发
  • 建设网站专业怎么上传网站程序到空间
  • 县城乡建设局网站微商城小程序哪个好
  • 博物馆门户网站建设优势重庆seo排名系统运营
  • 哪有app制作公司上海seo排名
  • 长沙建站seo公司北京招聘信息
  • 建设网站情况说明范文四川个人证书查询网官网