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

国内专业建站平台建设通网站是免费的吗

国内专业建站平台,建设通网站是免费的吗,校园网站建设资金来源有,做电子手环网站需求分析目录 书籍存储的实现规划 ​编辑 前置准备: 书籍结构体: 书籍展示的初始化和文件加载 书籍展示的销毁和文件保存 书籍展示的容量检查 书籍展示的尾插实现 书籍展示的书籍增加 书籍展示的书籍打印 书籍删除展示数据 书籍展示修改数据 在指定位置之前…

目录

书籍存储的实现规划

​编辑 前置准备:

 书籍结构体:

书籍展示的初始化和文件加载

书籍展示的销毁和文件保存

 书籍展示的容量检查

 书籍展示的尾插实现

 书籍展示的书籍增加

 书籍展示的书籍打印

 书籍删除展示数据

书籍展示修改数据

在指定位置之前删除数据

 书籍查找展示数据

 测试文件:

 源代码文件:


书籍存储的实现规划

 前置准备:

文件前置创建:

  1. BookList.h  -  头文件声明
  2. BookList.c  -  实现功能
  3. text.c           -  测试文件
  • 创建书籍结构体
  • 创建动态内存

  BookList 结构体的创建
 为了方便后续更改,我们有以下定义
 1.书名  2.作者  3.价格  4.分类  5.编号

#define BOOKNAME 100
#define AUTHOR 50
#define TYPE 30
#define ID 50

 书籍结构体:

typedef struct BookList
{char book_name[BOOKNAME]; //书名char author[AUTHOR];      //作者float price;			  //价格char type[TYPE];		  //分类char id[ID];			  //编号
}BookList;

 定义类型方便更改

typedef BookList SLDataType;

创建动态顺序表 

typedef struct Book
{SLDataType* arr;        //指针变量,指向结构体类型元素的数组int size;				//有效数据的个数int capacity;			//空间容量大小
}Book;

书籍展示的初始化和文件加载

void BookInit(Book* book);
void LoadBook(Book* book);
// 书籍展示的初始化和文件加载
void BookInit(Book* book)
{book->arr = NULL;book->size = book->capacity = 0;LoadBook(book);
}void LoadBook(Book* book)
{FILE* pf = fopen("booklist", "rb");if (NULL == pf){perror("fopen booklist error!");return;}//加载文件BookList b2;while (fread(&b2, sizeof(BookList), 1, pf)){//尾插BookPushBack(book, b2);}printf("数据加载成功!\n");fclose(pf);pf = NULL;
}

书籍展示的销毁和文件保存

void BookDestroy(Book* book);
void SaveBook(Book* book);
// 书籍展示的销毁和文件保存
void SLDestroy(Book* ps)
{if (ps->arr==NULL)   //判断ps->arr是否为NULL,如果不为NULL,说明空间需要释放{free(ps->arr);}ps->arr = NULL;ps->size = ps->capacity = 0;
}void BookDestroy(Book* book)
{SaveBook(book);SLDestroy(book);
}// 图书书籍存储
void SaveBook(Book* book)
{FILE* pd = fopen("booklist", "wb");if (NULL == pd){perror("fopen booklist error!");return;}// 存储书籍数据for (int i = 0; i < book->size; i++){fwrite(book->arr+i, sizeof(BookList), 1, pd);}printf("数据保存成功!\n");fclose(pd);pd = NULL;
}

 书籍展示的容量检查

void BookCheckCapacity(Book* book);
// 书籍展示的容量检查
void BookCheckCapacity(Book* book)
{if (book->capacity == book->size){int newcapacity = book->capacity == 0 ? 4 : book->capacity * 2;//动态内存分配SLDataType* tmp = (SLDataType*)realloc(book->arr, newcapacity * sizeof(SLDataType));if (NULL == tmp){perror("realloc error!");return;}book->arr = tmp;book->capacity = newcapacity;}
}

 书籍展示的尾插实现

void BookPushBack(Book* book, SLDataType x);
// 书籍展示的尾插实现
void BookPushBack(Book* book, SLDataType x)
{assert(book);//尾插之前检查内存是否够BookCheckCapacity(book);//进行尾插book->arr[book->size++] = x;
}

 书籍展示的书籍增加

void BookAdd(Book* book);
// 书籍展示的书籍增加
void BookAdd(Book* book)
{// 1.书名  2.作者  3.价格  4.分类  5.编号BookList b1;printf("请输入你要添加的书籍名字:\n");scanf("%s", b1.book_name);printf("请输入你要添加的书籍作者:\n");scanf("%s", b1.author);printf("请输入你要添加的书籍价格:\n");scanf("%f", &(b1.price));printf("请输入你要添加的书籍分类:\n");scanf("%s", b1.type);printf("请输入你要添加的书籍编号:\n");scanf("%s", b1.id);// 添加数据BookPushBack(book, b1);printf("添加成功!\n");
}

 书籍展示的书籍打印

void BookPint(Book* book);
// 书籍展示的书籍打印
void BookPint(Book* book)
{// 1.书名  2.作者  3.价格  4.分类  5.编号printf("%-10s %-10s %-10s %-10s %-15s\n", "书名", "作者", "价格", "分类", "编号");printf("-------------------------------------------------------------\n");for (int i = 0; i < book->size; i++){printf("%-10s %-10s %-10.1f %-10s %-15s\n",book->arr[i].book_name,book->arr[i].author,book->arr[i].price,book->arr[i].type,book->arr[i].id);}
}

 书籍删除展示数据

void BookDel(Book* book);
//删除书籍展示数据
void BookDel(Book* book)
{// 在删除之前先检查数据存不存在char name[BOOKNAME];printf("请输入您需要删除的书籍:\n");scanf("%s", name);int find = FindByName(book, name);if (find < 0){printf("无法找到需要删除的图书\n");return;}SLErase(book, find);printf("删除成功!\n");
}

书籍展示修改数据

void BookModify(Book* book);
//书籍展示修改数据
void BookModify(Book* book)
{//要修改的书籍需要存在char name[BOOKNAME];printf("请输入你需要修改的图书名字:\n");scanf("%s", name);//查找书籍看是否存在int find = FindByName(book, name);if (find < 0){printf("无法找到需要修改的图书\n");return;}//直接修改printf("请输入新的图书名字:\n");scanf("%s", book->arr[find].book_name);printf("请输入新的图书作者:\n");scanf("%s", book->arr[find].author);printf("请输入新的图书价格:\n");scanf("%f", &(book->arr[find].price));printf("请输入新的图书分类:\n");scanf("%s", book->arr[find].type);printf("请输入新的图书编号:\n");scanf("%s", book->arr[find].id);printf("修改成功!\n");
}

在指定位置之前删除数据

void SLErase(Book* book, int pos);
//在指定位置之前删除数据
void SLErase(Book* book, int pos)
{assert(book);//断言防止传入空指针//判断删除的数据是否合法if (pos >= 0 && pos < book->size){// 删除数据for (int i = pos; i < book->size - 1; i++){book->arr[i] = book->arr[i + 1];//ps->[size-2]=ps->arr[size-1]}--book->size;}
}

 书籍查找展示数据

void BookFind(Book* book);
//查找图书数据
void BookFind(Book* book)
{char name[BOOKNAME];printf("请输入你要查找的书籍名字:\n");scanf("%s", name);//检查图书数据是否存在int find = FindByName(book, name);if (find < 0){printf("您要查找的书籍不存在!\n");return;}// 1.书名  2.作者  3.价格  4.分类  5.编号printf("%-10s %-10s %-10s %-10s %-15s\n", "书名", "作者", "价格", "分类", "编号");printf("-------------------------------------------------------------\n");//找到了printf("%-10s %-10s %-10.1f %-10s %-15s\n",book->arr[find].book_name,book->arr[find].author,book->arr[find].price,book->arr[find].type,book->arr[find].id);
}

 测试文件:

#define _CRT_SECURE_NO_WARNINGS 1
#include "BookList.h"
#include <windows.h>enum book_name
{ExitBook, // 0AddBook, // 1DelBook, //...PrintBook,ChangeBook,CheckBook
};void book_print()
{printf("*****************书籍录*********************\n");printf("*************1. 增添图书********************\n");printf("*************2. 删除图书********************\n");printf("*************3. 打印图书********************\n");printf("*************4. 修改图书********************\n");printf("*************5. 查找图书********************\n");printf("*************0. 退出图书录******************\n");
}int main()
{Book b1;// 创建通讯录对象,实际上就是顺序表对象,等价于 SL sl//顺序表的创建BookInit(&b1);int op = -1;do{book_print();printf("请选择你的操作:\n");scanf("%d", &op);switch (op){case ExitBook:printf("退出图书录系统...\n");Sleep(1000);break;case AddBook:BookAdd(&b1);Sleep(1000);break;case DelBook:BookDel(&b1);Sleep(1000);break;case PrintBook:BookPint(&b1);Sleep(1000);break;case ChangeBook:BookModify(&b1);Sleep(1000);break;case CheckBook:BookFind(&b1);Sleep(1000);break;default:printf("选择错误,请重新选择\n");Sleep(1000);break;}} while (op != 0);// 顺序表的销毁BookDestroy(&b1);return 0;
}

 源代码文件:

BookList_2024_4_5 · 34c38d2 · 阳区欠/C语言学习路程 - Gitee.com

http://www.yayakq.cn/news/138767/

相关文章:

  • 企业网站制作运营软件开发工作稳定吗
  • 铁门关网站建设无极电影网首页
  • 网站建设主流编程软件公司注册公司流程
  • 建设一个本地网站网站平台搭建怎么弄的
  • 甘肃企业网站建设网站ui设计报价单
  • 福州网站建设招聘信息织梦怎么做英文版网站
  • 开设网站维护公司wordpress移动主题puck
  • 正常开发一个网站需要多少钱网站开发与设计这么样
  • 广元建设局网站wordpress 作者标签
  • 重庆市建设厅网站wordpress keywords 插件
  • 哪些网站是用asp.net做的海口网站建设
  • logo是黑色 怎么调网站的色调网络服务器搭建
  • 微信公众号的微网站开发电子邮件无法发送wordpress
  • 网站开发的毕业设计咸宁公司网站建设
  • 卡盟网站怎么做图片工作单位
  • 云建站模板网站搭建学什么软件
  • 郑州那里能设计网站樱花大黄云服务器
  • 哪家公司做网站建设比较好如何提高关键词搜索排名
  • 住房和城乡建设部网站建筑合同深圳工程项目
  • 外贸电子网站建设网址怎么创建
  • Django可以做门户网站吗企业网站建设培训
  • 网站首页被k 内页还有海口网站设计建设
  • 网页游戏源代码杭州seo博客
  • 做网站的文案wordpress登录页面显示ip
  • 北京做机柜空调的网站云服务器wordpress如何上线
  • 宁波网络营销网站建设做公司网站要素
  • 卫辉市住房和城市建设局网站广告设计与制作专升本可以报考什么专业
  • 网站里宣传视频怎么做不同接入商备案网站
  • 营销型网站建设公司哪家建设营天猫网站左侧导航用js怎么做
  • 网站修改标题有影响吗网站开发iso9001