机房管理计费系统设计说明书

合集下载

机房管理系统_系统设计说明书

机房管理系统_系统设计说明书

上海海事大学软件工程课程设计报告系统设计说明书项目名称:机房管理系统项目组长:沈连才组长班级:计算机083 项目组员:陈仙娟裘宙欣陈莉2010年12 月08 日目录1引言 (1)1.1编写目的 (1)1.2背景 (1)1.3定义 (2)1.4参考资料 (2)2总体结构设计 (2)2.1 设计要求 (2)2.2运行环境 (3)2.3 系统软件结构图 (3)2.4人工处理过程 (5)2.5尚未问决的问题 (5)3详细设计 (5)3.1 验证模块的设计 (5)3.1.1 程序描述 (5)3.1. 2 IPO图 (5)3.2系统管理模块的设计 (6)3.2.1 程序描述 (6)3.2. 2 IPO图 (7)3.3用户管理模块的设计 (8)3.3.1 程序描述 (8)3.3. 2 IPO图 (8)3.4考勤管理模块的设计 (9)3.4.1 程序描述 (9)3.4. 2 IPO图 (9)3.5费用管理模块的设计 (10)3.5.1 程序描述 (10)3.5. 2 IPO图 (11)4系统数据结构设计 (12)4.1逻辑结构设计要点 (12)4.2物理结构设计要点 (13)4.3数据结构与程序的关系 (15)5系统用户界面设计 (15)6.1 用户分析 (15)6.2 输入界面设计 (16)6.3 输出界面设计 (17)6系统出错处理设计 (17)6.1出错信息 (17)6.2补救措施 (18)1引言1.1编写目的通过这个阶段划分组成系统的物理元素如程序,文件,数据库,人工过程和文档等。

设计软件的结构,确定系统中每个程序的组成模块以及这些模块相互间的关系。

该文档的预期读者是客户、领导、软件编码人员等。

1.2背景现代社会的校园网络环境,已经大大发生了变化,除了个人笔记本电脑,各种计算机、语音实验室机房也成为了使用频率颇高的场所,我们不能仅仅把它理解为提供上机的环境,而是应该完善此处的各种相关工作,如考勤,收费等,同时最大限度的降低机房的运营成本,提高使用率。

机房计费管理系统的设计与实现

机房计费管理系统的设计与实现

l3 7
维普资讯
加 、 修 改 、 删 除 和 密 码 修 改 , 可 以 为 不 解 除且 运行 于监 控状 态 。 子系统 包 括修 额 。学 生 卡 表 用于 存 放 学 生 卡 的 信息 , 同级 别管 理 员登录 系统 时提 供 不 同的功 改 密 码 、 查 询 记 录 和 关 机 模 块 , 同 时 给 包括 卡号 、密 码 、开卡 时 间 、状态 、金 额 。在线 用 户表 用 于存 放 用户正 在上 机 能 。系统 管理 员拥 有最 高 系统 权限 ,一 用 户 提 供 相 应 的 功 能 。 般 管理 员只有收 费 做帐 的权 限 。 系统 设 14 据 结 构设 计 .数 的信 息 ,包括 卡号 、主机 I P地址 、主机 置模块 主要 是收 费 费率 和上 机 类别 的设 整个 系统 的操 作是 围绕 着数据 进 行 名 、连 接状 态 和上 线时 间 。管 理人 员表 置 ,费 率是 以 每 小 时 多 少 元来 计 算 的 , 的 , 因 而 数 据 的 设 计 是 系 统 实 现 的 关 用 于 存 放 管 理 员 的 个 人 信 息 ,包 括 编 fd s 上 机 类 别 则分 为收 费 上机 和预 约 上 机 , 键。本系统只有一个数据库 j f b,包含 号 、 姓 名 、 权 限 和 密 码 。 如 果 是 收 费 上 机 , 那 么 就 应 设 定 相 应 的 7个 数 据 表 ( e) Ta bl ,如 图 4 所 示 。 2系统关键技术的实现 收 费 费 率 ; 如 果 是 预 约 上 机 ( 上 如 其 中学生信息表用于存放学生的个人 21 .条形码技术的应用 课 ) 那 么 就 是 免 费 的 。 当 天 结 帐 模 块 信息 ,包 括 学 号 、姓 名 、性 别 、卡 号 、 , 当 前 , 作 为 信 息 自动 识 别 、 输 入 的 主 要 实 现 当天 有 学 生 离 开 机 房 时 忘 记 刷 卡 班 级 、 电 话 介质主要有 I C卡 、磁卡 和条形码等 。I C 而 强行刷卡 并计 费 的功能 。 和 住 址 。 上 机 记 录 表 用 于 存 放 上 机 卡 存 储量 大 ,加 电可 改 写 ,读 写 操作 方 业 务 查 询 模块 时 的 相 关 信 息 ,包 括 记 录 编号 、卡 号 、 便 ,防 水 、防 磁 、可 靠 性 ,但 存 在 价 该 模 块 包 括 上 机 记 录 查 询 和 充 值 明细 刷 卡 入 时 间 、刷 卡 出时 间 、上 线 时 间 、 格 高 、制 作不 方便 、 易污 损 、不 防磁 的 查 询 两 个 子 模 块 。 上 机 记 录 模 块 主 要 是 主机 I P地 址 、上机 费用 、上机 类型 、管 显 著缺 点 。而 磁卡 和 条形码 的 主要 缺点 查询 用 户上机 的情 况 ,可 以按 卡号 、值 理人 员编号 。 充值信 息表 用 于存 放充值 是 不 易 改 写 、 存 储 容 量 小 , 但 条 形 码 输 班 人 和 上 机 的 日期 进 行 查 询 , 查 询 后 也 的 信 息 ,包 括 充 值 编号 、管 理 员 编号 , 入速 度快 、准确 度 高 、成本 低 、可 靠性 可以 打印清 单给 用 户 。充 值 明细模 块 主 卡号 、充值时 间和充 值数 目。财 务信 息 好 、制 作方 便 , 因而发 展十 分迅 速 。在 要 实 现 学 生 对 自 己 充 值 情 况 的 查 询 , 可 表 用于 统 计 资 金 的情 况 ,有 统 计 日期 , 下转 第 16页 I 7 . 以按 照卡号 、收 款 人和 充值 日期进 行查 帐 户 总 金 额 , 充 值 总 金 额 和 已 使 用 总 金 询 ,同时该 模块 也能 打 印学 生查 询 的结 果 。 业务管理模块 该模块 包 括卡 管 理 、在 线监 控 和接 受刷 卡三 个 子模块 。卡 管理 模块 主要 是 对用 户 的卡进 行 管理 ,包 括 新开 卡 、卡 充值 、修 改卡 信 息 、卡挂 失 、解 挂卡 和 注销卡 等 功能 。在 线 监控 模块 主要 检测 机房 计算 机的 连接状 态 ,连接 状态 有 三 种 :一是正 常连 接 ,即刷 了卡 ,有 开机 连 接 上 来 的 ; 二 是 非 法 连 接 , 即 连 接 上 来 ,但 没有 刷卡 ;三是 没有 连接 ;这三 种 状 态 用不 同的 图标 显 示 , 以便 觉 察 。 同时该模块也提供查询用户来上机的时间 图 3 服务端子系统功 能结构 图 和机 位 的功能 。接受 刷卡 提 供刷 卡进 和 刷卡 出的 功 能 。 学生信 息表 (mdn ̄ ) S et 上机记录表 ( J e od SR cr) 充值信息表 ( d nyn o Ad Moe lf) 特殊处理模块 S e md ̄No n aca(5 vrhr1) Sl Jd uiu i ni ) nqed t 1 Ad Moel m e (6 d n yd l) 5 该 模 块 包 括 学 生 密 码 修 改 、 学 生 上 Na me n aca( vrhr8 ) C rN m naca 1) ad u vrhf (5 Maa cNo naca(0 n gt vrhr1) 课 、学 生 下 课 和 成批 做 卡 四 个 子模 块 。 Sx e b 0) i t It n me i dtl e8 aa ( en ) C rNu ad m nac a(5 vrhr1) 学 生 密码 修 改模 块 为 学生 提 供 修改 密码 的 功 能 ;学 生 上 课 、 学 生 下 课 和 成 批 做 卡 C rN m naca 5 ad u vrh ̄l) Ot u me , d ̄a e8 a ln ( ) It ni me dta e8 a ln() e 主 要是 为学 生上 下课 而 定做 的 , 只要输 Cas l s n aca(2 vrhr1) O l ei aeme8 ni Tmedtl () n a MoeNu s l ny6 ny m mamo e() l 入学生的班级和密码就可以实现成批卡的 T l h n n ac a(2 ee o e vrh r1) p lAd s n acaf0 p  ̄es vrh r ) 5 财务信息表 ( d n elf ) AdMo yno 刷 入 、刷 出和做卡 ,不 用 为每 个 学��

c课程设计机房收费管理系统

c课程设计机房收费管理系统

c 课程设计机房收费管理系统一、教学目标本课程旨在通过学习机房收费管理系统的课程设计,使学生掌握计算机程序设计的基本原理和方法,培养学生的实际编程能力和问题解决能力。

在知识目标上,学生应掌握Java语言的基本语法、面向对象编程思想以及常用的数据结构;在技能目标上,学生应能够独立完成机房收费管理系统的需求分析、系统设计、编码实现和测试工作;在情感态度价值观目标上,学生应培养团队合作意识、创新精神和职业道德。

二、教学内容本课程的教学内容主要包括四个部分:Java语言基础、面向对象编程、机房收费管理系统设计和实践。

其中,Java语言基础部分包括Java语法、数据类型、运算符、控制结构等;面向对象编程部分包括类、对象、继承、多态等;机房收费管理系统设计部分包括需求分析、系统设计、模块划分等;实践部分包括编码实现、测试和调试。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式。

主要包括:讲授法、案例分析法、实验法和讨论法。

讲授法用于讲解基本概念和原理,案例分析法用于分析实际问题和解决方案,实验法用于实践操作和验证,讨论法用于促进学生之间的交流和思考。

四、教学资源本课程的教学资源包括教材、多媒体资料、实验设备和网络资源。

教材选用《Java程序设计》作为主教材,辅助以《机房收费管理系统设计与实践》等相关参考书。

多媒体资料包括教学PPT、视频讲座等,实验设备包括计算机、网络设备等,网络资源包括在线编程平台、技术论坛等。

教学资源的选择和准备将充分支持教学内容和教学方法的实施,丰富学生的学习体验。

五、教学评估本课程的评估方式包括平时表现、作业、考试等多个方面,以全面、客观、公正地评价学生的学习成果。

平时表现主要评估学生的课堂参与度、提问回答、小组讨论等;作业主要评估学生的编程实践能力和理论知识掌握情况;考试则主要评估学生的知识掌握和应用能力。

评估结果将通过评分、评语等方式反馈给学生,以促进学生的学习进步。

机房收费系统概要设计

机房收费系统概要设计

机房收费系统概要设计目录一、引言 (2)1、编写目的 (2)2、背景 (2)3、定义 (3)4、参考资料 (3)二、总体设计 (3)1、需求规定 (3)2、结构 (3)3、数据结构与程序的关系(功能模块与相应数据表之间的关系 ) (4)4、架构设计(包图) (6)5、用例设计 (6)6、界面设计 (7)7、行环境 (16)8、本设计概念和处理流程 (17)三、接口设计 (17)1、用户接口 (17)2、外部接口 (17)3、内部接口 (18)四、系统出错处理设计 (18)一、引言1、编写目的本阶段在系统的需求分析的基础上,对机房收费系统做概要设计。

主要解决了实现该系统需求的程序模块设计问题。

包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、模块结构的设计等。

在下一阶段的详细设计中,程序设计员可参考此概要设计报告,在概要设计对机房收费系统所做的模块结构设计的基础上,对系统进行详细设计。

在一个的软件测试以及软件维护阶段也可参考此说明书,以便于了解在概要设计过程中所完成的各模块设计结构,火灾修改时找出在本阶段设计的不足或错误。

本文档的读者是项目设计和项目编码实现人员。

2、背景本项目作为机房上机收费项目提出,将学生上机、教师值班、管理员结账等一系列事项进行管理,大大提高了机房的管理效率。

本项目名称:机房收费系统本项目提出者:机房管理人员本项目开发者:提高班七期成员:姚**,臧**,要**本项目用户:值班教师,操作员,管理员运行该软件的计算站:廊坊师范学院数信学院机房3、定义LineSystem:机房收费系统4、参考资料《大话设计模式》二、总体设计1、需求规定2、结构3、数据结构与程序的关系(功能模块与相应数据表之间的关系 )机房收费系统共建了9个表,下面是9个表中的具体静态数据。

1)用户信息表(UserInfo)4、架构设计(包图)5、用例设计6、界面设计7、运行环境(1)设备硬件最低要求:CPU PⅡ以上PC服务器,内存512MB以上,硬盘10G以上。

机房收费管理系统 (2)

机房收费管理系统 (2)
软件编程,设计功能模块、调试,整理实验数据;
撰写课程设计报告;
验收程序、答辩。
中北大学
课程设计任务书
学院、系:
软件学院
专业:
软件工程
学 生 姓 名:
学 号:
设 计 题 目:
机房收费管理系统
起迄日期:
2011年5月30日~2011年6月10日
指导教师:
发任务书日期:2010年5月30日
课程设 计任 务 书
1.课程设计的任务和要求:
本课程设计是采用C语言,在VC平台下设计图书管理系统,该系统运行在MS-DOS命令行模式下。本课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。
1)进一步巩固和复习C程序设计的基础知识。
2)培养学生结构化程序、模块化程序设计的方法和能力。
3)了解软件的编制过程及各环节的具体内容
4)提高学生程序调试技巧、软件设计能力和代码规范化等素质
5)提高学生分析问题、解决问题以及实际运用能力
2.课程设计的具体工作内容:
1)输入功能:输入30名学生的学号、班级、姓名、上机起始时间。
每人的光盘目录内含:
(1)源程序文件和可执行程序文件;
(2)测试数据;
(3)课程设计报告文档(另需交打印文档一份)。
4.课程设计工作进度计划:
起迄日期
工作内容
2011年
5月30日~6月1日
6月2日~计题目,明确课程设计任务;查阅书籍,收集资料,确定设计方案和思路;
2)计算功能:计算每个下机学生的上机费用,每小时1元。(上机费用=上机时间* 1.0/h ,不足一小时按一小时计算)

AMS机房计费管理系统用户手册4.5.6

AMS机房计费管理系统用户手册4.5.6

北京迪科远望科技有限公司AMS机房计费管理系统用户手册4.5.6操作前请仔细阅读该手册欢迎使用在第一次安装和使用本产品之前,请您务必仔细阅读本手册,这会有助于您更好地使用本产品。

如果您未按本手册的说明及要求操作本产品,或因错误理解等原因误操作本产品,北京迪科远望科技有限公司将不对由此而导致的任何损失承担责任,但迪科专业维修人员错误安装操作过程中引起的损失除外。

北京迪科远望科技有限公司已经对本手册进行了严格仔细的校勘和核对,但我们不能保证本手册完全没有任何错误和疏漏。

北京迪科远望科技有限公司致力于不断改进产品功能、提高服务质量,因此保留对本手册中所描述的任何产品和软件程序以及本手册的内容进行更改而不预先另行通知的权利。

本手册内容受著作权法律法规保护,未经北京迪科远望科技有限公司事先书面授权,您不得以任何方式复制、抄录本手册,或将本手册以任何形式在任何有线或无线网络中进行传输,或将本手册翻译成任何文字。

如果您在使用过程中发现本产品的实际情况与本手册有不一致之处,或您想得到最新的信息,或您有任何问题或想法,请垂询或登陆:客户服务中心:4006999185北京迪科网址:本手册对一些标识做了约定,您可以参阅以下约定,方便您对本手册更好的理解。

内容标记说明图标含义正确的操作选择性操作或问题操作时需要注意的内容错误或者被禁止的操作【】表示界面上的按钮“”引用系统界面上的文字,标题或标签企业信息:北京迪科远望科技有限公司地址:北京市海淀区苏州街18号长远天地大厦B2座1007室(100080)电话:010 - 82608266传真:(8610)82609565网址:如何获得技术支持:致电客户服务中心:4006999185发送邮件至以下地址:tech@公司简介北京迪科远望科技有限公司(Beijing DataLook Technology Co., Ltd)是北京市高新技术产业开发实验区认定的股份制高新技术企业,注册资金1000万,是国内校园一卡通系统的主导型企业之一。

机房收费管理系统c语言

机房收费管理系统c语言

机房收费管理系统1. 引言在现代社会,机房成为了信息技术的重要组成部分,承担着信息存储、数据处理等关键任务。

机房的使用费用需要进行管理和收费,以维持机房的正常运转和持续发展。

因此,开发一套机房收费管理系统具有重要意义。

本文将通过C语言编写一个机房收费管理系统,并探讨其设计与实现。

2. 系统功能设计2.1 用户管理模块用户管理模块是机房收费管理系统的核心模块之一,用于管理用户的基本信息和账户余额。

具体功能需求如下:•用户注册:用户可以通过系统进行注册,输入基本信息并生成唯一的用户ID。

•用户登录:已注册的用户可以通过输入用户名和密码进行登录操作。

•用户查询:用户可以通过系统查询自己的账户余额和消费记录。

2.2 机房使用管理模块机房使用管理模块主要用于管理机房的使用情况和收费标准。

具体功能需求如下:•机房预约:用户可以通过系统预约机房使用时间,系统根据预约时间自动计算费用。

•机房取消预约:用户可以在预约时间之前取消机房的使用,系统将相应地进行费用计算和余额调整。

•机房使用记录查询:用户可以查询自己的机房使用记录和相关费用信息。

2.3 费用计算与管理模块费用计算与管理模块是机房收费管理系统的重要组成部分,用于计算和管理机房使用费用。

具体功能需求如下:•费用计算:系统根据机房使用时间和收费标准自动计算费用。

•费用管理:系统根据机房使用记录和费用计算结果进行费用管理和账户余额调整。

3. 系统设计与实现3.1 数据结构设计机房收费管理系统需要设计相应的数据结构来存储用户信息、机房使用记录和费用管理等数据。

可以使用结构体或链表等数据结构来实现。

3.2 用户管理模块实现用户管理模块可以通过调用C语言提供的文件操作函数来实现用户信息的读取、存储和更新。

可以使用文件来存储用户信息和账户余额等数据。

3.3 机房使用管理模块实现机房使用管理模块需要设计相应的数据结构来存储机房预约信息和使用记录。

可以使用链表或数组等数据结构来实现。

课程设计机房收费管理系统

课程设计机房收费管理系统

课程设计机房收费管理系统目录第一章课程设计目的和要求 (2)1.1 课程设计的目的 (2)1.2 课程设计实现的要求 (2)第二章课程设计任务内容 (3)第三章详细设计说 (4)3.1 模块 (4)模块描述 (4)功能模块图 (5)3.2 性能 (6)3.3 函数说明 (6)学生信息录入函数 (6)所有学生上机费用计算函数 (8)学生信息查询函数 (10)3.4 系统流程图 (13)第四章软件使用说明 (14)4.1 软件使用说明及出现的问题 (14)4.2 运行结果 (14)初始运行界面 (14)查询界面 (15)计算界面 (15)第五章课程设计心得与体会 (16)附录一参考文献……………………………………………………………………………………错误!未定义书签。

附录二程序清单 (18)机房收费管理系统第一章课程设计目的和要求1.1 课程设计的目的进一步巩固《C++程序设计》所学的知识,特别加强数组,指针,结构体,文件数据类型的应用,熟悉面向过程的结构化和面向对象可视化程序设计方法,培养结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解,锻炼程序设计的能力,以及用C/C++ 语言解决实际问题的能力,为以后后续课程的学习打好基础。

此课程设计着眼于知识的运用,把平常学的知识运用到课程实践中来,本身就是考察我们知识运用能力。

要求熟悉运用一些编程软件(如:Microsoft Visual C++ 6.0),对我们所学的理论知识进一步的深化。

1.2 课程设计实现的要求在程序设计中,既可以用传统的结构化程序设计方法,也可以用先进的面向对象程序设计方法。

机房收费管理系统主要应用在机房,将每位上网同学的学号、班级、姓名、上机起始时进行录入,对每位同学的上网费用进行计算并按班级、学号、姓名进行查询。

第二章课程设计任务内容用C/C++语言实现一个机房收费管理系统,该系统主要应用在机房管理上,通过这个系统可以录入学生信息的总数,学生信息包括学生的学号、班级、姓名,还有学生上机的起始时间。

机房收费管理系统-详细设计说明书

机房收费管理系统-详细设计说明书

1.引言1.1编写目的软件设计的任务是将软件需求变换成为软件的具体设计方案。

概要设计根据软件需求导出软件的体系结构;详细设计给出软件模块的内部过程描述。

该文档是设计结果的详细描述,也是程序员编写程序的功能依据。

1.2项目背景开发软件名称:图书管理系统。

项目开发者:怀化学院计算机科学系“图书管理系统”开发小组:×××(×号,组长),×××(×号),……用户单位:××学院1.3 定义图书管理系统对于现代图书馆而言,是能否发挥其教学科研的作用的至关重要技术平台。

对于读者和图书管理员来说,是能否方便快速获取信息的关键。

所以,图书管理系统应该能够为用户提供充足的信息和快捷方便的操作手段。

1.4 参考资料⏹钱乐秋等,《软件工程》,青还大学出版社;⏹张害藩,《软件工程导论》(第四版),清华大学出版社;⏹王珊等,《数据库原理及设计》,清华大学出版社;⏹赵池龙等,《软件工程实践教程》,电子工业出版社。

2.需求概述在图书管理系统中,管理员要为每个读者建立借阅账户,并給读者发放不同类别的借阅卡(借阅卡可提供卡号、读者姓名),账户内存储读者的个人信息和借阅记录信息。

持有借阅卡的读者可以通过管理员(作为读者的代理人与系统交互)借阅、归还图书,不同类别的读者可借阅图书的范围、数量和期限不同,可通过互联网或图书馆内查询终端查询图书信息和个人借阅情况,以及续借图书(系统审核符合续借条件)。

借阅图书时,先输入读者的借阅卡号,系统验证借阅卡的有效性和读者是否可继续借阅图书,无效则提示其原因,有效则显示读者的基本信息(包括照片),供管理员人工核对。

然后输入要借阅的书号,系统查阅图书信息数据库,显示图书的基本信息,供管理员人工核对。

最后提交借阅请求,若被系统接受则存储借阅纪录,并修改可借阅图书的数量。

归还图书时,输入读者借阅卡号和图书号(或丢失标记号),系统验证是否有此借阅纪录以及是否超期借阅,无则提示,有则显示读者和图书的基本信息供管理员人工审核。

机房收费管理系统

机房收费管理系统

机房收费管理系统设计报告课程名称:软件工程任课教师:选题名称:机房收费管理系统小组成员:日期:年月1可行性分析1.1技术可行性机房收费管理系统主体结构是局域网中实现客户端与服务器间数据交换,服务器端可以应用asp嵌入sql查询语句按条件查询显示学生上机时间;利用asp开发工具有条件查询出机器的使用情况、以及机房的收支情况并显示在窗体中,并应用asp编程实现自助为学生结账提示消费金额。

在客户端通过与服务器端数据文件链接记录学生自助输入的登录信息限在线30名学生信息,学生登录后就可以上网学习;以上皆是系统主要技术均是可通过现有技术实现。

1.2经济可行性通过使用该系统可以减少机房管理成本。

减轻机房管理人员工作量,减少机房资金不明流失,能够节省人工费用。

该软件的使用生命周期为5年左右。

本系统是开发给学校机房的小型系统,在经济可行性方面考虑是可行的。

1.3操作可行性机房收费管理系统使用的用户组织包括学生以及学校机房管理人员操作方式都是通过系统给用户提供的界面进行操作,这种操作都是极其简单的不需要额外的培训因此操作是可行的。

1.4可行性报告总结机房收费管理系统在技术可行性、经济可行性、操作可行性等方面是能够实现的,从法律、社会效益等方面考虑,机房收费管理系统并不是专业商业运营软件,因此运作软件后并不存在一些法律方面问题,此软件是为了方便大家的公益方面软件并不关系到社会效益。

1.5系统流程图通过对以上几方面分析导出系统主要流程图如下:查询事务信息查询程序机房使用信息信息生成程序信息报表学生上机信息文件结账事务结账程序费用账单2需求分析用户需求分析是整个设计制作的起点,它是在用户需求调研的基础上,确定系统的总体结构方案,完成相应的需求分析报告。

在确定系统的总体结构方案过程中,需要确定应用程序的结构、系统开发环境、系统测试环境和运行环境以及系统的功能模块。

在用户需求调研结束之后,应立即进行用户需求分析。

需求分析的结果反映了用户的实际需要,它将影响到设计的合理性和实用性。

机房收费系统 详细设计说明书第一遍

机房收费系统 详细设计说明书第一遍

廊坊师范学院软件工程课程设计报告详细设计说明书项目名称:机房收费系统项目组长:赵帅高玮项目成员:张文康2012年12月9日目录1引言 (5)1.1编写目的 (5)1.2背景 (5)1.3定义 (6)1.4参考资料 (6)2程序系统的结构 (6)3学生上下机设计说明 (12)3.1程序描述 (12)3.2功能 (12)3.3性能 (12)3.4输人项 (12)3.5输出项 (13)3.6算法 (14)3.7流程逻辑 (14)3.8接口 (16)3.9存储分配 (16)3.10注释设计 (16)3.11限制条件 (17)3.12测试计划 (17)3.13尚未解决的问题 (17)4一般用户设计说明 (17)4.1程序描述 (18)4.2功能 (18)4.3性能 (18)4.4输人项 (18)4.5输出项 (19)4.6算法 (20)4.7流程逻辑 (20)4.8接口 (22)4.9存储分配 (22)4.10注释设计 (22)4.11限制条件 (22)4.12测试计划 (23)4.13尚未解决的问题 (23)5操作员设计说明 (23)5.1程序描述 (23)5.2功能 (24)5.3性能 (24)5.4输人项 (25)5.5输出项 (25)5.6算法 (26)5.7流程逻辑 (27)5.8接口 (29)5.9存储分配 (29)5.10注释设计 (29)5.11限制条件 (29)5.12测试计划 (30)5.13尚未解决的问题 (30)6管理员设计说明 (30)6.1程序描述 (30)6.2功能 (30)6.3性能 (31)6.4输人项 (31)6.5输出项 (32)6.6算法 (33)6.7流程逻辑 (33)6.8接口 (34)6.9存储分配 (35)6.10注释设计 (35)6.11限制条件 (35)6.12测试计划 (35)6.13尚未解决的问题 (35)详细设计说明书1引言1.1编写目的现在机房里提供的办公服务不断增加,信息不断的发展,单靠人工管理已经远远不能应付,这就要求办公自动化系统必须实现自动化、集成化。

机房收费管理系统

机房收费管理系统

机房收费管理系统 Corporation standardization office #QS8QHH-HHGX8Q8-GNHHJ8目录第一章课程设计任务内容题目:机房收费管理系统目前,在部分高校中,计算机机房的上机收费仍然采用传统的人工计时方式,即学生凭有效证件前来上机,由机房管理人员手工登记开始时间和结束时间,然后按实际机时进行计算并收取相应费用。

人工计时计费方式不但效率低,而且容易出错,也不利于定期的统计工作。

随着高校学生人数的不断增加,这些工作的难度和强度也不断加大,给机房管理部门带来了很大的压力。

本课程设计要求实现机房收费管理系统,具体任务如下:(1)输入功能:输入30名学生的学号、班级、姓名、上机起始时间。

(2)计算功能:计算每个下机学生的上机费用,每小时1元。

(上机费用=上机时间* 1.0/h ,不足一小时按一小时计算)(3)查询功能:按条件(班级、学号、姓名)显示学生的上机时间。

(4)机器使用情况的显示(显示方式不限但要一目了然)。

第二章详细课程设计2.1系统总体模块图系统的整体模块描述如图所示图3-1 系统总体模块图2.2 系统的功能模块划分每一条记录包含一个学生学号、学生班级、学生姓名、上机起始时间,同时包含:完成对学生上机时间的录入;按条件(班级、学号、姓名)显示学生的上机时间,计算每个下机学生的上机费用,并能根据学生的上机时间进行计算上机费用,而且还能显示机器使用情况。

2.3 主要函数介绍Main-menu函数:输出机房管理系统菜单Input函数:输入若干学生的学号、班级和姓名及上机时间Online函数:学生上机,输入上机学生学号或姓名及时间Calculator函数:计算上机费用并输出Offline函数:学生下机时间,调用calculator函数得到上机费用Search函数:查找学生上机信息Display函数:显示全部机器的使用信息Main函数:函数调用以及结束程序2.4 系统程序代码及注释2.4.1输入功能:输入30名学生的学号、班级、姓名、上机起始时间#include<time.h>#include<stdio.h>#include<string.h>#include<Windows.h>#define N 20#define M 100struct student{ char id[N];char theclass[N];char name[N];char ontime[N];}student[M];int n;void addition(){ int i;printf("\n请输入录入学生信息的总数:");scanf("%d",&n);for(i=1;i<=n;i++){ printf("\n\t请输入第%d个学生学号(20s):",i);scanf("%s",student[i-1].id);printf("\n\t请输入第%d个学生班级(20s):",i);scanf("%s",student[i-1].theclass);printf("\n\t请输入第%d个学生姓名(20s):",i);scanf("%s",student[i-1].name);printf("\n\t请输入第%d个学生上机时间(20s)(例:02):",i); scanf("%s",student[i-1].ontime);printf("\n\t提示:您已成功录入第%d条信息\n",i);}}2.4.2计算功能:计算每个下机学生的上机费用,每小时1元。

java机房收费管理系统课程设计

java机房收费管理系统课程设计

java机房收费管理系统课程设计一、课程目标知识目标:1. 让学生掌握Java语言中面向对象编程的基本原理,包括类的定义、对象的使用、继承与多态;2. 使学生了解并应用Java集合框架,如List、Map等,用于存储和管理数据;3. 帮助学生掌握Java异常处理机制,提高程序的稳定性和可靠性;4. 引导学生掌握基本的数据库操作,如连接数据库、执行SQL语句、处理查询结果。

技能目标:1. 培养学生运用Java语言设计并实现一个机房收费管理系统的能力;2. 培养学生分析实际问题的能力,将实际问题转化为计算机程序;3. 培养学生团队协作能力,分工合作完成项目开发。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发他们探索计算机科学领域的热情;2. 培养学生严谨、细心的编程态度,养成良好的编程习惯;3. 培养学生面对问题时的积极心态,勇于克服困难,善于沟通交流。

课程性质:本课程为实践性较强的课程,以项目驱动的方式进行教学,让学生在实际项目中掌握Java编程知识。

学生特点:学生已具备一定的Java基础,具有一定的编程能力,但实际项目经验不足。

教学要求:注重理论与实践相结合,强调动手实践,提高学生的实际编程能力。

在教学过程中,关注学生的个体差异,因材施教,确保每个学生都能在课程中取得进步。

通过课程学习,使学生能够独立完成机房收费管理系统的设计与实现,为今后的实际工作打下坚实基础。

二、教学内容1. 面向对象编程基础:- 类与对象的概念- 封装、继承与多态- 抽象类与接口2. Java集合框架:- List接口及其实现类- Map接口及其实现类- 集合框架的使用场景3. Java异常处理:- 异常的概念与分类- try-catch-finally结构- 自定义异常4. 数据库操作:- JDBC简介- 数据库连接与操作- SQL语句执行5. 机房收费管理系统项目实战:- 需求分析- 系统设计- 编码实现- 测试与优化教学内容安排与进度:第一周:面向对象编程基础第二周:Java集合框架第三周:Java异常处理第四周:数据库操作第五周:机房收费管理系统项目实战(一)第六周:机房收费管理系统项目实战(二)第七周:课程总结与复习教材章节关联:1. 面向对象编程基础:《Java编程思想》第1-4章2. Java集合框架:《Java核心技术》第6章3. Java异常处理:《Java核心技术》第7章4. 数据库操作:《Java数据库编程》第1-3章5. 机房收费管理系统项目实战:结合教材内容,自行设计实践项目教学内容确保科学性和系统性,以教材为基础,结合实际案例,让学生在掌握理论知识的同时,提高实际编程能力。

机房收费管理系统

机房收费管理系统

第一章课程设计的目的和要求1.1 课程设计的目的进一步培养结构化程序设计的思想,加深对高级系统语言基本语言要素和控制结构的理解,针对C++语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。

此课程设计着眼于知识的运用,把平常学的知识运用到课程实践中来,本身就是考察我们知识运用能力。

要求熟悉运用一些编程软件,对我们所学的理论知识进一步的深化。

1.2 基本要求使用C++语言编写一个基于控制台的简单程序,使学生掌握简单的程序设计技巧。

同时设计一个简单的机房收费管理系统程序,可以实现机房收费的基本功能,是一款实用的小型程序。

第二章课程设计任务内容本章旨在向用户介绍清楚课程设计的任务和内容,包括设计背景、系统要求两部分。

2.1 设计背景随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。

管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。

2.2 系统需求设计一个机房收费管理系统程序,实现对机房收费进行运行。

基本要求:1、输入功能:输入30名学生的学号、班级、姓名、上机起始时间。

2、计算功能:计算每个下机学生的上机费用,每小时1元。

(上机费用=上机时间*1.0/h,不足一小时按一小时算)3、查询功能:按条件(班级、学号、姓名)显示学生的上机时间。

4、机器使用情况的显示(显示方式不限但要一目了然)第三章系统设计说明本章旨在系统的总体设计,包括总体结构图、函数和数据结构分析,以及其中包含的各种函数的流程图。

3.1 总体结构图图3-1总体结构图3.2 函数和数据结构分析主要函数、结构体和链表(1)主要函数main-menu 函数:输出机房管理系统菜单input 函数:输入若干个学生的学号、班级和姓名online 函数:学生上机,输入上机学生学号或姓名及时间calculate 函数:计算上机费用并输出offline 函数:学生下机,输入下机时间,调用calculate 函数得到上机费用search 函数:查找学生上机信息display 函数:显示全部机器的使用信息main 函数:函数调用以及结束程序(2)主要数据结构类型:结构体+单向链表struct manage{char* name;char* code;char* class;struct time time[N];}student;struct time{char* starttime;char* endime;int timeperiod;}time;struct PC{char* code;char* state;}PC;3.3 主函数程序流程图图3-2主函数程序流程图3.4 子函数流程图1 输入学生信息图3-3子函数程序流程图2 学生上机图3-4子函数程序流程图 3 学生下机图3-5子函数程序流程图4 上机时间查询图3-6子函数程序流程图5 机器使用情况图3-7子函数程序流程图第四章程序编码与调试4.1 程序编码该程序总共由八个模块组成(1)main-menu 函数:输出机房管理系统菜单{ char c;do{system("cls");printf("\t\t\t****机房收费管理系统****\n");printf("\t\t\t1.输入学生信息\n");printf("\t\t\t2.上机\n");printf("\t\t\t3.下机\n");printf("\t\t\t4.查询上机时间\n");printf("\t\t\t5.机器使用情况显示\n");printf("\t\t\t0.退出系统\n");printf("\t\t\t************************\n");printf("\t\t\t 请选择菜单(0-5):");c=getchar();}(2)input 函数:输入若干个学生的学号、班级和姓名int input(Student stu[],int n){int i=0;char sign='0';while(sign!='n'&&sign!='N'){getchar();printf("\t\t 学号:");gets(stu[n+i].num);printf("\t\t 班级:");scanf("%d",&stu[n+i].banji);getchar();printf("\t\t 姓名:");gets(stu[n+i].name);printf("\t\t 继续输入?是请按 Y,否请按 N:"); scanf("%c",&sign);stu[n+i].flag=0;i++;}return(n+i);(3)online 函数:学生上机,输入上机学生学号或姓名及时间在此函数中用了while语句和if语句while(s!=1&&s!=2);getchar();if(s==1)(4)calculate 函数:计算上机费用并输出if(stu.finish.minute<stu.start.minute){stu.finish.hour-=1;timet.minute=stu.finish.minute+60-stu.start.minute;}elsetimet.minute=stu.finish.minute-stu.start.minute;timet.hour=stu.finish.hour-stu.start.hour;if(timet.second==0&&timet.minute==0)t=timet.hour;elset=timet.hour+1;printf("\t\t 该生上机用时%d 小时,费用为%d 元\n",t,t);}(5)offline 函数:学生下机,输入下机时间,调用void offline(Student stu[],int n)(6)search 函数:查找学生上机信息char num_t[20],name_t[20];int i,s;do(7)display 函数:显示全部机器的使用信息{printf("\t 机器号是否使用使用者学号班级上机时间\n");printf("\t----------------------------------------------------------\n");for(k=0;k<30;k++){if(com[k].f==0)printf("\t%02d 否 -----:--:--\n",k+1);elsecout<<"yes"<<endl;com[k],com[k].stut.num,com[k].stut.banji,com[k].stut.start. hour,com[k].stut.start.minute,com[k].stut.start.second;}(8)main 函数:函数调用以及结束程序本模块用了选择语句switchint n=0;for(k=0;k<30;k++)com[k].f=0;for(;;){switch(main_menu())4.2 编码调试输入数据:学号:25 班级:1 姓名:荀三川预期结果:能够正确输出所录入数据以及执行过程正确。

机房收费管理系统

机房收费管理系统

一、题目:设计一个机房收费管理系统二、设计思路1、总体设计1)分析程序的功能:设计一个机房收费系统,实现对学生上机收费的管理,从而方便学校机房的管理。

2)系统总体结构:每一次运行的过程可以由这几部分完成:输入:输入学生的上机学号,班级、XX上级起始时间;计算:计算每个学生的上机费用;查询:查找学生上机信息并显示(班级、学号、XX);显示:显示机器使用情况信息总共四个步骤:对于每一次运行,关注的数据有三个:(1)学生的信息(2)计算机时费用(3)学生上机情况;对于统计信息需要三个:(1)学生上机信息并显示(班级、学号、XX)(2)显示机器使用情况信息(3)上机学生的学号、班级、XX、上机起始时间;这几组数据部联系很大,所以考虑把他们封装为结构体变量。

机器使用信息需要记录两个:(1)机器使用的标记(2)使用机器的学生。

根据问题的描述,可以按照程序要求的功能采用结构化的设计思想。

机房收费系统可利用菜单(界面制作switch语句)使用户选择各个功能模块,而后可根据不同的选项进入到不同的功能模块进行执行。

结束程序,选择y之外的任何字母或数字,如果想让程序循环执行,则选择y。

以上功能模块分别用函数来实现,然后由主函数main来调用。

2、各功能模块的设计:说明各功能模块的实现方法1)Input模块该函数为输入学生信息:学号,XX,班级,上机起始时间,并对学生是否上机做标记(flag为1,f为1为上机),人数与上机数一致。

2)Findstunum模块查询功能:当输入的学号与学生信息中的学号相同时,则输出该生学号,班级,XX 和上下时间,若该生未下机,则下机时间显示0。

下机功能:询问是否下机,用switch语句控制,若下机则要求输入下机时间,不下机则退出。

3)Calculate(计算)模块该模块中,由于时、分、秒三个时间单位不统一,首先要统一单位,均用秒做单位(1h=3600s 1min=60s),然后判断上机时间是否满一小时,不满一小时按一小时收费,超过一小时再进行计算。

机房收费管理系统

机房收费管理系统

机房收费管理系统拟制人颜兄儿审核人刘威批准人刘威一|、可行性研究报告1、引言1.1. 编写目的1.2 编写背景1.3 定义1.4 参考资料2、可行性研究的前提2.1 要求2.2 目标2.3 条件、假定和限制2.4 可行性研究方法2.5 决定可行性的主要因素3、对现有系统的分析4、1.引言1.1 编写目的此可行性研究报告对《机房收费管理系统》软件做了全面细致的市场调研,明确所要开发软件具有的功能、性能、前提、限制、环境等,使决策人员能清楚地了解该软件的开发前景、支出及收益情况。

1.2 编写背景随着学校学生越来越多,管理学生上机,越来越困难,为了更合理、方便、简单、易行管理学校的学生上机,我们同学校有关领导商议,为学校开发了《机房收费管理系统》,复杂的学生管理由计算机完成,方便了机房老师的管理。

同时,写了《可行性分析报告》。

1.3 定义1.4 参考资料《软件工程》熊江华中科技大学出版社《数据库实用教程》董健全清华大学出版社2可行性研究的前提2.1要求A查询功能:按条件(班级、学号、姓名)显示学生的上机时间。

B 性能:查询效率要做到精准,信息维护功能做到简单易用,不需要过多对人员进行培训。

C输入功能:输入30名学生的学号、班级、姓名、上机起始时间。

D输出:能按要求在显示器上显示所需内容并能打印成有条理的表格。

E计算功能:计算每个下机学生的上机费用,每小时1元。

(上机费用=上机时间* 1.0/h ,不足一小时按一小时计算)2.2目标A、提高机房管理效率B、方便学生上机及老师管理机房C、有效管理机房学生上机情况,方便查询等2.3条件、假定和限制A、机房管理系统的运行寿命的最小值为10年B、进行系统方案选择的比较时间为:3天C、经费3000元,无其他条件D、硬件:学生使用的台式机运行环境:window 7 或xp系统开发环境:visual basic 6.0E、可利用的信息和资源:学生信息管理系统2.4进行可行性研究的方法可行性研究在老师的带领下对学校的机房做了认真的调查,认为机房管理系统开发是必要的,它可以提高老师的工作效率,增加学院的经济收入,充分的利用学校的资源2.5 决定可行性的主要因素3.对现有系统的分析3.1 处理流程系统流程图上机刷卡输入验证信息主系统用户信息数据库消费信息费用生成程序费用明细报告下机刷卡3.2 局限性(1)学生账户余额不足时,系统无法报错,或是否让学生继续上机或提出警报“余额不足”,学生账户数据时刻在更新,可能更新不及时,处理不当。

学生机房上网计费系统设计

学生机房上网计费系统设计

学生机房上网计费系统设计引言:上网计费是网络管理中的重要组成部分,学生公共机房的网络主要是按照上网时间进行计费。

本文针对学生机房上网设计了简单实用的计费系统,为机房网络管理带来方便。

学生机房是每个学校必备的教学硬件设施,在大学里更是不可缺少。

高等院校的教育目前正沿着信息化、现代化的方向发展,学生公共机房是日常教学的重要场所之一,可以让学生在理论学习的同时进行实践,了解和掌握计算机网络技术。

大多数高等院校的学生机房在满足日常教学的同时还为学生提供上网服务,使学生在课余时间也能够通过网络进行学习和获取信息。

为了使学生在公共机房上网有规律和懂得节制,也可以使得工作人员的额外服务得到适当的报酬,机房上网计费就变得重要且必要。

学生机房上网简介学生机房指的是学校统一建设的用于日常教学的计算机公共教室,一般由专人负责管理,有上课需求的老师通过提前与相关部门协调安排,可以在机房授课。

公共机房除了计算机之外一般还配有交换机和服务器。

为了更好地服务地方,在完成基本教学任务的同时,高校计算机公共机房可以进行培训、考试等社会教育活动,具体要依据各学校规定,与相关负责人进行协商。

除此之外,为了更好地利用公共资源,发挥其作用,学校公共机房可以在课余时间面向学生开放,学生可以凭证件等到机房做课外温习,亦可以通过互联网获取更多知识和信息。

学生机房上网通常是在正常教学之外,利用课余时间进行的网络服务。

利用学校机房提供网络服务一方面可以为学生提供学习场所,另一方面可以避免或减少学生去网吧,因为学校有专门的制度和人员管理,可以为学生提供一个相对安全的网络环境。

但是由于学生一般缺乏自制力,上网的时候遇到感兴趣的东西就忘记了时间,为了对其进行很好的约束,同时也能够让机房工作人员的额外工作得到相应的报酬,学校机房上网学生也要有负担适当的费用。

学生机房上网收费的方式比较灵活,有按次收费的,也有包月包年的,多采用上机票或者划卡的方式。

由于收费形式多,管理困难,不管是上机票还是划卡,都有漏票现象发生,造成财务漏洞,并且难于查询统计,给机房管理工作造成诸多不便。

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

目录第一章概述 (1)第二章需求分析 (1)第三章功能模块 (1)第四章详细设计 (2)第五章参考文献 (20)第一章概述1、项目背景:课程设计2、编写目的:掌握数据库设计原理|理解网络通信基本原理及相关软件的使用3、软件定义:机房上机计费系统4、开发环境:Visual C++ 6.0第二章需求分析1、问题的提出:为了更为高效地管理机房,决定开发此系统。

2、需完成的功能:(1)开户、充值、特殊情况下可冻结帐号、计时等服务器端应用功能(2)能限定计算机的使用,学生在客户机上能修改密码,查看上机情况等。

第三章功能模块3.1功能概述3.1.1 服务器端|- 学生管理(开户|充值|冻结账户)|- 计时|- 上机模式设定3.1.2 客户端|- 上机模式选择|- 查询机时及上机时间|- 修改密码(自由上机)3.2 模块设计3.3 功能描述:3.3.1 服务器端1)管理员登录、注销.2)开户:学号、姓名、班级等学生基本信息。

3)充值:学号、金额.4)冻结账户5)设定当前上机类型(自由上机|教学上机)6)管理上机人员(发送消息|强制下机)3.3.2 客户端1)上机类型选择2)查询机时3)修改密码第四章详细设计4.1数据库设计本系统数据库采用Microsoft Access数据库mdb中有如下表:管理员信息表(admin),管理员日志表(adminaction),学生信息表(user),上机记录表(useraction),当前上机人员表(now).各表结构如下:管理员信息表(admin)管理员日志表(adminaction)学生信息表(user)上机情况记录表(useraction)当前上机人员(now)4.2 服务器端4.2.1 管理登录其登录代码如下:void CFEnterDlg::OnOK(){ UpdateData(TRUE);if(id.IsEmpty()||password.IsEmpty())MessageBox("请输入完整!");else{ CAdminSet admin;bool tag=true;admin.Open();while(!admin.IsEOF()){if(admin.m_id==id&&admin.m_password==password){tag=false;glbpassword=admin.m_password;glbname=admin.m_name;if(admin.m_tag)tagofhadm=true;elsetagofhadm=false;break;}admin.MoveNext();}admin.Close();if(tag){ MessageBox("failed!");id.Empty();password.Empty();UpdateData(FALSE);}else{ CAdmactionSet admaction;admaction.Open();登录成功后,将会出现如下界面:4.2.2 学生管理1)开户2)充值3)冻结账户4)查看当前上机情况如上图所示,在查看当前上机情况窗口,可以看到当前上机人员的信息,同时,可对其机器进行管理,如对其发送信息,强行其下机,等操作.4.2.3 上机模式设定当前上机模式为自由上机,只有当服务器端设定为教学上机模式后,学生上机才允许以教学上机模式登录,详情见客户端说明4.2.4 管理员个人设定1)更改密码2)查看操作记录4.2.5 计时模块该部分是服务器端的重要模块.负责对所有客户机的计时工作,同时,在其机时快用完时,还需对其发送信息,其部分代码如下:void Time()//////////////计时///////////////////////{ bool tagofupdate=true;CTime currenttime=CTime::GetCurrentTime();// CString mtime=currenttime.Format("%#H时%#M分%#S秒");///////////获得当前时间//////////int c_hour=currenttime.GetHour();int c_minute=currenttime.GetMinute();////////////////从CNOWSET中读取开始时间/////////CNowSet usernow;usernow.Open();while(!usernow.IsEOF()){//////////////先把NUM读取出来///tagofupdate=true;if(!usernow.m_statue)////自由上机{CUserSet user;CString *pxuehao= new CString;pxuehao->Format("xuehao='%s'",usernow.m_xuehao);user.m_strFilter=*pxuehao;delete pxuehao;user.Open();int num=user.m_num;//////////num//////////int s_hour=usernow.m_hour;int s_minute=usernow.m_minute;int usedtime=(c_hour-s_hour)*60+c_minute-s_minute;user.Edit();user.m_time-=usedtime;user.Update();//////////////////////////CString computer;computer=usernow.m_ip;computer=computer.Right(2);computer.Replace(".","");int icomputer=atoi(computer);/////////////////////////////if(user.m_time<num*5&&user.m_time>0&&tagofsend){//MessageBox(NULL,"发送消息提醒其下机","test",MB_OK);///////发送消息提醒其下机//////////////这里是给客户端发送信息////////SOCKADDR_IN addrSrv;SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);addrSrv.sin_addr.S_un.S_addr=inet_addr(usernow.m_ip);addrSrv.sin_family =AF_INET;addrSrv.sin_port=htons(6001);int ret = 0;int error = 0;char sendmsgbuf[2]="7";ret = connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));if(ret == SOCKET_ERROR){TRACE("Connect Error: %d \n", (error = WSAGetLastError()));if(error == 10061)//MessageBox(NULL,"客户端遇到错误,请检查!","错误",MB_ICONERROR | MB_OK);//phserver->SendMessage(WM_SENDMSGFAIL,0,MAKELPARAM(0,icomputer));return;}else{ret = send(sockClient, sendmsgbuf,2, 0);if(ret != 2){// MessageBox(NULL,"客户端遇到错误,请检查!","错误",MB_ICONERROR | MB_OK);// phserver->SendMessage(WM_SENDMSGFAIL,0,MAKELPARAM(0,icomputer));return;}}}else if(user.m_time<=0&&tagofsend){// MessageBox(NULL,"发送消息,锁定客户端","test",MB_OK);//////////发送消息,锁定客户端////////////SOCKADDR_IN addrSrv;SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);addrSrv.sin_addr.S_un.S_addr=inet_addr(usernow.m_ip);addrSrv.sin_family =AF_INET;addrSrv.sin_port=htons(6001);int ret = 0;int error = 0;char sendmsgbuf[2]="8";//sendmsgbuf[0]='8';//sendmsgbuf[1]=char(0);ret = connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));if(ret == SOCKET_ERROR){TRACE("Connect Error: %d \n", (error = WSAGetLastError()));if(error == 10061)//MessageBox(NULL,"客户端遇到错误,请检查!","错误",MB_ICONERROR | MB_OK);phserver->SendMessage(WM_SENDMSGFAIL,0,MAKELPARAM((WORD)0,(WORD)icomputer));return ;}ret = send(sockClient, sendmsgbuf,2, 0);if(ret != 2){// MessageBox(NULL,"客户端遇到错误,请检查","错误!",MB_ICONERROR | MB_OK);phserver->SendMessage(WM_SENDMSGFAIL,0,MAKELPARAM((WORD)0,(WORD)icomputer));return ;}else{////////////在now里面对其进行删除//////////////CString xuehao=usernow.m_xuehao;CString name=usernow.m_name;CString l_class=usernow.m_class;CString ip=usernow.m_ip;int statue=usernow.m_statue;usernow.Delete();tagofupdate=false;//now.Requery();if(!statue){///////////////useraction添加记录///////////////CUseractionSet useraction;useraction.Open();useraction.AddNew();useraction.m_xuehao=xuehao;useraction.m_name=name;useraction.m_class=l_class;useraction.m_action="强迫下机";useraction.m_ip=ip;CTime currenttime=CTime::GetCurrentTime();CString mtime=currenttime.Format("%#Y年%#m月%#d日%#H时%#M 分%#S秒");useraction.m_date=mtime;useraction.Update();useraction.Close();//////////////////user中的num减一//////////////user.Edit();user.m_num=user.m_num-1;user.Update();}}}user.Close();if(tagofupdate){ usernow.Edit();usernow.m_hour=c_hour;usernow.m_minute=c_minute;usernow.Update();}}usernow.MoveNext();}usernow.Close();tagofsend=true;}4.3 客户端4.3.1上机登录上机登录时有三种方式可供选择:自由上机,教学上机,教师上机.其中自由上机需要输入帐号和密码才能进入,教学上机只有在上课时才能用,教师上机需通过管理员许可后方能上机.登录成功后,可通过系统托盘执行操作,如下机,查看当前上机情况,及修改密码,等等.4.4通信模块该模块是系统中最为重要的部分,它负责整个系统的网络通信,为此,我们需设定一些简单的通信协议,如下:客户端发送信息标志及意义服务器返回信息标志及意义下面仅列服务器端的通信代码UINT startserver(void *cs){char sendbuf[2];SOCKADDR_IN addClient;int len=sizeof(SOCKADDR);char recvbuf[35];SOCKET sockSrv=(SOCKET)cs;while(1){SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addClient,&len);int tagrecv=recv(sockConn,recvbuf,35,0);if ((tagrecv == 0) || (tagrecv == SOCKET_ERROR)){AfxMessageBox("连接失败!",MB_OK);break;}if(recvbuf[0]=='1')////为教学上机{if(statue)/////////////通过验证///////////////{sprintf(sendbuf,"%d",0);/////////教学上机时间////////////对NOW进行记录///////////CNowSet nowstudent;CString *pip;pip= new CString;pip->Format("ip='%s'",inet_ntoa(addClient.sin_addr));nowstudent.m_strFilter=*pip;nowstudent.Open();if(nowstudent.GetRecordCount()==0)//////////////客户端的IP不存在,说明他是第一次登录,应记录{nowstudent.Close();nowstudent.Open();nowstudent.AddNew();nowstudent.m_xuehao="教学上机";nowstudent.m_password="password";nowstudent.m_name="学生";nowstudent.m_ip=inet_ntoa(addClient.sin_addr);nowstudent.m_class="班级";CTime currenttime=CTime::GetCurrentTime();CString mtime=currenttime.Format("%#H时%#M分%#S秒");nowstudent.m_starttime=mtime;nowstudent.m_statue=1;nowstudent.Update();nowstudent.Close();}}elsesprintf(sendbuf,"%c",'b');sendbuf[1]='\0';send(sockConn,sendbuf,strlen(sendbuf)+1,0);shutdown(sockConn, 2);closesocket(sockConn);}else if(recvbuf[0]=='2')////////1为教师上机{CString *msg;msg =new CString;//////////////以后再加一个字符串转换函数/////////////CString computer;computer=inet_ntoa(addClient.sin_addr);computer=computer.Right(2);computer.Replace(".","");msg->Format("%s,%s号机上有教师请求上机,是否通过?","管理员",computer);int choice=MessageBox(NULL,*msg,"提醒",MB_YESNO|MB_ICONQUESTION);delete msg;if(choice==IDYES){sprintf(sendbuf,"%d",0);/////////教师上机/////////////对NOW进行记录///////////////CNowSet nowstudent;CString *pip;pip= new CString;pip->Format("ip='%s'",inet_ntoa(addClient.sin_addr));nowstudent.m_strFilter=*pip;nowstudent.Open();if(nowstudent.GetRecordCount()==0)//////////////客户端的IP不存在,说明他是第一次登录,应记录{nowstudent.Close();nowstudent.Open();nowstudent.AddNew();nowstudent.m_xuehao="教师上机";nowstudent.m_password="password";nowstudent.m_name="教师";nowstudent.m_ip=inet_ntoa(addClient.sin_addr);nowstudent.m_class="班级";CTime currenttime=CTime::GetCurrentTime();CString mtime=currenttime.Format("%#H时%#M分%#S秒");nowstudent.m_starttime=mtime;nowstudent.m_statue=2;nowstudent.Update();nowstudent.Close();}}elsesprintf(sendbuf,"%d",4);sendbuf[1]='\0';send(sockConn,sendbuf,strlen(sendbuf)+1,0);shutdown(sockConn, 2);closesocket(sockConn);}else if(recvbuf[0]=='0')/////////0为一般上机{////////将recvbuf分解开来////////////////////char *ch_xuehao,*ch_password;int len1=recvbuf[1];ch_xuehao=new char[len1+1];for(int i=0;i<len1;i++)ch_xuehao[i]=recvbuf[i+2];ch_xuehao[i]='\0';int len2=recvbuf[len1+2];ch_password=new char[len2+1];for(i=0;i<len2;i++)ch_password[i]=recvbuf[len1+3+i];ch_password[i]='\0';CString xuehao,password,name,l_class;xuehao.Format("%s",ch_xuehao);password.Format("%s",ch_password);delete ch_xuehao,ch_password;//////////////将recvbuf分解开来/////////////////////////////验证//////////////////CUserSet user;CString *pxuehao;pxuehao=new CString;pxuehao->Format("xuehao='%s'",xuehao);user.m_strFilter=*pxuehao;delete pxuehao;user.Open();bool tag_xx=true;int tag_of_sj;if(!user.GetRecordCount()||user.m_password!=password)///学号密码不正确tag_of_sj=1;else if(user.m_mark)//账户冻结tag_of_sj=2;else if(user.m_time<1)///时间不够tag_of_sj=3;else //成功{tag_of_sj=0;name=user.m_name;l_class=user.m_class;}user.Close();sprintf(sendbuf,"%d",tag_of_sj);sendbuf[1]='\0';send(sockConn,sendbuf,strlen(sendbuf)+1,0);shutdown(sockConn, 2);closesocket(sockConn);if(tag_of_sj==0){ ///////////先看是否存在/////////jishi();CNowSet nowstudent;CString *pip;pip= new CString;pip->Format("ip='%s'",inet_ntoa(addClient.sin_addr));nowstudent.m_strFilter=*pip;nowstudent.Open();if(nowstudent.GetRecordCount()==0)//////////////客户端的IP不存在,说明他是第一次登录,应记录{ ////////////////////////在now里添加记录/////////////////nowstudent.Close();//nowstudent.m_strFilter="";//////////////不知是否必要// nowstudent.Open();nowstudent.AddNew();nowstudent.m_xuehao=xuehao;nowstudent.m_password=password;nowstudent.m_name=name;nowstudent.m_ip=inet_ntoa(addClient.sin_addr);nowstudent.m_class=l_class;CTime currenttime=CTime::GetCurrentTime();CString mtime=currenttime.Format("%#H时%#M分%#S秒");nowstudent.m_starttime=mtime;nowstudent.m_hour=currenttime.GetHour();nowstudent.m_minute=currenttime.GetMinute();nowstudent.Update();nowstudent.Close();////////////useraction记录////////////////////CUseractionSet useraction;useraction.Open();useraction.AddNew();useraction.m_xuehao=xuehao;useraction.m_name=name;useraction.m_class=l_class;useraction.m_ip=inet_ntoa(addClient.sin_addr);useraction.m_action="上机";currenttime=CTime::GetCurrentTime();mtime=currenttime.Format("%#Y年%#m月%#d日%#H时%#M 分%#S秒");useraction.m_date=mtime;useraction.Update();useraction.Close();/////////////useraction记录/////////////////////////////////////////////////////////////////计数器加一CUserSet user;CString *pxuehao= new CString;pxuehao->Format("xuehao='%s'",xuehao);user.m_strFilter=*pxuehao;delete pxuehao;user.Open();user.Edit();user.m_num+=1;user.Update();user.Close();}}}else if(recvbuf[0]=='3')/////下机{/////把now里的记录删除//////////////////////*/tagofsend=false;jishi();CString xuehao,name,l_class;CString *pip= new CString;pip->Format("ip='%s'",inet_ntoa(addClient.sin_addr));CNowSet now;now.m_strFilter=*pip;now.Open();int statue=0;if(now.GetRecordCount()){ delete pip;xuehao=now.m_xuehao;name=now.m_name;l_class=now.m_class;statue=now.m_statue;now.Delete();now.Requery();}now.Close();if(!statue){///////////////useraction添加记录///////////////CUseractionSet useraction;useraction.Open();useraction.AddNew();useraction.m_xuehao=xuehao;useraction.m_name=name;useraction.m_class=l_class;useraction.m_action="下机";useraction.m_ip=inet_ntoa(addClient.sin_addr);CTime currenttime=CTime::GetCurrentTime();CString mtime=currenttime.Format("%#Y年%#m月%#d日%#H时%#M 分%#S秒");useraction.m_date=mtime;useraction.Update();useraction.Close();//////////////////user中的num减一//////////////CString *pxuehao= new CString;pxuehao->Format("xuehao='%s'",xuehao);CUserSet user;user.m_strFilter=*pxuehao;delete pxuehao;user.Open();user.Edit();user.m_num=user.m_num-1;user.Update();user.Close();shutdown(sockConn, 2);closesocket(sockConn);}}else if(recvbuf[0]=='4')/////更改密码{/////把学号,密码,新密码分别提取出来;char *ch_xuehao,*ch_password,*newch_password;int len1=recvbuf[1];ch_xuehao=new char[len1+1];for(int i=0;i<len1;i++)ch_xuehao[i]=recvbuf[i+2];ch_xuehao[i]='\0';int len2=recvbuf[len1+2];ch_password=new char[len2+1];for(i=0;i<len2;i++)ch_password[i]=recvbuf[len1+3+i];ch_password[i]='\0';int len3=recvbuf[len1+len2+3];newch_password=new char[len3+1];for(i=0;i<len3;i++)newch_password[i]=recvbuf[len1+len2+4+i];newch_password[i]='\0';CString xuehao,password,newpassword;xuehao.Format("%s",ch_xuehao);password.Format("%s",ch_password);newpassword.Format("%s",newch_password);delete ch_xuehao,ch_password,newch_password;///////////验证/////////CUserSet user;CString *pxuehao;pxuehao=new CString;pxuehao->Format("xuehao='%s'",xuehao);user.m_strFilter=*pxuehao;delete pxuehao;user.Open();if(user.GetRecordCount()&&user.m_password==password) { user.Edit();user.m_password=newpassword;user.Update();sprintf(sendbuf,"%d",5);}elsesprintf(sendbuf,"%d",6);user.Close();sendbuf[1]='\0';send(sockConn,sendbuf,strlen(sendbuf)+1,0);shutdown(sockConn, 2);closesocket(sockConn);}else if(recvbuf[0]=='5')/////////////客户端发送查看上机情况的请求///{ tagofsend=false;Time();char *ch_xuehao;int len1=recvbuf[1];ch_xuehao=new char[len1+1];for(int i=0;i<len1;i++)ch_xuehao[i]=recvbuf[i+2];ch_xuehao[i]='\0';CString xuehao;xuehao.Format("%s",ch_xuehao);delete ch_xuehao;CUserSet user;CString *pxuehao;pxuehao=new CString;pxuehao->Format("xuehao='%s'",xuehao);user.m_strFilter=*pxuehao;delete pxuehao;user.Open();int time=user.m_time;user.Close();char *sendbuf2= new char[5];sprintf(sendbuf2,"%d",time);int leni=strlen(sendbuf2);sendbuf2[i]='\0';send(sockConn,sendbuf2,strlen(sendbuf2)+1,0);delete sendbuf2;shutdown(sockConn, 2);closesocket(sockConn);}else{shutdown(sockConn, 2);closesocket(sockConn);}}WSACleanup();ExitThread(0);return 1;}第五章参考文献1.Visual C++6.0 程序设计实用教程中国民航出版社2.Visual C++6.0 实用培训教程宋辉,曲向丽,宋振龙编著人民邮电出版社3.Visual C++6.0数据库编程技术与实例四维科技沈炜,徐慧编著人民邮电出版社4.C++程序设计吴乃陵况迎辉李海文编著高等教育出版社5.Visual C++ 界面编程技术周鸣扬编著北京希望电子出版社总策划北京希望电子出版社20。

相关文档
最新文档