c语言实施一个控制台调度系统,可用于安排一个小时的会议时间,实现增删改查和文件输入输出功能

实施一个调度系统,可用于安排一个小时的会议时间。一个会议以以下数据表示。 描述是对会议的描述,它是一个可以有任意属性的字符串 长度不同会议的会议描述可能相同。 月是会议时间的月份,是1和12之间的整数。 日是会议时间的月日,是1和31之间的整数。 小时是一天中会议时间的小时,是0到23之间的整数。 对于系统,每个会议时间都必须是唯一的。它应该能够支持任意数量的会议。
在所有任务,中,命令如下。
1.A是Add命令,后面跟着许多与任务相关的参数。将向程序数据库中添加一个 新的条目。
2.D是任务依赖的修改数据库命令。检查任务说明。
3.L是没有参数的rist命令。 将程序数据库的排序列表打印到标准输出流中。
4. W是带有文件名参数的“写 ”命令。 将程序数据库写入到一个文本文件中。
W
5. O是带有文件名参数的道路命令。 从指定的文本文件中加载数据库。
O
6 . Q是没有参数的duit命令。 在发布程序数据库后,将退出该程序。

#include "stdio.h"
#include "string.h"
#include "stdlib.h"
struct meet
    {
    char description[20];     
    int month;   
    int day;   
    int hour;        
    } ;   
struct meet meets[10];
void O_fun(char* filename)
{
    FILE *fp = NULL;
	if ( (fp = fopen(filename, "r+")) == NULL )
    {
        puts("Open file failed\n");
        
    }
	else
    {
        puts("Open file success\n");
        
        int i=0;                    
        while (!feof(fp))
        {
            fscanf(fp, "%s %d.%d at %d", meets[i].description, &meets[i].day,&meets[i].month,&meets[i].hour);
            i++;
        }
        
        fclose(fp);    


        
    }

}
void W_fun(char* filename)
{
    FILE *fp = NULL;
	if ( (fp = fopen(filename, "wt+")) == NULL )
    {
        puts("Open file failed\n");
        
    }
	else
    {
        puts("Open file success\n");
        
        
        for (int i = 0; i<10; i++)            
        {
            if (meets[i].day!=0)
            {
            fprintf(fp, "%s %d.%d at %d\n", meets[i].description, meets[i].day,meets[i].month,meets[i].hour);
            }
        }
        fclose(fp);
        
    }
}
void L_fun()
{
    for ( int j=0; j<10; ++j)
    {
        if (meets[j].day!=0)
            {
                printf("%s %d %d %d\n", meets[j].description, meets[j].month, meets[j].day,meets[j].hour);
            }
    }
}
void D_fun(int month,int day,int hour)
{
    int n=10;
	int i = 0;
    int j=0;
	while(1)
	{
		if ((!strcmp(&meets[i].day, day)) && (!strcmp(&meets[i].month, month)&&(!strcmp(&meets[i].hour, hour))) )
		{
            for(j=i;j<10;j++)
            {
				meets[j]=meets[j+1];
            }
            break;  
		}
		else
			i++;
        n--;
		if (n == 0)
		{
			printf("No found!");
			break;
		}
    }
}
void Q_fun()
{
    exit(0);
}
int main(void)
{
char coontrl[2];  
char command[1000];

int index=0;
for(;;)
    {
    fgets(coontrl, 2, stdin);
    
    if (strcmp(coontrl, "A") == 0)
        {
            fgets(command,998,stdin);
            sscanf (command," %s %d %d %d",meets[index].description, &meets[index].month, &meets[index].day, &meets[index].hour);
            printf(" SUCCESS\n");
            index++;
            
        }
    else if (strcmp(coontrl, "D") == 0)
        {
            int dellmonth[1];
            int day[1];
            int hour[1];
            fgets(command,998,stdin);
            sscanf (command,"  %d %d %d",&dellmonth,&day,&hour);
            D_fun(dellmonth,day,hour);
            printf(" SUCCESS\n");
        }
    else if (strcmp(coontrl, "W") == 0)
        {
            char filename[100];
            fgets(command,998,stdin);
            sscanf (command,"%s ",&filename);
            char *dest_str; 
            dest_str = (char *)malloc(sizeof(char) * (sizeof(filename) + 1));
            strncpy(dest_str, filename, sizeof(filename));
            W_fun(dest_str);
            printf(" SUCCESS\n");
        }
    else if (strcmp(coontrl, "L") == 0)
        {
            
             L_fun();
             printf(" SUCCESS\n");
             
        }
    else if (strcmp(coontrl, "O") == 0)
        {
            char filename[100];
            fgets(command,998,stdin);
            sscanf (command,"%s ",&filename);
            char *dest_str; 
     
            dest_str = (char *)malloc(sizeof(char) * (sizeof(filename) + 1));
    
            strncpy(dest_str, filename, sizeof(filename));
             O_fun(dest_str);
             printf(" SUCCESS\n");
        }
    else if (strcmp(coontrl, "Q") == 0)
        {
            printf(" SUCCESS\n");
            Q_fun();

        }
    else
    {
        printf("Invalid command %s\n",coontrl);
    }

    }
 return 0;
}

学习记录:
1.fgets和sscanf的运用

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值