《数据结构课程项目实施方案(草稿)v1.0_(范例)》由会员分享,可在线阅读,更多相关《数据结构课程项目实施方案(草稿)v1.0_(范例)(9页珍藏版)》请在金锄头文库上搜索。
1、1 V1020110420 Powered by Edvard 注:以上引用的项目程序代码及图表来源于互联网,本文仅起样式示范作用,所有权归原作者所有 数据结构课程项目实施方案范例数据结构课程项目实施方案范例 V1.0(草稿)(草稿) 一、项目名称一、项目名称: 商品管理系统商品管理系统 二、项目要求及系统基本功能二、项目要求及系统基本功能 利用数据结构的知识独立完成一个应用系统设计 程序正常运行,能够实现基本的数据增加、删除、修改、查询等功能 体现程序实现算法复杂度优化 体现程序的健壮性 系统预期实现基本功能:系统预期实现基本功能: (结合本系统预期具体实现,描述出对应基本要求(增、删、改、
2、查等)的具体功能) 1. 以链表结构的有序表表示某商场家电部的库存模型,当有提货或进货时需要对该链表及时进行维护 2. 每个工作日结束以后,将该链表中的数据以文件形式保存,每日开始营业之前,须将文件形式保存的 数据恢复成链表结构的有序表。 3. 链表结构的数据域 包括家电名称、品牌、单价和数量,以单价的升序体现链表的有序性。 4. 程序功能包括:初始化、创建表、插入、删除、更新数据、查询及链表数据与文件之间的转换等。 三、项目组成员及任务分配三、项目组成员及任务分配 (基本分为组织实施组织、程序功能模块编写、系统说明撰写等。其中程序功能子模块实现每一个成员都 要分配) 组长:孔一 主要任务:X
3、XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 组员:孔二 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 组员:孔三 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 组员:孔四 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 组员:孔五 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 组员:孔六 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 2 V1020110420 Powered by Edvard 注:以上引用的项目程序代码及图表
4、来源于互联网,本文仅起样式示范作用,所有权归原作者所有 组员:孔七 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 组员:孔八 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 四、系统设计算法描述四、系统设计算法描述 (用文字结合框图描述系统功能主要实现算法思路等,即使用自然语言描述系统实现) 1 信息管理:用来查询系统中要用来进行进货、出货操作的商品的信息,一般访问者都可以使用该功能 2 日常操作:商品进货与出货操作; 3 信息查询: A 库存信息查询:用来查询库存的商品的信息,可以按照商品编号、商品名称和商品类别来查询,可以将查 询结
5、果打印输出。 B 进货信息查询:用来查询商品的进货记录,可以按照商品编号、商品名称、商品类别和进货日期查询,可 以将查询结果打印输出。 C 出货信息查询:用来查询商品的出货记录,可以按照商品编号、商品名称、商品类别、经手人和出货日期 查询,可以将查询结果打印输出。 4 系统管理 A 系统登录:用来验证登录的系统的合法性,只有合法的系统用户才能登录系统并且使用系统功能。 5 关于:用来显示程序的名称、版本、版权,操作系统的登录用户名及系统得可用资源等信息 3 V1020110420 Powered by Edvard 注:以上引用的项目程序代码及图表来源于互联网,本文仅起样式示范作用,所有权归原
6、作者所有 五、系统实现程序五、系统实现程序 程序流程图程序流程图 (主要以程序流程图的形式体现各函数之间的运行调用关系) 4 V1020110420 Powered by Edvard 注:以上引用的项目程序代码及图表来源于互联网,本文仅起样式示范作用,所有权归原作者所有 程序源代码分析程序源代码分析 (分析系统关键功能代码,系统实现具体源代码打包和文档一起提交) 1、解决同名冲突、解决同名冲突 OnFlush2() ? int Num=(CComboBox*)GetDlgItem(IDC_COMBO1)-GetCount(); for(int i=0;iGetLBText(i,temp);
7、(CComboBox*)GetDlgItem(IDC_COMBO1)-GetLBText(j,temp1); if(!strcmp(temp,temp1) (CComboBox*)GetDlgItem(IDC_COMBO1)-DeleteString(j); Num-=1; 功能功能:解决同商品名的冲突问题,在此情况下,以串比较的方式,删除同名串,继续进行数据查询与 操作,并对结果作同目录下合并显示 2、文件读取与保存、文件读取与保存 void CGoogsManagerDlg:OnOpenFile() / TODO: Add your control notification handler
8、 code here Types *pC,*tempC; Detail *pD,*tempD; int i,j; CFileDialog fileDlg(TRUE); fileDlg.m_ofn.lpstrTitle=“读取库存文件“; fileDlg.m_ofn.lpstrFilter=“Text Files(*.txt)0*.txt0All Files(*.*)0*.*00“; CFileDialog fileDlg(TRUE); fileDlg.m_ofn.lpstrTitle=“读取库存文件“; fileDlg.m_ofn.lpstrFilter=“Text Files(*.txt)0
9、*.txt0All Files(*.*)0*.*00“; if(IDOK=fileDlg.DoModal() CFile file(fileDlg.GetFileName(),CFile:modeRead); if(!head) 5 V1020110420 Powered by Edvard 注:以上引用的项目程序代码及图表来源于互联网,本文仅起样式示范作用,所有权归原作者所有 head=(Types *)malloc(sizeof(Types); head-first=NULL; head-next=NULL; pC=head; file.Read( while(i0) tempC=(Typ
10、es *)malloc(sizeof(Types); if(!tempC) MessageBox(“读取失败“); file.Read(tempC,sizeof(Types); tempC-next=NULL; /消除不定指针 tempC-first=NULL; pC-next=tempC; 3、迅速查找到问题节点、迅速查找到问题节点 在链表的操作中, 经常会遇到死链或短链的情况, 如何迅速查找到问题节点有重要的作用; 方法一:再构造了一个双向链,不存储原来的数据而存储节点指针: typedef struct _PtrLinkNode LinkNode* theNode; struct _Pt
11、rLinkNode* prev; struct _PtrLinkNode* next; PtrLinkNode; 然后在逆转链表时把当前节点指针加入到这个双向链表中。 当逆转结束时如果这个双向链 表的首尾的 theNode 不相等, 则说明没有死链, 再逆转回来就可以了; 如果相等, 则存在死链, 再在这个双向链表从两端向中间进行首尾比较,直到遇到不相等的两个节点,这两个节点形成 的闭区间就是原来形成死链的节点,顺序与现在在双向链表中的顺序相同。把双向链表中位于 这个区间之后的节点支掉, 然后按双向链表的顺序重建链表就可以恢复出原来的链表并去除死 链。时间复杂度和空间复杂度都是 O(N)。 方
12、法二:顺序遍历链表,记录最小节点地址(min_node)、最大节点地址(max_node)和节点数 (node_count),并判断条件 node_count = (char*)max_node-(char*)min_node)/sizeof(node) + 如果条件不 满足, 则说明存在死链, 并结束遍历该方法不需要修改任何内容, 也不需要预先知道节点总数, 当链表存储较为集中时效率也还可以接受 6 V1020110420 Powered by Edvard 注:以上引用的项目程序代码及图表来源于互联网,本文仅起样式示范作用,所有权归原作者所有 六、系统使用说明六、系统使用说明 (系统运行时
13、,用户如何操作的说明,文字图表结合的方式) 1、程序安装配置 由于使用 MFC,在创建类、窗体及控件事件时,系统自动生成 StdAfx.cpp在相应项目的目录下产生预编译头文件: Stdafx.h 标准 AFX 头文件,用来产生预编译的类型信息。 resource.h定义了各种资源 ID GoodManager.h 函数说明予类的定义 GoodManagerDlg.h系统自动生成得函数声明与接口定义 GoodManagerDlg.cpp主体程序 2、操作细则与功能说明 (1) 程序编译组建后,将生成一个 EXE 文件,如左图,双击,进入程序。 (2) 进入欢迎界面,此时可以进行的操作有:显示当
14、前库存、再如库存文件、保存库存文件、退出管理系统; (3) 查询当前库存,可选第某一款商品,查询其条形码号、单位价格与库存数量。如下图所示: 商品名称商品名称显示的是大类的系统主体文件构成系统主体文件构成 7 V1020110420 Powered by Edvard 注:以上引用的项目程序代码及图表来源于互联网,本文仅起样式示范作用,所有权归原作者所有 商品属性,条形码号条形码号是区别每一款不同商品的依据, (4) 输入正确的用户名与密码,即可使用管理功能: 商品信息通过四个列表框显 示出来 下方展开管理界面: 此时能够操作的功能有: 增加记录 删减记录 查找记录 出售商品 打印报表 时间检
15、索 (5) 完成对库存的操作后,保存库存文件,正常退出管理程序 (6) 在下次使用该程序的时候没,可以调用原先保存得库存文件 8 V1020110420 Powered by Edvard 注:以上引用的项目程序代码及图表来源于互联网,本文仅起样式示范作用,所有权归原作者所有 功能说明: 显示当前库存:a 当前为初次开启时,载入预存库存信息; B 当前为开启文档时,若无,则新建空文档,通过管理库存来修改操作 载入库存文件:打开已有的数据文档文件,并显示在下方列表内 保存库存文件:保存对数据文件的操作 管理库存:通过对用户名和密码的判断,确定使能与否 增加记录:1 判断是否为新的商品种类 2 判断是否为已有商品种类的新的品牌分支 3 判断是否为已有品牌分支的数量变化 通过上述判断,分不同情况对已有库存进行操作 删除记录:原理同上 查找记录:可以选择不同的查找方式:商品类别与条形码号 出售商品:选定某一款商品,填入出售数量,即可完成操作,如果所填数量不在库存数量的范围,则会提醒犯错 打印报表:与并行打印机相连,将库存文件打印出来 时间检索:添加日历功能,使用者可以方便地查询时间 备注:由于时间问题,删除功能没有完全实现 9 V1020110420 Powered by Edvard 注:以上引用的项目程序代码及图表来源于互联网,本文仅起样式示范作用,