集智智能课程表项目 实战指南
文章目录
- 1、文档介绍
- 1.1 文档目的
- 1.2 文档范围
- 1.3 读者对象
- 1.4 文档版权
- 2、项目介绍
- 2.1项目名称
- 2.2项目组成
- 2.3项目必备知识体系
- 3、功能性需求
- 3.1功能汇总
- 4、非功能性需求
- 5、系统总体设计
- 5.1系统总体框架(参考)
- 5.2系统流程图(参考)
- 6、通信程序关键流程设计
- 6.1 断线重连处理
- 6.2 粘包/半包检测与处理
- 6.3 文件缺失检测与处理
- 7、立项标准
- 7.1 项目小组
- 7.2 开发周期要求
- 7.3 编码规范要求
- 8、考核标准
- 8.1 项目总分为100分,各个模块考核比重如下:
- 8.2 开发进度考核标准
- 8.3 功能考核标准
- 8.3.1 客户端
- 8.3.2 服务端
- 8.3.3 压力测试
- 8.3.4 网络安全
- 8.4 结项考核标准
- 8.5 日常考核标准
1、文档介绍
1.1 文档目的
本项目建立在《Linux高级开发基础》、《Java高级开发基础》、《web高级开发基础》学习的相关知识体系的基础上,以系统全面的应用所学知识为出发点,设计一个学生阶段的学习项目,让学生可以全面应用、巩固、提升阶段的学习内容,在项目实战的过程中将知识体系贯穿起来,融汇贯通,积累项目开发经验,并通过项目检验阶段的学习成果。
本文档从功能需求的角度,在以知识体系全面应用的目标为指导下,详细的描述了项目开发锋功能需求以及功能约束内容,为项目实战的学生和评测团队提供一个详细的功能需求说明文档。
1.2 文档范围
本文档描述了项目的功能需求,各个功能设计目标,概要设计目标,概要设计,设计约束及各种人机交互的格式要求。
1.3 读者对象
参与项目开发的学生,参与评测的团队,以及其他想要了解本项目的读者。
1.4 文档版权
本文档属于CSDN博主“看,未来”所有,如需转载,请私信我。
2、项目介绍
2.1项目名称
项目名称:集智智能课程表项目。
2.2项目组成
本项目实现了课程表自动排课功能。该项目由 智能课程表前端、智能课程表电脑客户端、智能课程表服务端、智能课程表测试端等部分组成。
前端使用web网页服务器搭建技术,基于TCP Socket 封装了通信组件、动态数组等技术的前端通信框架,以及基于Nginx、SSM架构、MySQL数据库技术和线程池等技术的后台处理系统框架。
项目采用团队开发模式,成员不仅在项目实战中应用技术,积累项目经验又积累了团队配合的经验。
2.3项目必备知识体系
通过学习,参与项目的成员应该掌握以下技术:
web服务器搭建
web服务器与后端通信技术
Nginx负载均衡技术
多进程或多线程开发技术
进程间通信:信号、管道、消息队列、共享内存、TCP分布式通信等
多进程与多线程之间的同步技术:信号量、互斥、条件变量等
掌握UI设计
熟练使用数据库技术
3、功能性需求
3.1功能汇总
模块名 |
功能类别 |
子功能 |
---|---|---|
客户端(管理员) |
系统启动 |
本地云启动,初始化界面,软件版本以及其他初始化数据同步 |
用户登录 |
用户输入用户名、密码,登录 |
|
修改密码 |
用户输入用户名、旧密码、新密码,完成修改密码 |
|
教师列表 |
获取当前应该出现的教师列表 |
|
排课查询 |
查询指定班级的排课情况 |
|
排课批复 |
是否同意该排课计划 |
|
系统设置 |
配置服务的ip地址与端口等设置 |
|
– |
– |
– |
客户端(教师端) |
1.0版本暂不开放 |
- |
– |
– |
– |
web端(管理员端) |
用户登录 |
同客户端 |
其余业务 |
一概同客户端 |
|
– |
– |
– |
web端(学生端) |
登录 |
用户输入用户名、密码,登录 |
查询课表 |
支持单周查询、课表导出 |
|
– |
– |
– |
服务端(Java) |
用户接入 |
接收网页端、客户端的连接,管理客户端信息 |
业务分配 |
分发网页端/客户端的各类型业务 |
|
心跳处理 |
自定义 |
|
– |
– |
– |
服务端(C++) |
自动排课 |
设计算法,配合数据库,完成高效排课 |
并发负载 |
初始化30的处理线程 |
|
– |
– |
– |
数据库 |
数据库设计与应用 |
关系模型设计,服务于排课系统 |
– |
– |
– |
日志 |
日志 |
每天生成一个运行日志,包括业务处理、运行情况、故障记录等 |
– |
– |
– |
压力测试程序 |
单客户单业务测试 |
主要测试服务器单笔业务的处理能力和数据准确性 |
多客户单业务 |
测试服务器吞吐量 |
|
测试报告 |
给出关键参数和测试结果,如:业务成功数、失败数、业务类型等 |
|
压力参数设置 |
每次测试时,用户可以自定义测试时长、业务类型、模拟客户端数等,并能保存到参数文件中 |
|
测试日志 |
记录每次测试结果,每天生成一个 |
|
– |
– |
– |
网安 |
网关服务器 |
实现排队 |
防火墙 |
团队防火墙配置 |
|
流量IP |
模拟大流量IP访问 |
4、非功能性需求
功能类别 |
功能说明 |
---|---|
万级并发 |
要求一台服务器能够承受10000台以上的连接数接入 |
大并发业务 |
要求一台服务器能承受200-300并发业务处理 |
分布架构 |
采用TCP流协议进行进程间通信 |
系统拓展性 |
能够在尽量不修改源代码的前提下,拓展业务 |
系统安全 |
承受一些非法操作的轰炸 |
5、系统总体设计
5.1系统总体框架(参考)
5.2系统流程图(参考)
6、通信程序关键流程设计
6.1 断线重连处理
设备开机后,设备与服务器保持长连接,由于种种原因,中间过程可能发生断线,服务器需要侦测到断线情况,客户端监测到断线需要在UI界面上提示断线。
6.2 粘包/半包检测与处理
在TCP传输过程中,可能出现两笔业务出现粘包,需要注意区分。解决方案:包头+包体+包尾。
6.3 文件缺失检测与处理
文件传输过程中若出现传输中断,需要进行妥善处理。
7、立项标准
7.1 项目小组
本项目为团队开发项目,意在让队员能够体会团队开发的过程以及能在过程中积累团队配合的经验。 为了保证每个人的代码量和过程中应用技术的水平,建议每个团队人数在2-3人,最佳组合是3人。 其中一人为开发组长,协调组员开发以及进度控制。
7.2 开发周期要求
本项目开发的总周期为15个工作日,具体几个阶段的开发时间分配如下
阶段名称 |
占用时间 |
---|---|
项目规划 |
2天 |
基准测试 |
3天 |
项目编码 |
7天 |
项目联调 |
2天 |
项目总结 |
1天 |
7.3 编码规范要求
(1)源码布局规范 (2)变量命名规范 (3)函数命名规范 (4)类型定义规范 (5)注释规范
为了后期复盘,也为了能让别人看懂。
8、考核标准
8.1 项目总分为100分,各个模块考核比重如下:
项目名称 |
考核比重 |
---|---|
开发进度 |
6% |
系统设计 |
10% |
功能模块 |
74% |
代码规范 |
5% |
项目总结 |
10% |
工作日报 |
5% |
8.2 开发进度考核标准
延期一天3分。
8.3 功能考核标准
8.3.1 客户端
功能名称 |
考核比重 |
---|---|
网络连接 |
15% |
UI设计 |
15% |
数据导入 |
30% |
用户功能 |
15% |
团队协作 |
20% |
用户体验 |
5% |
8.3.2 服务端
用户连接 |
15% |
---|---|
负载均衡 |
15% |
用户交互 |
15% |
排课算法设计 |
25% |
数据库交互 |
15% |
日志交互 |
5% |
成员合作 |
10% |
非功能性需求不作为加分项。
8.3.3 压力测试
UI界面设置 |
20% |
---|---|
日志信息 |
20% |
单业务 |
15% |
多业务 |
35% |
团队合作 |
10% |
8.3.4 网络安全
网关服务器 |
40% |
---|---|
大流量IP |
30% |
防火墙 |
20% |
团队合作 |
10% |
8.4 结项考核标准
项目总体介绍
项目亮点介绍
项目不足与改进
项目心得体会
答辩
8.5 日常考核标准
开发周期内,写周报吧,大家都忙。 开发周报没有按时填写或应付性填写的,每次0~12分,扣满36分为止。
最后,祝大家顺利!
- SQL练习之不破坏应用程序现有查询的修改模式
- 快速入门系列--WCF--02消息、会话与服务寄宿
- JavaScript之面向对象学习二(原型属性对象与in操作符)获取对象中所有属性的方法
- 快速入门系列--深入理解C#
- “家庭贷款”域名Home.loans已经建站为家庭贷款相关的网站
- 微信亿级用户异常检测框架的设计与实践
- 程序员必知的6点编程秘诀,编程三板斧将解决90%问题!
- JavaScript之面向对象学习三原型语法升级
- 腾讯入局物业管理,欲改造传统服务?
- JavaScript之面向对象学习五(JS原生引用类型Array、Object、String等等)的原型对象介绍
- SQL学习之分组数据Group by
- SQL学习之数据列去空格函数
- 采用DIV+CSS布局对SEO优化有何好处?
- Sublime快速入门
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 玩转注册表,这几个windowsAPI函数就够了
- 施工专题第11篇:Python 包和模块使用总结
- Node.js-具有示例API的基于角色的授权教程
- 删库时,我后悔没早学会的数据库知识
- SwiftUI:使自定义类型符合 Comparable 协议
- 【CCF】线性分类器
- 计数二进制子串
- 6个实例详解如何把if-else代码重构成高质量代码
- leetcode201场周赛
- ASP.NET MVC+LayUI视频上传
- Linux执行tar解压报错tar: Error is not recoverable: exiting now
- elasticSearch学习(四)
- 在美帝的服务器的prefetch和aspera下载比较
- 全面介绍eBPF-概念
- 在ubuntu20上面安装R4