📄 事物管理.cpp
字号:
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "string.h"
#include "time.h"
int Money=20;//银行卡余额(余额少于5元时提醒用户)
typedef struct BOOK//图书类型
{
int Book;//存储借阅图书信息(最多可借5本书)
int Thour;//存储图书借入时间(小时)
int Tmin;//存储图书借入时间(分钟)
int Tsec;//存储图书借入时间(秒钟)规定一本书借出最长时间为720小时,即720小时后提醒用户还书!
}b,*bb;
time_t t;//时间类型
struct tm *local;//tm为时间结构
typedef struct FRIEND//通讯录结构中结点的定义
{
int v;//标记信息
char name[20];//姓名
char phnum[15]; //电话
}listnode,*linklist;
FILE *fp,*fp1,*fp2,*fp3,*fp4;//文件类型
void page_title(char *menu_item)
{
printf("\n>>> 事情管理系统 <<<\n\n- %s -\n\n",menu_item);
}
void Buy()//购物消费
{
menu:
if(Money<5)//卡上余额不足5元
{
int j=0;
printf("您的卡上余额不足5元,请及时续卡!\n");
printf("续卡请按1(每次充值为20元),取消请按其他键!\n");
if(getch()=='1')
{
Money=Money+20;//充值
printf("续卡成功!当前卡上余额为%d元!\n",Money);
}
}
page_title("购物消费");
int i=0;
int j=0;
int k=0;
printf("可购买物品及价格:\n1-香蕉(2元/斤)\t2-苹果(1元/斤)");
printf("\n请输入欲购物品编号:");
scanf("%d",&i);
if(i==1)k=2;//物品价格
else if(i==2)k=1;
printf("请输入购买数量:");
scanf("%d",&j);
printf("本次购物总金额为:%d",k*j);
printf("\n交款请按1,取消请按0!\n");
if(getch()=='1')
{
if(Money<k*j)//卡内余额不足
{
printf("对不起,卡内余额不足,请及时续卡!\n");//卡内余额不足
}
else
{
Money=Money-k*j;//支付购物金额
printf("购物成功!\n");
}
}
printf("继续购物请按1,返回主菜单请按其他键!\n");
if(getch()=='1')
{goto menu;}//继续购物
}
void Borrow()//借书
{
bb a,g;
a=(bb)malloc(sizeof(b));
g=(bb)malloc(sizeof(b));
t=time(NULL);
local=localtime(&t);//记录借入时间
fp1=fopen("图书信息.txt","a+");
printf("请输入欲借书籍的ID:");
scanf("%d",&a->Book);
printf("请输入欲借书籍名称:");
scanf("%d",&g->Book);
a->Thour=local->tm_hour;
a->Tmin=local->tm_min;
a->Tsec=local->tm_sec;
fwrite(a,sizeof(struct BOOK),1,fp1);
printf("ID:%d号书籍已借入!\t借书时间:%d:%d:%d\n",a->Book,a->Thour,a->Tmin,a->Tsec);
fclose(fp1);
}
void Return()//还书
{
int k=0;
int j=0;
bb a0;
a0=(bb)malloc(sizeof(b));
if((fp1=fopen("图书信息.txt","r+"))==NULL)
{
printf("没有已借书籍!\n");
}
else
{
fp3=fopen("temp.txt","w+");
printf("\n请输入欲还书籍ID:");
scanf("%d",&k);
while(fread(a0,sizeof(struct BOOK),1,fp1))
{
if(k==a0->Book)
{
a0->Book=0;//清除被还书籍记录
a0->Thour=0;//清除书籍时间记录
a0->Tmin=0;
a0->Tsec=0;
t=time(NULL);
local=localtime(&t);
printf("ID:%d书籍已还\t还书时间:%d:%d:%d\n",k,local->tm_hour,local->tm_min,local->tm_sec);
j=1;//标记找到该书
}
fwrite(a0,sizeof(struct BOOK),1,fp3);//清除还书记录后写入temp文件中
}
fseek(fp1,0L,0);
fseek(fp3,0L,0);
while(fread(a0,sizeof(struct BOOK),1,fp3))
{
fwrite(a0,sizeof(struct BOOK),1,fp1); //从temp中将记录拷到图书信息文件中
}
fclose(fp1);
fclose(fp3);
}
if(j==0)
{
printf("对不起,没有该书记录!");//用户输入ID有误
}
}
void Show()//显示借阅信息
{
int j=0;
bb a1;
a1=(bb)malloc(sizeof(b));
if(fp1=fopen("图书信息.txt","r+"))//该文件存在
{
rewind(fp1);
while(fread(a1,sizeof(struct BOOK),1,fp1))
{
if(a1->Book!=0)
{
printf("已借阅书籍ID:%d\t借书时间:%d:%d:%d\n",a1->Book,a1->Thour,a1->Tmin,a1->Tsec);
j=1;//存在已借阅书籍标记
}
}
if(j==0)
{
printf("没有已借书籍!\n");
}
fclose(fp1);
}
else
{
printf("没有已借书籍!\n");
}
}
void Book()//图书借阅
{
menu:
t=time(NULL);
local=localtime(&t);//当前系统时间
bb a2;
a2=(bb)malloc(sizeof(b));
if(fp1=fopen("图书信息.txt","r+"))//存在文件信息
{
while(fread(a2,sizeof(struct BOOK),1,fp1))//读取文件
{
if(a2->Book!=0)
{
if(((local->tm_hour-a2->Thour)>=720))//如果借书时间超过720小时提醒还书
{
if(((local->tm_hour-a2->Thour)==720))
{
if(((local->tm_min-a2->Tmin)>0))
{
printf("ID:%d书籍已到还书时间,请尽快还书!\n",a2->Book);//提醒用户还书
}
}
else
{
printf("ID:%d书籍已到还书时间,请尽快还书!\n",a2->Book);//提醒用户还书
}
}
}
}
}
page_title("图书借阅");
printf("请选择操作:\n1-借书 \t2-还书 \t3-显示借阅信息 \t0-返回主菜单\n");
switch(getch())
{
case '1': Borrow();goto menu;//借书
case '2': Return();goto menu;//还书
case '3': Show();goto menu;//显示信息
case '0': break;
}
}
void Friend_add()//添加记录
{
listnode *s;
s=(linklist)malloc(sizeof(listnode));
fp2=fopen("通讯录.txt","a+");
printf("\n请输入好友信息");
printf("\n姓名:");//输入名字
scanf("%s",s->name);
printf("电话:");//输入电话号码
scanf("%s",s->phnum);
s->v=1;
fwrite(s,sizeof(struct FRIEND),1,fp2);
printf("成功添加好友记录!");
fclose(fp2);
}
void Friend_del()//删除记录
{
listnode *p,*p0;
char name1[20];
int i=0;
p=(linklist)malloc(sizeof(listnode));
p0=(linklist)malloc(sizeof(listnode));
if((fp2=fopen("通讯录.txt","r+"))==NULL||(fp4=fopen("temp.txt","w+"))==NULL)
{
printf("通讯录内无好友记录!\n");
}
else
{
rewind(fp2);
printf("\n请输入待删除好友的姓名:");
scanf("%s",&name1); //查找人的姓名输入
while(fread(p,sizeof(struct FRIEND),1,fp2))
{
if(strcmp(p->name,name1)==0)
{
i=1;//找到待删除好友
p0->v=0;
}
else
{
strcpy(p0->name,p->name);
strcpy(p0->phnum,p->phnum);
}
fwrite(p0,sizeof(struct FRIEND),1,fp4);
}
if(i)
{
printf("好友:%s记录已成功删除!\n",name1);
}
else
{
printf("通讯录中无此人记录!\n");
}
fseek(fp4,0L,0);
fseek(fp2,0L,0);
while(fread(p0,sizeof(struct FRIEND),1,fp4))
{
fwrite(p0,sizeof(struct FRIEND),1,fp2);
}
fclose(fp4);
fclose(fp2);
}
}
void Friend_find()//查找记录
{
listnode *p1;
char name1[20];
p1=(linklist)malloc(sizeof(listnode));
if((fp2=fopen("通讯录.txt","r+"))==NULL)
{
printf("通讯录内无好友记录!\n");
}
else
{
rewind(fp2);
printf("\n请输入待查找人姓名:");
scanf("%s",&name1); //查找人的姓名输入
while(fread(p1,sizeof(struct FRIEND),1,fp2))
{
if(p1->v==1)
{
if(strcmp(p1->name,name1)==0)
{
break;
}
}
}
if(feof(fp2))
{
printf("通讯录中无此人记录!\n");
}
else
{
printf("\n姓名:%s",p1->name);
printf("\t电话:%s",p1->phnum);
}
fclose(fp2);
}
}
void Friend_show() //显示所有记录
{
int j=0;
listnode *p2;
p2=(linklist)malloc(sizeof(listnode));
if(fp2=fopen("通讯录.txt","r+"))
{
rewind(fp2);
while(fread(p2,sizeof(struct FRIEND),1,fp2))
{
if(p2->v==1)
{
printf("\n好友姓名:%s",p2->name);
printf("\t电话:%s",p2->phnum);
j=1;
}
}
if(j==0)
{
printf("通讯录内无好友记录!\n");
}
fclose(fp2);
}
else
{
printf("通讯录内无好友记录!\n");
}
}
void Friend_note()//亲友通讯录
{
menu:
page_title("亲友通讯录");
printf("请选择操作:\n1-添加记录 \t2-删除记录 \t3-查找记录 \t4-显示记录 \t0-返回主菜单\n");
switch(getch())
{
case '1': Friend_add();goto menu;
case '2': Friend_del();goto menu;
case '3': Friend_find();goto menu;
case '4': Friend_show();goto menu;
case '0': break;
}
}
void main(void)
{
if(((fp=fopen("卡上余额.txt","r+"))==NULL))//如果是第一次使用本系统,即文件内容为空,则初始化写入!
{
fp=fopen("卡上余额.txt","wb+");
fwrite(&Money,sizeof(int),1,fp);
fclose(fp);
}
fread(&Money,sizeof(int),1,fp);//否则读取文件信息
menu:
if(Money<5)//判断卡上余额是否不足5元,若不足提醒用户续卡
{
printf("\n您的卡上余额不足5元,请及时续卡!\n");
printf("续卡请按1(每次充值为20元),取消请按其他键!\n");
if(getch()=='1')
{
Money=Money+20;//充值
printf("续卡成功!当前卡上余额为%d元!\n",Money);
}
}
t=time(NULL);
local=localtime(&t);//当前系统时间
bb a3;
a3=(bb)malloc(sizeof(b));
if(fp1=fopen("图书信息.txt","r+"))
{
while(fread(a3,sizeof(struct BOOK),1,fp1))
{
if(a3->Book!=0)
{
if(((local->tm_hour-a3->Thour)>=6))
{
if(((local->tm_hour-a3->Thour)==6))
{
if(((local->tm_min-a3->Tmin)>0))
{
printf("ID:%d书籍已到还书时间,请尽快还书!\n",a3->Book);//提醒用户还书
}
}
else
{
printf("ID:%d书籍已到还书时间,请尽快还书!\n",a3->Book);//提醒用户还书
}
}
}
}
}
page_title("操作选单");
printf("请用数字键选择操作\n\n");
printf("1-购物消费\t2-图书借阅\t3-亲友通讯录\t0-退出");
printf("\n");
switch(getch())
{
case '1' : Buy(); goto menu;//break;
case '2' : Book(); goto menu;//break;
case '3' : Friend_note(); goto menu;//break;
case '0' : break;
}
rewind(fp);
fwrite(&Money,sizeof(int),1,fp);
fclose(fp);
exit(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -