软件工程实验课题

合集下载

软件工程实验文档(精选五篇)

软件工程实验文档(精选五篇)

软件工程实验文档(精选五篇)第一篇:软件工程实验文档《软件工程课程设计》一、提交实验报告文挡及要求序报告名目的要求号称以全面、系统的分析为主要方法,经济效益为核心,围绕影响项目的可行性各种因素,运用大量的数据资料论证拟建项目是否可行,给出项目可1分析行性分析报告。

2 3 项目需根据给定的的题目或自选题目进行需求分析工作;进行功能需求、非求分析功能需求分析得出需求规格说明书。

项目概建立初始结构图,对初始结构构图进行改进、优化得出概要设计说明要设计书。

项目详进行详细设计工作,得出详细设计说明书。

细设计项目编本次实习不需编码码 5进行黑盒、白盒测试试用例设计形成测试用例表;项目测进行黑盒测试,得出测试记录; 6试进行白盒测试,得出测试记录;形成测试报告。

7 项目管利用Project进行项目计划、进度、协调等管理材料。

理二、课程实践选题(课程设计题目)题目一:电子商务网站建设是一个集客户购物、下订单、订单处理、销售统计等功能于一体的系统。

通过浏览器,让客户可以查询货物,把货物放入购物车,创建账户/登陆账户,创建订单,通过信用卡支付等。

系统划分成了多个模块,松耦合的设计架构,允许可以和多个数据源,EIS(企业信息系统)进行交互。

功能如下: 1.用户注册/登陆/忘记密码/管理个人信息查询货物购物车管理提交订单信用卡支付查询历史购物记录 2.货物商店接受/处理订单消息手工接受/拒绝订单用E-mail来通知客户发订单给供应商销售统计 3.供应商接受订单派送货物给用户提供一个基于web的库存管理维护库存数据库题目二:外文图书采购系统 1.问题概述某图书馆外文采购有两个组--征订组和验收登记组。

分别承担书籍订购和进书验收任务。

为了减轻劳动强度和提高工作效率,打算采用计算机进行管理。

为此,系统分析员在进行了调查研究,描述出外文采购室现行系流程。

1)订书组从供书单价收到订书目录,根据各单位的需要选择出要订购的书目。

2)为了避免浪费,对于已进入过或已订过的图书和订单留底。

软件工程实验——软件设计

软件工程实验——软件设计
软件学院实验报告
姓名ห้องสมุดไป่ตู้
学号
实验成绩
专业年级
计算机科学与技术
班级
实验日期
2023.12.8
课程名称
软件工程
任课教师
实验名称
软件设计
实验序号
4
实验室
S407
指导教师
实验目的
(1)加深理解软件系统的设计任务、过程及原则。
(2)能选择合适的方法与工具,设计软件项目的系统结构与软件结构。
(3)能设计软件项目界面。
5.参考国家相关的文档规范,通过不断地学习以及交流讨论,完善文档规范,编写更加完美的设计文档。
心得体会:
在完成注册登录模块设计的过程中,我深刻认识到系统设计的重要性。合理的模块划分和清晰的接口设计是确保整个系统协同工作的关键。
此外,对安全性的关注让我更加关注用户数据的保护,提高了系统的可信度。
团队合作也在这个过程中得到了锻炼,每个成员充分发挥了自己的专业优势,共同推动了软件设计的进展。
该实验的成功实施为我今后的软件工程项目打下了坚实的基础,也让我更加深刻地理解了系统设计和安全性的重要性。在不断优化和改进的过程中,我相信我的软件系统会更加健壮、安全、高效。
(4)设计相关模块的接口、数据(库)与界面。
(5)设计相关模块的过程、算法以及数据结构。
(6)其他相关方面的设计,比如性能、安全性等。
(7)撰写实验报告。实验报告应该包括实验目的、实验内容、实验方法及步骤、实验数据及分析,以及实验总结等内容。
(8)撰写软件设计文档。
实验结果(代码)
(可附页)
我负责的任务:任务分工,注册登录模块,安全性设计,成果汇总,撰写详细设计报告,所有任务成功完成,下面是成果(由于文字过多,以截图的形式展示):

软件课程设计实验报告(3篇)

软件课程设计实验报告(3篇)

软件课程设计实验报告(3篇)【导语】软件课程设计试验报告怎么写出亮点?整理了3篇优秀的《软件课程设计试验报告》通用版范文,有规范的开头结尾写法和标准的书写格式。

是您写出深受大家欢迎的综合报告抱负参考模板,盼望对您有所关心。

【第1篇】软件课程设计试验报告一、目的、要求通过该课程设计要使同学树立起剧烈的工程化意识,用工程化思想和方法开发软件。

切实体会出用软件工程的方法开发系统与一般程序设计方法的不同之处,同学在对所开发的系统进行软件方案、需求分析、设计的基础上,实现并测试实际开发的系统。

通过一系列规范化软件文档的编写和系统实现,使同学具备实际软件项目分析、设计、实现和测试的基本力量。

二、主要内容要求同学把握软件工程的基本概念、基本方法和基本原理,为将来从事软件的研发和管理奠定基础。

每个同学选择一个小型软件项目(内容参照《计算机综合实践指导》,宋雨等编著,清华高校出版社出版),根据软件工程的生命周期,完成软件方案、需求分析、软件设计、编码实现、软件测试及软件维护等软件工程工作,并按要求编写出相应的`文档。

详细的方法可以选用传统的软件工程方法或者面对对象的方法,开发环境和工具不限。

三、进度方案略四、设计成果要求1.至少提交4个文档,包括软件方案、软件需求规格说明书、软件设计说明书、软件测试方案,要求文档格式规范、规律性强(可参考《计算机综合实践指导》中给出的要求及格式)、图表规范;2.独自实现了系统的某些功能,基本达到了要求的性能,经过了测试,基本能运行。

五、考核方式(1)提交的文档规范,工作量大,文档规律性强、正确,按《计算机综合实践指导》标准考核(附《软件工程课程设计》试验报告评分表)占60%(2)系统验收、讲解、答辩占25% (3)考勤占15%软件课程设计试验报告【第2篇】应用软件课程设计报告计算机是一门技术性、工程性和应用性很强的学科,教育部高等学校计算机科学与技术教学指导委员会的进展战略讨论报告中也指出:计算机专业的人才应当被分为科学型、工程型、应用型三类,而绝大多数应当是工程型和应用型的。

软件工程的15个课程设计课题样本

软件工程的15个课程设计课题样本

●题目一: “教务管理系统之子系统——学院课程安排”●系统简介每个学期期中, 学校教务处向各个学院发出下各学期教学筹划, 涉及课程名称、课程代码、学时、班级类别(本科、专科、成人教诲、研究生)、班号等;学院教学主管人员依照教学任务和规定给出各个课程有关限制(如: 任课教师职称、上课班数、最高和最低周学时数等);任课教师自报本人授课筹划, 经所在教研室协调任可, 将教学筹划上交学院主管教学筹划人员, 批准后上报学校教务处, 最后由教务处给出下个学期全学院教师教学任务书。

●假设上述排课过程所有由人工操作, 现规定为上述过程实现计算机自动解决过程。

●限定条件(1)每位教师主授课程门数不超过2门/学期: 讲师如下职称教师不能承担学院定主课主讲任务。

(2)学院中层干部主讲学时不能超过4学时/周。

(3)本学期浮现严重教学事故教师不能承担下各学期主讲任务。

(4)本系统输入项至少涉及: 教务处布置教学筹划, 学院教师自报授课筹划和学院定关于授课限制条件。

本系统输出项至少涉及: 教务处最后下达全院教师教学任务书和学院各个班级下各学期课程表(可以不含上课地点)。

●题目二: “学校教材定购系统”●系统简介本系统可以细化为两个子系统: 销售系统和采购系统销售系统重要工作过程为: 一方面由教师或学生提交购书单, 经教材发行人员审核是有效购书单后, 开发票、登记并返给教师或学生领书单, 教师或学生可以到书库领书。

采购系统重要工作过程为:若是教材脱销, 则登记缺书, 发缺书单给书库采购人员;一旦新书入库后, 即发进书告知给教材发行人员。

以上功能规定在计算机上实现。

●技术规定和限制条件(1)当书库中各种书籍数量发生变化(涉及进书和出书)时, 都应修改有关书库记录, 如库存表或进/出库表。

(2)在实现上述销售和采购工作过程时, 需考虑关于合法性验证。

系统外部项至少涉及: 教师、学生和教材工作人员。

系统有关数据存储至少涉及: 购书表、库存表、缺书登记表、待购教材表、进库表和出库表。

人事管理系统-软件工程实验报告

人事管理系统-软件工程实验报告

软件工程实验报告课题:人事管理系统学生姓名:学号:专业班级:指导教师:同组成员:评阅意见:录目评定成绩:指导老师签名:专业资料需求分析一、实验目的掌握软件需求的结构化分析方法。

二、实验任务与实验要求导出系统详细的逻辑模型,这里用数据流图来表示。

三、实验内容(1)功能分析经过初步分析“人事管理系统”应该具备以下主要功能。

1、职员个人信息资料的增加、修改和删除;职员的考勤录入和查询;、2职员工资结算和查询;3、人事管理人员的变化和操作授权;、4由于是使用计算机管理,就带来了新的功能:用户登陆、操作人员的管理、基本数据的维护、由数据安全产生的数据备份与恢复。

(2)、关系模式在满足函数依赖和无损连接的基础上,使数据的设计更加合理。

在本系统中只有3个实体,那就是普通员工、管理员、超级管理员,他们权限的不听通过角色来区分。

在整个系统中超级管理员只有一人,管理员二人。

一个人只可以在普通员工、管理员、超级管理员中处于一个角色,而不可以兼任。

其具体的关系模式如下:普通员工(员工号,密码,姓名,性别,出生年月,身份证号,联系电话,就职时间)专业资料管理员(管理员号,密码,姓名,性别,出生年月,身份证号,联系电话,就职时间)超级管理员(超级管理员号,密码,姓名,性别,出生年月,身份证号,联系电话,就职时间)工资(员工号,时间,基本工资,提成,奖金)考勤(员工号,时间,迟到,早退,管理员号)”表示既是主码又是外码。

”表示主码,“注意:“E-R图如下所示专业资料姓名性别管理员号出生年月密码号管理员联系电话身份证号就职时间图之管理员图1-3E-R性别姓名超级管理员号出生年月密码号理员超级管联系电话身份证号就职时E-图之超级管理1-数据字典设计:,为了方便数据库的管理和维护,本系统只设计一个数据库workers.mdb(工资信(考勤信息表)、booklist其中包含worker(员工信息表)、manager 息表)1-1 worker(员工信息表)各字段设计表专业资料3()建立数据流图密码员工号普通职职员查询结密码员工号事职员查询条件管理员管管理员查询结果职员信息理管理员查询条件系密码员工号统报表相关部门超级管理员超级管理员查询结果超级管理员查询条件1-5 顶层数据流图图专业资料员工号和密码不匹配专业资料无权限勤信4.1考查询条件查看息查询查询结果员工考勤信息文件角色成打生4.4无权限报印报表表信4.2员工查询条件查看息查询查询结果员工信息文件角色无权限资信工4.3查询条件查看息查询查询结果员工工资信息文件角色对“员工信息更新”的细化1图1-9 层数据流图—)建立状态图(4 1-10所示。

《软件工程》实验指导书-卓越项目

《软件工程》实验指导书-卓越项目

《软件工程》实验指导书太原理工大学计算机科学与技术学院2013年3月目录第一部分实验教学大纲 (1)第二部分实验说明 (3)实验一软件工程的网上资源与常用的CASE工具 (3)实验二传统软件开发方法的可行性研究 (5)实验三传统软件开发方法的需求分析建模 (6)实验四传统软件开发方法的结构设计 (7)实验五系统测试 (8)实验六面向对象的分析与设计 (9)实验七软件项目管理 (10)附录一实验题目 (11)第一部分实验教学大纲课程名称:软件工程(Software Engineering)课程总学时: 48 学时[理论: 40 学时;实验: 8 学时]课程总学分: 3 学分适用专业和年级:计算机科学与技术、软件工程专业一、实验的目的与任务本实验课程通过完整地实施软件生命周期各阶段的任务,让学生系统地学习到软件开发过程的主要理论、方法、技术、标准和规范,使他们具备基本的软件开发设计能力;通过软件工程中常用CASE工具和软件项目管理的实践,使他们具备运用各种工具完成项目设计和实施的基本技能;通过集体项目开发,培训学生的合作意识和团队精神,培养学生对技术文档的编写能力。

二、实验内容和要求本课程的实验内容包括结构化(生命周期法)的方法学和面向对象的方法学。

通过一个模拟项目,要求学生分别用结构化方法和面向对象的方法完成系统的分析、设计和实现的整个软件开发过程。

此外实验中引入我国国家《计算机开发规范》,以规范技术文档的书写标准,提高实验教学质量。

实验要求学生采用“项目小组”的形式,结合具体的开发项目进行分析、设计。

每个项目小组必须按照《软件工程实验指导书》附录中给定的文档规范标准提供项目文档;具体要求如下:1.班级按项目不进行分组。

2.每个人均为负责人或项目经理,由项目经理召集项目组成员讨论、选定开发项目,所有实验中都要采用同一个实验题目。

项目开发的每项任务要规定该任务的起止日期和时间。

3.每个项目均要进行需求分析,完成需求分析报告,修订并评审需求分析报告,确定系统的需求分析模型。

《软件工程》实验教案

《软件工程》实验教案

《软件工程》实验教案一、实验目的1. 让学生了解软件工程的基本概念、原则和方法。

2. 培养学生运用软件工程知识分析和解决实际问题的能力。

3. 加深学生对软件开发过程的理解,提高团队协作和沟通能力。

二、实验内容1. 实验一:软件工程概述了解软件工程的定义、目的、历史和发展趋势。

掌握软件开发过程中的基本活动和相关工具。

2. 实验二:需求分析学习需求分析的基本方法,如问卷调查、访谈、观察等。

实践使用需求分析工具,如UseCase图、DFD图等。

3. 实验三:软件设计掌握软件设计的基本原则,如模块化、抽象、封装等。

学习软件设计的方法,如结构化设计、面向对象设计等。

4. 实验四:编码与实现熟悉编程语言的基本语法和编程规范。

5. 实验五:软件测试了解软件测试的目的、方法和过程。

学习使用测试工具进行单元测试、集成测试和系统测试。

三、实验步骤1. 实验一:软件工程概述讲解软件工程的定义、目的、历史和发展趋势。

介绍软件开发过程中的基本活动和相关工具。

2. 实验二:需求分析讲解需求分析的基本方法。

练习使用需求分析工具,如UseCase图、DFD图等。

3. 实验三:软件设计讲解软件设计的基本原则和方法。

练习进行结构化设计和面向对象设计。

4. 实验四:编码与实现讲解编程语言的基本语法和编程规范。

5. 实验五:软件测试讲解软件测试的目的、方法和过程。

练习使用测试工具进行单元测试、集成测试和系统测试。

四、实验要求1. 实验一:软件工程概述2. 实验二:需求分析完成一个简单的需求分析案例,绘制UseCase图和DFD图。

3. 实验三:软件设计完成一个简单的软件设计案例,包括结构化设计和面向对象设计。

4. 实验四:编码与实现5. 实验五:软件测试五、实验评价1. 实验一:软件工程概述评价学生对软件工程基本概念的理解程度。

2. 实验二:需求分析评价学生对需求分析方法的掌握程度。

3. 实验三:软件设计评价学生对软件设计原则和方法的掌握程度。

软件工程实验——软件需求分析

软件工程实验——软件需求分析
(3)增强了团队合作和沟通能力:在实验过程中,我与小组成员密切合作,共同完成了实验任务。通过与团队成员的交流和协作,我不仅提高了工作效率和质量,还增强了团队合作和沟通能力。
(4)提高了解决问题的能力:在实验过程中,我遇到了一些问题和困难,通过思考和探索,我学会了如何解决这些问题。通过不断解决问题和总结经验,我提高了自己的解决问题的能力。
注意事项:
(1)调研和需求分析是关键。在实验初期,需要深入相关单位进行调研,了解计算机销售业务的流程和需求,与用户进行交流,了解用户对系统的期望和需求。同时,需要收集并整理相关的资料,对需进行进一步的分析和整理。
(2)数据流图和数据字典是进行需求分析的重要工具。在绘制数据流图时,需要分清系统的边界和内部结构,将系统划分为多个子系统或模块。在定义数据字典时,需要对每个条目进行详细的描述和定义,确保数据的准确性和完整性。
(3)细心、耐心和责任心是必备的素质:软件需求分析是一项复杂而繁琐的工作,需要细心、耐心和责任心。在绘制数据流图、定义数据字典、绘制类图和描述用例时,需要仔细思考和分析,不能出现错误或遗漏。同时还需要对工作负责到底,及时解决问题和总结经验。
(4)良好的沟通和协作能力是成功的保障:软件需求分析是一项团队合作的工作,需要与团队成员和其他相关人员密切合作和沟通。良好的沟通和协作能力能够提高工作效率和质量,同时也能避免出现偏差和错误。在沟通过程中要清晰明确地表达自己的想法和建议,同时也要尊重他人的意见和建议。
(2)数据流图和数据字典定义不够准确。数据流图和数据字典是进行需求分析的重要工具,如果定义不够准确,可能会影响后续的系统设计和开发。因此,在定义数据流图和数据字典时,需要仔细考虑每个条目的准确性和完整性,确保数据的准确性和完整性。
(3)软件需求规格说明(SRS)撰写不够规范。SRS是实验的最后一步,如果撰写不够规范,可能会影响其他人对系统的理解。因此,在撰写SRS时,需要遵循一定的规范和标准,确保SRS的清晰度和可读性。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图书管理系统组长:杨晓华组员:巴雅尔图、那日苏、张天、牛莉、杨宇婷作业提交日期:二О一五年十月3三十日作者简介组长:杨晓华学号:120714241 学院:经济管理学院组员:巴雅尔图学号:110412185 学院:生态环境学院那日苏学号:111710874 学院:兽医学院张天学号:120714242 学院:经济管理学院牛莉学号:120714767 学院:经济管理学院杨宇婷学号:120715553 学院:经济管理学院图书管理系统摘要简单介绍了图书管理系统数据库的设计和系统功能的实现过程。

该系统是运行在学校网络上的网络图书管理系统,由图书编目,图书管理,读者管理,资料管理,Web查询等几个子系统组成,,实现了图书资料的计算机网络管理和Web查询功能。

计算机技术的迅猛发展,特别是随着网络技术的出现标志着信息时代已经来临。

信息化浪潮、网络革命在给社会带来冲击的同时,也使图书馆业务受到了强烈的冲击,图书馆传统的管理和服务方式已不能适应读者对日益增长的文献信息的需求,建设图书馆信息网络系统,是图书馆现代化建设的客观要求。

建设以计算机为核心的图书馆信息网络,实现图书馆管理和服务的自动化,更好地为科技工作服务,是图书馆发展的必由之路。

目前,国内大部分高校图书馆都实现了网络管理,目前图书馆都在在朝着这个方向发展。

关键词:图书,网络,数据库,管理系统,VC一、系统可行性分析1.总体功能设计根据高校图书馆的实际情况和校园网网的现状,我们确定了网络图书系统应该具备8个方面的功能,它们是图书编目,图书采购,图书管理,读者管理,标准管理,资料管理,系统维护,Web查询。

其中Web查询是该系统突出的特点,它的实现是因为有学校校园网的支持。

系统组成和功能框图见图1。

图2 业务流程图图3 读者图4 出版社图5 管理员图6 借阅图书图7 借阅关系表1 读者信息说明表2 图书信息说明表3 借书信息说明Web查询功能应该能够查询图书,期刊和读者等信息,因此我们在查询系统中设计了以下主要功能:图书查询、期刊查询、读者信息查询,图书推荐。

“图书查询”主要查询在图书库中现有的资料,让用户了解是否有其需要的图书、有哪些图书,它包括按书名查询图书、按索书号查询和按作者查询图书等。

“期刊查询”主要查询期刊的情况,包括按刊名查询出版物信息、按索书号查询连续出版物信息和按编辑部查询连续出版物信息等。

“读者信息查询”主要查询读者的图书借阅情况,包括读者借阅记录查询和读者超期借阅记录查询等。

“图书推荐”是让读者推荐图书,作为工作人员采购新书的参考。

二、需求分析1.运行环境规定联网的微型计算机立足于校园实际,建成符合标准化协议、通用性较强、实用的系统,以提高图书信息的现代化管理水平,实现信息资源的共享。

图书管理系统是一种基于集中统一规划的数据库数据管理新模式。

在对图书、读者、出版社信息的管理,其实是对图书、读者数据出版社信息的管理。

本系统的建成无疑会为管理者对图书管理系统提供极大的帮助。

使用该系统之后,图书馆管理人员可以管理读者的登记、图书的购入、借出、归还以及注销、图书归还中的问题;还可以查询某位读者、某本图书的借阅情况,对当前借阅情况给出一些统计,给出统计表格,以全面掌握图书的流通情况,还可以根据图书类别查询图书,可以查询出版社的信息,以及某出版社的图书在本校的借阅情况和平均价钱等信息。

图书管理系统,最主要处理两个过程,借书与还书。

借书之前先看看是不是有借书的资格。

还书时,检查一下书是否过期等如有进行相关的处理。

其他的一些功能主要是围绕这两个功能展开。

图书模块的功能应包括:图书信息的添加、删除、修改、编辑、并可以根据图书类别查询图书。

管理员,出版社等信息查询与图书相类似。

用vc作为前台的开发工具,定义Cdatabase、CRecordset建立与数据库的连接。

要求应前台用程序和后台数据库在数据类型方面要统一,否则会出现插入和更新异常等,导致系统异常,不利于使用。

本系统的宗旨是提高图书管理工作的效率,减少相关人员的工作量,使学校的图书管理工作真正做到科学、合理的规划,系统、高效的实施三、系统设计1.总体设计运行系统:Linux,Unix,Windows2000、WindowsXP及其以上操作系统。

2.功能(1)图书编目子系统:实现编目处理、查重、馆藏管理等功能。

其中编目处理包括原始编目、书目记录、数据维护、各类输出等项;馆藏管理包括馆藏数据维护、丢剔处理、馆藏统计、报表输出等项。

(2)图书采购子系统:实现预订查询、新书订购、验收记到、资金管理、统计报表处理等功能。

(3)图书流通子系统:实现出纳管理、读者管理、查询及统计打印功能模块。

其中出纳管理包括借书、还书、续借、预约、罚款等项;读者管理包括读者登记、借书证挂失、读者数据维护等项;查询包括是查书去向、查读者借书情况、查总体借还情况等;统计打印则是打印图书借阅和读者情况的统计报表以及打印催还单等。

(4)期刊管理子系统:实现期刊查缺、采购、编目、记到、典藏、流通、统计等功能。

(5)标准管理子系统:实现期刊查缺、采购、编目、记到、典藏、流通、统计等功能。

(6)资料管理子系统:实现资料查缺、采购、编目、记到、典藏、流通、统计等功能。

(7)系统维护子系统:实现操作员库、读者库、单位库维护,权限设置等功能。

(8)Web查询子系统:实现网上查询(图书、期刊查询和读者查询)、读者荐书、意见反馈等功能。

图8系统结构图四、详细设计1.算法设计图9工作人员流程图图10普通学生流程图图11借阅者流程图2.数据库设计在图书管理系统中,数据库设计占有重要位置,数据库设计质量的优劣,可直接影响到数据库数据的冗余度、数据的一致性、数据丢失等问题。

图书管理系统数据库常常要设计含有如下数据项:借书证号、姓名、单位、馆藏号(馆藏号为每本书上的条形码号)、书名、分类号、作者、价格等。

下面以图书流通模块所涉及的数据库为例来说明模式的设计。

先设计图书流通的实体——关系图(E-R图)。

E-R图由3个相关联的部分构成,即实体、实体与实体之间的关系以及实体和关系的属性。

图书流通过程中实体“图书”与“读者”之间的关系是借阅和被借阅的关系,实体“读者”与“单位”之间的关系是属于和被属于的关系,“图书”的属性有“馆藏号”,“书名”,“分类号”、“作者”、“价格”,“读者”的属性有“借书证号”、“姓名”、“性别”,“单位”的属性有“单位编号”和“单位名称”,“借阅”属性“借书日期”,由此得出E-R图如图4。

3.概念设计图12 图书流通的E-R图4.逻辑设计(1)导出初始关系模式book(图书编号#,入库时间,图书名称,作者,出版社,出版日期,价格,数量,图书状态)bookuser(借阅者的图书证号#,学号,姓名,性别,出生年月,民族,系别)worker(用户名,密码)borrow(图书编号#,图书名称,借阅者姓名,借阅数量,借阅时间,归还时间,过期天数,归还标志位)(2)产生子模式子模式是用户所用到的那部分数据的描述。

除了指出用户用到的数据外,还应指出数据与概念模式中相应数据的联系,即指出概念模式与子模式之间的对应性。

借书子模式(借阅者的图书证号群,姓名,图书编号#,图书名称,借阅时间)五、实现与测试1.控制台应用程序a.日期结构,包含有年、月、日,以及减法与小于号的重载struct Date{int m_year;int m_moth;int m_day;int operator – (const Date&d){int days=365*(m_year-a. m_year);days+=30*(m_moth-d.m_moth)+m_day-d.m_day;return days;}BOOL operator <(const Date& d){if(*this-d<0)return TRUE;return FALSE;}};b.读者结构,包含有姓名、借书证号、性别与类别,小于号的重载struct Reader{CString m_name;CString m_certificateNo;BOOL m_sex;//1--male,0--femaleint m_type;//0--student,1--graduate,2--teacherBOOL operator <(Reader &r){if(m_type<r.m_type)return TRUE;if(m_certificateNo<r.m_certificateNo)return TRUE;if(m_name<r.m_name)return TRUE;if(m_sex<r.m_sex)return TRUE;return FALSE;}};c. CBooks类class CBooks : public CObject{DECLARE_SERIAL(CBooks)public:CString m_serialNumber;//编号CString m_category;//类别CString m_title;//书名CString m_auther;//作者CString m_press;//出版社Date m_publicDate;//出版日期double m_price;Date m_purchaseDate;//购书时间Reader m_lender;//借阅者Date m_lendDate;//借书日期Date m_returnDate;//还书日期CBooks();virtual ~CBooks();void Serialize(CArchive&ar);};CBooks类具有所需要的数据成员外,需要注意到首先,它是由CObject派生的,CObject是绝大部分MFC类的基类;其次,类中有一个宏DECLARE_SERIAL(CBooks),其作用就是为了实现文件的序列化与类的动态创建。

相应的,在此类的实现文件中必定要有宏IMPLEMENT_SERIAL(CBooks,CObject,1)。

最后,CBooks应重载CObject虚拟函数Serialize(CArchive&ar)。

CBooks类的实现文件类似于:IMPLEMENT_SERIAL(CBooks,CObject,1)CBooks::CBooks(){m_price=0.0;m_lender.m_sex=TRUE;m_lender.m_type=2;m_publicDate.m_year=0;m_publicDate.m_moth=0;m_publicDate.m_day=0;m_lendDate.m_year=0;m_lendDate.m_moth=0;m_lendDate.m_day=0;m_returnDate.m_year=0;m_returnDate.m_moth=0;m_returnDate.m_day=0;m_purchaseDate.m_year=0;m_purchaseDate.m_moth=0;m_purchaseDate.m_day=0;}CBooks::~CBooks(){}void CBooks::Serialize(CArchive&ar){if(ar.IsStoring()){ar<<m_serialNumber<<m_category<<m_title<<m_auther<<m_press<<m_price;ar<<m_lender.m_name<<m_lender.m_certificateNo<<m_lender.m_sex<<m_lender.m_type;ar<<m_publicDate.m_year<<m_publicDate.m_moth<<m_publicDate.m_day;ar<<m_lendDate.m_year<<m_lendDate.m_moth<<m_lendDate.m_day;ar<<m_returnDate.m_year<<m_returnDate.m_moth<<m_returnDate.m_day;ar<<m_purchaseDate.m_year<<m_purchaseDate.m_moth<<m_purchaseDate.m_day;}else{ar>>m_serialNumber>>m_category>>m_title>>m_auther>>m_press>>m_price;ar>>m_lender.m_name>>m_lender.m_certificateNo>>m_lender.m_sex>>m_lender.m_type;ar>>m_publicDate.m_year>>m_publicDate.m_moth>>m_publicDate.m_day;ar>>m_lendDate.m_year>>m_lendDate.m_moth>>m_lendDate.m_day;ar>>m_returnDate.m_year>>m_returnDate.m_moth>>m_returnDate.m_day; ar>>m_purchaseDate.m_year>>m_purchaseDate.m_moth>>m_purchaseDate.m_day;}}2.建立管理图书的类首先建一个基类class CManager{CObArray m_list;public:void AddTail(CBooks*pBook);//在链表尾部放书籍void AddHead(CBooks*pBook); //在链表头部放书籍void Add(CBooks*pBook,int index);//将书籍放到index处void Delete(int index);//删除index处的书籍void Fit(int index);//修改index处的书籍CBooks* GetBook(int index);//获取index出的书籍CManager();virtual ~CManager();virtual int Find(void*para,CobArray&list);virtual void Delete (void*para);viraul void Sort();void Serialize(CArchive&ar);friend ostream & operator <<(ostream& os,CManager &mg);};其实现文件类似于CManager::CManager(){}CManager::~CManager(){int num=m_list.GetSize();for(int i=0;i<num;i++){CBooks*p=(CBooks*)m_list[i];delete p;}m_list.RemoveAll();}void CManager::Serialize(CArchive&ar){m_list.Serialize(ar);}void CManager::Delete (void*para){}void CManager::Sort(){}int CManager::Find(void*para,CobArray&list){return –1;}CManagerTitle:public CManager{public:CManager* m_pParent;CManagerTitle();int Find(void*para,CobArray&list);void Delete (void*para);void Sort();}:CManagerTitle::CManagerTitle():m_pParent(0){} int CManagerTitle::Find(void*para,CobArray&list){if(!m_pParent)return;CString*pStr= (char*)para;int i,value=-1,num=m_pParent->m_list.GetSize();for(i=0;i<num;i++){CBooks*p=(CBooks*) m_pParent->m_list[i];if(p->m_title==pStr){list.Add(p);if(value<0)value=i;}}return value;}void CManagerTitle::Delete (void*para){if(!m_pParent)return;CString pStr= (char*)para;int i=0;while(i< m_pParent->m_list.GetSize()){CBooks*p=(CBooks*) m_pParent->m_list[i];if(p->m_title==pStr){delete p;m_pParent->m_list.RemoveAt(i);}elsei++;}}void CManagerTitle::Sort(){if(!m_pParent)return;int i,jfor(i=0;i<num;i++){CBooks* b1=(CBooks*) m_pParent->m_list[i];for(j=i+1;j<num;j++){CBooks*b2=(CBooks*) m_pParent->m_list[j];if(b2->m_title<b1->m_title){m_pParent->m_list.RemoveAt(i);m_pParent->m_list.InsertAt(i,b2);m_pParent->m_list.RemoveAt(j);m_pParent->m_list.InsertAt(j,b1);b1=b2;3.完成主界面的设计与实现class CMenuA{public:void ShowMain();void ShowSort();void ShowFind();void ShowDelete();………………………………..CMenuA();virtual ~CMenuA();};六、设计体会计算机具有强大的功能,它现已应用于各行各业,在人们生活的各个领域起着非常重要的作用。

相关文档
最新文档