#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include<time.h>
typedef struct
{
char name[20]; //交易事件记录
float price; //交易金额记录
char data[15]; //交易日期记录
char flag[4]; //收支分类,收入或支出
}Facility;
//class Lnode
//{
//public:
// Lnode() {};
// Lnode(char n, float p, char d, char f, Lnode* ne) {};
// Lnode(const Lnode* a) {};
// void Set(char name, float price, char data, char flag,Lnode* ne)
// {
// Name = name;
// Price = price;
// Data = data;
// Flag = flag;
// next = ne;
// }
// char Getname()
// {
// return Name;
// }
// float Getprice()
// {
// return Price;
// }
// char Getdata()
// {
// return Data;
// }
// char Getflag()
// {
// return Flag;
// }
// Facility Getne()
// {
// return next;
// }
// ~Lnode() {};
//private:
// char Name[20]; //交易事件
// float Price; //交易金额
// char Data[15]; //交易日期
// char Flag[4]; //收支分类
// Lnode* next; //指针,指向下一个Lnode的对象
//
//};
//typedef struct User_basicinfo
//{
// char kind[20];
// char id[15];
// char mima[20];
// char name[15];
// char sex[5];
//
// User_basicinfo* node;
//}Users;
int Login(int p);
void Regist();
void title();
void add(Lnode* L);//添加交易信息
void del(Lnode* L);//删除设备信息
void alter(Lnode* L);//修改设备信息
void query(Lnode* L);//查询设备信息
void sta(Lnode* L);//统计设备信息
void sort(Lnode* L);//排序设备信息
void load(Lnode* L);//导入设备信息
void save(Lnode* L);//保存设备信息
Lnode* init(); //初始化一个设备节点
void inser(Lnode* L, Facility e);//添加一个设备信息
Lnode* getNode(Lnode* L, Facility e);//通过交易事件得到一个设备信息
void delNode(Lnode* L, Facility e);//通过交易事件删除一个设备信息
int getLen(Lnode* L); //得到链表中节点个数
int main()
{
Lnode* L = init(); //初始化一个设备节点
int input = -1;
int ymxz = 0;//页面选择
do
{
printf("\t\t\t----------------------------------\n");
printf("\t\t\t| 1.登录 |\n");
printf("\t\t\t| 2.注册 |\n");
printf("\t\t\t| 0.退出 |\n");
printf("\t\t\t----------------------------------\n");
printf("请选择功能->");
scanf("%d", &ymxz);
switch (ymxz)
{
case 1:if (Login(1))
input = 0;
break;
case 2:Regist();
break;
case 0:puts("退出成功");
return 0;
}
} while (input);
int choice;
load(L);//导入设备信息
while (1)
{
title();
printf(" 主菜单\n");
printf(" 1. 添加设备信息\n");
printf(" 2. 删除设备信息\n");
printf(" 3. 修改设备信息\n");
printf(" 4. 查询设备信息\n");
printf(" 5. 统计设备信息\n");
printf(" 6. 排序设备信息\n");
printf(" 7. 退出系统\n");
printf(" 请选择: ");
scanf_s("%d", &choice);
switch (choice)
{
case 1: add(L); system("pause"); break;//添加设备信息
case 2: del(L); system("pause"); break;//删除设备信息
case 3: alter(L); system("pause"); break;//修改设备信息
//case 4: scrap(L); system("pause"); break;//设备报废标记
case 4: query(L); system("pause"); break;//查询设备信息
case 5: sta(L); system("pause"); break;//统计设备信息
case 6: sort(L); system("pause"); break;//排序设备信息
case 7: printf("系统退出\n"); return 0;
default: printf("输入错误"); system("pause");
}
}
return 0;
}
//添加交易信息
void add(Lnode* L)
{
Lnode e;
Lnode* p = L;
title();
cout << "添加设备信息" << endl;
printf("设备编号: ");
scanf("%s", e.ID);
if (getNode(L, e) != NULL)
{
printf("设备编号已经存在\n");
return;
}
char name[20];
float price;
char data, flag;
cout << "设备名称: " << endl;
cin >>name>> endl;
printf("设备购入价格: ");
cin >> price >> endl;
printf("设备购入日期: ");
cin >> data >> endl;
cout << "收支类型" << endl;
cin >> flag >> endl;
e.Set(name, price, data, flag);
inser(L, e);//添加一个设备信息
printf("设备添加成功\n");
save(L);//保存设备信息
}
//删除设备信息
void del(Lnode* L)
{
Facility e;
title();
printf("删除交易信息\n");
printf("交易事件: ");
scanf("%s", e.name);
if (getNode(L, e) == NULL)
{
printf("交易事件不存在\n");
return;
}
delNode(L, e);//通过交易事件删除一个交易信息
printf("删除成功\n");
save(L);//保存交易信息
}
//修改设备信息
void alter(Lnode* L)
{
Facility e;
Lnode* p = NULL;
int n;
title();
printf("修改设备信息\n");
printf("设备编号: ");
scanf("%s", e.ID);
p = getNode(L, e);
if (p == NULL)
{
printf("设备编号不存在\n");
return;
}
e = p->e;
printf(" 1. 修改设备名称\n");
printf(" 2. 修改设备种类\n");
printf(" 3. 修改设备价格\n");
printf(" 4. 修改设备购入日期\n");
printf(" 5. 修改设备报废日期\n");
printf(" 6. 放弃修改\n");
while (1)
{
printf("请选择[1-6]: ");
scanf("%d", &n);
if (n >= 1 && n <= 6)
{
break;
}
printf("输入错误\n");
}
if (n == 6)
{
printf("你放弃了修改\n");
return;
}
if (n == 1)
{
printf("输入修改后的设备名称: ");
scanf("%s", p->e.name);
}
else if (n == 2)
{
printf("输入修改后的设备种类: ");
scanf("%s", e.kind);
}
else if (n == 3)
{
printf("输入修改后的设备价格: ");
scanf("%f", &p->e.price);
}
else if (n == 4)
{
printf("输入修改后的设备购入日期: ");
scanf("%s", p->e.data);
}
else if (n == 5)
{
printf("输入修改后的设备购入日期: ");
scanf("%s", p->e.dataS);
}
save(L);//保存设备信息
printf("修改成功\n");
}
//查询交易信息
void query(Lnode* L)
{
int n;
Facility e;
Lnode* p = L->next;
title();
printf("查询设备信息\n");
cout << "1. 按设备编号查询设备信息" << endl;
cout<<"2. 按设备价格查询设备信息" << endl;
cout << ("3. 按设备购入日期查询设备信息" << endl;
cout << "4. 按设备种类查询设备信息" << endl;
cout << "5. 按设备名称查询设备信息" << endl;
cout << "6. 按设备名称和购入日期查询设备信息" << endl;
while (1)
{
cout << "请选择[1-6]: " << endl;
cin >> &n >> endl;
if (n >= 1 && n <= 6)
{
break;
}
cout << "输入错误" << endl;
}
if (n == 1)
{
cout << "输入交易事件: " << endl;
cin >> e.name >> endl;
p = getNode(L, e);
if (p == NULL)
{
cout << "交易信息不存在" << endl;
}
else
{
e = p->e;
cout << "% -20s % -10s % -20s % -10s % -20s" << endl<< "设备名称" << "设备价格" << "设备购入日期" << "是否报废" << endl;
cout << "%-20s%-10.2f%-20s"<<e.name<< e.price<< e.data << endl;
time_t current_time = time(NULL);
struct tm* timer = localtime(¤t_time);
int year = timer->tm_year + 1900;//从1900开始计算的
int month = timer->tm_mon + 1;//月份是从0到11
int day = timer->tm_mday;
int shishiriqi = year * 10000 + month * 100 + day;
if (shishiriqi > atoi(p->e.dataS))
{
p->e.flag = 1;
}
else
p->e.flag = 0;
if (p->e.flag == 0)
{
printf("%-10s%-20s\n", "未报废", e.dataS);
}
else
{
printf("%-10s%-20s\n", "已报废", e.dataS);
}
}
}
else if (n == 2)
{
printf("输入设备价格: ");
scanf("%f", &e.price);
printf("%-10s%-20s%-20s%-10s%-20s%-10s%-20s\n", "设备编号",
"设备种类", "设备名称", "设备价格", "设备购入日期"
, "是否报废", "报废日期");
while (p) {
if (p->e.price == e.price)
{
e = p->e;
printf("%-10s%-20s", e.ID, e.kind);
printf("%-20s%-10.2f%-20s", e.name, e.price, e.data);
time_t current_time = time(NULL);
struct tm* timer = localtime(¤t_time);
int year = timer->tm_year + 1900;//从1900开始计算的
int month = timer->tm_mon + 1;//月份是从0到11
int day = timer->tm_mday;
int shishiriqi = year * 10000 + month * 100 + day;
if (shishiriqi > atoi(p->e.dataS))
{
p->e.flag = 1;
}
else
p->e.flag = 0;
if (p->e.flag == 0)
{
printf("%-10s%-20s\n", "未报废", e.dataS);
}
else
{
printf("%-10s%-20s\n", "已报废", e.dataS);
}
}
p = p->next;
}
printf("查询完毕\n");
}
else if (n == 3)
{
printf("输入设备购入日期: ");
scanf("%s", e.data);
printf("%-10s%-20s%-20s%-10s%-20s%-10s%-20s\n", "设备编号",
"设备种类", "设备名称", "设备价格", "设备购入�