日记管理系统实验报告及代码

福建工程学院结构化程序设计实验报告专业信息管理与信息系统班级0904座号07姓名常荣荣日期2010/11/22实验题目设计一个简单实用个人日记管理系统实验报告内容一、实验目的:1.该实验的课内学时是4个课时。2.程序完成后应该完成如下基本功能:1)用自定义日记的存储结构,每篇日记至少包含日期,内容等字段;2)使用者必须输入密码;3)写日记与保存功能;4)日记查阅:按日期查看,按关键字查看,按顺序查看功能(从某一篇开始)3.在完成上述基本功能的前提下,有能力的同学可以完成如下加强功能:1)实现日记的永久存储。2)对保存的密码进行变换,以免泄密。3)允许多人使用。4)在程序的提示语言清晰明确,界面美观并且适用。二、实验时间:2010/11/22三、实验地点:C2-516四、实验内容与步骤:(1)实验设计的数据结构typedefstructdiary{chardate[20];//日期charweather[20];//天气charcontent[1000];//日记内容(数据域)structdiary*next;//指针域}DIA;//日记数据结构typedefstructuser{charusername[20];charcode[20];//数据域structuser*next;//指针域}USER;//用户数据结构(2)层次图(3)各个函数分析/*主函数*/intmain(void){定义USER类型的头指针——head为head申请空间{head=(USER*)malloc(sizeof(USER));head->next=NULL;}从文件中读用户信息——r_to_userfile(head);调用主菜单函数mainmenu(head);}/*主菜单*/voidmainmenu(USER*head)(将主函数中的head传给菜单函数){定义变量进入界面菜单for(i=6;i>0;i--){printf(".");Sleep(700);//延迟毫秒数}do{菜单选项switch(choose){case1:regist(head);break;case2:users(head);break;case3:printf("退出!");break;}控制循环的语句}while(yes_no=='y');}/*新用户注册*/voidregist(USER*head)(创建链表,将菜单函数中的变量head传递下来){USER*p,*q;定义两个USER类型的变量p,q。inti,flag=0;charmima[6];给变量申请空间do{用户名注册,判断用户数据结构中是否已经存在该用户名for(q=head->next;q!=NULL;q=q->next){如果用户名已经存在,定义一个变量(初始值为0)并给其赋值为1flag=1;}}while(q!=NULL);当用户名不存在时——if(flag!=1){初始化密码——for(i=0;i<20;i++)p->code[i]='0';printf("请输入六位数密码:\n\t\t");for(i=0;i<6;i++){密码不可见处理——p->code[i]=getch();printf("*");}令q始终指向head的最后一个结点后进行连接printf("\n\t注册成功!");写入文件w_to_usefile(head)}当用户名已经存在时elseprintf("该用户名已经存在~!请重新注册!\n");}/*保存用户信息(将用户信息写入文件)*/voidw_to_usefile(USER*head){定义用户类型的普通指针变量p,将p定义为USER链表中的第一个结点,即p=head->next;打开文件名为USER.txt的文件。判断是否为空,若为空,则直接打印“语句Cannotopenoutputfile.”不为空,则打开文件成功,将用户名、密码等写入到文件中关闭文件。}/*用户登录*/voidusers(USER*head){定义一个日记数据结构类型的头head1,DIA*head1;申请空间定义一个USER类型的普通指针——USER*p;读出已经注册的用户信息——r_to_userfile(head);登录时密码判断时的特殊处理USER*temp;temp=(USER*)malloc(sizeof(USER));temp->next=NULL;inti,j;printf("输入用户名:");scanf("%s",temp->username);printf("\n输入密码:");初始化——for(i=0;i<20;i++)temp->code[i]='0';for(i=0;i<6;i++){temp->code[i]=getch();printf("*");}for(p=head->next;p!=NULL;p=p->next){if(strcmp(p->username,temp->username)==0strcmp(p->code,temp->code)==0)break;}if(p==NULL){printf("\n用户名不存在或密码输入错误!\n");do{重新注册}while(p==NULL);}用户登录成功else{printf("\n登入成功!\n");进入日记管理系统menu(p,head1){将USER类型的p和DIA类型的head1传给memu函数}}}/*查看用户信息(将用户信息从文件中读出)*/voidr_to_userfile(USER*head){定义普通变量rc和指针变量p;指针p指向日记的头结点head;打开文件名为USER.txt的文件若打开成功while(!feof(in))则依次读取日记信息连接成一条单链表,直到读...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?