⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 事物管理.cpp

📁 简单的事物管理程序
💻 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 + -