You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
2.7 KiB
137 lines
2.7 KiB
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
|
|
//图书存储结构
|
|
struct book{
|
|
int id;//图书编号
|
|
char name[20];//图书名称
|
|
char author[20];//图书作者
|
|
float price;//图书价格
|
|
struct book *next; // 指向下一图书
|
|
}*books;
|
|
|
|
///////////////////
|
|
// 用户界面模块 //
|
|
|
|
// 系统初始化,读取数据文件到内存
|
|
void init();
|
|
// 显示主菜单
|
|
void display_menu();
|
|
// 选择菜单命令,调用相应的功能函数
|
|
void make_choice();
|
|
// 确认操作
|
|
void confirm();
|
|
// 退出系统,释放内存,保存数据到文件
|
|
void quit();
|
|
|
|
///////////////////
|
|
// 数据处理模块 //
|
|
|
|
// 从文件读取数据到内存
|
|
void read_data();
|
|
// 保存内存数据到文件
|
|
void save_data();
|
|
// 打印图书信息
|
|
void print_data();
|
|
// 根据图书编号查询图书信息
|
|
struct book *find(int id);
|
|
// 查询图书信息
|
|
void query_data();
|
|
// 添加新图书信息
|
|
void add_data();
|
|
// 更新图书信息
|
|
void update_data();
|
|
// 删除图书信息
|
|
void delete_data();
|
|
// 对图书信息进行排序
|
|
void sort_data();
|
|
// 生成图表报表
|
|
void make_chart();
|
|
|
|
|
|
int main()
|
|
{
|
|
display_menu();
|
|
make_choice();
|
|
return 0;
|
|
}
|
|
|
|
|
|
void init()
|
|
{
|
|
printf("图书管理系统启动");
|
|
}
|
|
|
|
|
|
void display_menu()
|
|
{
|
|
printf("1 读取 | 2 保存 | 3 打印 | 4 查询 | 5 添加\n6 修改 | 7 删除 | 8 排序 | 9 图表 | 0 退出");
|
|
}
|
|
|
|
|
|
void quit()
|
|
{
|
|
char choice;
|
|
|
|
printf("确定要退出吗?(Y/N):");
|
|
scanf(" %c", &choice);
|
|
|
|
if(choice == 'Y' || choice == 'y')
|
|
{
|
|
printf("程序退出!\n");
|
|
exit(0); // 退出系统
|
|
}
|
|
else if(choice == 'N' || choice == 'n')
|
|
{
|
|
printf("退出操作已取消!\n");
|
|
}
|
|
else
|
|
{
|
|
printf("输入错误,请重新输入(Y/N):");
|
|
quit(); // 递归调用自己
|
|
}
|
|
}
|
|
|
|
// 查询图书信息
|
|
void query_data()
|
|
{
|
|
int id;
|
|
struct book *p;
|
|
|
|
printf("输入要查询的图书编号:");
|
|
scanf("%d", &id);
|
|
|
|
p = find(id); // 查找编号为id的图书
|
|
if(p != NULL)
|
|
{
|
|
printf("图书信息如下:\n");
|
|
printf("图书编号:%d\n", p->id);
|
|
printf("图书名称:%s\n", p->name);
|
|
printf("图书作者:%s\n", p->author);
|
|
printf("图书价格:%.2f\n", p->price);
|
|
}
|
|
else
|
|
{
|
|
printf("没有找到编号为%d的图书!\n", id);
|
|
}
|
|
}
|
|
|
|
// 打印图书信息
|
|
void print_data()
|
|
{
|
|
struct book *p;
|
|
|
|
p = books; // 从全局链表头开始
|
|
while(p != NULL)
|
|
{
|
|
printf("图书编号:%d\n", p->id);
|
|
printf("图书名称:%s\n", p->name);
|
|
printf("图书作者:%s\n", p->author);
|
|
printf("图书价格:%.2f\n", p->price);
|
|
printf("----------------------\n");
|
|
p = p->next;
|
|
}
|
|
}
|