如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
实验报告专业计算机科学与技术班级计算机1001座号姓名日期2012/5/14福建工程学院计算机与信息科学系实验报告2010–2011学年第一学期任课老师:章静实验题目日记管理系统的开发实验时间实验开始日期:2012\05\03报告提交日期:2012\05\14实验目的、要求一、实验题目:设计一个简单实用个人日记管理系统。二、实验要求1.该实验的课内学时是4个课时。2.程序完成后应该完成如下基本功能:1)用自定义日记的存储结构,每篇日记至少包含日期,内容等字段;2)使用者必须输入密码;3)写日记与保存功能;4)日记查阅:按日期查看,按关键字查看,按顺序查看功能(从某一篇开始)3.在完成上述基本功能的前提下,有能力的同学可以完成如下加强功能:1)实现日记的永久存储。2)对保存的密码进行变换,以免泄密。3)允许多人使用。4)在程序的提示语言清晰明确,界面美观并且适用。实验设计内容(1)实验设计的数据结构/*定义日记结点类型*/typedefstructDiary{chardate[15];/*日期*/chartitle[20];/*日记标题*/intflag;/*判断日记是否符合查阅要求,是为0,否为-1*/structDiary*next;}Diary;/*定义用户结点类型*/typedefstructUser{charname[20];/*用户名*/charpassword[20];/*登录密码*/intcount;/*该用户拥有的日志的个数*/Diary*first;/*指向用户拥有的日记链表的表头*/structUser*next;}*Us,User;最后的用户信息以及在该用户目录下的日志信息以二进制的形式存在文件中。(2)总体函数模块结构图:初始化用户、日志信息读取密码修改日志管理系统用户登陆和注册写入日记日记查询日记删除用户、日记信息保存按顺序查询按日期查询按照关键字查询(3)重点函数分析1.初始化函数:程序运行会运行此函数,讲已有的用户信息和她们的日志信息读入链表中。UsInit(){FILE*fp1,*fp2;UsL=NULL;User*p;Diary*s;if((fp1=fopen("Userlist.txt","r+"))==NULL)returnL;while(!feof(fp1)){p=(User*)malloc(sizeof(User));if(fread(p,sizeof(User),1,fp1)!=1)break;//从一个流中读取数据(接受数据的指针,单个元素的大小,元素个数,提供数据的文件指针)p->first=NULL;//读取系统已有的用户信息p->next=L;L=p;chdir(p->name);//把相应用户目录作为当前工作目录if((fp2=fopen("dairylist.txt","r"))==NULL){continue;}elsewhile(!feof(fp2)){s=(Diary*)malloc(sizeof(Diary));//读取系统相应用户的相应日记信息if(fread(s,sizeof(Diary),1,fp2)!=1)break;s->next=L->first;//first为该用户的节点拥有的日志链表L->first=s;}fclose(fp2);//关闭存储日志信息的文件,把父目录作为当前工作目录}fclose(fp1);return(L);}2.登录结构流程图:开始输入用户名及其对应密码NY进入日志操作界面判断输入的用户名和密码链表中是否存在代码:/*用户登录函数*/voidLogin(UsL){chartemp[20];charflag;inti,j,count;User*p;Diary*s;p=L;system("cls");printf("\n\t\t\t|^^^^^^^^^^^^^^^^^^^^^^^|\n");printf("\t\t\t|\t用户登入\t|\n");printf("\t\t\t|^^^^^^^^^^^^^^^^^^^^^^^|\n");printf("\n\t已有的用户名:\n");printf("\t\t|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\n");printf("\t\t|\t序号\t用户名\t\t|\n");count=1;while(p!=NULL)//将已经有的用户名和对应序号打印出来{printf("\t\t|\t%d\t%s\t\t