void init_list();
void add();
void dele();
void list();
void save();
void load();
void help();
void edit();
void search();
void overdue_del();
int find();
int menu();
int menu_list();
int menu_search();
void check() //密码认证
{
int check;
char pin1[]="admin"; //此处设定用户口令
char pin[20];
aga:
printf("/n * ===================================================================== *");
printf("/n * *");
printf("/n * [清翔]文件管理系统--用户登录 *");
printf("/n * *");
printf("/n * ===================================================================== *");
printf("/n /1 请输入用户名:");
scanf ("%s",user);
printf(" /2 请输入密码:");
scanf ("%s",pin);
check=strcmp(pin,pin1);
if (check!=0)
{
system("cls");
printf("/n * Sorry, 密码有误,请重新输入! *");
goto aga;
}
else system("cls");
}
void ok() //系统主菜单
{
char choice;
init_list();
load();
printf("/n * ===================================================================== *");
printf("/n * *");
printf("/n * 欢迎使用[清翔]文件管理系统 (v1.8) *");
printf("/n * *");
printf("/n * ===================================================================== *");
printf("/n * *");
printf("/n * v1.8版最新功能: 自动获取系统时间 *");
printf("/n * *");
printf("/n * 友情提醒: 您在使用过程中发现任何问题,请与清翔兔联系Email:imm@qq.com *");
printf("/n * *");
for( ; ; )
{
choice = menu();
switch(choice)
{
case 1: add();
break;
case 2: edit();
break;
case 3: dele();
break;
case 4: list();
break;
case 5: save();
break;
case 6: load();
break;
case 7: search();
break;
case 8: overdue_del();
break;
case 9: help();
break;
case 0: exit(0);
}
}
}
void main() //主程序
{
printf("/n * ===================================================================== *");
printf("/n * *");
printf("/n * 为方便交流学习,本程序的源程序放置在[清翔网]上,欢迎访问查看. *");
printf("/n * *");
printf("/n * [清翔网] http://www.nspeeding.com *");
printf("/n * *");
check();
ok();
}
void init_list() //序列定位
{
register int t;
for(t=0; t<Num; t++)
fil_list[t].name[0] = '/0';
}
int time() //获取系统时间
{
long int data;
time_t t;
struct tm *tm;
char timea[30];
t = time(NULL);
tm = localtime(&t);
strcpy(timea,asctime(tm));
data=(timea[20]-48)*10000000+(timea[21]-48)*1000000+(timea[22]-48)*100000+(timea[23]-48)*10000+(timea[8]-48)*10+(timea[9]-48);
if (timea[4]=='J'&&timea[5]=='a') data+=1*100;
if (timea[4]=='F') data+=2*100;
if (timea[4]=='M'&&timea[6]=='r') data+=3*100;
if (timea[4]=='A'&&timea[5]=='p') data+=4*100;
if (timea[4]=='M'&&timea[6]=='y') data+=5*100;
if (timea[4]=='J'&&timea[6]=='n'&&timea[5]=='u') data+=6*100;
if (timea[4]=='J'&&timea[6]=='l'&&timea[5]=='u') data+=7*100;
if (timea[4]=='A'&&timea[6]=='g') data+=8*100;
if (timea[4]=='S') data+=9*100;
if (timea[4]=='O') data+=10*100;
if (timea[4]=='N') data+=11*100;
if (timea[4]=='D') data+=12*100;
return data;
}
void more() //查看更多信息模块
{
register int n;
agai:
printf("/n");
printf(" 输入文件编号,您可以查询文件的详细信息(或键入0返回主菜单):");
scanf ("%d",&n);
if (n==0||n>=Num) goto end;
else
{
system("cls");
printf(" [清翔]文件管理系统v1.8 版权所有/n");
printf(" ________________________________________________________________________/n");
printf(" 文件编号: %d/n", n);
printf(" 文件名: %s/n", fil_list[n-1].name);
printf(" 文件大小: %ld/n", fil_list[n-1].size);
printf(" 文件类型: %s/n", fil_list[n-1].type);
printf(" 修改日期: %ld/n", fil_list[n-1].editime);
printf(" 操作者: %s/n", fil_list[n-1].handlers);
printf(" 过期日期: %ld/n", fil_list[n-1].overdue);
printf(" 文件说明: %s/n", fil_list[n-1].content);
printf(" ________________________________________________________________________/n");
goto agai;
}
end: system("cls");
}
void add() //添加
{
int slot;
char str[80];
slot = find();
if(slot == -1)
printf("/n /6 系统储存容量已满,需要升级请联系imm@qq.com ");
system("cls");
printf(" [清翔]文件管理系统v1.8 版权所有 *新增功能:自动获取系统时间 /n");
printf("/n /1 当前添加的文件自动编号为 %d/n /5 请您输入文件信息/n/n",slot+1);
printf(" /1 文件名称(10字符以内): ");
scanf ("%s",fil_list[slot].name);
printf(" /2 文件大小(以K为单位,最大不超过1000000000K): ");
scanf ("%s",str);
fil_list[slot].size = strtoul(str, '/0', 10);
printf(" /1 文件类型(请用3个字符表示,如exe,zip,rar...): ");
scanf ("%s",fil_list[slot].type);
fil_list[slot].editime = time();
printf(" /2 文件相关说明(100字以内): ");
scanf ("%s",fil_list[slot].content);
strcpy (fil_list[slot].handlers,user);
printf(" /1 文件过期日期(用8位数字表示,例如2004年9月3日即为20040903): ");
scanf ("%s",str);
fil_list[slot].overdue = strtoul(str, '/0', 10);
save();
}
void dele() //删除
{
register int slot,t,a;
char str[80];
agai:
system("cls");
printf(" [清翔]文件管理系统v1.8 版权所有/n");
printf(" ________________________________________________________________________/n");
printf(" 编号 文件名 大小 修改日期 操作者/n");
for(t=0; t<Num; t++)
{
if(fil_list[t].name[0])
{
printf("%4d %-10s %10ld %8ld %s /n", t+1,fil_list[t].name,fil_list[t].size,fil_list[t].editime,fil_list[t].handlers);
}
}
printf("/n");
printf(" 请选择,您需要删除文件的编号(或键入0返回主菜单):");
scanf("%s",str);
slot = atoi(str)-1;
if (slot<0||slot>=Num) goto end;
else
{
system("cls");
printf(" [清翔]文件管理系统v1.8 版权所有/n");
printf(" ________________________________________________________________________/n");
printf(" 文件编号: %d/n", slot+1);
printf(" 文件名: %s/n", fil_list[slot].name);
printf(" 文件大小: %ld/n", fil_list[slot].size);
printf(" 文件类型: %s/n", fil_list[slot].type);
printf(" 修改日期: %ld/n", fil_list[slot].editime);
printf(" 操作者: %s/n", fil_list[slot].handlers);
printf(" 过期日期: %ld/n", fil_list[slot].overdue);
printf(" 文件说明: %s/n", fil_list[slot].content);
printf(" ________________________________________________________________________/n");
printf(" 请键入1, 确认删除此文件记录, 或键入其它取消操作:");
scanf("%d",&a);
if (a==1)
{
fil_list[slot].name[0]='/0';
save();
load();
}
else goto agai;
}
end: system("cls");
}
void edit() //修改
{
register int t;
int slot,n;
char str[80];
system("cls");
printf(" [清翔]文件管理系统v1.8 版权所有 *新增功能:自动获取系统时间 /n");
printf(" ________________________________________________________________________/n");
printf(" 编号 文件名 大小 修改日期 操作者/n");
for(t=0; t<Num; t++)
{
if(fil_list[t].name[0])
{
printf("%4d %-10s %10ld %8ld %s /n", t+1,fil_list[t].name,fil_list[t].size,fil_list[t].editime,fil_list[t].handlers);
}
}
printf("/n");
aga1:
printf(" 请选择您要修改文件的编号(或键入0返回主菜单):");
scanf ("%d",&n);
if (n<=0||n>=Num) goto end;
slot = find();
if(slot < n) {printf("/n /6 您输入的文件编号不对,请重新输入/n/n");goto aga1;}
else
{
system("cls");
printf(" [清翔]文件管理系统v1.8 版权所有/n");
printf("/n 原文件信息:/n");
printf(" ________________________________________________________________________/n");
printf(" 文件编号: %d/n", n);
printf(" 文件名: %s/n", fil_list[n-1].name);
printf(" 文件大小: %ld/n", fil_list[n-1].size);
printf(" 文件类型: %s/n", fil_list[n-1].type);
printf(" 修改日期: %ld/n", fil_list[n-1].editime);
printf(" 操作者: %s/n", fil_list[n-1].handlers);
printf(" 过期日期: %ld/n", fil_list[n-1].overdue);
printf(" 文件说明: %s/n", fil_list[n-1].content);
printf(" ________________________________________________________________________/n");
printf("/n /1 当前修改的文件编号为 %d/n /5 请您修改文件信息/n/n",n);
printf(" /1 文件名称(10字符以内): ");
scanf ("%s",fil_list[n-1].name);
printf(" /2 文件大小(以K为单位,最大不超过999999999K): ");
scanf ("%s",str);
fil_list[n-1].size = strtoul(str, '/0', 10);
printf(" /1 文件类型(请用3个字符表示,如exe,zip,rar...): ");
scanf ("%s",fil_list[n-1].type);
strcpy (fil_list[n-1].handlers,user);
printf(" /2 文件相关说明(100字以内): ");
scanf ("%s",fil_list[n-1].content);
strcpy (fil_list[n-1].handlers,user);
printf(" /1 文件过期日期(用8位数字表示,例如2004年8月3日即为20040803): ");
scanf ("%s",str);
fil_list[n-1].overdue = strtoul(str, '/0', 10);
save();
}
end: system("cls");
}
void list_size() //按文件大小列表
{
register int t;
struct fil temp;
int i,j,number;
number=find();
for(i=0;i<number-1;i++)
for(j=0;j<number-i-1;j++)
if(fil_list[j].size>fil_list[j+1].size)
{temp=fil_list[j];
fil_list[j]=fil_list[j+1];
fil_list[j+1]=temp;}
system("cls");
printf(" [清翔]文件管理系统v1.8 版权所有/n");
printf(" ________________________________________________________________________/n");
printf(" 编号 文件名 大小 修改日期 操作者/n");
for(t=0; t<Num; t++)
{
if(fil_list[t].name[0])
{
printf("%4d %-10s %10ld %8ld %s /n", t+1,fil_list[t].name,fil_list[t].size,fil_list[t].editime,fil_list[t].handlers);
}
}
more();
}
void list_editime() //按修改时间列表
{
register int t;
struct fil temp;
int i,j,number;
number=find();
for(i=0;i<number-1;i++)
for(j=0;j<number-i-1;j++)
if(fil_list[j].editime<fil_list[j+1].editime)
{temp=fil_list[j];
fil_list[j]=fil_list[j+1];
fil_list[j+1]=temp;}
system("cls");
printf(" [清翔]文件管理系统v1.8 版权所有/n");
printf(" ________________________________________________________________________/n");
printf(" 编号 文件名 大小 修改日期 操作者/n");
for(t=0; t<Num; t++)
{
if(fil_list[t].name[0])
{
printf("%4d %-10s %10ld %8ld %s /n", t+1,fil_list[t].name,fil_list[t].size,fil_list[t].editime,fil_list[t].handlers);
}
}
more();
}
void list() //列表
{
char choice;
register int t,a;
system("cls");
printf(" [清翔]文件管理系统v1.8 版权所有/n");
printf(" ________________________________________________________________________/n");
printf(" 编号 文件名 大小 修改日期 操作者/n");
for(t=0; t<Num; t++)
{
if(fil_list[t].name[0])
{
printf("%4d %-10s %10ld %8ld %s /n", t+1,fil_list[t].name,fil_list[t].size,fil_list[t].editime,fil_list[t].handlers);
}
}
for( ; ; )
{
choice = menu_list();
switch(choice)
{
case 1: more();
break;
case 2: list_editime();
break;
case 3: list_size();
break;
case 0: ok();
}
}
}
void save() //文件保存
{
FILE *fp;
register int i;
if((fp=fopen("data.dat", "wb"))==NULL)
printf("载入文件失败!/n");
for(i=0; i<Num; i++)
if(*fil_list[i].name)
if(fwrite(&fil_list[i], sizeof(struct fil), 1, fp)!=1)
printf("保存文件失败!/n");
system("cls");
printf("/n * 系统:成功保存数据文件! *");
fclose(fp);
}
void load() //载入
{
FILE *fp;
register int i;
if((fp=fopen("data.dat", "rb"))==NULL)
printf("载入文件失败!/n");
init_list();
for(i=0; i<Num; i++)
if(fread(&fil_list[i], sizeof(struct fil), 1, fp)!=1)
{
if(feof(fp))
break;
printf("载入文件失败!/n");
}
system("cls");
printf("/n * 系统:成功载入数据文件! *");
fclose(fp);
}
void help() //帮助
{
printf("/n * *");
printf("/n * *");
printf("/n * ========================请查看Readme.doc文件========================= *");
printf("/n * *");
printf("/n * *");
}
int menu() //主菜单
{
char str[10];
int c;
printf("/n * ===================================================================== *");
printf("/n * 1.添加 2.修改 3.删除 4.列表 5.保存 6.载入 7.查找 8.清理 9.帮助 0.退出 *");
printf("/n * ===================================================================== *");
do{
printf("/n /2 请输入您的选择:");
scanf ("%s",str);
c = atoi(str);
} while(c<0 || c>9);
system("cls");
return c;
}
int menu_list() //列表菜单
{
char str[10];
int c;
printf("/n * ===================================================================== *");
printf("/n * 1.查看文件详细信息 2.按文件修改日期排列 3.按文件大小排列 0.返回 *");
printf("/n * ===================================================================== *");
do{
printf("/n /2 请输入您的选择:");
scanf ("%s",&str);
c = atoi(str);
} while(c<0 || c>3);
return c;
}
int find() //检查容量
{
register int t;
for(t=0; fil_list[t].name[0]&&t<Num; t++);
if(t==Num)
return -1;
return t;
}
int menu_search() //查找菜单
{
char str[80];
int c;
printf("/n * ===================================================================== *");
printf("/n * 欢迎使用[清翔]文件管理系统之'文件查找功能' *");
printf("/n * ===================================================================== *");
printf("/n 1.按文件名查找/n 2.按修改日期查找/n 3.按过期日期查找/n 4.按类型查找");
printf("/n 5.按文件说明内容查找(关键字查找)/n 6.按操作用户名称查找/n 0.返回主菜单");
printf("/n ===================================================================== ");
do{
printf("/n /2 请输入您的选择:");
scanf ("%s",str);
c = atoi(str);
} while(c<0 || c>6);
return c;
}
void search_name() //查找模块1
{
register int t,flag=0;
char sname[20];
system("cls");
printf("/n * ===================================================================== *");
printf("/n * 欢迎使用[清翔]文件管理系统之文件查找功能 *");
printf("/n * ===================================================================== *");
printf("/n /2 请输入您要查找文件的名称:");
scanf ("%s",&sname);
system("cls");
printf("/n * 找到以下文件符合你的查找要求: *");
printf("/n * ===================================================================== *");
for(t=0; t<Num; t++)
{
if(strcmp(fil_list[t].name,sname)==0)
{printf("/n 编号:%-4d 名称:%-10s/n", t+1,fil_list[t].name);
flag=1;}
}
if(flag==0)
{
system("cls");
printf("/n * *");
printf("/n * 查找结果: 没有找到相应文件! *");
printf("/n * *");
}
else more();
}
void search_editime() //查找模块2
{
register int t,flag=0;
unsigned long int time_a,time_b;
system("cls");
printf("/n * ===================================================================== *");
printf("/n * 欢迎使用[清翔]文件管理系统之文件查找功能 *");
printf("/n * ===================================================================== *");
printf("/n /2 请输入查找文件的修改日期范围(用8位数字表示,如2004年8月3日即为20040803)");
printf("/n /1 首先请输入开始日期:");
scanf ("%d",&time_a);
printf(" /2 然后请输入结束日期:");
scanf ("%d",&time_b);
system("cls");
printf("/n * 找到以下文件符合你的查找要求: *");
printf("/n * ===================================================================== *");
for(t=0; t<Num; t++)
{
if(fil_list[t].editime>=time_a&&fil_list[t].editime<=time_b)
{printf("/n 编号:%-4d 名称:%-10s/n", t+1,fil_list[t].name);
flag=1;}
}
if(flag==0)
{
system("cls");
printf("/n * *");
printf("/n * 查找结果: 没有找到相应文件! *");
printf("/n * *");
}
else more();
}
void search_overdue() //查找模块3
{
register int t,flag=0;
unsigned long int time_a,time_b;
system("cls");
printf("/n * ===================================================================== *");
printf("/n * 欢迎使用[清翔]文件管理系统之文件查找功能 *");
printf("/n * ===================================================================== *");
printf("/n /2 请输入查找文件的过期日期范围(用8位数字表示,如2004年8月3日即为20040803)");
printf("/n /1 首先请输入开始日期:");
scanf ("%d",&time_a);
printf(" /2 然后请输入结束日期:");
scanf ("%d",&time_b);
system("cls");
printf("/n * 找到以下文件符合你的查找要求: *");
printf("/n * ===================================================================== *");
for(t=0; t<Num; t++)
{
if(fil_list[t].overdue>=time_a&&fil_list[t].overdue<=time_b)
{printf("/n 编号:%-4d 名称:%-10s/n", t+1,fil_list[t].name);
flag=1;}
}
if(flag==0)
{
system("cls");
printf("/n * *");
printf("/n * 查找结果: 没有找到相应文件! *");
printf("/n * *");
}
else more();
}
void search_type() //查找模块4
{
register int t,flag=0;
char stype[20];
system("cls");
printf("/n * ===================================================================== *");
printf("/n * 欢迎使用[清翔]文件管理系统之文件查找功能 *");
printf("/n * ===================================================================== *");
printf("/n /2 请输入您要查找文件的类型:");
scanf ("%s",stype);
system("cls");
printf("/n * 找到以下文件符合你的查找要求: *");
printf("/n * ===================================================================== *");
for(t=0; t<Num; t++)
{
if(strcmp(fil_list[t].type,stype)==0)
{printf("/n 编号:%-4d 名称:%-10s/n", t+1,fil_list[t].name);
flag=1;}
}
if(flag==0)
{
system("cls");
printf("/n * *");
printf("/n * 查找结果: 没有找到相应文件! *");
printf("/n * *");
}
else more();
}
void search_handlers() //查找模块5
{
register int t,flag=0;
char shandlers[20];
system("cls");
printf("/n * ===================================================================== *");
printf("/n * 欢迎使用[清翔]文件管理系统之文件查找功能 *");
printf("/n * ===================================================================== *");
printf("/n /2 请输入您要查找文件的操作用户名称:");
scanf ("%s",shandlers);
system("cls");
printf("/n * 找到以下文件符合你的查找要求: *");
printf("/n * ===================================================================== *");
for(t=0; t<Num; t++)
{
if(strcmp(fil_list[t].handlers,shandlers)==0)
{printf("/n 编号:%-4d 名称:%-10s/n", t+1,fil_list[t].name);
flag=1;}
}
if(flag==0)
{
system("cls");
printf("/n * *");
printf("/n * 查找结果: 没有找到相应文件! *");
printf("/n * *");
}
else more();
}
void search_content() //关键字查找模块
{
register int t,flag=0,flag1;
int a,b,c,d=0;
char scontent[20];
system("cls");
printf("/n * ===================================================================== *");
printf("/n * 欢迎使用[清翔]文件管理系统之文件查找功能 *");
printf("/n * ===================================================================== *");
printf("/n /6 文件说明内容关键字查找,请输入关键字或词(8个字以内):");
scanf ("%s",scontent);
system("cls");
printf("/n * 找到以下文件符合你的查找要求: *");
printf("/n * ===================================================================== *");
for(b=0;scontent[b]!='/0';) {b++;}
for(t=0; t<Num; t++)
for(a=0,flag1=0;fil_list[t].content[a]!='/0';a++)
{
d=0;
for(c=0; c<b; c++) {if(scontent[c]==fil_list[t].content[a+c]) d++;}
if(d==b&&flag1==0)
{printf("/n 编号:%-4d 名称:%-10s/n", t+1,fil_list[t].name);
flag=1;flag1=1;}
}
if(flag==0)
{
system("cls");
printf("/n * *");
printf("/n * 查找结果: 没有找到相应文件! *");
printf("/n * *");
}
else more();
}
void overdue_del() //文件清理
{
register int t,a,flag=0;
unsigned long int soverdue;
system("cls");
printf("/n * ===================================================================== *");
printf("/n * 欢迎使用[清翔]文件管理系统之[过期文件清理功能] *");
printf("/n * ===================================================================== *");
printf("/n * 根据当前计算机时间,系统查找出以下文件已经过期: *");
printf("/n * ===================================================================== *");
soverdue=time();
for(t=0; t<Num; t++)
{
if(fil_list[t].overdue<soverdue&&fil_list[t].overdue>0)
{printf("/n 编号:%-4d 名称:%-10s", t+1,fil_list[t].name);
flag=1;}
}
if(flag==0)
{
system("cls");
printf("/n * *");
printf("/n * 清理结果: 没有过期文件! *");
printf("/n * *");
}
else
{
printf("/n/n 请键入1,删除全部过期文件(谨慎操作,不可恢复) , 或键入其它取消操作: ");
scanf("%d",&a);
if (a==1)
{
for(t=0; t<Num; t++)
{ if(fil_list[t].overdue<=soverdue&&fil_list[t].overdue>0) fil_list[t].name[0]='/0';}
save();
load();
}
else system("cls");
}
}
void search() //查找
{
char ch;
for( ; ; )
{
ch = menu_search();
switch(ch)
{
case 1: search_name();
break;
case 2: search_editime();
break;
case 3: search_overdue();
break;
case 4: search_type();
break;
case 6: search_handlers();
break;
case 5: search_content();
break;
case 0: ok();
}
}
}
/* ========= 清翔兔 版权声明 ========= */
/* 欲拷贝此源程序,请注明出处,谢谢. */
/* =====================================*/