计算机毕业论文数据结构课程设计Word文档格式.docx

上传人:b****5 文档编号:19737837 上传时间:2023-01-09 格式:DOCX 页数:8 大小:77.29KB
下载 相关 举报
计算机毕业论文数据结构课程设计Word文档格式.docx_第1页
第1页 / 共8页
计算机毕业论文数据结构课程设计Word文档格式.docx_第2页
第2页 / 共8页
计算机毕业论文数据结构课程设计Word文档格式.docx_第3页
第3页 / 共8页
计算机毕业论文数据结构课程设计Word文档格式.docx_第4页
第4页 / 共8页
计算机毕业论文数据结构课程设计Word文档格式.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

计算机毕业论文数据结构课程设计Word文档格式.docx

《计算机毕业论文数据结构课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机毕业论文数据结构课程设计Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。

计算机毕业论文数据结构课程设计Word文档格式.docx

 

一、需求分析

1、现代人的社会交往越来越多,联系人随之增加,如果有一个软件能对通讯录进行有效的管理,那么在工作和处事中将会起到事半功倍的效果,会使自己有更优异的表现。

2、用C语言设计实现一个对通讯录进行管理的程序,当程序运行后,先要求用户建立个人通讯录,下次访问时根据用户帐户名和口令登陆,各用户之间无法互访通讯录,以此达到对用户信息的保密。

3、当通讯录中的联系人不在需要时,软件应该给用户提供删除联系人及相关信息的功能;

由于社会和环境的不段变化,联系人的地址和联系方式总是处于不段的变化之中,因此软件应该提供修改联系人信息的功能;

随着联系人的不断增加,为了方便用户对需要的联系人进行快速的定位,软件应该提供查找功能;

其次软件还应该提供输入、查看、新增、用户输入信息的保存、联系人列表的读出、程序退出这样的基本功能。

4、通讯录中的联系人和联系人信息均以字符形式存放,通讯录中的数据以二进制格式保存,通讯录中的修改、删除、搜索功能以联系人名为基础进行;

联系人和联系人的各项信息所占字符均为15个字节。

5、输入的形式:

字符

输入值的范围:

15个字符以内

6、输出形式:

软件的各项功能以选项的形式输出,待用户输入序号选择;

用户的有用数据以列表的形式输出,联系人名及联系人的各项信息。

二、概要设计

1、结构体及链表数据类型定义

(1)、/*定义用户登陆信息数据结构*/

typedefstructZ1

{

charname[20];

charpw[10];

structLOGIN*next;

}LOGIN;

用该结构体建立一个链表用来记录用户注册时输入的数据,该数据用来在用户登陆时进行验证。

(2)、/*定义用户数据结构*/

typedefstructZ2

chartel[20];

charqq[20];

charaddr[50];

structPEOPLE*next;

}PEOPLE;

用该结构体建立一个链表用来记录通讯录中的联系人和相关信息。

2、文件系统及输入输出方式

本程序用二进制数据块输入输出函数将有用的信息保存到文件中待有用是调用。

二进制文件用一般的编辑命令显示它的内容,即使在清楚地了解建立此文件时,用的操作、数据的类型和数据的输出顺序等,依然很难看懂它的内容,所以二进制文件具有一定的保密性。

在编译程序时先创建一个LOGIN二进制文件,用以保存注册用户信息,系统自动完成;

在用户进入程序后用户输入的信息保存时,用户自定义保存文件的地址和文件名,但仍以二进制文件形式存放。

3、本程序包含的所有功能及对应的函数

该程序中有两大函数

(1)、main()函数及main()函数中包含的其他函数;

main()主函数,是程序的入口,所有的其他的子函数都由它调用;

LOGIN*load1()函数;

用户登陆信息的数据链表的创建,由LOGIN文件中读出,该函数返回链表的头指针,待后面函数调用;

menu()函数;

打印出一个用户登陆选择界面;

intselect()函数;

提示用户输入选择,返回用户输入信息;

create(LOGIN*h)创建新用户及登陆口令函数;

调用load1()返回的头指针,访

问链表,判断用户名是否存在,对新用户名及口令进行保存;

comein(LOGIN*h)验证用户口令函数;

调用链表头指针,对输入的用户名和口令和链表中的数据进行比较,当判断输入的用户名和口令是真确时进入通讯录功能模块,当判断出错时,提示用户输入有误,或用户不存在;

(2)、实现通讯录功能及界面的main1()函数;

main1()通讯录功能调用及界面函数;

实现通讯录中所有的更能函数块都由此函数调用;

head=init();

初始化链表函数;

menu_select()调用主菜单函数;

打印用户使用功能界面,提示输入选择项;

PEOPLE*create1()创建链表函数;

按提示输入联系人相关信息,及输入数据的字符限制出错判断,当输入字符‘.’(键盘上的句号)时结束输入,返回主函数,链表创建完成;

PEOPLE*delete(PEOPLE*h)删除链表中记录;

根据用户输入的联系人姓名,从链表中查找该联系人,如果没有找到信息则输入没有找到,否则删除该联系人的所有数据,并提示用户保存修改后的链表;

voidprint1(PEOPLE*h)打印链表中数据的函数;

通讯录建立好后更多的是查找和显示,该函数就是打印联系人的信息的函数,当用户从文件中读出数据并建立成链表后,用该函数打印出链表中的联系人数据;

voidsearch(PEOPLE*h)查找函数;

在当前的链表中根据用户输入的联系人姓名查找,找到后打印出联系人信息,否则打印出错;

voidsave(PEOPLE*h)保存文件函数;

当用户对链表中的联系人信息管理完毕后用该函数将链表中的数据保存到用户指定地址的指定文件中;

PEOPLE*load()读文件函数;

当用户进入软件后通过该函数打开上次使用时保存的数据,该函数打开用户指定的地址中的指定的合适的文件,并把读出的数据重新建立成链表,用户通过对链表的操作对通讯录中的联系人进行管理;

voidappend()追加记录函数;

当用户有新的联系人需要添加到自己的通讯录中时,通过该函数把新联系人的相关信息追加到用户当前操作的链表中,并提示保存;

voidcopy()文件拷贝函数;

该函数提供给用户一个数据备份的功能,把用户的通讯录联系人数据(以二进制文件保存的文件)COPY一份放到用户指定的地方,联系人数据对于今天的我们可是很重要的哦;

4、系统结构图

四、调试分析

程序要想交付给别人使用首先当然要能过得了自己的这关才行,通过调试分析我们可以发现程序中隐藏的错误,观察程序运行的结果是不是自己想要的结果,通过对程序的不断调试和修改来达到优化程序的目的,使我们可以提供给用户更好的软件。

1、在各个模块中最容易出现错误的地方是在注释的时候自己不2、小心引起的。

由于程序注释的需要会不3、断的切4、换到中文输入方式下,5、但是在输入程序时却忘了切6、换回来,7、导致程序在调试过程中出现乱码或无法运行;

8、在输入数据时,9、如果其中的某一项不10、给予输入直接回车程序不11、会继续往下执行,12、但是通讯录中的某些选项对于有的用户应该是可以可以不13、输入的;

14、函数调用时出现错误也是本次课程设计中出现比较频繁的,15、由于通讯录的功能模块较多,而16、且登陆界面有的模块跟通讯录中的模块有相似的功能,17、在函数命名18、时有的重名19、;

有的问题出在函数调用的时候,20、有的函数有返回值有的函数没有返回值,21、在写代码的时候没有注意导致程序运行是没有得到想要的结果;

用的代码直接写进主函数的时候可以用,22、但是一旦独立出去写成一个函数,23、调用的时候就会出错,24、出现一些莫名25、其妙的问题,26、使输出混乱或无法输入等问题;

27、文件系统在本程序中起着很重要的作用,28、在开始设计之初选用的是格式化输入与输出文件方式,29、但是在调试时不30、知道是哪出现了错误,31、在保存的文件中多出很多零,32、在读取文件中的数据时零会替代原来有用的数据,33、导致输出错误信息,34、后来查看了一些资料后发现用二进制数据块输入输出函数将有用的信息保存到文件中,而35、且还实现了一定的数据保密功能;

36、由于实现一个相应的功能可以选择的算法很多,37、但是在设计程序时可能有某些因数没有考虑进去导致在调试的过程中程序出现了难以预料的错误;

在调试过程中有的时候程序是没有错误,38、输出的数据也是按照预期的,39、但是输出的数据在屏幕上的显示方式不40、能令人满意,41、屏幕上的数据密密麻麻的,42、没有一个很好的格式使用户对需要的数据一目了然。

五、测试结果

由于通讯录的特性,功能众多,不可能对每个功能的实现的输入输出进行一一截图,所以在这个地方只列出通讯录中的主要的几个界面:

1、运行程序后首先看见的是登陆界面,2、如下图:

3、进入登陆界面后输入2,4、提示输入登陆名5、和密码,6、我在程序中暂设一个登陆名7、和登陆密码供用户试用软件时进入功能界面,8、用户也可以自己选择1创建。

下面是输入实例:

9、当验证用户名10、和密码正确时进入一个软件欢迎界面(这个功能暂时没做,11、但是留出调用欢迎界面的空间,12、也可以在此做出软件的使用介绍界面),13、如下图:

14、不15、管以后上面的是欢迎界面还是用户使用说明,16、当按任意键后进入软件的功能界面,17、进入功能界面后最好输入0,18、初始化链表,19、通讯录主要实现的功能见0…9,20、如下图:

六、用户使用说明

通讯录基本完成的时候我在网上找了几个朋友也找了几个同学让他们试用我写的程序,由于程序的界面和提示是在DOS环境下,提示又是英文的,所以从他们那返回的意见基本都是不知道怎么使用该程序,不知道从何入手,于是我还是决定把课程设计中的这个部分完成,至少要达到用户能基本了解本程序要实现的功能是什么、怎么操作,也只有在他们对本程序有了一定的了解后才能给我指出程序中的不足,给我提出更好的建议。

(下面提到的用户界面可以从结果分析中看见)

该程序主要通过输入键盘上的数字来选择程序的功能进行执行。

1、运行软件后首先看见的是登陆界面,2、有“1、2、3”三个选项,3、如果你是新用户,4、你可一通过‘1’选项来创建自己的用户名5、和登陆密码,6、跟很多网上要求注册登陆的方式差不7、多。

8、当你注册完成后可以通过选择‘2’来输入你的用户名9、和登陆密码进行验证,10、登陆。

如果你只是想了解一下该程序,11、我为你提供了一个通用登陆用户名12、和登陆密码:

name:

yy

password:

123456

13、当你输入的用户名14、和密码正确后程序会进入一个界面,15、提示你按任意键进入,16、当你从键盘上按下一个键后进入通讯录的主界面。

17、通讯录界面有0到9个选项可以选择,18、‘0’的功能是初始化,19、‘1’选项的功能是往通讯录中输入联系人名20、及相关信息,21、输入完成后程序会要求输入下一个,22、如果用户没有相关信息要继续输入可以在出现提示输入name时,23、在name后输入‘.’(也就是键盘上的句号键),24、程序会自动返回到功能界面;

用户输入完信息后记得用‘5’选项保存输入信息到用户指25、定的文件。

26、当你输入的联系人的相关信息不27、再需要时可以通过‘2’选项来删除联系人及信息。

28、当你要看通讯录中所有的联系人信息时可以用‘3’选项把所有的联系人信息打印到屏幕上。

29、‘4’选项的功能是查找,30、根据用户输入的联系人姓名31、打印出联系人的相关信息。

8、‘5’的功能是保存用户输入的信息和修改后的信息到用户指定的地址和指定的文件下面,如果用户不输入地址,程序会把用户自己创建的文件保存到与程序所在的一个文件下。

9、‘6’的功能是用户在下次登陆该通讯录时打开该以前保存的文件即用户通讯录中的联系人信息。

10、‘7’的功能是用户打开文件后往以前的通讯录中加入新的联系人信息,添加完毕后记得用‘5’保存。

11、为了用户联系人信息即用户保存的文件的安全,‘8’功能提供了一个文件备份功能,把用户指定的文件保存到用户指定的另外一个地址下。

12、用户完成所有的操作后,用‘9’退出程序。

七、课程设计总结

当完成了课程设计中的各个板块后,虽然不像什么样子,甚至觉得有点四不像,但是经过一段时间的努力完成的作品(请允许我这样称呼自己的东西)看上去还是觉得欣慰。

回顾自己在这次课程设计中还算是提高了不少,虽说有些辛苦。

一直以来都觉得在大学中专业知识技能没有多大收获,当得到课程设计的通知和课题要求后觉得这是一次提高自己的机会,就一直在考虑如何从课程设计中尽量获得最大的收获。

于是从网上找了很多优秀的课程设计摸板作为参考,写出了课程设计目录表,接下来就是按照目录中的要求找到相关书籍正式的进入课程设计进程。

在课程设计中问题主要出现在需求分析、程序编码、程序测试这几个阶段。

由于在课程设计之前没有软件工程方面的知识,虽然看过一点相关书籍但是理解不够,并不能按要求贯彻到课程设计中去,所以只能按照自己所想写需求报告。

因为课程设计中的课题并不是很复杂,也不能允许我有机会与“客户”沟通,所以需求分析过程中我独自扮演了“客户”和“需求分析员”两个角色,按照自己对通讯录的认识写出了需求报告,正因为这一过程只有我一个人参与,为课程设计的后续工作埋下了隐患。

需求分析中的“涉众人员”是必不可少的,沟通的层度对用户的需求会有更深层次的理解,有了这样的理解才能准确的写出需求报告,这对以后的软件设计是非常重要的。

“需求是不断变化的”,由于我独自扮演了需求分析中的两个角色,虽然把需求分析报告写出来了,但是在后期的阶段中我不时的想到“软件应该有什么功能”在这种课程设计中“需求变化”对我的课程设计的影响或许不大,但是我也感觉到“需求变化”带来的麻烦,所以我可以想象在案真正的项目开发中“需求变化”对软件进展可能是致命的。

在这个阶段使我对“需求分析”的重要性和必要性的认识不再仅仅是停留在书本上了。

在体统分析和项目管理中我并没有花费太多的时间和精力,这是因为课题难度小和我本身对这一环节的认识不够,所以没有必要让我花太多的时间来进行,但是我之所以把这一环节加入课程设计目录是因为这一过程在真正的软件项目中是必须且重要的。

通过上面的这些步骤可以使我对“软件工程”、软件开发流程有一个真确而清晰的认识,这对我以后的学习是相当有用的。

在程序的编码阶段也是问题重重,当你通过重重的困难实现了你所要实现的功能后,那种喜悦是难以言语的,这正是编程的真正乐趣之所在。

由于从没有写过如此多功能模块组合的程序,虽然知道要用模块化程序设计把各功能模块写成函数独立出来,但是函数的嵌套又给程序的可读性带来了麻烦,即使是自己写的程序读起来也感觉很吃力,而且在调试的过程中容易出错,很难修改,这时你会发现流程图、系统结构图、好的注释和编码习惯会给你的工作带来很大的帮助。

掌握一门语言,能做题,能读代码和能写程序,这之间是有很大差别的,书本上的例子调试时是没有问题,但是当你应用到你的软件中的时候情况就不一样了,你需要考虑更多的因素。

给我印象比较深的是,在写通讯录的文件系统的时候,我用了四种方法来实现,有两种方法不知道是什么地方没有考虑到,编译能够通过,但是输出的信息只有部分正确,后两种方法都能够正确的实现,但是我选择了二进制数据块输入输出函数来实现文件的保存和读取,之所以选择这个函数,是因为与其他几种方法相比较它能够实现一定的保密功能。

实现一项功能可以选择的算法很多,至于选择哪种尽量多考虑几种情况,发现他们的优势在什么地方,然后进行取舍,我想这些东西与经验有关我就不多说了(没资格)。

在概要设计时我考虑不周,把登陆界面设计进了主函数中,等完成程序回过头来分析觉得其实该程序应该分为三大函数,main()函数、main1()函数、main2()函数,main1()函数实现登陆验证功能,main2()实现通讯录中的功能。

通讯录程序基本完成的时候我在网上找了几个朋友也找了几个同学让他们试用我写的程序,由于程序的界面和提示是在DOS环境下,提示又是英文的,所以从他们那返回的意见基本都是不知道怎么使用该程序,不知道从何入手,于是我还是决定把课程设计中的用户使用说明这个部分完成,至少要达到用户能基本了解本程序要实现的功能是什么、怎么操作,也只有在他们对本程序有了一定的了解后才能给我指出程序中的不足,给我提出更好的建议。

除了上面提到的几点外,编写程序的过程中还存在一些小的细节很容易被忽视却恰恰是能体现软件人性化的地方。

比如用clrscr()清屏,特别是在这种DOS化的界面下,清除上次显示的无用信息,使有用的提示信息一目了然;

如优化输出信息使用户明了方便快捷的看见自己需要的信息;

在程序出错时的各种提示;

在用户进行相应的操作后提示用户保存等。

最后谢谢老师、网友和同学们的支持和意见,有了你们的关注才能使我的课程设计顺利完成,谢谢!

.

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1