C语言 日记管理系统.docx

上传人:b****1 文档编号:2642724 上传时间:2023-05-04 格式:DOCX 页数:28 大小:19.90KB
下载 相关 举报
C语言 日记管理系统.docx_第1页
第1页 / 共28页
C语言 日记管理系统.docx_第2页
第2页 / 共28页
C语言 日记管理系统.docx_第3页
第3页 / 共28页
C语言 日记管理系统.docx_第4页
第4页 / 共28页
C语言 日记管理系统.docx_第5页
第5页 / 共28页
C语言 日记管理系统.docx_第6页
第6页 / 共28页
C语言 日记管理系统.docx_第7页
第7页 / 共28页
C语言 日记管理系统.docx_第8页
第8页 / 共28页
C语言 日记管理系统.docx_第9页
第9页 / 共28页
C语言 日记管理系统.docx_第10页
第10页 / 共28页
C语言 日记管理系统.docx_第11页
第11页 / 共28页
C语言 日记管理系统.docx_第12页
第12页 / 共28页
C语言 日记管理系统.docx_第13页
第13页 / 共28页
C语言 日记管理系统.docx_第14页
第14页 / 共28页
C语言 日记管理系统.docx_第15页
第15页 / 共28页
C语言 日记管理系统.docx_第16页
第16页 / 共28页
C语言 日记管理系统.docx_第17页
第17页 / 共28页
C语言 日记管理系统.docx_第18页
第18页 / 共28页
C语言 日记管理系统.docx_第19页
第19页 / 共28页
C语言 日记管理系统.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言 日记管理系统.docx

《C语言 日记管理系统.docx》由会员分享,可在线阅读,更多相关《C语言 日记管理系统.docx(28页珍藏版)》请在冰点文库上搜索。

C语言 日记管理系统.docx

C语言日记管理系统

/*0********日记管理系统**************/

#include

#include

#include

#include

/*1************定义日记结构体*************************/

typedefstructLink1

{

chardate[20];//日期

chartitle[40];//标题

charcontent[1000];//日记内容

charkeyword[20];//关键字,可用空格隔开

inttag;//用来标记该日记是否满足查阅要求,是为0,否为-1,初始值为0;

structLink1*nextd;

}Diary;

/*2************定义用户结构体************************/

typedefstructLink2

{

charusername[10];//用户名

charpassword[10];//登录密码

Diary*diarys_list;//该用户拥有的日记链表

structLink2*nextu;

}User;

/*3*********************函数声明************************/

intCreate_NewUser(User*U1);

intDelete_Diary(Diary*D);

intDiary_Operation(User*U2,Diary*D1);

intEnter_Password(charpassword[]);

User*Find_User(User*U1,charusername[]);

Diary*Init_Diary(Diary*D1);

voidInitial_Tag(Diary*D1,inttag);

User*Init_User(User*U1);

intOpen_Diary(Diary*D1);

Diary*Open_DiaryFile(Diary*D1,charFileName[]);

intOpen_File(charFileName[]);

intPrintf_DiaryList(Diary*D1);

voidPrint_Menu1(int*choose1);

voidPrint_Menu2(int*choose2);

voidPrint_Menu3(int*choose3);

intPrintf_users(User*U1);

intSave_Diary(Diary*D1);

intSave_Users_info(User*U1);

intSearch_Diary(Diary*D1);

Diary*Search_order(Diary*D1);

Diary*Filter_word(Diary*D1,charcmpword[],intn);

User*User_Login(User*U1);

intWrite_Diary(Diary*D1);

/*4**********************创建用户链表*********************/

intCreate_NewUser(User*U1)

{

intflag=0;

charpassword2[10];

User*s,*temp;

Diary*D2=NULL;

D2=Init_Diary(D2);

do

{

s=(User*)malloc(sizeof(User));

if(s==NULL)

{

printf("用户创建失败");

return0;

}

printf("\n请输入用户名:

");

scanf("%s",&s->username);

temp=Find_User(U1,s->username);

if(temp==NULL)

{

do

{

printf("\n请输入6位密码:

");

Enter_Password(s->password);

printf("\n请确认密码:

");

Enter_Password(password2);

if(strcmp(s->password,password2)!

=0)

printf("\n密码确认错误\n\n");

}while(strcmp(s->password,password2)!

=0);

s->diarys_list=D2;

s->nextu=U1->nextu;

U1->nextu=s;

flag=0;

Save_Users_info(U1);

printf("\n用户创建成功!

\n");

}

else

{printf("\n\n※※※对不起该用户名已存在※※※\n");

printf("\n是否继续创建用户:

1/0");

scanf("%d",&flag);

}

}while(flag);

return1;

}

/*5****************初始化用户表**********************/

User*Init_User(User*U1)

{

U1=(User*)malloc(sizeof(User));

if(U1!

=NULL)

{

U1->nextu=NULL;

returnU1;

}

else

returnNULL;

}

/*6*******************初始化日记表*******************/

Diary*Init_Diary(Diary*D1)

{

D1=(Diary*)malloc(sizeof(Diary));

if(D1!

=NULL)

{

D1->nextd=NULL;

returnD1;

}

else

returnNULL;

}

/*7**********将所有日记记录的标记tag值置为0或-1*************/

voidInitial_Tag(Diary*D1,inttag)

{

Diary*q;

q=D1->nextd;

while(q!

=NULL)

{

q->tag=tag;

q=q->nextd;

}

}

/*8***********************导入用户信息*******************/

intOpen_Users_info(User*U1)

{

FILE*fp;

User*U2=NULL,*U3=NULL;

Diary*D1=NULL,*D2=NULL;

charfilepn[20],tempstr[80];/*用来存放文件保存路径以及文件名*/

strcpy(filepn,"Users_info.txt");

if((fp=fopen(filepn,"r"))==NULL)//只读

{

printf("※※不能打开文件※※\n");

return0;

}

else

{

fscanf(fp,"%s\n",tempstr);//文本文件格式化输入

while(strcmp(tempstr,"User:

")==0&&(!

feof(fp)))//到了文件末尾,函数值为非真

{

U2=(User*)malloc(sizeof(User));

if(U2==NULL)

{

printf("※※用户空间申请失败※※\n");

return0;

}

else

{

fscanf(fp,"用户名:

%20s\n",U2->username);

fscanf(fp,"密码:

%20s\n",U2->password);

fscanf(fp,"%80s",tempstr);

D1=(Diary*)malloc(sizeof(Diary));

D1=Init_Diary(D1);

U2->diarys_list=D1;

while(strcmp(tempstr,"Diary:

")==0&&(!

feof(fp)))

{

D2=(Diary*)malloc(sizeof(Diary));

if(D2==NULL)

{

printf("日记空间申请失败\n");

return0;

}

else

{

fscanf(fp,"日期:

%s\n",D2->date);

fscanf(fp,"关键字:

%s\n",D2->keyword);

fscanf(fp,"标题:

%s\n",D2->title);

fscanf(fp,"日记内容:

\n%s\n\n",D2->content);

fscanf(fp,"%s\n",tempstr);

D2->tag=0;

D2->nextd=D1->nextd;

D1->nextd=D2;

}

}

U2->nextu=U1->nextu;//U1后插入

U1->nextu=U2;

}

fscanf(fp,"\n\n");

}

}

fclose(fp);

return0;

}

/*9********************显示用户列表**********************/

intPrintf_users(User*U1)

{

intcount=0;

User*p;

p=U1;

printf("\n\n用户信息列表如下:

\n\n");

if(U1->nextu==NULL)

printf("\n没有用户信息\n");

else

{

while(p->nextu!

=NULL)

{

p=p->nextu;

count++;

printf("第%d个用户用户名:

%s\n",count,p->username);

}

}

return1;

}

/*10**************************登录个人用户************************/

User*User_Login(User*U1)//登录成功返回改用户的日记链表指针

{

inti=0;

User*s=NULL,*tempU=NULL;

Printf_users(U1);

s=Init_User(s);

tempU=Init_User(tempU);

printf("\n请输入用户名:

");

scanf("%s",&s->username);

tempU=Find_User(U1,s->username);

if(tempU==NULL)

{

printf("\n该用户不存在\n");

getch();

}

else

{

printf("请输入密码:

");

rewind(stdin);

Enter_Password(s->password);

if(strcmp(tempU->password,s->password)==0)

returntempU;

else

printf("\n密码错误\n");

getch();

}

returnNULL;

}

/*11**********************获取登录口令********************/

intEnter_Password(charpassword[])

{

charpassword1[10];

inti;

for(i=0;i<=5;i++)

{

password1[i]=getch();

password[i]=password1[i];

password1[i]='*';

printf("%c",password1[i]);

}

password[i]='\0';

getch();

rewind(stdin);

return1;

}

/*12*********************查找用户********************/

User*Find_User(User*U1,charusername[])

{

User*q;

q=U1->nextu;

while(q!

=NULL&&strcmp(q->username,username)!

=0)

q=q->nextu;

if(q!

=NULL)

returnq;

else

returnNULL;

}

/*13***********************保存用户信息*******************/

intSave_Users_info(User*U1)

{

FILE*fp;

Diary*D1;

charfilepn[20];/*用来存放文件保存路径以及文件名*/

strcpy(filepn,"Users_info.txt");

if((fp=fopen(filepn,"w+"))==NULL)

{

printf("不能打开文件!

\n");

return0;

}

while(U1->nextu!

=NULL)

{

fprintf(fp,"User:

\n");

U1=U1->nextu;/*下移一个结点*/

fprintf(fp,"用户名:

%s\n密码:

%s\n",U1->username,U1->password);

D1=U1->diarys_list;

while(D1->nextd!

=NULL)

{

D1=D1->nextd;

fprintf(fp,"Diary:

\n");

fprintf(fp,"日期:

%s\n关键字:

%s\n",D1->date,D1->keyword);

fprintf(fp,"标题:

%s\n",D1->title);

fprintf(fp,"日记内容:

\n%s\n",D1->content);

}

}

fclose(fp);

return0;

}

/*14**************打开普通文本文件*******************/

intOpen_File(charFileName[])

{

FILE*fp;

fp=fopen(FileName,"r");//以只读的方式打开文件,将文件指针赋给fp

if(fp==NULL)

{

printf("\n※※无法打开帮助文件※※");

return0;

}

while(feof(fp)==0)//将文件中的字符读入

printf("%c",fgetc(fp));

fclose(fp);

return1;

}

/*15**********************写新的日记*************************/

intWrite_Diary(Diary*D1)

{

inttemp;

Diary*p=NULL;

p=Init_Diary(p);

p=(Diary*)malloc(sizeof(Diary));

printf("\n\n请输入日期(2012-12-12):

");

scanf("%s",&p->date);

printf("\n请输入标题:

");

scanf("%s",&p->title);

printf("\n请开始写日记:

\n\n");

scanf("%s",&p->content);

printf("\n请为该日记写关键字:

");

scanf("%s",&p->keyword);

p->tag=0;

p->nextd=D1->nextd;

D1->nextd=p;

printf("\n━━━━━━━━━━━━━━━━━━━━━━━━━━\n");

printf("是否要以文件方式保存日记?

1→是0→否");

printf("\n━━━━━━━━━━━━━━━━━━━━━━━━━━\n");

scanf("%d",&temp);

if(temp==1)

Save_Diary(p);

return1;

}

/*16*********************日记保存***********************/

intSave_Diary(Diary*D1)

{

FILE*fp;

charFileName[40],postfix[6]=".txt\0";

printf("请输入文件路径及文件名:

");

scanf("%s",FileName);

if((fp=fopen(FileName,"w+"))==NULL)

{

printf("打开文件失败!

");

return0;

}

fprintf(fp,"日期:

%s\n",D1->date);

fprintf(fp,"标题:

%s\n",D1->title);

fprintf(fp,"关键字:

%s\n",D1->keyword);

fprintf(fp,"正文如下:

\n%s\n",D1->content);

fclose(fp);

printf("日记文件保存成功!

");

return1;

}

/*17*******************打开并导入日记文件************************/

Diary*Open_DiaryFile(Diary*D1,charFileName[])

{

FILE*fp;

Diary*p=NULL;

if((fp=fopen(FileName,"r"))==NULL)

{

printf("※※文件打开失败※※");

returnNULL;

}

else

{

p=(Diary*)malloc(sizeof(Diary));

if(p==NULL)

{

printf("※※日记创建失败※※");

returnNULL;

}

fscanf(fp,"日期:

%s\n",p->date);

fscanf(fp,"标题:

%s\n",p->title);

fscanf(fp,"关键字:

%s\n",p->keyword);

fscanf(fp,"正文如下:

\n%s\n",p->content);

p->tag=0;

p->nextd=D1->nextd;

D1->nextd=p;

fclose(fp);

returnp;

}

}

/*18**********************日记操作*************************/

intDiary_Operation(User*U2,Diary*D1)

{

chartempch='y';

intchoose2;

charFileName[40];

Diary*p=NULL;

while(tempch=='Y'||tempch=='y')

{

system("cls");

Print_Menu2(&choose2);

switch(choose2)

{

case0:

return0;

case1:

{

Write_Diary(D1);

getch();

}break;

case2:

{

printf("\n请输入文件路径及文件名:

");

scanf("%s",FileName);

p=Open_DiaryFile(D1,FileName);

if(p!

=NULL)

Open_Diary(p);

getch();

}break;

case3:

{

if(Search_Diary(D1)==1)

tempch='y';

}break;//打开帮助文件

case4:

{

tempch='n';

}break;

}

}

return1;

}

/*19************************进入菜单并选择操作************************/

voidPrint_Menu1(int*choose1)

{

printf("\n☆用户管理☆\n");

printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");

printf("┃1.用户登录2.注册用户3.保存当前信息4.退出程序┃\n");

printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");

printf("\n请选择操作:

");

scanf("%d",choose1);

rewind(stdin);/*清空键盘缓冲区里的无用字符*/

}

/*20*******************进入日记菜单并选择操作*********************/

voidPrint_Menu2(int*choose2)

{

printf("\n☆日记操作☆\n");

printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");

printf("┃1.写日记2.导入日记3.查阅与删除4.返回上层┃\n");

printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");

printf("\n请选择操作:

");

scanf("%d",choose2);

rewind(stdin);/*清空键盘缓冲区里的无用字符*/

}

/*21*******************进入日记查阅菜单并选择操作********************/

voidPrint_Menu3(int*choose3)

{

printf("\n☆日记查阅与删除☆\n");

printf("┏━━━━━━━━━━━━━━━━━━━

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2