C语言+数据结构课程设计日记管理系统实验报告.docx
- 文档编号:2858092
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:28
- 大小:71.54KB
C语言+数据结构课程设计日记管理系统实验报告.docx
《C语言+数据结构课程设计日记管理系统实验报告.docx》由会员分享,可在线阅读,更多相关《C语言+数据结构课程设计日记管理系统实验报告.docx(28页珍藏版)》请在冰豆网上搜索。
C语言+数据结构课程设计日记管理系统实验报告
福建工程学院计算机与信息科学系
实验报告
2010–2011学年第2学期任课老师:
课程名称
结构化程序设计
班级
软件工程0902
座号
姓名
实验题目
日记管理系统的开发设计
实验时间
实验开始日期:
2011.05.21
报告提交日期:
2011.06.07
实验目的、要求
一、实验题目:
设计一个简单实用个人日记管理系统。
二、实验要求
1.该实验的课内学时是4个课时。
2.程序完成后应该完成如下基本功能:
1)用自定义日记的存储结构,每篇日记至少包含日期,内容等字段;
2)使用者必须输入密码;
3)写日记与保存功能;
4)日记查阅:
按日期查看,按关键字查看,按顺序查看功能(从某一篇开始)
3.在完成上述基本功能的前提下,有能力的同学可以完成如下加强功能:
1)实现日记的永久存储。
2)对保存的密码进行变换,以免泄密。
3)允许多人使用。
4)在程序的提示语言清晰明确,界面美观并且适用。
实验步骤与内容
一)主要设计思想
日记管理系统设计,应分模块进行。
首先一个注册、登录的用户界面,编写函数保存用户已录入信息,及密码。
编写函数用于验证用户登录信息,并进行匹配。
有能力的话,可以添加一个用户密码修改功能…
当用户注册,登录匹配成功以后,进入其个人日记管理界面。
其中应当包含一些日记处理基本操作:
写日记、保存、打开、各种方式查询、删除。
各个功能分别用函数来实现,最后主函数用case语句调用各函数。
二)主要数据结构及其解释
1.日记结构体
typedefstructLink1
{chardate[10];//日期格式2011-05-11
chartitle[40];//标题
charcontent[1000];//日记内容
charkeyword[20];//关键字,可用空格隔开
inttag;//用来标记该日记是否满足查阅要求,是为0,否为-1,初始值为0;
structLink1*nextd;
}Diary;
2.用户结构体
typedefstructLink2
{charusername[25];//用户名
charpassword[16];//登录密码
Diary*diarys_list;//该用户拥有的日记链表
structLink2*nextu;
}User;
三)系统结构图:
四)所有函数的简要说明:
intChange_Password(User*U2);/*更改用户密码*/
intCreate_NewUser(User*U1);/*创建用户链表*/
intDelete_Diary(Diary*D);/*删除日记*/
intDiary_Operation(User*U2,Diary*D1);/*日记操作*/
intEncrypt_Password(charpassword[]);/*将登录口令加密*/
intEnter_Password(charpassword[]);/*获取登录口令*/
User*Find_User(User*U1,charusername[]);/*查找用户*/
Diary*Init_Diary(Diary*D1);/*初始化日记表*/
voidInitial_Tag(Diary*D1,inttag);
User*Init_User(User*U1);/*初始化用户表*/
intInput_Choose();
intOpen_Diary(Diary*D1);
Diary*Open_DiaryFile(Diary*D1,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*Filter_word(Diary*D1,charcmpword[],intn);/*按标题、日期、关键字查阅*/
User*User_Login(User*U1);/*登录个人用户*/
intWrite_Diary(Diary*D1);/*写新日记*/
试验过程记录
记录试验中遇到的困难及解决方法;,
1.在编写字符匹配的函数时,利用flag当监视哨,当判断字符匹配成功后,未跳出本次循环,导致单个结果多次输出。
解决方法:
在匹配成功输出结果后加一个goto语句跳出循环,进行下一个节点比较。
2.在写筛选函数的时候,把筛选查找直接写成了筛选算法,这样输入的数据经过一次筛选后,不符合条件的就被删除了。
这样不利于重复进行筛选操作。
解决方案:
在结构体中加一个fflag单元,当每次判断不符合条件的节点,将其fflag赋值为0,否则赋1。
输出时将fflag!
=0的输出。
3.本程序用到双链表,注意指针指向。
实验结果记录以及与预期结果比较以及分析
记录每次实验结果以及分析情况
1.创建用户:
用户名‘jiang’,密码‘123’
2.显示用户,及登录:
输入用户名‘jiang’,密码‘123’.
3.写日记:
①标题:
‘夏热’
②标题:
‘端午’
4.保存及读取:
5.①输入查阅,标题:
’端午’
②输入关键字‘晴天’,查询:
6.日记删除操作:
实验结论:
经验证,以上筛选结果正确。
总结以及心得体会
本次试验的
其实很想自己想的,可是自己真的写不出来这么长的,只能半借鉴半写,所以我只能说懂这个程序,会用,但是,让我自己写,还是很有难度的,太多了,写的头痛,纠结死了,花了我好长时间,一直纠结到现在,自己写了300多行,可是有点问题,远不如同学的,就把自己的改了,我只能写一些小程序,像运用到归纳啊,贪心这些。
。
。
注意一些常出现的错误:
1.字符匹配时要注意,字符串长度应为输入长度再加1.(\0占一个空间)
2.注意指针指向问题,最好用两个指针,一个用于判断结束,一个用于输出所需值。
3.可以用flag设置监视哨,判断是否找到所需结果。
历经千辛万苦,终于编出来了。
发现指针这一块还有很多漏洞。
比如插入时未将尾指针赋空值,导致了很多问题。
还有特别要注意对字符串操作时的长度问题。
总之,吃一堑,长一智,在自己编程实践,请教同学的过程中,学到很多很多。
不过指针那方面的知识还是有些模糊不够熟练,有待加强。
指导老师评阅意见
指导老师:
年月日
/*日记管理系统*/
#include
#include
#include
#include
#defineESC27//退出键
#defineEnter13//回车键
#defineBackSpace8
/*定义日记结构体*/
typedefstructLink1
{chardate[10];//日期格式2009-12-30
chartitle[40];//标题
charcontent[1000];//日记内容
charkeyword[20];//关键字,可用空格隔开
inttag;//用来标记该日记是否满足查阅要求,是为0,否为-1,初始值为0;
structLink1*nextd;
}Diary;
/*定义用户结构体*/
typedefstructLink2
{charusername[25];//用户名
charpassword[16];//登录密码
Diary*diarys_list;//该用户拥有的日记链表
structLink2*nextu;
}User;
/*函数声明*/
intChange_Password(User*U2);/*更改用户密码*/
intCreate_NewUser(User*U1);/*创建用户链表*/
intDelete_Diary(Diary*D);/*删除日记*/
intDiary_Operation(User*U2,Diary*D1);/*日记操作*/
intEncrypt_Password(charpassword[]);/*将登录口令加密*/
intEnter_Password(charpassword[]);/*获取登录口令*/
User*Find_User(User*U1,charusername[]);/*查找用户*/
Diary*Init_Diary(Diary*D1);/*初始化日记表*/
voidInitial_Tag(Diary*D1,inttag);
User*Init_User(User*U1);/*初始化用户表*/
intInput_Choose();
intOpen_Diary(Diary*D1);
Diary*Open_DiaryFile(Diary*D1,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*Filter_word(Diary*D1,charcmpword[],intn);/*按标题、日期、关键字查阅*/
User*User_Login(User*U1);/*登录个人用户*/
intWrite_Diary(Diary*D1);/*写新日记*/
/*更改用户密码*/
intChange_Password(User*U2)
{
charoldpw[16],newpw1[16],newpw2[16];
do
{
printf("\n\t请输入旧密码:
\t");
Enter_Password(oldpw);//调用输入密码函数
Encrypt_Password(oldpw);//调用对密码加密函数
if(strcmp(U2->password,oldpw)!
=0)//如果输入的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 数据结构 课程设计 日记 管理 系统 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)