快捷搜索:  汽车  科技

web图书管理系统项目描述(CC项目开发)

web图书管理系统项目描述(CC项目开发)关注私信【编程交流】可到我学习粉丝群领取!更多项目源码获取通道:代码后面也有注释的,基本很好理解的。下面为源代码:#include <stdio.h> #include <stdlib.h> #include <string.h> //3.数据的设计 //3.1程序的数据存储--->容器 //3.2数据的结构 --->图书的信息 struct bookInfo { char name[20]; //书名 float price; //书籍的价格 int num; //书籍的数量 }; //定义链表 struct Node { struct bookInfo data; struct Node* next; }; struct Node* list = NULL; //将链表声明成全局变量 //创建表头:表头就

hello,各位小伙伴们大家好!你们今天有敲代码嘛?

管理系统一直是我们计算机专业同学都要经历的项目设计,而管理系统的核心知识点其实都是一样的,无法就是换了个马甲,今天我们就来看看很多同学都会遇到的管理项目之一:图书管理系统!

web图书管理系统项目描述(CC项目开发)(1)

用于图书信息的管理。包括图书信息的创建、图书信息的打印、图书信息的查询、图书信息的修改、图书信息的删除。方便用户整理图书,查询图书。

这个图书管理系统是由单链表这一数据结构实现的,板块包括图书信息的创建、打印、查询、修改、删除、以及图书价格的排序等组成。

代码后面也有注释的,基本很好理解的。

web图书管理系统项目描述(CC项目开发)(2)

下面为源代码:

#include <stdio.h> #include <stdlib.h> #include <string.h> //3.数据的设计 //3.1程序的数据存储--->容器 //3.2数据的结构 --->图书的信息 struct bookInfo { char name[20]; //书名 float price; //书籍的价格 int num; //书籍的数量 }; //定义链表 struct Node { struct bookInfo data; struct Node* next; }; struct Node* list = NULL; //将链表声明成全局变量 //创建表头:表头就是结构体变量 struct Node* createHead() { //动态内存申请 struct Node* headNode = (struct Node*)malloc(sizEOF(struct Node)); //变量初始化 headNode->next = NULL; return headNode; } //创建节点:为插入做准备 // 把用户的数据变成结构体变量 struct Node* createNode(struct bookInfo data) { struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); newNode->data = data; newNode->next = NULL; return newNode; } //数据插入(头插法) void insertNodeByHead(struct Node* headNode struct bookInfo data) { struct Node* newNode = createNode(data); newNode->next = headNode->next; headNode->next = newNode; } //尾插法 /*struct insertNodeByTall(struct Node* headNode int data) { struct Node* pMove = headNode; while (pMove != NULL) { pMove = pMove->next; } struct Node* newNode = createHead(data); pMove->next = newNode; }*/ //指定删除(删除链表中元素) //posLeftNode->next=posNode->next; //free(posNode); void deleteNodeByName(struct Node* headNode char* bookname) { struct Node* posLeftNode = headNode; struct Node* posNode = headNode->next; //书籍名字是字符串,字符串比较函数 while (posNode != NULL && strcmp(posNode->data.name bookname)) { posLeftNode = posNode; posNode = posLeftNode->next; } //讨论查找的结果 if (posNode == NULL) return; else { printf("删除成功!\n"); posLeftNode->next = posNode->next; free(posNode); posNode = NULL; } } //查找 struct Node* searchByName(struct Node* headNode char* bookName) { struct Node* posNode = headNode->next; while (posNode != NULL && strcmp(posNode->data.name bookName)) { posNode = posNode->next; } return posNode; } //打印链表 void printList(struct Node* headNode) { struct Node* pMove = headNode->next; printf("书名\t价格\t数量\n"); while (pMove != NULL) { printf("%s\t%.1f\t%d\n" pMove->data.name pMove->data.price pMove->data.num); pMove = pMove->next; } } //直接文件操作 //文件写操作 void saveInfoToFile(const char* filename struct Node* headNode) { FILE* fp = fopen(filename "w"); struct Node* pMove = headNode->next; while (pMove != NULL) { fprintf(fp "%s\t%.1f\t%d\n" pMove->data.name pMove->data.price pMove->data.num); pMove = pMove->next; } fclose(fp); } //文件读操作 void readInfoFromFile(const char* fileName struct Node* headNode) { FILE* fp = fopen(fileName "r"); if (fp == NULL) { //不存在就创建出来这个文件 fp = fopen(fileName "w "); } struct bookInfo tempData; while (fscanf(fp "%s\t%f\t%d\n" tempData.name &tempData.price &tempData.num) != EOF) { insertNodeByHead(list tempData); } fclose(fp); } //冒泡排序(链表) void bubbleSortList(struct Node* headNode) { for (struct Node* p = headNode->next; p != NULL; p = p->next) { for (struct Node* q = headNode->next; q->next != NULL; q = q->next) { if (q->data.price > q->next->data.price) { //交换值 struct bookInfo tempData = q->data; q->data = q->next->data; q->next->data = tempData; } } } printList(headNode); } //2.交互 void keyDown() { int userkey = 0; struct bookInfo tempBook; //产生一个临时的变量存储书籍信息 struct Node* result = NULL; scanf("%d" &userkey); switch (userkey) { case 0: printf(" 【 登记 】 \n"); printf("输入书籍的信息(name price num):"); scanf("%s%f%d" tempBook.name &tempBook.price &tempBook.num); insertNodeByHead(list tempBook); saveInfoToFile("bookinfo.txt" list); break; case 1: printf(" 【 浏览 】 \n"); printList(list); break; case 2: printf(" 【 借阅 】 \n"); printf("请输入你要借阅的书籍:"); scanf("%s" tempBook.name); result = searchByName(list tempBook.name); if (result == NULL) printf("没有相关书籍无法借阅!\n"); else { if (result->data.num > 0) { result->data.num--; printf("借阅成功\n"); saveInfoToFile("bookinfo.txt" list); } else { printf("当前书籍无库存,借阅失败!\n"); } } break; case 3: printf(" 【 归还 】 \n"); printf("请输入你要归还的书籍:"); scanf("%s" tempBook.name); result = searchByName(list tempBook.name); if (result == NULL) printf("书籍来源非法!\n"); else { result->data.num ; printf("书籍归还成功!\n"); saveInfoToFile("bookinfo.txt" list); } break; case 4: printf(" 【 查找 】 \n"); printf("你要查询的书名:"); scanf("%s" tempBook.name); result = searchByName(list tempBook.name); if (result == NULL) { printf("未找到相关结果!\n"); } else { printf("书名\t价格\t数量\n"); printf("%s\t%.1f\t%d\n" result->data.name result->data.price result->data.num); } break; case 5: printf(" 【 排序 】 \n"); bubbleSortList(list); break; case 6: printf(" 【 删除 】 \n"); printf("输入想要删除的书名:"); scanf("%s" tempBook.name); deleteNodeByName(list tempBook.name); saveInfoToFile("bookinfo.txt" list); break; case 7: printf(" 【 退出 】 \n"); printf(" 退出成功 \n"); system("pause"); exit(0); //关掉整个程序 break; default: printf(" 【 error 】 \n"); break; } } //1.界面--->菜单--->模块 void makeMenu() { printf("----------------------------------\n"); printf(" 图书管理借阅系统\n"); printf("t0.登记书籍\n"); printf("t1.浏览书籍\n"); printf("t2.借阅书籍\n"); printf("t3.归还书籍\n"); printf("t4.查找书籍\n"); printf("t5.排序书籍\n"); printf("t6.删除书籍\n"); printf("t7.退出系统\n"); printf("----------------------------------\n"); printf("请输入(0~7):"); } int main() { list = createHead(); //链表初始化 readInfoFromFile("bookinfo.txt" list); while (1) { makeMenu(); keyDown(); system("pause"); system("cls"); } }

图书管理系统分享就到此结束啦,大家赶紧试试吧!

更多项目源码获取通道:

关注私信【编程交流】可到我学习粉丝群领取!

而且你可以在群里面交流提问C语言/C 的相关编程问题哦!

猜您喜欢: