《C语言课程设计报告——十字交叉链表的应用》由会员分享,可在线阅读,更多相关《C语言课程设计报告——十字交叉链表的应用(13页珍藏版)》请在金锄头文库上搜索。
1、华中科技大学计算机科学与技术学院C语言程序设计课程设计实验报告题目:水产品养殖信息管理系统专业: 计算机科学与技术 班级: 计科1003 学号: 姓名: 鲁辰 成绩: 指导老师:卢萍完成日期: 2011年9月28日 目录一、 系统概述-3二、 系统功能模块结构-3三、 数据结构设计及用法说明-4四、 程序结构-6五、 各模块功能-9六、 实验结果-11七、 体会-13八、 参考文献-13九、 附录:源代码及头文件-报告后一、 系统概述本系统是一个水产品管理系统,用于存储和管理水产品的信息,系统功能包括:鱼塘、苗种、投苗信息的录入、删除、修改、查找、排序等。整个系统由C语言实现,采用了Windo
2、ws程序设计调用API函数的方法制作界面,信息在程序中通过十字链表的方式被存储,如果使用保存功能,即存入文件根目录下的相应.dat文件中。本程序中最重要的部分之一是窗体的句柄和窗体中各个控件的句柄,通过发消息给相应的句柄,才能够在特定的位置进行数据的显示和读入,在对树状图及列表进行操作时,也是通过特定函数将消息发给树状图或其子节点和列表的句柄,并且,在对数据进行变更时,本程序是以所选中节点的句柄与链表的句柄进行对比,来判断是否进行操作的。一个信息节点在树状图中所对应的句柄也因此被作为鱼塘(POOL_NODE)、苗种(FISH_NODE)、投苗(FEED_NODE)结构的一部分。数据结构的介绍中
3、有界面中每个控件所对应的句柄名称示意图。本程序另一个重要部分是十字链表的结构,通过使用三级十字链表,将所有的信息系统的组合在一个头节点下。为支持链表,每个节点都数据结构中都有一个指向下一级节点(除投苗信息FEED_NODE外)和一个指向下一个同级节点的指针。二、 系统功能模块结构水产品养殖信息管理系统由六大功能组成:数据录入模块、数据修改模块、数据插入模块、数据删除模块、数据查询模块、数据统计排序模块。如图F1 所示。水产品养殖信息管理系统水产品数据文件处理水产品数据录入处理水产品数据修改处理水产品数据查询处理水产品数据统计处理水产品数据排序处理文件导入处理文件存盘处理退出系统处理文件创建处理
4、鱼塘数据录入投苗数据录入苗种数据录入鱼塘数据修改投苗数据修改苗种数据修改按时间查询苗种信息鱼塘数据统计投苗数据统计苗种数据统计按投苗时间按苗种单价按投养数量1 主模块一:水产品数据文件处理该模块包括4个子模块,分别是:文件创建处理、文件导入处理、文件存盘处理、退出系统处理。所有信息可被保存在三个文件:pool.dat,fish.dat,feed.dat中,pool.dat用于保存鱼塘节点信息,fish.dat用于保存苗种节点信息,feed.dat用于保存投苗节点信息。在文件写入到新建的链表时,每个节点都会有一个句柄,指向左侧树状图中节点,因为每个节点的句柄都是不同的,所以句柄用于作为该节点的唯
5、一标识。2 主模块二:水产品数据录入处理该模块包括3个子模块,分别是:鱼塘数据录入、投苗数据录入、苗种数据录入。在插入下一级节点时,应选中树状图中的上一级节点,例如:要插入苗种信息节点,应选中树状图中的该苗种所对应的鱼塘信息节点,否则不能成功插入。特别注意的是:本程序中所有的输入输出均采用API函数,也就是说,输入每个特定信息的文本框是特定的。3 主模块三:水产品数据修改处理该模块包括3个子模块,分别是:鱼塘数据修改、投苗数据修改、苗种数据修改。在修改各模块时,应首先选中左侧树状图中的相应节点,然后,单击相应的修改按钮。若选中的节点与要修改的节点不在同一级,则不能修改成功。4 主模块四:水产品
6、数据查询处理该模块包括1个子模块,是:按时间查询苗种信息。使用查询操作时,应先在查询按钮左侧的起始时间和截止时间文本框内按格式(如:2011-01-01)输入,然后单击查询按钮,查询结果便会显示在右下方的列表中。如果日期的输入格式错误,则不能输出正确的查询结果。5主模块五:水产品数据统计处理该模块包括3个子模块,分别是:鱼塘数据统计、投苗数据统计、苗种数据统计。当信息节点创建或者载入时,节点信息下方用于显示统计结果的静态文本的示数都会产生变化。6主模块六:水产品数据排序处理该模块包括3个子模块,分别是:按投苗时间、按苗种单价、按投养数量。当完成查询功能后,可点击右端的排序按钮进行排序,单击按钮
7、后,右下方列表的顺序就会产生变化。7特别功能:树状图树状图是对本系统起到辅助作用的控件,可对各级链表节点的名称进行显示。单击树状图上的任意一个节点,即可在右侧浏览该节点信息。三、 数据结构设计及用法说明窗口内各控件的句柄名称:由于Windows程序设计采用法消息方式传递信息,所以每个窗口及窗口中的控件都唯一对应于一个句柄,通过句柄进行数据在控件间的传输,本程序中所采用的控件的句柄的名称如图所示:1 投苗节点(feed_node)结构及用法说明:中文字段名英文字段名类型及长度举例塘号pool_idchar4A01苗种编号fish_idchar8B001投养时间feed_timechar11201
8、1-03-16投养数量fed_numint1000单价fish_pricefloat1.2苗种来源fish_sourcechar20*厂供货单号provide_numchar8002左侧树状图的句柄MyTreeIDHTREEITEM无指向下一个投苗节点的指针nextstruct feed_node *无2 苗种节点(fish_node)结构及用法说明:中文字段名英文字段名类型及长度举例塘号pool_idchar4A01苗种编号fish_idchar8B001苗种名称fish_namechar20对虾规格fish_sizechar 51-2左侧树状图的句柄MyTreeIDHTREEITEM无指向
9、下一级投苗节点的指针fdownstruct feed_node *无指向下一个苗种节点的指针nextstruct fish_node *无3鱼塘节点(pool_node)结构及用法说明中文字段名英文字段名类型及长度举例塘号pool_idchar4A01水面积pool_sizefloat20(单位:平方米)左侧树状图的句柄MyTreeIDHTREEITEM无指向下一级苗种节点的指针downstruct fish_node *无指向下一个鱼塘节点的指针nextstruct pool_node *无数据结构说明: 鱼塘nNULL鱼塘2鱼塘1 head苗种1投苗信息链 苗种1基本信息 苗种2投苗信息链
10、苗种2基本信息 苗种n投苗信息链苗种n基本信息 图1水产品养殖信息管理系统十字交叉链表四、 程序结构本鱼塘管理系统的核心部分是主函数WinMain函数和消息处理函数MainWndProc。主函数用于注册窗口类、窗口和控件的创建,并通过调用消息处理函数,对用户的操作进行处理,即:调用相应的函数,以实现相应功能。主程序结构(WinMain):函数InitApplication中有主窗口消息处理函数Y调用函数InitInstance,创建主窗口和控件调用函数InitApplication,注册主窗口类消息循环开始N结束此处选择了单击菜单中的About-Help为例:即,wParam= ID_HELP_ABOUT弹出对话框 aboutwParam, 为消息的第一个参数wParam=?=uMsg=WM_COMMANDuMsg=? COMMANDuMsg, 为消息标识符UINT uMsg, 开始udefaultwParam= ID_HELP_ABOUTdefault()结束消息处理函数结构:在()处对应的说明:1。在“帮助”菜单中选择“关于”:wParam=ID_HELP_ABOUT相应事件:弹出对话框 about2。单击添加鱼塘按钮:wParam= ID