master
parent
fe0a344606
commit
d9551a09a5
@ -1,161 +1,59 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "data.h"
|
||||
#include <string.h>
|
||||
|
||||
|
||||
//图书存储结构
|
||||
struct book{
|
||||
int id;
|
||||
char name;
|
||||
char author;
|
||||
float price;
|
||||
struct book *next;
|
||||
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();
|
||||
// 根据图书编号查询图书信息
|
||||
book *find(int id);
|
||||
// 查询图书信息
|
||||
void query_data();
|
||||
// 添加新图书信息
|
||||
void add_data();
|
||||
// 更新图书信息
|
||||
void update_data();
|
||||
// 删除图书信息
|
||||
void delete_data();
|
||||
// 对图书信息进行排序
|
||||
void sort_data();
|
||||
// 生成图表报表
|
||||
void make_chart();
|
||||
|
||||
|
||||
|
||||
|
||||
// 菜单命令的编号
|
||||
enum {
|
||||
CMD_QUIT, // 退出
|
||||
CMD_READ, // 读取
|
||||
CMD_SAVE, // 保存
|
||||
CMD_PRINT, // 打印
|
||||
CMD_QUERY, // 查询
|
||||
CMD_INSERT, // 添加
|
||||
CMD_UPDATE, // 修改
|
||||
CMD_DELETE, // 删除
|
||||
CMD_SORT, // 排序
|
||||
CMD_CHART, // 图表
|
||||
};
|
||||
|
||||
//函数声明
|
||||
void init(void);
|
||||
void quit(void);
|
||||
void display_menu(void);
|
||||
int make_choice(void);
|
||||
int confirm(const char* msg);
|
||||
|
||||
// 主程序
|
||||
int main(void)
|
||||
{
|
||||
init(); // 程序启动
|
||||
while (1){
|
||||
display_menu();
|
||||
make_choice();
|
||||
}
|
||||
quit(); // 程序退出
|
||||
return 0;
|
||||
}
|
||||
|
||||
void init(void)
|
||||
{
|
||||
puts("程序启动");
|
||||
}
|
||||
|
||||
|
||||
void quit(void)
|
||||
{
|
||||
puts("程序退出");
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
void display_menu(void)
|
||||
{
|
||||
printf("\n%d 读取 | %d 保存 | %d 打印 | %d 查询 | %d 添加\n%d 修改 | %d 删除 | %d 排序 | %d 图表 | %d 退出\n\n",
|
||||
CMD_READ,
|
||||
CMD_SAVE,
|
||||
CMD_PRINT,
|
||||
CMD_QUERY,
|
||||
CMD_INSERT,
|
||||
CMD_UPDATE,
|
||||
CMD_DELETE,
|
||||
CMD_SORT,
|
||||
CMD_CHART,
|
||||
CMD_QUIT);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int make_choice(void)
|
||||
{
|
||||
int c;
|
||||
int n = 0;
|
||||
while (n == 0) {
|
||||
printf("请选择:");
|
||||
n = scanf("%d", &c);
|
||||
scanf("%*[^\n]");
|
||||
switch(c)
|
||||
{
|
||||
case CMD_QUIT:
|
||||
if (confirm("确定要退出吗?")) quit(); // 仅在确认后退出
|
||||
break;
|
||||
case CMD_READ: read_data(); break;
|
||||
case CMD_SAVE: save_data(); break;
|
||||
case CMD_PRINT: print_data(); break;
|
||||
case CMD_QUERY: query_data(); break;
|
||||
case CMD_INSERT: add_data(); break;
|
||||
case CMD_UPDATE: update_data(); break;
|
||||
case CMD_DELETE: delete_data(); break;
|
||||
case CMD_SORT: sort_data(); break;
|
||||
case CMD_CHART: make_chart(); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 添加新图书信息
|
||||
void add_data()
|
||||
{
|
||||
struct book *p, *q;
|
||||
|
||||
p = (struct book*)malloc(sizeof(struct book));
|
||||
|
||||
printf("请依次输入图书信息:\n");
|
||||
printf("图书编号:");
|
||||
scanf("%d", &p->id);
|
||||
printf("图书名称:");
|
||||
scanf("%s", p->name);
|
||||
printf("图书作者:");
|
||||
scanf("%s", p->author);
|
||||
printf("图书价格:");
|
||||
scanf("%f", &p->price);
|
||||
|
||||
q = books;
|
||||
while(q != NULL && p->id > q->id)
|
||||
q = q->next;
|
||||
|
||||
p->next = q; // 指向下一个节点
|
||||
books = p; // 新节点成为链表头
|
||||
|
||||
printf("图书信息添加成功!\n");
|
||||
}
|
||||
// 更新图书信息
|
||||
void update_data()
|
||||
int main()
|
||||
{
|
||||
int id;
|
||||
struct book *p;
|
||||
|
||||
printf("请输入要修改的图书编号:");
|
||||
scanf("%d", &id);
|
||||
|
||||
p = find(id); // 查找编号为id的图书
|
||||
if(p != NULL)
|
||||
{
|
||||
printf("请依次输入修改后的图书信息:\n");
|
||||
printf("图书名称:");
|
||||
scanf("%s", p->name);
|
||||
printf("图书作者:");
|
||||
scanf("%s", p->author);
|
||||
printf("图书价格:");
|
||||
scanf("%f", &p->price);
|
||||
|
||||
printf("图书信息修改成功!\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("没有找到编号为%d的图书!\n", id);
|
||||
}
|
||||
display_menu();
|
||||
make_choice();
|
||||
return 0;
|
||||
}
|
Loading…
Reference in new issue