求大神帮忙看看怎样能够自动获取时间及对文件内容的删除修改
//// main.c
// 记事本V2.1
//
// Created by x on 13-8-1.
// Copyright (c) 2013年 卢宗洋. All rights reserved.
//
#include <stdio.h>
#include <string.h>
/********变量定义及初始化*******/
int variable = 0; //定义完成输入选择变量,初始化为0
int nNum = 0; //定义主界面功能选择变量,初始化为0
int num = 0; //定义删除信息功能函数选择变量,初始化为0
int choose_num = 0; //定义查看记事本功能选择变量,初始化为0
int nTable = 0; //第一录入第n条信息变量,初始化为0
int chooseInPut = 0; //定义输出选择变量,初始化为0
int count = 0; //定义查询次数变量count,初始化为0
int choosequit = 0; //选择退出查看信息函数
/************时间结构体(包括:年-月-日)************/
struct Date //日期结构, 用来构造日期结构体
{
int year; //年
int month; //月
int day; //日
}Date[100]; //日期,最多输入100次存储日期
/*****记事本内容结构体(包括:标题-作者-内容-日期)*****/
struct NoteBook //记事本 结构 用来构造记事本的结构体
{
char Theme[100]; //主题
char Authur[20]; //作者
char Substance[1000]; //内容
struct Date date; //日期
}Books[100]; //记事本最多存储100条信息
/*************功能选择函数*************/
char choose() //自定义函数,实现功能选择
{
while (1) {
printf("***********记事本***********\n");
printf("* 版 本 说 明 : 0 *\n");
printf("* 进入记事本请按: 1 *\n");
printf("* 查看记事本请按: 2 *\n");
printf("* 修改记事本请按: 3 *\n");
printf("* 删 除 请 按 : 4 *\n");
printf("* 退出记事本请按: 5 *\n");
printf("* 再录入信息请按: 6 *\n");
printf("* 查看注意事项按: 7 *\n");
printf("***************************\n");
printf("请输入您要操作的选项: \n");
scanf("%d",&nNum); //选择功能,输入选项打印出提示信息
switch (nNum) {
case 0:{
printf("版本说明!\n");
break;
}
case 1:{
printf("您选择了进入记事本,请按提示进行操作!\n");
break;
}
case 2:{
printf("您选择了查看记事本,请按提示进行操作!\n");
break;
}
case 3:{
printf("您选择了修改记事本,请按提示进行操作!\n");
break;
}
case 4:{
printf("您选择了删除记事本,请按提示进行操作!\n");
break;
}
case 5:{
printf("您选择了退出记事本!\n");
break;
}
case 6:{
printf("您选择了再次录入信息,请按提示进行操作!\n");
break;
}
case 7:{
printf("您选择了提醒功能!\n");
break;
}
default:
printf("您的操作有误,请重新选择。\n");
sleep(1);
return choose(); //操作错误,返回函数重新操作
break;
}
return 0; //结束
}
}
/**********输入选择功能函数**********/
void InPutChoose() //自定义函数,实现信息输入选择功能
{
printf("*************************\n");
printf("* 输入即显信息请按: 1 *\n");
printf("* 输入永久信息请按: 2 *\n");
printf("*************************\n");
printf("请输入您的选择:\n");
scanf("%d",&chooseInPut);
}
/**************输入记事本功能函数**************/
void InPut() //自定义函数,实现输入信息主体功能
{
printf("请输入标题:\n"); //记事主题
scanf("%s",Books[nTable].Theme);
setbuf(stdin, NULL);
printf("请输入作者:\n"); //记事者姓名
scanf("%s",Books[nTable].Authur);
setbuf(stdin, NULL);
printf("请输入内容:\n"); //记事本内容
scanf("%s",Books[nTable].Substance);
setbuf(stdin, NULL);
nTable++;
}
/***********日期输入功能函数**********/
void Time() //自定义函数,实现日期的输入
{
printf("请输入日期-年:\n"); //日期
scanf("%d",&Books[nTable].date.year);
if (Books[nTable].date.year<=0||Books[nTable].date.year>4080) { //判断年份输入
printf("对不起,您的输入有误…\n");
printf("请重新输入:\n");
scanf("%d",&Books[nTable].date.year);
}
printf("请输入日期-月:\n");
scanf("%d",&Books[nTable].date.month);
if (Books[nTable].date.month<0||Books[nTable].date.month>12) { //判断月份输入是否正确
printf("对不起,您的输入有误…\n");
printf("请重新输入:\n");
scanf("%d",&Books[nTable].date.month);
}
}
/***********实现月份中某天的正确输入***********/
int date() //自定义函数,实现日期的输入
{
while (1) {
printf("请输入日期-日:\n");
scanf("%d",&Books[nTable].date.day);
if (Books[nTable].date.year%400==0||(Books[nTable].date.year%100!=0&&Books[nTable].date.year%4==0)) { //判断输入日期时候为闰年
if (Books[nTable].date.month==2) { //判断输入月份是否为闰年的2月
if (Books[nTable].date.day<=0||Books[nTable].date.day>28) //若是,日期中的“日”不能大于28
{
printf("对不起,您的输入有误…\n");
printf("请重新输入:\n");
return date();
}
else{break;}
}
else if(Books[nTable].date.month==1||Books[nTable].date.month==3||Books[nTable].date.month==5||Books[nTable].date.month==7||Books[nTable].date.month==8||Books[nTable].date.month==10||Books[nTable].date.month==12){ //判断一年中的其他月份的天数
if (Books[nTable].date.day<=0||Books[nTable].date.day>31) {
printf("对不起,您的输入有误…\n");
printf("请重新输入:\n");
return date();
}
else{break;}
}
else if (Books[nTable].date.month==4||Books[nTable].date.month==6||Books[nTable].date.month==9||Books[nTable].date.month==11)
{
if (Books[nTable].date.day<=0||Books[nTable].date.day>30) {
printf("对不起,您的输入有误…\n");
printf("请重新输入:\n");
return date();
}
else{break;}
}
}
else //判断年份不是闰年
{
if (Books[nTable].date.month==2) {
if (Books[nTable].date.day>=30||Books[nTable].date.day<=0) { //则一年中的每个月对应的天数为
printf("对不起,您的输入有误:\n");
printf("请重新输入:\n");
return date();
}
else{break;}
}
else if (Books[nTable].date.month==1||Books[nTable].date.month==3||Books[nTable].date.month==5||Books[nTable].date.month==7||Books[nTable].date.month==8||Books[nTable].date.month==10||Books[nTable].date.month==12)
{
if (Books[nTable].date.day<=0||Books[nTable].date.day>31) {
printf("对不起,您的输入有误…\n");
printf("请重新输入:\n");
return date();
}
else{break;}
}
else if (Books[nTable].date.month==4||Books[nTable].date.month==6||Books[nTable].date.month==9||Books[nTable].date.month==11)
{
if (Books[nTable].date.day<=0||Books[nTable].date.day>30) {
printf("对不起,您的输入有误…\n");
printf("请重新输入:\n");
return date();
}
else{break;}
}
}
return 0;
}
/***********显示刚刚输入的记事本的信息如下***********/
printf("主题: %s\n",Books[nTable-1].Theme);
printf("作者: %s\n",Books[nTable-1].Authur);
printf("内容: %s\n",Books[nTable-1].Substance);
printf("Date: %d-%d-%d\n",Books[nTable].date.year,Books[nTable].date.month,Books[nTable].date.day);
return 0;
}
/*************完成输入功能函数************/
char Finish() //自定义函数,实现完成输入信息功能
{
while (1) {
printf("**********************\n");
printf("* 返回菜单请按: 1 *\n");
printf("* 结束操作请按: 2 *\n");
printf("**********************\n");
printf("请输入您要操作的选项:\n");
scanf("%d",&variable); //输入完成记事功能的后续选项
switch (variable) {
case 1: //返回主菜单界面
{
printf("您选择了返回主菜单\n\n");
return main(); //通过主函数返回到主菜单
break;
}
case 2:{ //退出记事本
printf("您选择了结束操作…\n");
int nNum1 = 0;
printf("****************************\n");
printf("* 确认退出请按: 1 *\n");
printf("* 取消退出请按: 2 *\n");
printf("****************************\n");
printf("请输入你的选择:\n");
scanf("%d",&nNum1);
if (nNum1==1) {
printf("正在退出系统…\n");
sleep(1);
printf("退出系统成功。\n");
return 0;
}
else if(nNum1==2){
return Finish();
break;
}
else
{ //选择退出时的错误指令
printf("错误的操作指令,请重新选择指令。\n");
return Finish();
break;
}
}
default: //完成输入信息时的错误操作指令
{
printf("错误的操作指令,请重新选择。\n");
return Finish(); //返回到功能函数——'完成'
break;
}
}
return 0; //结束当前死循环
}
}
/**********查看记事本函数**********/
char Examine() //自定义函数,实现查看选择功能
{
while (1) {
printf("**************************\n");
printf("* 显示本次录入信息请按: 1 *\n");
printf("* 显示某一条信息请请按: 2 *\n");
printf("* 查看历史记录信息请按: 3 *\n");
printf("**************************\n");
printf("请输入您的选项:\n");
scanf("%d",&choose_num);
switch (choose_num) {
case 1:{
printf("您选择了查看所有信息:\n");
break;
}
case 2:{
printf("您选择了查看某一条信息:\n");
break;
}
case 3:{
printf("您选择了以文件方式查看信息:\n");
break;
}
default:{
printf("您的输入有误,请重新输入…\n");
return Examine();
break;
}
}
return 0;
}
}
/***********查看记事本的所有信息************/
char AllContent() //自定义函数,实现查看所有信息功能
{
int bre = 0; //定义退出查看信息功能变量,初始化为0
printf("您的所有信息如下所示…\n");
for (int i = 0; i<nTable; i++) {
printf("第 %d 条记录信息\n",i+1);
printf("主题: %s\n",Books[i].Theme);
printf("作者: %s\n",Books[i].Authur);
printf("Date: %d-%d-%d\n",Books[i+1].date.year,Books[i+1].date.month,Books[i+1].date.day);
printf("内容: %s\n",Books[i].Substance);
}
while (1) {
printf("*****************************\n");
printf("* 返回系统界面请按: 1 *\n");
printf("* 结束系统操作请按: 2 *\n");
printf("*****************************\n");
printf("请输入您要操作的选项:\n");
scanf("%d",&bre);
if (bre==1) {
printf("系统将于2秒后返回主界面…\n");
sleep(1);
printf("系统将于1秒后返回主界面…\n");
sleep(1);
printf("返回主界面成功,请选择其他操作!\n");
return main();
}
else if (bre==2)
{
printf("您选择了结束系统操作…\n");
printf("系统将于2秒后退出…\n");
sleep(1);
printf("系统将于1秒后退出…\n");
sleep(1);
printf("系统退出成功,谢谢使用!\n");
return 0;
}
else{
printf("您的操作有误,请重新选择。\n");
}
}
}
/**********退出查看功能函数**********/
int QuitCertain()
{
printf("*********************\n");
printf("* 退出查看请按: 1 *\n");
printf("* 继续查看请按: 2 *\n");
printf("* 退出程序请按: 3 *\n");
printf("*********************\n");
while (1) {
printf("请输入您的选项:\n");
scanf("%d",&choosequit);
switch (choosequit) {
case 1:{
printf("您选择了退出查看!\n");
return main();
break;
}
case 2:{
printf("您选择了继续查看!\n");
break;
}
case 3:{
printf("您选择了退出程序!\n");
break;
}
default:
printf("对不起,您的输入有误!\n请重新输入…\n");
break;
}
return 0;
}
return 0;
}
/*************查看记事本的部分信息************/
int Certain() //自定义函数,用来查看部分信息功能
{
int import_year = 0;
int import_month = 0;
int import_day = 0;
// int choosequit = 0;
int nCount = 0;
printf("请输入您要查看信息的年份:\n");
scanf("%d",&import_year);
if (import_year<=0||import_year>4080) {
printf("对不起,您的输入有误,请重新输入\n");
scanf("%d",&import_year);
}
printf("请输入您要查看信息的月份:\n");
scanf("%d",&import_month);
if (import_month<=0||import_month>12) {
printf("对不起,您的输入有误,请重新输入\n");
scanf("%d",&import_month);
}
printf("请输入您要查看信息的日子:\n");
scanf("%d",&import_day);
if (import_day<=0||import_day>31) {
printf("对不起,您的输入有误,请重新输入\n");
scanf("%d",&import_day);
}
for (int i = 0; i<100; i++) {
if (import_year==Books[i+1].date.year&&import_month==Books[i+1].date.month&&import_day==Books[i+1].date.day) {
printf("恭喜您,成功找到了您要搜寻的结果…\n");
printf("第%d条:\n",i+1);
printf("%s\n",Books[i].Theme);
printf("%s\n",Books[i].Authur);
printf("%d-%d-%d\n",Books[i+1].date.year,Books[i+1].date.month,Books[i+1].date.day);
printf("%s\n",Books[i].Substance);
nCount++;
QuitCertain();
}
else if(nCount==0)
{
printf("对不起,没有找到您要查找的信息!\n");
QuitCertain();
}
}
return 0;
}
/************修改记事本函数************/
void Revise() //自定义函数,实现修改信息功能
{
int AgainWriteNum = 0; //定义索要修改记事本的位置变量,初始化为0
printf("您的所有信息如下所示…\n");
for (int i = 0; i<nTable; i++) {
printf("第 %d 条记录信息\n",i+1);
printf("主题: %s\n",Books[i].Theme);
printf("作者: %s\n",Books[i].Authur);
printf("Date: %d-%d-%d\n",Books[i+1].date.year,Books[i+1].date.month,Books[i+1].date.day);
printf("内容: %s\n",Books[i].Substance);
}
printf("请输入要修改的信息的编号:\n");
scanf("%d",&AgainWriteNum);
printf("请输入信息主体:\n");
scanf("%s",Books[AgainWriteNum-1].Theme);
printf("请输入信息作者:\n");
scanf("%s",Books[AgainWriteNum-1].Authur);
printf("请输入信息内容:\n");
scanf("%s",Books[AgainWriteNum-1].Substance);
Time();
date();
}
/*************删除记事本函数************/
char Delete() //自定义函数,实现删除选择功能
{
while (1) {
printf("********************************\n");
printf("* 删除所有内容请按: 1 *\n");
printf("* 删除部分内容请按: 2 *\n");
printf("********************************\n");
scanf("%d",&num);
switch (num) {
case 1:
{
printf("您选择了删除所有内容!\n");
break;
}
case 2:
{
printf("您选择了删除部分内容!\n");
break;
}
default:
{
printf("对不起,您的操作有误,请查证后重新输入。\n");
break;
}
}
return 0;
}
}
/*********删除部分信息功能函数**********/
void Delete_Certent() //自定义函数,实现删除功能
{
int cer_table = 0;
printf("请选择删除信息的位置:\n");
scanf("%d",&cer_table);
printf("您选择了删除第%d条信息:\n",cer_table);
printf("****************\n");
printf("* 确认请按: 1 *\n");
printf("* 取消请按: 2 *\n");
printf("****************\n");
}
/*******删除所有内容功能函数*******/
char DeleteAll() //自定义函数,实现删除功能
{
int dele_all = 0;
printf("********************************\n");
printf("* 确认删除所有请按: 1 *\n");
printf("* 不 删 除 请 按 : 2 *\n");
printf("********************************\n");
printf("请输入您的选项:\n");
scanf("%d",&dele_all);
switch (dele_all) {
case 1:{
memset(&Date, 0, 100);
memset(&Books, '0', 100);
nTable=0;
printf("正在做删除处理命令…\n");
printf("2秒后将删除全部内容…\n");
sleep(1);
printf("1秒后将删除全部内容…\n");
sleep(1);
printf("删除成功!\n");
while (1) {
printf("*****************************\n");
printf("* 返回系统界面请按: 1 *\n");
printf("* 结束系统操作请按: 2 *\n");
printf("*****************************\n");
int bre = 0;
printf("请输入您要操作的选项:\n");
scanf("%d",&bre);
if (bre==1) {
printf("系统将于2秒后返回主界面…\n");
sleep(1);
printf("系统将于1秒后返回主界面…\n");
sleep(1);
printf("返回主界面成功,请选择其他操作!\n");
return main();
}
else if (bre==2)
{
printf("您选择了结束系统操作…\n");
printf("系统将于2秒后退出…\n");
sleep(1);
printf("系统将于1秒后退出…\n");
sleep(1);
printf("系统退出成功,谢谢使用!\n");
return 0;
}
else{
printf("您的操作有误,请重新选择。\n");
}
}
break;
}
case 2:{
return Delete();
break;
}
default:
break;
}
return 0;
}
/*************退出功能函数************/
void Quit() //自定义函数用来实现退出功能
{
printf("正在做退出处理命令,请稍后…:\n");
printf("2秒后系统退出使用…\n");
sleep(1);
printf("1秒后系统退出使用…\n");
sleep(1);
printf("退出成功,欢迎下次继续使用。\n");
}
/*************提示信息功能函数************/
char Warn() //自定义函数用以查看提示信息
{
printf("友情提示!\n");
printf("1:在使用本程序记录信息时,日期的输入为数字。\n");
printf("2:在信息录入时,不要包括空格!\n");
printf("3:要按提示操作哦,否则可能造成可怕的后果!\n");
sleep(2);
int opt = 0;
printf("**************************\n");
printf("* 退出提醒请按: 1 *\n");
printf("* 退出程序请按: 2 *\n");
printf("**************************\n");
printf("请输入您的选项:\n");
scanf("%d",&opt);
if (opt==1) {
return main();
}
else if (opt==2)
{
Quit();
}
return 0;
}
/***********保存录入信息***********/
void Conserve() //自定义函数conserve用来保存输入的信息
{
FILE *fp = NULL;
int nNum = 0;
char filename[20] = "";
printf("请输入您要录入信息的条数:\n");
scanf("%d",&nNum);
printf("请输入信息要保存的文件名:\n");
scanf("%s",filename);
printf("请输入主题、作者、内容及日期:\n");
for (int j = 0; j <nNum; j++) {
printf("No :%d",j+1);
InPut();//调用输入功能函数
Time();//调用时间输入函数
date(); //调用日期中的天数
if ((fp = fopen(filename, "w"))==NULL) {
printf("can't open file!\nPress any key continue…\n");
getchar();
return;
}
for (int i = 0; i<nNum; i++) {
if (fwrite(&Books[i], sizeof(struct NoteBook), 1, fp)!=1) {
printf("file write error!");
}
}
fclose(fp);
}
}
/************查看保存信息************/
int showconserve() //自定义函数showconserve用来查看保存的信息
{
FILE *fp = NULL;
int nNum2 = 0;
int choose1 = 0;
char filename[20] = "";
printf("请输入您要读取的文件名称:\n");
scanf("%s",filename);
printf("请输入您要读取信息的条数:\n");
scanf("%d",&nNum2);
if ((fp = fopen(filename, "r"))==NULL) {
printf("can't open file!\n");
count++;
if (count==3) {
printf("三次未找到您要搜索的文件,\n");
printf("程序将返回到主菜单界面…\n");
sleep(1);
return main();
}
showconserve();
}
for (int i = 0; i<nNum2; i++) {
printf("No%d \n",i+1);
fread(&Books[i], sizeof(struct NoteBook), 1, fp);
printf("主题: %s\n作者: %s\n",Books[i].Theme,Books[i].Authur);
printf("Date: %d-%d-%d\n",Books[i].date.year,Books[i].date.month,Books[i].date.day);
printf("内容: %s\n\n",Books[i].Substance);
}
fclose(fp);
printf("************************\n");
printf("* 继续查看请按: 1 *\n");
printf("* 退出查看请按: 2 *\n");
printf("* 退出程序请按; 3 *\n");
printf("************************\n");
printf("请输入您的选择:\n");
scanf("%d",&choose1);
while (1) {
switch (choose1) {
case 1:{
return showconserve();
break;
}
case 2:{
return main();
break;
}
case 3:{
Quit();
return 0;
break;
}
default:{
printf("对不起,您的输入有误!\n请重新输入…\n");
break;
}
}
return 0;
}
}
/************退出版本说明选择函数************/
int explainch()
{
int choose2 = 0;
printf("*********************\n");
printf("* 退出说明请按: 1 *\n");
printf("* 退出程序请按: 2 *\n");
printf("*********************\n");
while (1) {
printf("请输入您的选项:\n");
scanf("%d",&choose2);
switch (choose2) {
case 1:{
return main();
break;
}
case 2:{
Quit();
break;
}
default:{
printf("对不起,您的输入有误!\n请重新输入…\n");
return explainch();
break;
}
}
return 0; //跳出死循环
}
return 0;
}
/**************版本说明***************/
void Explain()
{
printf("1、更新日期:2013-08-01\n");
printf("2、更新项目:查询返回功能。\n");
printf("3、更新说明:新增查看某一天信息完成后返回功能。\n");
printf("4、使用方法:\n(1)用户在选择查看某一条信息后,\n");
printf("(2)可以选择继续查看、退出查看、退出程序三项操作,如:\n");
printf(" --当选择查看某条信息时,用户只需输入信息的存储日期就可以查看信息.\n");
printf(" --查看完毕,三项选择操作避免了用户重复运行程序的操作.\n");
sleep(2);
explainch();
}
/************主函数,实现相关函数的调用***********/
int main(int argc, const char * argv[])
{
choose();
if (nNum==0) {
Explain(); //版本说明
}
else if (nNum==1) {
InPutChoose(); //输入选择函数
if (chooseInPut==1) { //即显信息
InPut(); //输入信息
Time(); //时间 年-月 的实现
date(); //时间 日 的实现
Finish(); //完成输入
}
else if (chooseInPut==2) //永久保留信息
{
Conserve(); //调用文本输入函数
Finish(); //输入完成
}
}
else if (nNum==2) {
Examine(); //调用查看功能函数
if (choose_num==1) {
AllContent(); //调用查看所有记事本信息
}
else if (choose_num==2)
{
Certain(); //调用调用查看某一条信息
if (choosequit==2) {
Certain();
}
else if (choosequit==3){
Quit();
}
}
else if (choose_num==3)
{
showconserve();//调用显示文件函数
}
}
else if (nNum==3) {
Revise(); //调用修改功能函数
Finish(); //调用完成输入功能函数
}
else if (nNum==4) {
Delete(); //调用删除函数
if (num==1) {
DeleteAll();//调用删除所有信息功能函数
}
else if (num==2)
{
Delete_Certent();//调用删除部分信息功能函数
}
}
else if (nNum==5) {
Quit(); //调用退出功能函数
return 0; //选择退出,结束所有
}
else if (nNum==6)
{
Conserve(); //调用输入功能函数
Finish(); //调用完成输入功能函数
}
else if (nNum==7)
{
Warn(); //调用提示功能函数
}
return 0;
}