《软件工程课程设计出版社客户管理系统.doc》由会员分享,可在线阅读,更多相关《软件工程课程设计出版社客户管理系统.doc(40页珍藏版)》请在三一办公上搜索。
1、数学与计算机学院课程设计说明书课 程 名 称: 软件工程课程设计 课 程 代 码: 8404131 题 目: 出版社客户管理系统 年级/专业/班: 2009级软件四班 学 生 姓 名: 学 号: 开 始 时 间: 2011 年 05 月 27 日完 成 时 间: 2011 年 06 月 12 日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书(计算书、图纸、分析报告)撰写质量(45)总 分(100)指导教师签名: 年 月 日软 件 工 程 课 程 设 计 任 务 书学院名称: 数学与计算机学院 课程代码:_8404131_专 业: 软件工程 年 级: 2009
2、 一、设计题目出版社客户管理系统二、主要内容本课程是计算机软件专业的必修专业课程,通过理论讲述和实际训练,使学生掌握软件工程的基本原理和基本方法,学会用软件工程学的概念、原理、方法和技术开发和维护软件。本课程设计要求学生运用软件工程的思想,严格按照软件生命周期各阶段的目的和任务,完成对系统的定义、设计、编码、运行以及后期的维护。三、具体要求及应提交的材料1.分析阶段:一个小型的出版社客户管理系统系统,需完成以下工作:(1)在出版社客户管理系统中增加/删除一客户;(2)对某一客户赠送样书、发慰问信、发慰问礼品;(3)找出某一批出售书名和编号的相应客户;。导出系统的数据流程图和实体关系图(E-R)
3、2设计阶段: 针对分析阶段提出的软件要求,给出实现的方案和具体细节的说明。(1)考虑该软件基本功能成份,该系统具有3个基本功能成分:客户管理,系统设置,数据查询。(2)根据分析,导出系统的功能模块图。(3)设计数据库。使用Microsoft Access创建数据库。确定数据库中数据表的组成。确定数据表中字段的构成、主键字段和有关字段的约束条件等。依靠数据表中主键字段建立数据表之间的关系,并由此建立数据表之间的参照完整性约束。(4)根据功能确定软件模块组成及调用关系。3编码阶段建造模块,在可视化编程环境下,按照软件设计要求制作界面和完成对模块的编码,由此使软件设计具体化为软件作品。4.运行维护在
4、软件运行时,检查软件的不足或错误,并进行维护。5编写课程设计报告(1)设计题目(2)任务要求(3)系统总体方案(4)各功能模块和流程图(5)心得体会和参考资料注:学生完成课程设计后,提交课程设计报告及相关电子文档,要求将前述全部内容依先后顺序写成设计报告一份,要求文字通畅、字迹工整,文字不少于5000字,装订成册。四、主要技术路线提示五、进度安排序号设计内容天数1分析设计内容,给出解决方案32创建数据库及建表33可视化界面设计34对所建数据库进行设计,整理设计思路,编码、测试,写出课程设计报告35指导老师检查设计结果并做成绩评定2总 计14六、推荐参考资料(不少于3篇)1 张海藩. 软件工程导
5、论,清华大学出版社,20042 陈明. 实用软件工程基础,清华大学出版社,20033 殷人昆.实用软件工程,清华大学出版社,20034 宋波.UML面向对象技术与实践,科学出版社,2004 指导教师 签名日期 2011 年 5 月 27 日系 主 任 审核日期 2011 年 6 月 12 日目 录1 前言62 需求分析62.1 功能分析62.2 方案分析63 概要设计63.1 数据结构63.2 逻辑结构与物理结构63.3 功能模块划分73.4抽象数据类定义74 详细设计74.1 数据类型定义74.2 主要模块内部设计74.2.1模块1设计(实际写时用本题目对应的模块名称)74.2.2 模块2设
6、计(实际写时用本题目对应的模块名称)84.2.3 模块3设计(实际写时用本题目对应的模块名称)85 实现与调试分析85.1 实现环境85.2 语言选择85.3 调试分析86 测试分析86.1 测试用例86.2 测试结果86.3 性能分析87用户手册9总 结9参考文献91 前言随着生产规模的扩大、自动化技术的应用,以及市场经济体系的培育,使得我国企业管理的性质和环境都发生了巨大的变化。企业的组织机构更加庞大,管理功能更为复杂,企业各部门之间的联系越来越紧密,所采用的决策对经济的影响越来越复杂,因而管理决策问题不仅数量多,而且复杂程度高,难度大。管理信息系统在企业生产、管理中的应用越来越广泛和重要
7、,一套好的管理信息系统直接影响到企业的生存和发展。云南999电池股份有限公司管理信息系统(简称MDMIS),就是针对云南999电池股份有限公司的管理实际开发的软件系统,以期对该公司的生产、管理等活动进行科学、高效的管理。MDMIS是一个完整的企业管理信息系统,由多个模块有机结合而成,包括原辅材料管理、产成品管理、工资管理、固定资产管理、人事档案管理、技术档案管理、用户与市场管理、财务管理、成本核算、内部银行微机管理等十多个软件模块。本说明书介绍的是MDMIS中的产品管理子系统的开发过程。为了解决各种客户和各地客户的矛盾,出版社的信息化网络化管理是势在必行。因此出版社的客户管理系统就不可缺少了。
8、2 需求分析出版社管理系统是一个庞大的任务,传统方式会造成巨大的人力和物力资源浪费。我们需要设计一个让工作人员使用的计算软件的系统,减少工作量,实现出版社客户管理的高效化,进行相应的查找、修改、删除等功能。 2.1 功能分析 1.待开发软件的功能需求产成品管理信息系统必须能够完成对公司产成品入库、出库数据的录入、更新、统计、查询、打印等工作,进行高效、准确的管理。产生以下信息:(1)产品库存表:随时(定期/不定期)报告产品库存情况;(2)产品生产完成情况表:按要求定期/不定期报告产品生产情况;(3)产品出库情况表:按要求定期/不定期报告产品出库情况;(4)产品生产、销售、库存情况表:按要求报告
9、一定时期内产品生产、销售和当前库存情况;以上四表,满足了企业生产、销售、对帐等各方面管理的需要。2.待开发软件的功能按照用户需求,要满足以上功能,我们设计出了产品管理系统的结构。见图1 。产成品管理数据归档查询统计打印报表查询统计入库情况查询统计出库情况入库数据归档出库数据归档打印入库情况打印出库情况打印库存情况打印月末库存情况数据维护月末处理入库数据维护出库数据维护图2.1 产成品管理系统层次方框图结合系统需求,对图1所示的系统功能解释如下:维护入库:提供对产成品入库数据的维护(记录的录入、归档前的数据编辑)功能。维护出库:提供对产成品出库数据的维护。数据归档:实现入库、出库记录的数据归档。
10、统计入库情况:提供对产成品信息的各种查询、统计,以及对错录产品入库单的维护功能,当用户输入正确的密码后,系统允许用户维护错录或数据归档前未发现的错误记录。统计出库情况:提供对产成品销售信息的各种查询、统计,以及对错录产品出厂记录的维护功能。定期打印入库情况:显示/打印任一时期,任一生产阶段的各生产车间以及全公司的产成品生产情况。还可以按用户要求定期打印反映整个企业生产的汇总、明细报表。其中明细报表反映了各生产车间的生产完成情况,汇总报表反映了全公司的生产完成情况。定期打印出库(销售)情况:对任一时期、任一阶段各种产成品的出库情况进行报表显示或打印,以汇总、明细报表反映公司的产成品销售情况。显示
11、/打印库存情况:统计显示/打印出截止打印时刻为止的全公司和各产成品车间的各种产成品的库存情况。报表分为汇总和明细两表,以满足不同的统计和查询要求。打印月末仓库情况:完成全公司和各车间的各种产成品的上月结存数、本月生产数、本月出库数、本月结存数的统计、汇总,生成月末结帐表,为生产部门、物资管理部门、财务部门等相关业务部门提供考核、对帐、记帐等方面的产成品信息。月末处理:提供了对各种产成品数据的转移功能。完成了下月统计、记帐的初始化工作(如提供上月结存数)。同时,通过分析,我们给出了成品管理系统的顶层数据流图。见图2。记录数据用户生产部门库存打印机报表购货请求反馈信息反馈信息入库请求处理图2.2
12、产成品管理系统顶层数据流图2.2 方案分析设计该系统需要解决的主要问题是对出版社客户的管理,需要及时的与服务器进行通信、保持信息及时的动态更新。该方案主要用C语言设计实现,使用C语言可以在设计时按照结构图逐次的设计模块,并且C语言使用起来简单一点。该方案采用瀑布模型建立,因为这个系统的规模不是很大,采用瀑布模型能更快捷、安全的进行开发。技术可行性:前面做了详细的需求分析,大致把握了该教室管理系统的功能及用户的需求,另外在该系统之前已有类似的管理系统,比如图书管理系统,机票管理系统等在技术方面开发人员可以借鉴,所以技术上是可行的。 经济可行性:软件的开发,不但要考虑到当前技术的可行性,还要考虑到
13、软件开发的成本/效益,所谓经济可行性,换句话说,也就是说通过成本/效益分析,总结整个软件的开 发经费,以及软件开发成功以后,可能给学校带来的经济效益,把两者进行权衡,再作认真仔细的估计,总结整个系统在经济上是否可行。本系统的开发成本主要包 括计算机软硬件配置成本;效益主要包括学校在多媒体教室管理上节省的人力资源,以及学校信息化建设的要求,总的来说经济上也是可行的。 操作可行性分析:虽然该系统是在控制台上运行的,用户界面不是很好,但开发人员作了大量的提示语句。操作人员不需要 太多的计算机专业知识,只要懂得计算机的基本操作,并且对本系统有基本的了解,按照提示语句就可以了,而且本系统会提供给使用者详
14、尽的使用说明,也可以对使用者进行短 期的操作培训,所以,从操作上来讲,该教室管理系统是完全可行的。3 概要设计 本软件将辅助管理人员完成全公司产成品入库、出库、库存等方面的管理,可以进行查询、统计、打印报表等工作,提高公司对产成品的管理效率。在分析阶段,我们已经提出了系统的结构、顶层数据流图和数据字典。本节我们将对系统的硬件环境作简要介绍,并对待开发系统作概要设计。3.1 数据结构 3.2 逻辑结构与物理结构逻辑结构设计1) 数据库Sale-Management-name Table定义如表3.1所示。表3.1数据库Sale-Management-name Table定义2) 配置文件:保留上
15、次程序运行结束后的相关状态如表3.2所示。表3.2 上次运行结束后的相关状态3) 全局变量如表3.3所示。表3.3 全局变量物理结构设计数据库Sale-Management-name的文件物理结构:采用顺序介机构记录文件数据结构与程序的关系 初始化模块(M1.1):我们将会设置全局变量15; 刷新基本资料模块(M1.2):利用全局变量3、4的基本信息,有可能访问数据库; 刷新详细资料模块(M1.3):访问数据库和全局变量3、4的详细信息; 关闭系统模块(M1.4):将全局变量1、5保存至配置文件中; 系统功能模块(M1.5):利用鼠标和键盘操作事件; 信息添加模块(M2.1):设置全局变量1、
16、2、4和5; 信息删除模块(M2.2):利用全局变量3和4,设置全局变量1、2和4; 信息修改模块(M2.3):访问数据库和全局变量3; 查询模块(M2.4):查询客户基本信息; 客户权益分配模块(M2.5):利用全局变量4中的相应数据; 客户类型分配模(M2.6):利用全局变量4、5中的相应数据; 接受订单模块(M3.1):利用全局变量1中的数据; 订单审核模块(M3.2):利用全局变量1和5中的信息; 撤销订单模块(M3.3):完成用户撤销订单的功能; 修改订单模块(M3.4):完成客户对已交订单的修改; 查询订单模块(M3.5):完成查询客户订单的功能; 发货单模块(M4.1):由公司像
17、生产商发出订货单; 收款模块(M4.2):公司向客户发出收款请求并收款; 综合查询模块(M4.3):完成客户对整个过程的查询; 报表生成功能(M5.1):当前记录生成报表; 打印功能(M6):利用全局变量2、3和4; 导入导出模块(M7):完成对数据的导入和导出; 帮助模块(M8):为用户提供随时的操作帮助; 密码管理模块(M9):完成对用户密码的管理; 身份验证模块(M10);完成对用户身份的验证,以便分配相应的功能;3.3 功能模块划分3.3.1结构框图 3.4结构框图3.3.2程序流图 3.3.3模块功能分析及外部设计表4模块设计功能分配系统控制功能 初始化模块(M1.1); 刷新基本资
18、料模块(M1.2); 刷新详细资料模块(M1.3); 关闭系统模块(M1.4); 系统功能模块(M1.5);客户关系管理功能: 信息添加模块(M2.1); 信息删除模块(M2.2); 信息修改模块(M2.3); 刷新基本资料模块(M1.2); 刷新详细资料模块(M1.3); 查询模块(M2.4); 客户权益分配模块(M2.5); 客户类型分配模(M2.6);订单管理功能: 接受订单模块(M3.1); 订单审核模块(M3.2); 撤销订单模块(M3.3); 修改订单模块(M3.4); 刷新基本资料模块(M1.2); 刷新详细资料模块(M1.3); 查询订单模块(M3.5);销售与收款功能: 发货
19、单模块(M4.1); 收款模块(M4.2); 综合查询模块(M4.3); 刷新基本资料模块(M1.2); 刷新详细资料模块(M1.3); 报表生成功能: 报表生成功能(M5);打印功能: 打印功能(M6);导入导出功能: 导入导出模块(M7);帮助功能: 帮助模块(M8);密码管理功能: 密码管理模块(M9);身份验证功能: 身份验证模块(M10);3.4抽象数据类定义void input(); / 信息录入void output(); / 信息输出void amend(); / 信息修改void Delete(); / 修改操作void menu(); / 菜单void search();
20、/查找函数4 详细设计4.1 数据类型定义struct member int date; / 日期 char id15; / 客户编号char name11; / 客户姓名最多5个汉字int phonenumber15; / 电话号码 最多5个汉字;4.2 主要模块内部设计void main( )int choice; /存放用户的操作选项menu( );while(1)printf( 请选择:); scanf(%d,&choice); / 输入要执行功能的对应数字 switch(choice)default: exit(0); / 调用结束函数 case 1: input(); / 调用输入
21、函数 break ; case 2: output(); / 调用输出函数 break ;case 3: amend(); / 调用修改函数 break; case 4: sta(); / 调用统计函数 break; printf(nn); menu( );4.2.1模块1设计4.2.1.1 模块算法void input() / 输入函数int i=0;char ch=kk;FILE *fp;fp=fopen(D:WORKERINFOR-1.rec,ab+);while(i=99) printf(挂号信息已录满!n);fclose(fp);4.2.1.2 流程图4.2.2 模块2设计void
22、output() /输出函数int i=0;char ch; /储存字符Y/NFILE *fp;fp=fopen(D:WORKERINFOR-1.rec,rb);while(!fp) / 保证成功打开文件fp=fopen(D:WORKERINFOR-1.rec,rb); printf(-n);printf( 客户编号 客户姓名 日期 电话号码 客户费用 n);printf(-n);while(fread(&numi,sizeof(numi),1,fp)=1)if(strcmp(numi.name,numi-1.name ) / 避免因删除了某条记录而造成的最后一条记录重复操作一次printf(
23、 %s %s %d %dn,numi.id,numi.name,numi.date,numi.phonenumber,numi.fee);i+;doprintf( 返回主菜单(Y/N):);getchar(); /跳过回车符ch=getchar();if(ch=y|ch=Y) break;else exit(0);while(1);4.2.3 模块3设计void sta() / 统计函数int i=0,count=0; / count 统计人数char ch; / 接受回车符float feesum=0; / numbersum表示本日客户费用FILE *fp;fp=fopen(D:WORKE
24、RINFOR-1.rec,rb);while(!fp) / 保证成功打开文件fp=fopen(D:WORKERINFOR-1.rec,rb);while(fread(&numi,sizeof(numi),1,fp)=1)if(strcmp(numi.name,numi-1.name) / 避免因删除了某条记录而造成的最后一条记录重复操作一次 feesum=feesum+numi.fee;count+;i+;printf( 本日总的客户费用:%d 总人数:%dn,feesum,count);doprintf( 返回主菜单(Y/N):);getchar(); /跳过回车符ch=getchar();
25、if(ch=y|ch=Y) break;else exit(0);while(1);void amend() / 修改函数int i=0,choose; / 存放修改项char NAME11;FILE *fp;fp=fopen(D:WORKERINFOR-1.rec,rb+);while(!fp) / 保证成功打开文件fp=fopen(D:WORKERINFOR-1.rec,rb+);printf( 输入将要修改的客户编号:);scanf(%s,&NAME);while(fread(&numi,sizeof(numi),1,fp)=1) if(!strcmp(numi.name,NAME)pr
26、intf( 修改选项:n 1、客户编号 2、客户姓名 3、日期 4、电话号码 10、费用n 请选择:);scanf(%d,&choose);switch(choose)case 1: printf(客 户 编 号:); scanf(%s,&numi.id);break;case 2: printf(客 户 姓 名:); scanf(%s,&numi.name);break;case 3: printf(日 期:); scanf(%f,&numi.date);break;case 4: printf(电 话 号 码:); scanf(%d,&numi.phonenumber); break;ca
27、se 5: printf(客 户 费 用:); scanf(%f,&numi.fee);break;default: printf( 输入错误! n); break; fseek(fp,-68L,1);fwrite(&numi,sizeof(numi),1,fp);printf(n 该挂号信息修改成功!n);break;i+; fclose(fp);5 实现与调试分析5.1 实现环境硬件: 装有Windows XP的微型计算机。软件: Microsoft Visual C+6.0。5.2 语言选择C语言5.3 调试分析一个好的程序员不应该把所有的判断交给编译器和调试器,应该在程序中自己加以程序
28、保护和错误定位,具体措施包括: 对于所有有返回值的函数,都应该检查返回值,除非你确信这个函数调用绝对不会出错,或者不关心它是否出错。 一些函数返回错误,需要用其他函数获得错误的具体信息。例如accept返回INVALID_SOCKET表示accept失败,为了查明 具体的失败原因,应该立刻用WSAGetLastError获得错误码,并针对性的解决问题。 有些函数通过异常机制抛出错误,应该用TRY-CATCH语句来检查错误 程序员对于能处理的错误,应该自己在底层处理,对于不能处理的,应该报告给用户让他们决定怎么处理。如果程序出了异常, 却不对返回值和其他机制返回的错误信息进行判断,只能是加大了找
29、错误的难度。 另外:VC中要编制程序不应该一开始就写cpp/h文件,而应该首先创建一个合适的工程。因为只有这样,VC才能选择合适的编译、连接 选项。对于加入到工程中的cpp文件,应该检查是否在第一行显式的包含stdafx.h头文件,这是Microsoft Visual Studio为了加快编译 速度而设置的预编译头文件。在这个#include stdafx.h行前面的所有代码将被忽略,所以其他头文件应该在这一行后面被包含。对于.c文件,由于不能包含stdafx.h,因此可以通过Project settings把它的预编译头设置为“不使用”,方法是: 弹出Project settings对话框
30、选择C/C+ Category选择Precompilation Header 选择不使用预编译头。 6 测试分析测试结果测试1:名称:系统操作登录测试 目的:测试系统操作界面。 内容:帐号口令输入、合理性检查、合法性检查,系统操作界面显示控制输入数据:(账号)admin (密码)123456预期输出结果:用户界面(提供功能选择);测试结果测试2:名称:1号功能测试 目的:测试系统1号功能。 内容:输入功能键1,客户信息输入输入数据:1(1号功能选项)预期输出结果:按一定的格式完整的输入所有客户基本信息;测试结果测试3:名称:2号功能测试 目的:测试系统2号功能。 内容:输入功能键2,系统界面的
31、显示输入数据:2(2号功能选项),5(课程编号)预期输出结果:5:显示输入客户信息;测试结果测试4:名称:3号功能测试 目的:测试系统3号功能。 内容:输入功能键3,输入学号和课程编号,记录保存输入数据:3(3号功能选项)修改信息预期输出结果:修改指定用户信息;6.1 测试用例 | 请选择:1客户 编 号:01客户姓名:a日 期 :111电话号码:123该信息已录完,请录入下一个客户信息!客户 编 号:02客户姓名:b日 期 :111电话号码:124该信息已录完,请录入下一个客户信息!客户 编 号:kk | | |6.2 测试结果请选择:1客户 编 号:1客户姓名:1日 期 :111电话号码:
32、111客户费用:11该挂号信息已录完,请录入下一个客户信息 | 请选择:2- 客户编号 客户姓名 日期 电话号码-01 a 111 12302 b 111 124 返回主菜单(Y/N):y!请选择:3 输入将要查找的客户编号:01 客户编号 客户姓名 日期 电话号码01 a 111 123请选择:4 输入将要修改的客户编号:01 修改选项: 1、客户编号 2、客户姓名 3、日期 4、电话号码 请选择:2客 户 姓 名:c 该信息修改成功! | 请选择:5 输入将要删除的客户编号:02 该信息删除成功!6.3 性能分析故障处理要求 :对于该学生选课系统,用户提出的故障可能有:软件无法安装或者软件
33、停止运行以及此时应该采取什么措施恢复数据。当软件无法安装时,可以查看帮助手册,安装相关软件或者修复受损文件。当软件停止运行时,强行关机重启后,可以根据系统的自动备份或者在操作之前的手工备份来恢复数据,保证系统数据的正确性。安全性要求 :因为学生选课系统关系到学校及学生的重要成绩信息,所以对于学校而言对安全保密性的要求非常严格,此系统是面向所有的在校学生及老师,大多数人都不是专业的计算机操作人员,因此对该系统使用的方便性要求也较高可扩充性要求 :任何软件都有缺陷,对于学生选课系统但学校的需求发生变化时,增加一个新的功能模块,要求系统能够很好地对其进行扩充,既可补充性。可维护性要求 :当操作系统平
34、台发生变化或者支持软件学生信息管理系统发生变化时,为了适应这些变化必需对系统进行维护,即要求有可维护性。7用户手册管理员登陆: 1.输入客户信息 2.显示客户 3.修改客户信息 4.统计本日费用总 结 由于是第一次开发一个完整的程序,所以许多工作都在摸索着进行,在我们的贵老师的帮助下,我与我们组的成员的共同努力下,完成了程序规定的功能要求。本系统采用当前流行的面向对象的开发工具VB来完成整个系统的设计,在数据库的设计上利用了SQL的便利性和实用性。本系统具有相当的实用功能。在查询方面,系统实现了多条件任意字段的模糊查询,同时在分类查询上实现了动态生成。系统在设计过程中不可避免地遇到了各种各样的
35、问题,由于整个系统完全都是由个人设计的,有关VB许多细节问题都要靠自己去摸索,加之本人水平有限,并没有完全地理解VB和SQL的强大功能,而且还存在着许多不足之处。由于时间关系,系统功能实现不够完善,使用不是很方便。参考文献 1 张海藩. 软件工程导论. 北京:清华大学出版社,20042 陈明. 实用软件工程基础. 北京:清华大学出版社,20033 殷人昆. 实用软件工程. 北京:清华大学出版社,2003/ EWM.cpp : 定义控制台应用程序的入口点。/*#include stdafx.hint _tmain(int argc, _TCHAR* argv)return 0;*/#includ
36、e#include#include#includestruct member char date9; / 日期 char id15; / 客户编号char name11; / 客户姓名最多5个汉字int phonenumber; / 电话号码;typedef struct member member;member num100; / 定义了一个100个元素的结构体数组(最多100个)#define InputNum 20int count1=0,count2=0;/*函数声明*void input(); / 信息录入void output(); / 信息输出void amend(); / 信息
37、修改void Delete(); / 修改操作void menu(); / 菜单void search(); /查找函数/*主函数*void main( )int choice; /存放用户的操作选项menu( );while(1)printf( 请选择:); scanf(%d,&choice); / 输入要执行功能的对应数字 switch(choice) default: exit(0); / 调用结束函数 case 1: input(); / 调用输入函数 break ; case 2: output(); / 调用输出函数 break ; case 3: search(); break; case 4: amend(); / 调用修改函数 break; case 5: D