1、1福建工程学院计算机与信息科学系实验报告2011 2012 学年第 学期 任课老师: 课程名称 结构化程序设计 班级 计算机1004 学号 姓名实验题目分治算法设计技术的应用实验时间实验开始日期: 2012/5/23 报告提交日期: 2012/5/27 实验目的、要求一、实验题目:设计一个简单实用个人日记管理系统。二、实验要求1该实验的课内学时是 4 个课时。2程序完成后应该完成如下基本功能:1)用自定义日记的存储结构,每篇日记至少包含日期,内容等字段;2)使用者必须输入密码;3)写日记与保存功能;4)日记查阅:按日期查看,按关键字查看,按顺序查看功能(从某一篇开始)3在完成上述基本功能的前提
2、下,有能力的同学可以完成如下加强功能:1)实现日记的永久存储。2)对保存的密码进行变换,以免泄密。3)允许多人使用。4)在程序的提示语言清晰明确,界面美观并且适用。实验步骤与内容按如下顺序写:1.主要数据结构及其解释a) typedef struct nodeb) c) int time;d) int No;e) char name100;f) char data10000;g) char key50;h) struct node *next;i) Linklist;j)k) typedef struct usel) m) char username20;n) char paw20;2o) s
3、truct use *next;p) Linklist * dairylist;/指向用户日记指针,不同用户看到的日记不同q) user;2.模块关系图;)主函数用户注册遍历用户链表,存在,则登录成功初始化并从文件录入用户信息和对应的日记信息用户登录While(1)存入用户链表并保存入用户信息文件查看日记进入各用户对应的个人系统写日记 更改用户名和密码退出个人系统按关键字查看按日期查看按序号查看查看日记目录保存至用户个人日记链表和文件保存至用户链表选择序号并查看日记2、 所有函数的简要说明; 3写日记,存入链表及文件 user *Creatlist(user *T)STARTENDR 指针指向
4、尾部输入新日记信息并保存至链表(fp=(fopen(b,“a+“)=NULL)打开失败保存入文件Return4按序号查看日记 void select_NO(Linklist *L)开始END输入要查看的日记序号n链表是否遍历完(p-No=no)遍历链表指针下移Code是否找到日记输出:所查找的日记不存在5从文件读取用户日记信息 user* file(user *L)STARTEND取用户名做到b中(fp=(fopen(b,“a+“)=NULL)打开文件失败(!feof(fp)从文件读取日记信息到链表关闭文件Return6调入用户信息及调用 file 函数录入对应的日记信息 user *inte
5、ruser(user* T)开始结束(fp=(fopen(“user.txt“,“a+“)=NULL)YES打开文件失败(!feof(fp)录入用户个人信息及调入用户对应的日记信息关闭文件Return7按日期查找日记 void select_day(Linklist *L)开始结束输入要查看的日记日期判断链表是否为空(p-time=time)Code指针下移判断上述是否找到输出:查询的日记不存在8按关键字模糊查询 void select_key(Linklist *L)STARTEND输入要查找的汉字(p!=NULL)链表不为空记录字符 chax 及计算其长度 b(i=a)找到,输出该日记信息
6、结束没找到,指针下移一个日记结点Code9void menu(user *T)int x=1;T=file(T);while(x)system(“CLS“);printf(“nnttt-欢迎使用日记管理系统-nnnn“);printf(“nntttt1.查看日记 nn“);printf(“tttt2.写日记nn“);printf(“tttt3.修改用户名或密码nn“);printf(“tttt4.退出个人系统n“);int n;scanf(“%d“,getchar();switch(n)case 1:pmenu(T-dairylist); break;case 2:T=Creatlist(T)
7、;break;case 3:T=modify(T);break;default:x=0;break;void pmenu(Linklist *L)printf(“1.按序号查看n“);printf(“2.按关键字查看n“);printf(“3.按日期查看n“);printf(“4.查看日记目录n“);int n;scanf(“%d“,switch(n)case 1:select_NO(L);break;case 2:select_key(L);break;case 3:select_day(L);break;case 4:print(L);break;default:break;10用户信息修
8、改 user *modify(user* T)开始结束先登录,输入用户名和密码链表没有结束验证用户名是否相同验证密码是否正确 d)=0)密码正确修改用户名和密码,修改标志 temp=1不相同,指针下移一个结点(!temp)若没有修改用户名或密码错误不允许修改Return113、 所有源代码;附表后试验过程记录记录试验中遇到的困难及解决方法;用文件时,用户信息的文件写入和读取都没有问题,但日记信息的读取出现了问题.时间紧急,答辩时先去了这个功能,之后,对程序修改,实现了文件保存读取的功能,此外还将按关键字查找改成了模糊查找实验结果记录以及与预期结果比较以及分析记录每次实验结果以及分析情况1213写日记查看的日记依然是原用户14换个用户登录看到的日记也不一样用用户名保存的对应用户的日记文件15用户登录信息文件总结以及心得体会对文件和模糊查找的使用让我对知识的掌握又更进了一层,极大的方便了用户对系统的使用,可以说收获良多吧,学期末了,经过一个学期的训练,现在对知识的掌握程度不是一开始所能比拟的,感谢这门课程给我机会回顾知识,巩固知识,也感谢自己在过程中都以负责的态度做好每个实验,让自己在这里慢慢的进步.嘻指导老师评阅意见指导老师: 年 月 日填写内容时,可把表格扩大。实验的源程序代码(要有注释)附在表后。