软件课程设计第四阶段实验报告

合集下载

erp课程设计实验报告

erp课程设计实验报告

erp课程设计实验报告一、课程目标知识目标:1. 理解ERP(企业资源计划)系统的基本概念、功能模块及其在企业运营中的应用。

2. 掌握ERP系统中财务管理、供应链管理、生产管理等核心模块的操作流程。

3. 了解ERP系统实施的基本步骤、关键因素和常见问题。

技能目标:1. 能够独立进行ERP系统的基本操作,包括数据录入、查询、修改等。

2. 能够运用ERP系统进行简单的数据分析,为企业决策提供参考。

3. 培养学生团队协作、沟通表达及解决问题的能力。

情感态度价值观目标:1. 培养学生对ERP系统及企业信息化建设的兴趣,激发学习热情。

2. 增强学生的责任感,使其认识到ERP系统在企业运营中的重要性。

3. 培养学生严谨、务实、创新的工作态度,为将来从事相关工作奠定基础。

课程性质分析:本课程为实验课,旨在让学生在实际操作中掌握ERP系统的相关知识,提高实际应用能力。

学生特点分析:学生为高年级本科生,已具备一定的企业管理知识和计算机操作能力,具有较强的学习能力和实践欲望。

教学要求:1. 结合课本内容,注重理论与实践相结合,提高学生的实际操作能力。

2. 采用案例教学,让学生在具体情境中学习ERP系统的应用。

3. 强化团队合作,培养学生解决实际问题的能力。

二、教学内容1. ERP系统概述:介绍ERP系统的定义、发展历程、主要功能模块及其在企业运营中的价值。

教材章节:第一章 企业资源计划概述2. ERP系统核心模块:详细讲解财务管理、供应链管理、生产管理等模块的功能、操作流程及相互关系。

教材章节:第二章至第四章 财务管理、供应链管理、生产管理3. ERP系统实施:分析ERP系统实施的基本步骤、关键因素和常见问题,探讨如何提高ERP系统实施成功率。

教材章节:第五章 ERP系统实施4. ERP系统案例分析:通过分析典型企业ERP系统实施案例,让学生了解ERP 系统在实际工作中的运用。

教材章节:第六章 ERP系统案例分析5. ERP系统操作实践:组织学生进行ERP系统模拟操作,包括基础数据录入、业务流程处理等。

软件课程设计实验报告

软件课程设计实验报告

软件课程设计实验报告软件课程设计实验报告1在我们整个软件工程过程中,我体会到了许多,也学到了许多。

在项目要进行自由分组后,我们的项目小组便诞生了。

我们小组由3个成员组成,在相互商量后我们也确定了我们组的项目,是做一个校园文件管理系统。

我们也随即做了分工,。

我们的项目也正式开始了。

需求调研和分析对于软件开发过程至关重要。

我们在开发时如果不进行调研和分析,那么对于后来的项目进展将产生致命的后果。

我们在项目的开发中便遇到了这样的问题。

我们开始自己随意的计划整个系统的设计,然后报给老师,老师作为一个客户并不是全部认同,随后我们也必须按着客户的要求更改我们的设计报告。

我也明白了,再做一个系统时,必须随时和客户保持沟通,随时了解他们需要什么,他们想要什么功能。

如果我们不去和客户沟通,不去调研客户的需求,做出来的系统即使在我们看来是一个很好,很完美的产品,但是如果客户不认同,那么我们所做的一切都是徒劳,还要返工去修改,费时费力。

所以在做任何一个项目时,前期的需求调研和需求分析都是必须的,这是在做一个项目的基本,是关系成败的重要一环。

对于一个项目,它的需求设计也非常重要。

在我们的文件管理系统开发的过程中,遇到了一些问题,出现的这些问题很多都是非常棘手的,我们为了解决这些棘手的问题浪费了大量的时间,我们不得不在工程代码上改了又改,在数据库里增表、删表、加数据、减数据,当然,在文档里也要做出相应的修改以适应新的功能。

还好,我们能及时地发现问题,通过相互沟通讨论,问题也得到了解决。

通过总结,我们也意识到,我们大家在做需求分析和进行需求了解时仅仅考虑了一些基本的功能,而至于管理员和客户之间的联系,以及具体的一些流程我们都没有深究,而导致我们到后期花费了大量的时间用于修复之前没有考虑周全而带来的问题。

如果我们的需求设计能够比较清晰和完善,那么我们在开发过程中便会很明白的知道我们应该实现什么样的功能,在数据库里应该怎样建表,以什么方式插入数据,从而可以避免反复修改工程的问题,也能避免出现可能毁坏整个工程的问题。

软件工程实验报告

软件工程实验报告

软件工程实验报告一、实验目的。

本实验旨在通过对软件工程的实际操作,加深对软件工程理论知识的理解,提高学生的软件开发能力。

具体目的包括:1. 熟悉软件工程的基本概念和原理;2. 掌握软件需求分析、设计、编码、测试等基本方法和技术;3. 提高团队协作能力和项目管理能力。

二、实验内容。

本次实验内容主要包括以下几个方面:1. 软件需求分析,通过对一个实际问题的需求收集和分析,明确软件的功能和性能需求;2. 软件设计,根据需求分析的结果,进行软件系统的总体设计和详细设计;3. 软件编码,根据设计文档,进行软件的编码工作;4. 软件测试,对编码完成的软件进行测试,确保软件的质量和稳定性。

三、实验过程。

1. 软件需求分析阶段。

在软件需求分析阶段,我们小组首先进行了需求的收集和整理工作。

通过与用户的沟通和调研,我们明确了软件的功能需求和性能需求,并对其进行了详细的文档记录。

在需求分析的过程中,我们也发现了一些需求之间的冲突和不完整之处,因此进行了进一步的讨论和修正。

2. 软件设计阶段。

在需求分析阶段完成后,我们进行了软件系统的总体设计和详细设计工作。

在总体设计阶段,我们确定了软件的整体架构和模块划分,明确了各个模块之间的接口和关系。

在详细设计阶段,我们对每个模块进行了具体的设计,包括算法、数据结构、接口等方面的设计。

3. 软件编码阶段。

在软件设计完成后,我们开始了软件的编码工作。

在编码阶段,我们严格按照设计文档的要求进行编码,注重代码的规范和可读性。

在编码过程中,我们也进行了一些单元测试,确保编码的正确性和稳定性。

4. 软件测试阶段。

在软件编码完成后,我们进行了软件的测试工作。

在测试阶段,我们采用了黑盒测试和白盒测试相结合的方法,对软件进行了功能测试、性能测试、安全测试等多方面的测试。

在测试过程中,我们发现了一些问题并及时进行了修复。

四、实验总结。

通过本次实验,我们深刻地体会到了软件工程理论知识在实际项目中的应用,提高了我们的团队协作能力和项目管理能力。

软件设计过程实验报告

软件设计过程实验报告

软件开发过程实验一软件需求分析一、目的和意义对本书第二和三章的内容做进一步的掌握,写出软件需求规格说明书。

为下面的实习奠定基础。

二、实习内容1、确定软件题目(学生可自己拟定,也可在本书附录2中选择);2、分析软件需求以及人工模式下的工作流程;3、编写需求规格说明书(需求规格说明书的编写要求参见本节模板参考);4、完成形式:以文档的形式完成软件的需求规格说明书。

纸张型号为A4。

三、实习指导1、在磁盘上建立一个软件工程实习文件夹,以自己的姓名命名。

2、提交文档的格式如下:第一页的格式为:软件名称:文档编号版本号文档名称:项目名称:项目负责人:编写时间审核时间批准时间开发单位第二页之后的内容为:●编写目的:阐明编写该文档的目的,指出读者对象●项目背景:项目的委托单位、开发单位、该软件系统与其他系统的关系。

●参考资料软件需求规格说明的书写原则①任务概述:软硬件环境、条件和限制(软件的使用条件和限制)。

②数据描述:输入数据、输出数据、数据库设计和建立数据词典。

③功能需求:功能划分和功能描述④性能需求:数据精度、时间特性、适应性(操作方式、与其他软件的接口、开发计划变化时,软件应具有的适应能力。

)。

⑤运行要求:用户界面、硬件接口(如:连接打印机)、软件接口(如:是否为其他项目的子项目)、故障处理。

⑥其他需求:可使用性、安全保密性、可维护性、可移植性等。

模板参考第一页:软件名称:教务管理软件文档编号 001版本号 Ver 1.0文档名称:需求规格说明书项目名称:课表编排系统项目负责人:屈艳编写:刘楠、叶艺、赵春、马燕时间: 2005-2-14审核:屈艳时间: 2005-2-16批准:王湘桃时间: 2005-2-20开发单位:冰雪五人组第二页之后的内容:编写目的:编写该文档是为了分析人工状态下课表编排的工作流程,把人工模式抽象为可在计算机上处理的自动模式。

便于开发小组成员对系统整体功能的认识。

项目背景:高校的课表编排一直是一个烦琐的工作,为了解决这个问题,某某高校教务处委托我们开发该软件。

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

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

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

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

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

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

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

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

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

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

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

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

软件工程课程设计实验报告

软件工程课程设计实验报告

重庆邮电大学软件工程课程设计实验报告——网上选课系统姓名:**学号:********专业:计算机科学与技术班级:0410801指导老师:**教室:S331-A时间:2011-5-30~2011-6-3一、实验题目:网上选课系统主要功能描述:系统首先维护校内所有课程的信息;课程分为研究生、本科生;也可以分为必修、选修、辅修。

用户以学号和密码登陆,系统显示用户以选的课程、用户有权选但未选的其他课程,并显示具体信息(如学分)。

用户选择后,系统根据规则检查用户是否进行正确的选课(如时间冲突、跨专业选课等);如果错误提示用户改,否则修改选课数据库。

最后系统应能够向管理员提供查询界面和各类报表,统计每门课的选课情况。

二、实验目的软件工程课程设计是软件工程专业一个综合性的实践教学环节,其目的在于促进学生复习和巩固计算机软件设计知识,加深对软件设计方法、软件设计技术和设计思想的理解,并能运用所学软件设计知识和面向对象技术进行综合软件设计,提高学生的综合应用能力。

通过这次课程设计,要掌握UML(统一建模语言),并能运用UML在Rational Rose中建模。

三、实验要求1.一人一组。

2.熟悉Rose开发环境。

3.掌握UML的基本模型元素(如角色、用例、类等)。

4.熟悉UML,主要了解UML中的9大图:Use case diagram(用例图)、Classdiagram(类图)、Sequence diagram(序列图)、Collaboration diagram(协作图)、Statechart diagram(状态图)、Activity diagram(活动图)、Component diagram(组件图)、Deployment diagram(配置图)、datamodel diagram(数据模型图)。

5.进行系统需求分析与系统功能模块设计,绘出系统详细的业务流程图和数据流程图,建立完整的系统数据库的逻辑模型。

软件工程实验报告

软件工程实验报告

软件工程实验报告在当今科技日新月异的时代,软件工程成为各行各业中不可或缺的一环。

为了更好地培养学生的软件工程能力,各大高校开设了相关课程,并在其中加入了实验环节。

本篇文章将对软件工程实验报告的撰写进行探讨。

首先,软件工程实验报告的撰写应该贴近实验过程。

这意味着在实验之前,我们应该对实验内容有足够的了解,并对实验的目标有清晰的认识;在实验中,我们应该认真观察并记录实验过程中发生的所有细节;在实验之后,我们应该对结果进行分析,并对实验中存在的问题进行思考和归纳。

只有在真正深入实验过程,并对实验经过有全面的掌握后,我们才能写出一份优秀的实验报告。

其次,软件工程实验报告的撰写应该具备科学的逻辑性和清晰的表达能力。

在撰写实验报告时,我们应该先明确实验的目的,并在实验结果中体现出来;同时,我们需要将实验中所遇到的所有问题和解决方案进行详细的阐述,以便读者更好地理解实验过程和结果。

此外,在写实验报告时,我们应该注意语言的简洁明了,句式的条理清晰,以及格式的规范统一。

最后,在软件工程实验报告的撰写中,引用和参考文献的使用也是非常重要的。

我们应该在实验报告中注明所使用的软件和工具的名称、版本号等信息,以便读者对结果进行验证和复现。

同时,在实验报告中,我们还应该引用相关的文献,为实验结果提供支撑和佐证。

总之,软件工程实验报告的撰写是一个非常重要的环节,它能够反映出我们在实验过程中的观察能力、思考能力、分析能力、表达能力等多方面的能力。

因此,我们应该认真对待实验报告的撰写,力求做到准确、明确、清晰。

只有这样,我们才能更好地掌握软件工程知识,为将来的学习和工作打下坚实的基础。

软件课程设计实验报告

软件课程设计实验报告

软件课程设计实验报告课题:网络流量监控班级:电信0901班作者:王焕学号:U200914332指导老师:课设评价:课设成绩:课题背景随着构建网络基础技术和网络应用的迅速发展以及用户对网络性能要求的提高,使得网络管理成为迫切需要解决的问题,有效的网络管理能够保证网络的稳定运行和持续发展,更重要的是,随着网络规模的扩大和黑客技术的发展,入侵和攻击的案例日益增多,对稳定的网络服务、信息安全、互联网秩序都提出了严峻的挑战,网络安全管理在整个网络管理系统里扮演起更为重要的角色。

目前,在网络应用不断深入和技术频繁升级的同时,非法访问、恶意攻击等安全威胁也在不断推陈出新,愈演愈烈。

防火墙、VPN、IDS、防病毒、身份认证、数据加密、安全审计等安全防护和管理系统在网络中得到了广泛应用。

从网络安全专业管理人员的角度来说,最直接的需求就是根据分类在统一的界面中监视网络中各种运行性能状态,获取相关数据信息、日志信息和报警信息等,并进行分类汇总、分析和审计;同时完成攻击事件报警、响应等功能。

因此,用户的网络管理需要不断健全整体网络安全管理解决方案,从统一安全管理平台总体调控配置到多层面、分布式的安全系统,实现对各种网络安全资源的集中监控、策略管理、审计及多种安全功能模块之间的互动,从而有效简化网络安全管理工作,提升网络的安全水平和可用性、可控制性、可管理性。

项目描述互联网迅速发展的同时,网络安全问题日益成为人们关注的焦点,病毒、恶意攻击、非法访问等都容易影响网络的正常运行,多种网络防御技术被综合应用到网络安全管理体系中,流量监控系统便是其中一种分析网络状况的有效方法,它从数据包流量分析角度,通过实时地收集和监视网络数据包信息,来检查是否有违反安全策略的行为和网络工作异常的迹象。

在研究网络数据包捕获、TCP/IP原理的基础上,采用面向对象的方法进行了需求分析与功能设计。

该系统在VisualC++6.0环境下进行开发,综合采用了Winpcap、窗口编程和IP助手API等VC编程技术,在系统需求分析的基础上,对主要功能的实现方案和技术细节进行了详细分析与设计,并通过测试,最终实现了数据包捕获、流量监视与统计主要功能,达到了预定要求,为网络管理员了解网络运行状态提供了参考。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

编号:()字号《软件课程设计》报告班级:信科10--2姓名:潘寿岭学号: 08103502指导老师:王志晓2012年01 月第四阶段六、数据结构设计题46.1需求分析1、设计一个统计选票的算法,输出每个候选人的得票结果2、假设采用单链表存放选票,候选人编号依次为1,2,3,……,N,且每张选票选且只选一人3、以单链表存放选票,每个结点的data域存放该选票所选的候选人。

用一个数组a统计得票结果。

6.2概要设计用函数CreateList ( )动态建立一个单链表,链表中每个节点的data域为空,返回头节点。

Statistics( )函数统计各个后选人所得票数。

在主函数中先输入候选人数n,然后动态建立一维数组a[n]来存放每个候选人所得票数(如a[i]表示第i+1号候选人所得票数),统计选票时调用Statistics( )函数,将整个单链表全部遍历一遍,将各个候选人的得票个数计入到数组a[n]中,最后输出各个候选人的得票情况。

6.3详细设计与编码流程图程序代码#include <iostream>using namespace std;typedef struct node{int data;struct node *next;}LNode;int n;LNode *CreateList() //构建单链表,每投一票插入一个节点,节点data域存放所选的候选人号码{LNode *L,*p,*t;int m,i;L=new LNode;L->next=NULL;L->data=NULL; //头结点data域中为空t=L;cout<<"输入投选票的张数:";cin>>m;cout<<"请投选票:"<<endl;for(i=0;i<m;i++){p=new LNode;cout<<"请输入要投第几号候选人:";cin>>p->data;p->next=NULL;t->next=p;t=p;}return L; //返回头结点}void Statistics(LNode *L,int *a) //统计投票情况{LNode *p;p=L->next;while(p!=NULL){a[p->data-1]++; //a[i]中存放第i+1号候选人的得票个数p=p->next;}}void main(){int i;LNode *L;cout<<"请输入候选人人数:";cin>>n;int *a=new int[n]; //动态建立数组,用来存放候选人得票个数for(i=0;i<n;i++)a[i]=0;L=CreateList(); //构建单链表,返回头结点Statistics(L,a); //统计投票情况for(i=0;i<n;i++) //输出得票结果cout<<"第"<<i+1<<"个候选人的得票数为:"<<a[i]<<endl;}运行结果6.4调试分析由于候选人数不确定,所以要根据输入的候选人人数动态建立数组来存放得票情况。

在动态建立单链表的过程中系统出现过内存分配错误的问题,所以在建立链表时要保证尾节点的指针域始终为空,另设一个指针始终指向插入的节点,为下一个节点的插入做准备。

创建单链表的函数返回头节点的地址,所以函数类型为指针类型。

6.5用户使用说明用户进入界面后,先输入候选人数,在输入要投票数,接着开始投票,每输入一个号码后按回车,最终得到投票结果。

6.6设计心得本题是一道简单的数据结构链表创建和遍历问题。

通过本题的练习和思考,使我了解和掌握了单链表和循环链表的创建以及创建链表时应该注意的问题,了解了链表在解决一些问题时的优越性。

七、数据结构设计题97.1需求分析1、从一副扑克牌(54张)中任意抽出27张(不重复),摆放在不同的三行上(每行9张),用户“暗记”某张纸牌,输入所“暗记”的那张纸牌处于哪一行。

2、之后计算机再两次将纸牌重新摆放,并让用户再回答两次相同的提问(那张纸牌在重新摆放后又处在哪一行上)。

3将用户所“暗记”的那张纸牌给挑出来,显示到屏幕上。

7.2概要设计定义一个结构体pk,pk中存放扑克牌的数码和花色;成员函数有display( ),用来输出扑克牌的布局;int_char1( )函数用来将随机生成的整数转化为扑克牌的数码;int_char2 ( )函数用来将随机生成的整数转化为扑克牌的花色;move ( )函数用来重新摆放扑克牌,整数1—15对应的扑克牌数码依此为A 1 2 3 4 5 6 7 8 9 10 J Q K X Z,整数1—4对应扑克牌花色依此为a b c d (红桃、黑桃、梅花、方块)。

在主函数中定义结构体数组p[27]用来存放取出的27张牌的数码和花色。

先自动生成一张牌,之后每生成一张牌都要与前几张生成的牌进行比较,如果相同均要重新生成,直至生成27张不同的扑克牌为止;然后分三行显示这27张牌。

之后调用move ( )函数,用户暗记一张牌并输入改牌所在的行数,然后计算机根据用户输入的行数决定重新洗牌的方式,洗完牌后将重新摆放的扑克牌布局显示到屏幕上,用户继续输入所记扑克牌的行数,计算机第二次将牌重新摆放,输出摆放的布局,用户再次回答提问,最终计算机将用户暗记的牌挑出来显示到屏幕上。

7.3详细设计与编码流程图程序代码#include<iostream> #include<iomanip> using namespace std;struct pk{char data; //扑克牌上的数码char hs; //扑克牌的花色};void display(pk); //输出扑克牌的摆放情况char int_char1(int); //将随机生成的数字转化为扑克牌上的数码char int_char2(int); //将随机生成的数字转化为扑克牌上的花色void move(pk*); //重新摆放扑克牌void main(){pk p[27];for(;;){p[0].data=int_char1(rand()%15+1); //生成第1 张扑克牌的数码p[0].hs=int_char2(rand()%4+1); //生成第1 张扑克牌的花色for(int i=1;i<27;){pk g;g.data=int_char1(rand()%15+1); //生成第i+1 张扑克牌的数码g.hs=int_char2(rand()%4+1); //生成第i+1 张扑克牌的花色bool prime=true;for(int j=0;j<i;j++) //将生成的扑克牌与前i张进行比较,出现相同的则重新生成扑克牌{if((g.data==p[j].data&&g.hs==p[j].hs)||g.data=='X'&&p[j].data=='X'||g.data=='Z'&&p[j].data =='Z'){prime=false;break;}}if(prime){p[i].data=g.data;p[i].hs=g.hs;i++;}}int l=1;int k;cout<<"--------------------------------------------------------------"<<endl;for( k=0;k<27;k++){if(k==0||k==9||k==18){cout<<"Line"<<l<<" ";l++;}display(p[k]); //将扑克牌分行显示在屏幕上if((k+1)%9==0)cout<<endl;}move(p);char a;cout<<"是否继续游戏?(y/n)";cin>>a;while(a!='y'&&a!='n'){cout<<"输入错误请从新输入(继续输入y,退出输入n):";cin>>a;}if(a=='n')break;}}char int_char1(int i){char p;switch(i) // 将随机生成的数字转化为扑克牌上的数码,大小王为X和Z {case 1:p='A';break;case 2:p='2';break;case 3:p='3';break;case 4:p='4';break;case 5:p='5';break;case 6:p='6';break;case 7:p='7';break;case 8:p='8';break;case 9:p='9';break;case 10:p='W';break;case 11:p='J';break;case 12:p='Q';break;case 13:p='K';break;case 14:p='X';break;case 15:p='Z';break;}return p;}char int_char2(int i){char p;switch(i) //将随机生成的数字转化为扑克牌上的数码{case 1:p='a';break;case 2:p='b';break;case 3:p='c';break;case 4:p='d';break;}return p;}void display(pk h) //除了大小王,其余扑克牌均要输出数码和花色{if(h.data=='X')cout<<setw(8)<<"KING2";else if(h.data=='Z')cout<<setw(8)<<"KING1";else if(h.data=='W')cout<<setw(4)<<h.hs<<"-"<<"10";else cout<<setw(4)<<h.hs<<"-"<<h.data;}void move(pk *p){int i;pk k[27];pk k2[27];int line;int line2;int line3;cout<<"--------------------------------------------------------------"<<endl;cout<<"Remember a card, and tell me what line it reside in(1/2/3):"; //用户暗记一张牌,输入该牌在第几行cin>>line;switch(line) //根据输入的行数,选择相应的重新洗牌方式{case 1: for(i=0;i<3;i++){k[i]=p[i];k[i+9]=p[i+3];k[i+18]=p[i+6];}for(i=3;i<6;i++){k[i]=p[i+6];k[i+9]=p[i+9];k[i+18]=p[i+12];}for(i=6;i<9;i++){k[i]=p[i+12];k[i+9]=p[i+15];k[i+18]=p[i+18];}break;case 2:for(i=0;i<3;i++){k[i]=p[i+9];k[i+9]=p[i+12];k[i+18]=p[i+15];}for(i=3;i<6;i++){k[i]=p[i-3];k[i+9]=p[i];k[i+18]=p[i+3];}for(i=6;i<9;i++){k[i]=p[i+12];k[i+9]=p[i+15];k[i+18]=p[i+18];}break;case 3: for(i=0;i<3;i++){k[i]=p[i+18];k[i+9]=p[i+21];k[i+18]=p[i+24];}for(i=3;i<6;i++){k[i]=p[i+6];k[i+9]=p[i+9];k[i+18]=p[i+12];}for(i=6;i<9;i++){k[i]=p[i-6];k[i+9]=p[i-3];k[i+18]=p[i];}break;}int l=1;cout<<"----------------------------------------------------------"<<endl;for(i=0;i<27;i++){if(i==0||i==9||i==18){cout<<"Line"<<l<<" ";l++;}display(k[i]); //将扑克牌分行显示在屏幕上if((i+1)%9==0)cout<<endl;}cout<<"--------------------------------------------------------------"<<endl;cout<<"What line the card you remembered reside in now (1/2/3) :"; //输入暗记的牌所在行数cin>>line2;switch(line2) //根据输入的行数,选择相应的重新洗牌方式{case 1: k2[8]=k[0];k2[17]=k[1];k2[26]=k[2];for(i=9;i<=16;i++)k2[i]=k[i];for(i=18;i<=25;i++)k2[i]=k[i];k2[0]=k[8];k2[1]=k[17];k2[2]=k[26];for(i=3;i<=7;i++)k2[i]=k[i];break;case 2: k2[8]=k[9];k2[17]=k[10];k2[26]=k[11];for(i=0;i<=7;i++)k2[i]=k[i];for(i=18;i<=25;i++)k2[i]=k[i];k2[9]=k[8];k2[10]=k[26];k2[11]=k[17];for(i=12;i<=16;i++)k2[i]=k[i];break;case 3: k2[8]=k[18];k2[17]=k[19];k2[26]=k[20];for(i=0;i<=7;i++)k2[i]=k[i];for(i=9;i<=16;i++)k2[i]=k[i];k2[18]=k[8];k2[19]=k[17];k2[20]=k[26];for(i=21;i<=25;i++)k2[i]=k[i];}l=1;cout<<"----------------------------------------------------------"<<endl; for(i=0;i<27;i++){if(i==0||i==9||i==18){cout<<"Line"<<l<<" ";l++;}display(k2[i]); //将扑克牌分行显示在屏幕上if((i+1)%9==0)cout<<endl;}cout<<"--------------------------------------------------------------"<<endl;cout<<"What line the card you remembered reside in now (1/2/3) :"; //输入暗记的牌所在行数pk R;cin>>line3;switch(line3) //根据输入的行数,最终确认用户暗记的扑克牌{case 1:R=k2[8];break;case 2:R=k2[17];break;case 3:R=k2[26];break;}cout<<"----------------------------------"<<endl;cout<<"Your remembered card is :";display(R);cout<<endl;}运行结果7.4调试分析刚开始发现随机抽出的27张牌有一些是重复的,应为程序没有在生成牌的时候将新牌与已生成的牌进行比较。

相关文档
最新文档