2018年软件学院C++课程设计课程设计目的:1、熟悉利用面向对象的方法以及C++的编程思想来完成系统的设计;
2、锻炼学生在设计的过程中,建立清晰的类层次,应用继承和多态等面向对象的编程思想;
3、通过本课程设计,加深对面向对象程序设计课程所学知识的理解,熟练掌握和巩固C++语言的基本知识和语法规范,深刻体会面向对象的编程思想,掌握使用面向对象程序设计语言C++,学会编写结构清晰、风格良好的C++语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力。
课程设计题目:模拟即时通信系统实现一、题目描述基于社交的即时通信是腾*公司的主要业务,先后有QQ、微信、微博等服务,可能还将继续推出微商、微唱、微走、微笑等产品。
这些软件既可以独立提供服务,又互相辉映关联。
腾*公司希望对各系统进行整合形成统一的立体社交软件平台。
现请完成该平台的设计并实现。
要求如下:1、用户基本信息:号码ID,昵称,出生时间,T龄(号码申请时间)、所在地、好友列表、群列表。
微博与QQ共享ID,微信采用独立ID,但是可以与QQ号码绑定对应。
其他微X产品也分为这两种情况。
2、好友管理(1)实现各功能好友信息的添加、修改、删除、查询的功能。
(2)可以查询微X之间各自共同好友。
如微信可以添加QQ推荐好友。
3、群管理(1)设定每个微X功能已有1001、1002、1003、1004、1005、1006等群号。
(2)加入群、退出群、挨T、查询群成员等。
(3)不同微X之间群的理念不同,比如:QQ群可以申请加入,而微信群则只能推荐加入;
QQ群允许设置临时讨论组(子群),微信群则不允许;
QQ群有以群主为核心的管理员制度,而微信群仅有群主为特权账号。
4、开通管理用户可以选择自己开通该平台的N个微X服务。
5、登录管理各微X之间只要有一个服务登录,则其它服务简单确认后视为自动登录。
6、功能展示要求(main函数)(1)设计约定。
开通服务情况、群成员信息和好友信息可以预先保存到文件中,在系统启动时将这些信息加载到内存中;
(2)一个服务登录后,本人开通的其它所有服务均进入开通状态。
(3)服务之间可以依据本人开通的任意另外一个服务的好友添加好友。
(4)展示一个服务当前群的特色功能;
在群成员数据不受伤害的前提下,动态变换为其他类型群的管理特色。
(5)实现QQ的点对点的TCP通信的收发功能。
(选做)提示:a)需要加载ws2_32.lib静态库,打开头文件winsock.h。
b)百度IP地址、端口等概念;
c)百度socket编程,关注bind、listen、accept、connect、send、receive等函数用法。
二、技术层次要求及说明1、基本层次。
完成上述功能要求,所采用技术不限,比如采用纯面向过程思想实现;
2、支持对象层次。
正确完成了类的切割,利用对象技术实现。
(1)容器类主要包括:例如,微X成员管理。
(2)其它主要类包括:例如,微X信息、群信息、好友信息。
3、抽象、封装层次采用了继承或者组合实现复用,对数据成员提供了必要的接口保护;
(1)抽象出了基础类,并被其它功能复用;
(2)如好友维护、群信息维护等操作均应该提供接口形式;
4、面向对象层次支持多态功能,支持依据设计原则的优化。
好友管理、群管理等;
5、优化提高层次(1)提供简便菜单,以1、2等数字区分几类功能,并允许返回菜单;
(2)I/O操作支持。
基本功能中,已有设定信息,在初始化时候可以固化在程序代码中,也可以存放在文件中,每次容器实例化时读入,析构时写回文件中,以实现断电保存。
(3)可扩展性支持,需要考虑群、好友等与主要服务之间的关系;
(4)灵活性支持。
群的管理模式动态可变;
(5)程序有必要的注释;
(6)可以采用UML工具画出简单类图(7)为防止不诚信行为,要求类的设计均以独立文件存在,且所有的类名称后面应有自己的姓名缩写,如张三设计的QQ信息类名称:TencentZhS。
三、设计步骤(参考):在清楚上述系统功能要处理是什么的基础上,考虑用如下方式来设计1、确定所需的类及其相互间的关系。
(1)要从问题中归纳出一个概念或实体,从这些概念或实体出发建立相应的类。
(2)尽量使类小而简单,以使其看起来容易理解。
(3)充分利用封装以增加类的可靠性,以便使用时保证更加可靠。
(4)通过继承建立类族,以方便使用多态性。
2、确定每个类的实现。
(1)考虑类的对象应该如何构造和析构。
(2)考虑类的成员函数的建立。
(3)综合考虑各个类在命名和功能方面有哪些共性。
3、细化有关的类,描述他们之间的相互关系,
1
资源包括myeclipse开发的源代码(亲测可用,这学期才做的),课程设计文档,UML图,需求分析,软件测试报告,数据库设计。
开发平台:myeclipse+MySQL+tomcat总体思路:1)前端采用了ACE框架,该框架的有点就是UI设计非常具有美感2)后台使用了javaweb,主要是jsp+mvc+servlet分层思想实现,每一个功能都是通过javabean获取前台页面的数据,传递给servlet,然后进一步通过service层与dao数据库层的交互进行功能数据的处理,处理结果通过bean返回给jsp页面进行显示,在显示时还结合使用了jstl和el表达式。
3)最后使用tomcat服务器和Google浏览器进行web工程的部署和前端页面的调试,而后台设计思想是通过myeclipse编码调试,分别为dao层、damain层、exception层、formbean层、service层、utils工具层、controler层、ui层及junit层。
4)其他细节:数据库连接使用了配置文件jdbc.properties,前后台数据的显示使用了json进行传输。
2023/12/25 4:05:39 5.68MB JSP
1
显示具体用例(或者是用例的一部分)的详细流程。
它几乎是自描述的,并且显示了流程中中不同对象之间的调用关系,同时还可以很详细地显示对不同对象的不同调用。
序列图有两个维度:垂直维度以发生的时间顺序显示消息/调用的序列;
水平维度显示消息被发送到的对象实例。
2023/12/23 14:55:46 132KB UML 银行ATM系统
1
每到学期末了,老师就让我们做课程设计,当你学习了UML,那么课程设计肯定离不了了,在这里我提供给大家这个课设,希望喜欢
2023/12/22 23:18:39 942KB UML
1
昆明理工大学创新实践大报告创新实践大报告题目设计要求:1、用UML向对象工具分析设计系统2、程序设计中要应用面向接口编程的思想编程3、程序设计采用visualstudio的窗体编程实现
2023/12/21 8:26:25 83KB c#
1
主要内容有:1需求分析ATM自动取款机系统的需求分析简述如下:(1)客户将银行卡插入读卡器,读卡器识别卡的真伪,并在显示器上提示输入密码。
(2)客户通过键盘输入密码,取款机验证密码是否有效。
如果密码错误提示错误信息,如果正确,提示客户进行选择操作的业务。
(3)客户根据自己的需要可进行存款、取款、查询账户、转账、修改密码的操作。
(4)在客户选择后显示器进行交互提示和操作确认等信息。
(5)操作完毕后,客户可自由选择打印或不打印凭条。
(6)银行职员可进行对ATM自动取款机的硬件维护和添加现金的操作。
2系统建模2.1创建系统用例模型2.2创建系统静态模型2.3创建系统动态模型2.3.1创建序列图和协作图2.3.2创建活动图2.3.3创建状态图2.4创建系统部署模型
2023/12/19 12:56:04 577KB 软件工程 UML建模 系统分析与设计
1
在一个典型的Web系统中,系统的日志、安全性等软件非功能属性是保证系统质量的关键因素。
但是,面向对象编程在解决非功能属性问题时容易引起代码混乱和代码分散问题,不利于整个系统的模块化开发,给后期的维护也带来困难。
针对上述问题,本论文使用面向方面编程(AOP)的思想来解决,利用AOP中的方面(Aspect)来对非功能属性进行建模,并采用UML中的类图进行描述,并给出其在科研申报系统中权限控制模块的实现,验证了面向方面编程在解决非功能属性方面的优越性。
1
面向对象设计uml实践第二版的课后习题答案。
这是英文版的书,答案也是英文版的。
2023/12/13 22:17:19 473KB uml 面向对象 答案
1
UML_Project
2023/12/7 4:11:14 1.47MB HTML
1
内容什么是用例模型?用例建模中的事务处理互连系统的系统建模逆向透视图逻辑怎样把这个应用到用户接口参考资料简介: 在这一部分的Java建模中,Granville引领您进入介于建模和方法之间的区域,同时看一下通过用例建模所收集的需求。
他特别着重讨论了用户接口、系统接口和用例描述之间的关系。
尽管现在正试图在用例中包括用户接口逻辑,但这通常被认为是不好的形式。
接着,Grancille用序列图和系统接口告诉您具体原因。
请点击文章顶部或底部的讨论,参与讨论论坛,与本文作者和其他读者分享您对本文的想法。
需求收集是任何成功的软件开发周期中不可缺少的一步。
虽然有众多的需求收集方法,但是最普通的方法是用例建模。
1
共 448 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡