人人范文网 岗位职责

系统开发软件设计岗位职责(精选多篇)

发布时间:2021-02-06 08:38:14 来源:岗位职责 收藏本文 下载本文 手机版

推荐第1篇:软件设计辞职报告

软件程序员是一个工作压力非常大的职业,下面就是小编为您收集整理的软件设计辞职报告的相关文章,希望可以帮到您,如果你觉得不错的话可以分享给更多小伙伴哦!

软件设计辞职报告一

尊敬的领导:

您好!

在经过我长时间的考虑之后,结合我自身的实际情况,我不得不作出辞职申请,因为很多的实际情况,我已经无法继续在公司中工作下去,这些是我不愿意看到的,也是领导不愿意看到的。可是现实就是这样,谁也无法左右,我感到十分的无奈,我会牢记我在今公司中工作的过去的。

入职以后先后在宽带无线接入和gb维护开发部门工作,xx年年2月正式转正。转正成绩为c。以后的工作中表现正常,两次季度考核都获得c。由于个人的从业经历和专业的问题,对无线产品没有知识积累,但是在工作中我努力学习,积极请教,能够完成公司交给我的任务。

在职期间两个部门的主管对我的生活和工作都非常的关心,经常进行思想交流和技术点拨,使我受益很大,感谢领导们的关心。辞职主要原因是我自身的问题,无法适应目前的工作压力,精神上和身体上已经不勘重负。另一个原因是在华为入职以来一直找不到自己的位置,无法给自己定位。海外的生活使我感觉自己的性格特点和思维方式无法适应华为海外团队的文化。

出于保护自己的目的,特向您提出辞职申请。希望早日回到国内,完成离职手续,有时间调整自己的身体状态和精神状态。我想我会在调养好自己的身体之后,继续不断的努力工作下去的。可是现在的情况是我已经无法继续高质量完成公司的工作了,我只好选择离开,我在今后的工作中一定会更好的工作下去的。前提是我一定要养好自己的身体,我坚信自己能够走好!

请对我个人给予充分的谅解,并批准我的辞职申请,谢谢。

软件设计辞职报告二

尊敬的××领导:

当我在凌晨三点读到这段话时,心里面感慨万千,久不能眠。于是我打开Notebook,给您写了这封辞呈。

去年底开始,去与留这二字,在我心里一直反复。直到我想到了这句话“当您在很难作出选择的时候,您必须尊重发自你内心的声音”。当初进入公司时您对我的满怀期许。而我自持在外企呆过,做事条理清晰,对自已充满信心,看不到自已的短处。想起这些至今令我汗颜。

记得当时我在工作上遇到困难与挫折,我与我夫人商量准备离开公司时。我夫人一句意味深长的话让我留了下来。她说:“您先呆着看看,有的时候坏事它也末必是坏事”。我现在得感激她,因为现在看来,她的话是对的。是她的这句话,使我在工作之余每天都在反省自已的不足之处,并想办法加以弥补。我终于明白了一个道理,一个人在反省中不断完善和超越自我是多么的重要。

IT是一个技术性很强的行业,个人曾经历过一个又一个开发工具从受到大家的追捧到被冷落。最后我发现,我应抓住其中的一些基础的,和永恒的不变因素,即便人人都有权力去选择他感兴趣的部分。因此我努力的找到了自已的兴趣与擅长。并不断努力的学习。

在这三年的工作时间里曾经有过的激情,迷惘,彷徨,和温暖,感悟,奋进。父亲交给我的坚毅,诚实的心态使我在这些过程中坚难的走了过来,并在工作中,生活中不断的修正自已,努力的提高自已的认识。我也并因此而重拾生活的信心。

回首过去,当我想到要有足够的胸怀来接受你不能改变的事情,要有足够的勇气来改变你能改变的事情,要有足够的智慧来区分二者的不同.时,我恍然大悟,原来是因为自已的胸怀不够.人生无法重来,但是可以随时重新来,我有选择的权力.....曾记起研究开发部的朝气,热情。技术工程部的和谐,沉稳,责任。这些都给我留下难以磨灭的印象,它已深深的印在我的脑海里,也必将让我时常想起一起共事过的各位同仁。

最后我发自内心地——

感谢和一起工作过的同仁,我曾经和他们度过了一段非常快乐的,令我难忘的时光。

感谢您这几年来对我的厚爱,对我自身存在缺点的包容,以及对我在工作中所犯错误的指正。您那颗正直的心,满怀激情的人生态度、宽广的胸怀、机敏的处事方式、必将令我受用终身。

也正因此,我祝愿您,您也必将用您的智慧引领公司走向一个更加高远的,全新的末来。

×× 敬上

推荐第2篇:软件设计说明书

设计说明书

1 引言

水利方向一直是国家十分重视且投入巨大的方向,它关乎方方面面。百姓生命安全、水资源的利用、农业的灌溉等等,都与其息息相关,但是,正因为它的无处不在,导致如果使用传统的手段,将需要消耗过多的人力,效率极其低下,甚至是不可完成的,所以,水利也需要更加现代化的手段去完成预期的目标,水利自动化就是为了这一目的而提出来的。水利自动化可以大大提高数据测量的准确度和控制的可靠性,提高效率,降低劳动强度,充分利用现有设备,从而对于当地水利单位和水利公司均能带来可观的经济和社会收益。

1.1 编写目的

a.编写本说明书的目的在于阐明用户的要求的,描述出系统的需求模型、功能和性能要求以及其他约定,为后期的软件设计等工作提供依据。

b.本说明书的预期读者为用户、系统设计员及其他开发人员和相关审核检测人员。

1.2 背景

本项目的任务提出者及开发者是北京恒宇伟业科技发展有限公司生产部开发小组:

项目负责人:

硬件设计工程师:

系统分析员:

系统设计员:

编码员:

软件测试员:

用户为各地方招标业主单位,该软件在WINDOW7系统下,在IAR FOR MSP430环境下完成开发,

1.3 定义

RTU:远程终端单元。

水文监测系统:是指用于对各类水文要素实施采集、传输、处理的总体。

1.4 参考资料

水文检测数据通信规约 (SL651-2014) 2 设计总体

2.1 需求规定

本软件系统的各种用户是唯一的参与者,参与者通过使用事件与系统进行交互,所有的使用事件综合起来即构成了用户的功能需求。本系统通过用户操作键盘操作及显示屏显示交互设定相关系统、通讯、传感器参数,查看历史数据和系统运行状态。

2.2运行环境

本软件属于工业级产品设备运行系统,运行在基于MSP430F5438A CPU芯片的自助设计的电路板上。部分操作依托于外部传感器设备。

2.3 基本设计概念和处理流程

2.4 结构

初始化函数流程图

Main函数流程图

数据发送流程图

水位数据采集流程图

雨量数据采集流程图

数据处理模块流程图

输入数据处理模块

2.5 功能需求与程序的关系

主程序函数

main(); 系统滴答初始化

Init_CLK();

GPIO口相关映射初始化

Init_Port();

; UART口相关初始化

Init_RSUART()

; 键盘相关初始化

Init_Keypad(); 菜单链表初始化

Init_Menu(); 系统时钟读取

RX8025_R(); 本地网络修复模块

NetFix(); 输入数据处理模块

IO_ReportDeal(); 菜单模块

Menu_Ctrl(); 雨量数据处理模块

Msg_RainDDeal(); 水位数据处理模块

Msg_WaterDeal(); 报文拼组模块

Msg_PostDeal(); 数据发送模块

NT_SendMsg(); 系统参数变更存储模块

SysParSave();

2.6 人工处理过程

用户通过键盘及显示屏,依靠系统菜单,对相关内容进行设置,以达到按照具体需求运行程序获得预期效果的结果。

2.7 尚未解决的问题

未能对摄像头图片数据进行采集及传输。

3 接口设计

3.1 用户接口

通过菜单项提供用户接口,其操作简单、功能直观,故不再详述,用户接口如下: 主菜单:系统参数 通讯参数 传感器参数 历史数据 当前通讯状态

系统参数:终端号 系统时钟 密码设置 次雨量清零 人工置数 修改密码 恢复出厂设置 通讯参数:起始发送时间 当日发送次数 GPRS设置 GSM设置

传感器参数:水位计类型 雨量计精度 水位预警值 水位变化阈值 水位基值 历史数据:历史数据查询 历史数据清空

当前通讯状态:信号强度 网络通讯状态 实时时钟

3.2 内部接口

按键中断响应

#pragma vector=PORT1_VECTOR __interrupt void Port1(void) 雨量中断响应

#pragma vector=PORT2_VECTOR __interrupt void Port2(void) 普通串口中断响应

#pragma vector=USCI_A0_VECTOR __interrupt void USCI_A0_ISR(void) GPRS通讯串口中断响应

#pragma vector=USCI_A1_VECTOR __interrupt void USCI_A1_ISR(void) 485中断响应

#pragma vector=USCI_A2_VECTOR __interrupt void USCI_A2_ISR(void) 232中断响应

#pragma vector=USCI_A3_VECTOR __interrupt void USCI_A3_ISR(void)

3.3 外部接口

硬件接口:

标准串口,485口,232口,格雷码口,模拟量输入口,12V供电输出口,24V供电输出接口 软件接口:

关联程序:编译器等

4 运行设计

4.1 运行模块组合

水位采集模块→处理模块→报文拼组模块→数据发送模块→历史数据存储模块 雨量采集模块→处理模块→报文拼组模块→数据发送模块→历史数据存储模块 按键响应模块→菜单模块→系统参数更新存储模块 输入数据处理模块→报文拼组模块→数据发送模块

4.2 运行控制

由用户通过菜单选项进行控制。

4.3 运行时间

根据当前时间的采集任务及发送任务量决定

5 系统数据结构设计

5.1 逻辑结构设计要点

本系统各功能紧密结合,为尽量避免相互影响出现错误,系统严格按照时间顺序运行,保证数据的绝对准确,各端口数据独立接收,统一处理,保证数据不会混杂的前提下,保证更高的处理效率。

6 系统出错处理设计

6.1 出错信息

当软件进行硬件运行检查,发生错误会重复启动多次避免偶然情况导致硬件运行不正常,在多次检验无法通过时,会在显示屏提示出错原因,保住维护人员排查原因。

6.2 补救措施

故障出现后可能采取的变通措施,包括:

a.通过对系统参数进行分析,自主判断问题原因,并采用预置的解决方案进行解决。

b.通过在程序各函数打印运行LOG并向串口发送,帮助排查人员了解当前运行情况,便于解决问题 c.恢复及再启动技术说明将使用的恢复再启动技术,使软件从故障点恢复执行或使软件从头开始重新运行的方法。

6.3 系统维护设计

正确性维护:在运行过程中发现错时,根据发生错误的功能项找到相应模块,对出错模块单独测试和修改。 适应性维护:软件的运行平台限定特定硬件平台上,限定住可能出现问题的范围,便于排查。

完善性维护:为了应对用户新提出的要求或改善性能,增加新的功能时,由于系统模块间的独立性,新功能通常可以单独形成新的模块,经测试后拼加到系统中,而对其他模块影响不大;改善某模块的性能(提高处理效率,改善程序结构等)时,只需对相应模块进行改进,然后还原到系统中。

推荐第3篇:软件设计报告

软件设计报告

姓名: 方轶琦

学号:10005808

2013年6月18日~2013年6月28日

第一章 软件设计介绍 .........................................................1 第三章 软件设计的内容 .......................................................4 3.1 分数统计软件(A1) ...................................................4 3.1.1设计题目及要求 .....................................................4 3.1.2设计思想及程序流程框图 .............................................4 3.1.3逻辑功能程序 .......................................................5 3.1.4结果及完善方向 .....................................................5 3.2 打字软件(A2) .......................................................9 3.2.1设计题目及要求 .....................................................9 3.2.2设计思想及程序流程框图 .............................................9 3.2.3逻辑功能程序 ......................................................10 3.2.4结果及完善方向 ....................................................10 3.3 文本编辑器(A3) ....................................................13 3.3.1设计题目及要求 ....................................................13 3.3.2设计思想及程序流程框图 ............................................14 3.3.3逻辑功能程序 ......................................................14 3.3.4结果及完善方向 ....................................................17 3.4 加密软件(A4) ......................................................19 3.4.1设计题目及要求 ....................................................19 3.4.2设计思想及程序流程框图 ............................................19 3.4.3逻辑功能程序 ......................................................19 3.4.4结果及完善方向 ....................................................19 3.5 进制转换器(A5) ....................................................23 3.5.1设计题目及要求 ....................................................23 3.5.2设计思想及程序流程框图 ............................................23 3.5.3逻辑功能程序 ......................................................24 3.5.4结果及完善方向 ....................................................29 3.6 学生成绩核算系统的设计与实现(B1) ..................错误!未定义书签。 3.6.1设计题目及要求 ....................................................30 3.6.2设计思想及程序流程框图 ............................................30 3.6.3逻辑功能程序 ......................................................32 3.6.4结果及完善方向 ....................................................32 3.7 模拟电信计费系统的设计与实现(B2) ..................................39 3.7.1设计题目及要求 ....................................................39 3.7.2设计思想及程序流程框图 ............................................40 3.7.3逻辑功能程序 ......................................错误!未定义书签。 3.7.4结果及完善方向 ....................................................41 第四章 心得体会 ............................................................49

软件设计报告 10005808 方轶琦

软件设计介绍

一. 软件的设计概念

软件设计是把许多事物和问题抽象起来,并且抽象它们不同的层次和角度。建议用数学语言来抽象事务和问题,因为数学是最好的抽象语言,并且它的本质就是抽象。将复杂的问题分解成可以管理的片断会更容易。将问题或事物分解并模块化这使得解决问题变得容易,分解的越细模块数量也就越多,它的副作用就是使得设计者考虑更多的模块之间耦合度的情况。

二.软件设计的性质、目的:

本课程是一门技能训练课,为在校学生的必修课程。通过设计培养学生良好的编程习惯,使学生掌握编程的基本步骤,规范学生的编写程序的格式,锻炼学生编写程序的能力,为将来编写较大程序的打好基础。

三.软件设计总时间:二周

四.实验设备:南京邮电大学微机室微机。 五.软件设计的任务

通过集中时间上机实验,使学生充分发挥已有的编程能力,熟悉编译环境,选择若干课题,进行审题、分析、设计和调试,并根据要求写出实验报告。

六.实验内容

软件设计课题共分A、B两档。A档共5题,第一周完成;B档共2题,第二周完成。

软件设计报告 10005808 方轶琦

第二章

软件开发平台简介

Visual Studio 2008 简介

Microsoft® Visual Studio® 2008 使开发人员能够快速创建高质量、用户体验丰富而又紧密联系的应用程序,充分展示了 Microsoft 开发智能客户端应用程序的构想。借助 Visual Studio 2008,采集和分析信息将变得更为简单便捷,业务决策也会因此变得更为有效。任何规模的组织都可以使用 Visual Studio 2008 快速创建能够利用 Windows Vista™ 和 2007 Visual Studio system 的更安全、更易于管理并且更可靠的应用程序。

Visual Studio 2008 提供了高级开发工具、调试功能、数据库功能和创新功能,帮助在各种平台上快速创建当前最先进的应用程序。

Visual Studio 2008 包括各种增强功能,例如可视化设计器(使用 .NET Framework 3.5 加速开发)、对 Web 开发工具的大量改进,以及能够加速开发和处理所有类型数据的语言增强功能。Visual Studio 2008 为开发人员提供了所有相关的工具和框架支持,帮助创建引人注目的、令人印象深刻并支持 AJAX 的 Web 应用程序。开发人员能够利用这些丰富的客户端和服务器端框架轻松构建以客户为中心的 Web 应用程序,这些应用程序可以集成任何后端数据提供程序、在任何当前浏览器内运行并完全访问 ASP.NET 应用程序服务和 Microsoft平台。

Visual Studio 2008 具备如下优势:

快速开发新突破

从建模到编码,再到调试,Visual Studio 2008 提供了增强的编程语言、设计器、编辑器以及和数据相关的新功能,可以帮助您体验到生产力的突破。

创建杰出的用户体验

Visual Studio 2008为开发人员提供了新的工具,通过使用最新的平台,如Web, Windows Vista、2007 Microsoft Office System、Microsoft SQL Server 200

8、Windows Mobile®以及Windows Server®2008,开发人员可以快速创建个性化很强的用户体验以及互联的应用程序。

跨越开发周期的协作

Visual Studio 2008 可以让开发人员、设计人员、测试人员、架构师以及项目经理通过共享工具以及过程整合的方式,实现协同工作,从而减少了解决方案所花费的时间。

采用统一整合的方式处理数据

Visual Studio 2008 可以显著的改进开发人员处理数据的方法。传统方式中,开发人员不得不根据数据的存储位置以及用户的连接方法,对数据进行不同的操作。通过语言集成查询(Language-Integrated Query, LINQ), 开发人员可以使用单独的模型来查询并转换XML, Microsoft SQL Server™和对象数据,而不需要学习或使用特定的编程语言,这样就降低了复杂度并提高了生产力。

体验全新的Web开发工具

Visual Studio 2008为公司或开发团队提供了一个健壮的、端到端的平台来构建应用程序并通过Web 方式提供应用程序。通过Visual Studio 2008, 开发人员可以很容易的将最新的Windows Presentation Foundation (WPF) 功能整合到现

有的Windows Forms 应用程序以及新的应用程序中,并在Windows平台上创建高保真的用户体验。通过额外的ASP.NET AJAX 1.0和Microsoft

软件设计报告 10005808 方轶琦

IntelliSense®以及对调试JavaScript 8.0的支持,构建AJAX 应用程序将会更加快捷。增强的Web 设计器带有分离视图编辑功能,可以让开发人员同时看到HTML 页面以及结果页面,从而提升了Web 开发的体验。

将数据库功能整合到应用程序生命周期的管理中

Visual Studio 2008为不同的团队成员提供了一系列针对架构、设计、程序开发、数据库开发以及应用程序测试的相关工具。Microsoft Visual Studio Team System 2008 Database Edition 目前已经全部整合到了Microsoft Visual Studio Team System 2008 Team Suite 中。

构建运行在多个版本的 .NET Framework 之上的应用程序

通过Visual Studio 2008, 开发人员可以使用一个工具来管理并构建针对多个版本的.NET Framework 的应用程序。Visual Studio 2008将会自动让项目以及设置适应开发人员所指定的.NET framework 版本。开发人员不再需要安装多个版本的Visual Studio 来维护运行于多个版本的 .NET Framework 之上的应用程序。

为Microsoft Office 系列构建可靠的、可伸缩的应用程序

Visual Studio Tools for Office 目前已经完全整合到了Visual Studio 2008 专业版当中。Visual Studio 2008可以让开发人员自己定制Microsoft Office Word, Microsoft Office Excel ,Microsoft Office PowerPoint , Microsoft Office Outlook ,Microsoft Office Visio , Microsoft Office InfoPath , 以及Microsoft Office Project, 从而提升用户生产力并且更有效的利用了Office 2007 中的新增功能。对Microsoft Office 进行自定义,同时应用程序支持ClickOnce 部署,从而使开发人员可以采用正确的工具以及框架来实现对Microsoft Office 解决方案进行从容部署。

为Windows Vista 构建完美的应用程序

Visual Studio 2008可以让开发人员快捷的创建出同Windows Vista 外观风格一样炫的应用程序,并且可以利用Windows Vista 中所提供的8000多种新API.

在开发人员和设计人员之间实现无缝协作

Microsoft已经针对设计人员发布了名为Microsoft Expreion的工具。在Visual Studio 2008中,来自于Microsoft Expreion Web 以及Microsoft Expreion Blend™中的设计元素可以在不更改后台代码的情况下,从Visual

Studio 中进行导入导出的操作。这就意味着开发人员和设计人员可以实时的进行无缝协作,并且不用担心用户界面设计更改所引起的开发问题。

软件设计报告 10005808 方轶琦

第三章 软件设计的内容

3.1 分数统计软件(A1)

3.1.1设计题目及要求 设计题目:分数统计 要求:(1)、输入某班级学生的姓名、分数;

(2)、对(1)的分数进行降幂排列并输出; (3)、具有输入输出界面。 3.1.2设计思想及程序流程框图

这道题我是用C# 的可视化环境制作了一个分数统计系统。制作的界面如图3.1-1所示:

实现的功能和设计方法:

1.在“姓名”和“分数”后面的文本框内输入学生信息,输入完毕后,按“输入”按钮,学生信息就会显示到左下方的listbox中。

2.当用户输入若干名学生信息后,按“排序”按钮,右下方的listbox中就会显示按成绩降幂排序后的学生信息。排序方法是使用冒泡排序法。

3.当用户输入学生信息出错时,用鼠标选择出错项,按下“删除选中的输入项”,即可删除输错项,继续输入学生信息。方法是用listBox.SelectedIndex找到选中的索引值,然后删除数组中该学生信息和listbox中信息就可以了。

4.当用户想重新输入学生信息,按下“重新开始”清空数组和listbox中的信息。

5.当用户要结束操作,按下“结束”,调用close()函数就可以跳出界面。主程序的流程图如图3.1-2所示。 冒泡排序的流程图如图3.1-3所示。

软件设计报告 10005808 方轶琦

开始N=学生数i=0ii?N开始输入学生信息score[j - 1]

图3.1- 1 主流程图

图3.1- 2冒泡排序流程图 3.1.3逻辑功能程序 具体程序如下:

#include #include #include struct student //存放学生信息的结构体 { char name[20]; //字符型数组存放姓名

int grade; //成绩类型 } temp,std[100]; int main() { int err; char x[5]; int n; int i; int m; char ch[20];

软件设计报告 10005808 方轶琦

do { system("cls"); printf(" \n\n"); printf("

-------- \n"); printf(" | 欢迎使用本系统 | \n"); printf("

-------- \n"); printf(" \n"); printf("

-------------请输入学生数--------------\n\n"); do{ printf("\t\t学生数: ");

err=0;i=0;

scanf("%s",x); //输入选项

getchar();

while(x[i]!='\0') //依次检查输入的字符串是否为数字

{

if(x[i]>'9'||x[i]

i++;

} if(err) printf("\n\t\t请输入数字!\n"); }while(err);

n=atoi(x); //将字符型数组x转换成整型n for(i=0;i

{ printf("\n\t\t请输入第%d个人的信息\n\t\t姓名:",i+1); scanf("%s",std[i].name); getchar(); printf("\t\t分数:"); scanf("%d",&std[i].grade); getchar();

}

printf("输入信息:\n"); printf(" ---- \n"); printf(" 姓名 成绩 \n\n"); for(i=0;i

printf(" %s %d\n",std[i].name,std[i].gra

软件设计报告 10005808 方轶琦

de); } printf("\n\n ---- \n");

printf("\n排序后信息:\n"); for(m=0;m

if(std[i].grade

{

temp=std[i];

std[i]=std[i+1];

std[i+1]=temp; //成绩按降幂排序

} } printf("\n您所输入的学生名次如下:\n\n"); printf("

------------ \n"); printf(" 名次 姓名 成绩 \n\n"); for(i=0;i

第 %d 名 %s %d\n",i+1,std[i].name,std[i].grade); } printf("\n\n ------------ \n"); printf("\t您还继续吗?请按Y键继续:"); //选择是否继续

scanf("%s",ch); } while(ch[0]=='Y'||ch[0]=='y'); //与开头组成do-while结构循环

printf("\t"); return 0; }

软件设计报告 10005808 方轶琦

图3.1—4

图3.1- 3 运行结果

系统的完善:

软件设计报告 10005808 方轶琦

1.当用户在分数框输入了非数字字符,则会提示用户输出正确格式的分数。2.当用户未完整输入姓名和分数,系统会提示用户完整输入。 完善方向

该系统虽然考虑了并完善了很多用户操作可能出现的错误,但仍然有不足之处。比如,本系统中的删除按钮只能在用户排序前删除用户想删除的信息。若用户排序后删除左边栏目里的学生信息,再来排序,这时排序出的结果就可能会出错。这点是需要改进的。

另外这题和数据库SQL连接起来,程序会更加简单方便。这方面还需加以学习。

3.2 打字软件(A2)

3.2.1设计题目及要求 设计题目:打字程序 要求:(1)随即产生一字符串,每次产生的字符串内容、长度都不同;

(2)根据(1)的结果,输入字符串,判断输入是否正确,输出正确率;

(3)具有输入输出界面。 3.2.2设计思想及程序流程框图 设计思想:采用C#界面编程。

(1).从题目的要求可知,本系统要求随机产生字符串,字符串的内容和长度都是随机的。要产生随机数,就可以使用rand()函数。设定字符串最长为20。用rand.Next(min, max)函数就可以产生min~max之间的随机数。

(2).为使系统随机产生字母字符,首先用rand.Next(0,25)产生0~25的随机数,将随机数加上97,然后再将数字转换为相应的ASCII码的字母就可以了。

(3).正确率的计算。将系统产生的随机字符和用户输入的字符进行逐个比较统计出相同的字符个数,在与系统产生的字符总数相除便可得到得正确率。

设计的用户界面如图3.2-1所示。主流程图如图3.2-2所示

开始 产生随机字符串用户输入字符串计算正确率N结束?Y结束

图3.2- 1主流程图

界面按钮功能设计思想:“开始”:按下后,首先清空界面的三个输入文本框

软件设计报告 10005808 方轶琦

textbox。然后再随机生成字符串显示在第一个文本框textbox1中。

“确定”:用户在第二个文本框textbox2中输入字符串后,按下确定按钮,首先系统会读入用户的字符串,然后与系统字符串比较,计算出正确率最后输出到正确率的文本框里。

“结束”:使用close()函数,按下后退出系统。 3.2.3逻辑功能程序 具体程序如下:

#include #include #include #include #define max_len 40

//定义产生的字符串最长为40个字符

void rand_str(char *p,int length); double compare(char *p,char *s,int length); void display();

int main() {

char ch[20]; int length; double flag; srand(time(NULL)); char p[80]=""; char s[80]="";

display();

do {

char p[80]="";

char s[80]="";

printf("\n\t----\n");

length=1+rand()%max_len;

rand_str(p,length);

printf("\n\t----\n");

printf("\t请输入上面的字母:\n");

printf("\t");

fflush(stdin);//减少不必要错误

scanf("%s",s);

flag=compare(p,s,length);

if(flag==1)

printf("\t输入完全正确!\n");

else

软件设计报告 10005808 方轶琦

printf("\t输入有误,您本次输入正确率:%0.2g%%\n",flag*100);

printf("\t\n");

getchar();

printf("\t您还继续吗?请按任意键继续或者按N键结束:");

scanf("%s",ch);

}while(ch[0]!='N'&&ch[0]!='n');

printf("\t"); return 0; }

void rand_str(char *p,int length) { int i; char ch; printf("\t");

for(i=0;i

{ int num;

do

{

num=65+rand()%(122-65+1);

}while(num>90&&num

ch=num;

printf("%c",num);

p[i]=ch;

} }

double compare(char *p,char *s,int length) { int j; int number=0; double rate; for(j=0;j

if((p[j]-s[j])==0)

number=number+1; } rate=1.0*number/length; return rate;

软件设计报告 10005808 方轶琦

}

void display() { printf("\t****************************************************************\n"); printf("\t****************************************************************\n"); printf("\t**

欢迎进入打字练习程序

**\n"); printf("\t****************************************************************\n");

printf("\t****************************************************************\n"); printf("\t\n"); }

程3.2.4结果及完善方向

序运

行结果:

软件设计报告 10005808 方轶琦

用户按下开始按钮后,输入字符串,最后按下确定按钮的程序运行情况如图3.2-3所示。

按下开始按钮

输入字符串后按下确定按钮

图3.2- 2 程序运行结果

系统的完善

最初编写的程序中存在输出正确率的BUG。就是在用户输入字符串的前半段和系统的字符串一样,而后面又多输入了其他字符,这时算出的正确率是100%,这在常理上是不正确的,发现错误后,更正了正确率的计算方法。

当用户输入的字符串长度小于或等于系统产生的字符串长度时,正确率的计算方法为:

与系统字符串相同的字母数正确率=

系统产生的字符串长度当用户输入的字符长于系统字符串长度时,正确率的计算方法为:

与系统字符串相同的字母数正确率=

用户输入的字符串长度这样就避免了之前的错误情况。 完善方向

本打字系统仍然有需要完善的地方,如可增加计时系统,这样就增加了打字程序的趣味性。系统中正确率的计算方法也有待改进。

3.3 文本编辑器(A3)

3.3.1设计题目及要求 设计题目:文本编辑器 要求:(1)、编辑文本;

软件设计报告 10005808 方轶琦

(2)、保存、打开指定位置的文本文件; (3)、具有输入输出界面。 3.3.2设计思想及程序流程框图

文本编辑器的界面设计,我是参考了word中提供的部分功能,用C#界面环境设计编写一个小型的文字编辑工具。

在C#界面的工具箱中,RichTextBox控件拥有非常强大的文字格式化功能。很多对文字文本的各种操作只需要调用RichTextBox控件中的函数,就可以搞定,非常的方便。

界面设计时,具有工具栏和功能图标按钮,提高了操作的便利性。 文本编辑器的界面如图3.3-1所示。

文本编辑器具有三个大模块,具有以下功能: 1:文件:(新建 打开 保存 退出)

2:编辑:(撤销 恢复 全选 复制 剪切 粘贴 清除) 3:帮助:(关于版权信息) 模块结构如图3.3-2所示。

开始用户选择操作文件编辑帮助关于新建打开保存退出撤销恢复全选复制剪切粘贴清除 图3.3- 1模块结构图

3.3.3逻辑功能程序 具体程序和注释如下:

#include #include //包含exit(1)的原型 #include #include"windows.h"

void create_file(FILE *fp,char *fname); //建立文本函数 void write_file(FILE *fp,char *fname); //编辑函数 void read_file(FILE *fp,char *fname); //读取函数

int main() { FILE *fp;

软件设计报告 10005808 方轶琦

int count=0; char choose[100]; int flag1,flag2,flag3; char F_name[20];

while(1) {

printf("****************************************************************\n"); printf("****************************文本编辑器***************************\n"); printf("****************************************************************\n"); printf("**

1、建立文本 **\n"); printf("**

2、编辑文本 **\n"); printf("**

3、读取文本 **\n"); printf("**

4、退出程序 **\n");

printf("****************************************************************\n");

printf("\t请选择你要进行的文件操作:");

scanf("%s",choose);

getchar();

switch(choose[0])

{

case '1': flag1=1; break;

case '2': flag2=1; break;

case '3': flag3=1; break;

case '4': printf("\t");printf("\n\n\t*** 谢谢使用! ****\n");exit(0); break;

default : printf("\t输入错误!\n");Sleep(500);system("cls");

}

if(flag1==1)

{

flag1=0; printf("\n***********建立文件***********\n");

create_file(fp,F_name);

软件设计报告 10005808 方轶琦

}

else if(flag2==1)

{

flag2=0;

printf("\n***********编辑文件***********\n");

write_file(fp,F_name);

}

else if(flag3==1)

{

flag3=0;

printf("\n***********读取文件***********\n");

read_file(fp,F_name);

}

}

return 0; }

void write_file(FILE *fp,char *fname) { char ch; printf("请键入编辑的文件名(如D: ame.txt):\n\t"); gets(fname); if((fp=fopen(fname,"w"))==NULL) {

printf("不能打开文件!\n");

exit(0); } printf("请输入内容(以#号键结束):\n"); ch=getchar(); while(ch!='#') {

fputc(ch,fp);

ch=getchar(); } printf("\n\n"); getchar(); fclose(fp); Sleep(500); system("cls"); } void create_file(FILE *fp,char *fname) {

软件设计报告 10005808 方轶琦

printf("请键入新建的文件名(如D: ame.txt):\n\t"); gets(fname); if((fp=fopen(fname,"w+"))==NULL) {

printf("不能打开文件!\n");

exit(0); } printf("%s文件已经创建好!\n\n",fname); fclose(fp); Sleep(500); system("cls"); } void read_file(FILE *fp,char *fname) { char ch; printf("请键入读取的文件名(如D: ame.txt):\n\t"); gets(fname); if((fp=fopen(fname,"r"))==NULL) {

printf("不能打开文件!\n");

exit(0); } printf("***********文件内容***********\n"); printf("-------- \n"); while((ch=fgetc(fp))!=EOF) //输出文件直到文件结束符

{

putchar(ch); } printf("\n-------- \n\n"); fclose(fp); Sleep(1000); printf("\n\n"); } 3.3.4结果及完善方向

软件设计报告 10005808 方轶琦

软件设计报告 10005808 方轶琦

系统完善方向

这次设计的文本编辑器基本上能够较好的模拟出word中对文本的部分操作功能。基于RichTextBox控件的功能很多,可以在此基础上添加更多的有用的方便的功能,如改变文本背景颜色,字体格式和颜色,文本左对齐右对齐等。这样文本编辑器的功能就会更加完善。

3.4 加密软件(A4)

3.4.1设计题目及要求 设计题目:加密 要求:(1)输入任意一段明文M,以及密钥K; (2)根据以下公式将其转换为密文C。

Ci = mi

+ K ,其中i = 0,1,„„n-1 , K 为密钥;

(3)具有输入输出界面。 3.4.2设计思想及程序流程框图 设计思想:用C#界面编程。

由题目可以知道,要实现加密,就要对用户输入的字符串进行操作。首先要将用户输入的字符串存入数组。将字符类型转换为相应的ASCII码,再与输入的密钥相加,最后再转换为字符型就可以得到密文。

系统共有三个功能按钮,为“生成密文”,“重新输入”和“结束”。 “生成密文”是按上述的思想对用户输入的字符串进行加密。“重新输入”是清空三个textbox。“结束是”调用close()函数退出系统。

系统界面和系统流程框图如图3.4-1所示。

开始用户输入明文,密钥加密重新开始结束

图3.4- 1

程序流程框图

3.4.3逻辑功能程序

#include #include #include

void dis_menu(); //显示函数

软件设计报告 10005808 方轶琦

void set_menu(); //输入函数

void encryption(char *m, char *c, char *key); //加密函数 void decryption(char *m, char *c, char *key); //解密函数

int main() { while(1) {

dis_menu(); set_menu(); } return 0; } void dis_menu() { printf("\t******************************************************\n"); printf("\t***********************加密解密程序*******************\n"); printf("\t**

1、加密 **\n"); printf("\t**

2、解密 **\n"); printf("\t**

3、退出 **\n"); printf("\t******************************************************\n\n"); printf("\t请选择你要进行的操作:"); } void set_menu() { char m[100]=""; //明文 char c[100]=""; //密文 char key[100]=""; //密钥

char n[100]; scanf("%s",n); if(strlen(n)>1) { printf("\t输入错误!请重新输入:");

set_menu(); } else {

switch(*n)

{

case '1': encryption(m, c, key); break;

case '2': decryption(m, c, key); break;

case '3': printf("\t"); exit(1); break;

default: printf("\t输入错误!请重新输入:"); set_menu(); break;

软件设计报告 10005808 方轶琦

} } }

void encryption(char *m, char *c, char *key) {

printf("\t-----------------------\n"); printf("\t------------------------加密环节----------------------\n"); printf("\t-----------------------\n"); printf("\t请输入需加密的明文:"); scanf("%s",m); printf("\t请输入密钥:"); scanf("%s",key); while(strlen(key)>1) //密钥长度不能大于1 {

printf("\t输入密钥有误,请重输:"); scanf("%s",key); } { int i,length; length=strlen(m); printf("\t你输入的明文为:"); printf("%s\n",m); for(i=0;i

{

c[i]=m[i]+key[0]-'0'; } printf("\t转换后的码文为:"); printf("%s\n\n",c); } }

void decryption(char *m, char *c, char *key) { printf("\t-----------------------\n"); printf("\t------------------------解密环节----------------------\n"); printf("\t-----------------------\n"); printf("\t请输入需解密的密文:"); scanf("%s",c); printf("\t请输入密钥:"); scanf("%s",key); while(strlen(key)>1) {

21

软件设计报告 10005808 方轶琦

printf("\t输入密钥有误(应输入一个字符),请重输:"); scanf("%s",key); }

{ int i,length; length=strlen(c); printf("\t你输入的密文为:"); printf("%s\n",c); for(i=0;i

m[i]=c[i]-(key[0]-'0'); //密文反译

} printf("\t破解后的明文为:"); printf("%s\n\n",m); } } 3.4.4结果及完善方向 运行结果:

用户输入明文和密钥后,按下“生成密文”后的程序运行结果如图3.4-2所示。

22

软件设计报告 10005808 方轶琦

图3.4- 2密钥运行结果

系统完善

1.当用户明文和密钥输入的不完整,系统会提示要求用户输入完整。2.当用户输入的密钥不在要求的0~9之间,系统会提示用户。 如图3.4-3所示。

完善方向

当密钥过大时,生成的密文字符有些无法输出,因此可改进加密算法,更好完善这个加密系统。

3.5 进制转换器(A5)

3.5.1设计题目及要求 设计题目:进制转换器 要求:(1)可输入二进制、八进制、十进制、十六进制数;

(2)将已输入的数转换成其余进制的数; (3)具有输入输出界面。 3.5.2设计思想及程序流程框图 设计思想:

由题目可以知道,本系统要求实现

二、

八、

十、十六进制数之间的相互转换功能。

(1)、对于数字的显示问题,可以用字符串的形式进行数字的输入输出。在

23

软件设计报告 10005808 方轶琦

系统内部进行转换前,利用ASCII码将字符串再转换为相应的数字进行处理。

(2)、进制的转换。系统中,首先将用户输入的任意进制的数统一转换为十进制。然后再将得到的十进制数转换为其他进制最后输出。

(3).转化成十进制时可以先得到用户输入的字符串的长度,在知道输入是什么进制数的前提下就可以将不同位上的数乘以进制的相应幂次最后求和就可以十进制数;由十进制转换成任意进制时可以使用短除法,不断相除取余数直到商为零为止,得到的字符串在翻转后即使得到的任意进制数对应的字符串。

(4).转换输出时,是将该数据的所有进制转换结果进行输出。 进制转换系统是采用C#界面环境编程制作的。 系统界面如图3.5-1所示。

图3.5- 1 进制转换系统界面

界面中用户可以打开下拉菜单选择要输入的进制,选定后,选择的进制输入文本框会变白,用户可以输入要转换的数,按下“转换”按钮后,其他进制后面的文本框就会显示转换后的数。按下“结束”按钮可以退出系统。

整个程序可分为四个模块,分别是:数据输入模块,数据转换为十进制模块,十进制转换为其他进制模块,数据输出模块。程序流程框图如图3.5-2所示。

开始用户选择要输入的进制数据读入转换为十进制十进制转换其他进制数据输出结束 图3.5- 2程序流程框图

3.5.3逻辑功能程序 具体程序和注释如下:

#include "stdio.h" #include void bishow(int m); void main() { char x,w; char c[10]; int i=0,err=0,quitflag=0; int num=0; do{ system("cls"); printf("\t-------- \n"); printf("\t 欢迎数制转换系统 \n");

24

软件设计报告 10005808 方轶琦

printf("\t-------- \n"); printf("\t \n"); printf("\t-------- \n"); printf("\t| 1 二进制 |\n"); printf("\t| 2 八进制 |\n"); printf("\t| 3 十进制 |\n"); printf("\t| 4 十六进制 |\n"); printf("\t| 0 退出 |\n"); printf("\t-------- \n"); printf("\n\t请选择: "); do{ err=0; scanf("%c",&x);//输入选项

getchar(); if(x>'4'||x

{ err=1; printf("\n输入错误,请重新输入\n"); } }while(err); switch(x) { case '1': //输入二进制

do{

err=0;i=0;num=0;

printf("\n\t请输入二进制数:"); scanf("%s",c);

getchar();

while(c[i]!='\0') //‘\0’字符结尾

{ if(c[i]!='1' && c[i]!='0') err=1;//若输入数字不为1或0则输入错误

i++;

}

if(err) printf("\n输入数值错误,不是二进制数!\n"); } while(err); // err为1重复上面,否则继续

i=0; while(c[i]!='\0')//二进制转换为十进制

{

num=num*2;

if(c[i]=='1') num=num+1;

i++; }

25

软件设计报告 10005808 方轶琦

printf("\n\t二进制数 %s 转换为其他进制:\n\n",c);

printf("\t********************************************\n");

printf("\t八进制: %o\n",num);//输出八进制

printf("\t十进制: %d\n",num);//输出十进制

printf("\t十六进制: %x\n",num);//输出十六进制

printf("\t********************************************\n");

printf("是否继续?(任意键继续N键退出)"); scanf("%c",&w); getchar(); if(w=='N'||w=='n') quitflag=1;

break;

case '2': //输入八进制

do{

err=0;i=0;num=0;

printf("\n\t请输入八进制数:");

scanf("%s",c);

getchar();

while(c[i]!='\0')

{

if(c[i]>'7' || c[i]

i++;

}

if(err) printf("\n输入数值错误,不是八进制数!\n");

} while(err);

i=0;

while(c[i]!='\0')

{

num=num*8;

num=num+c[i]-48;

i++;

}

printf("\n\t八进制数 %s 转换为其他进制: \n\n",c);

printf("\t********************************************\n");

bishow(num);

printf("\t十进制: %d\n",num);

printf("\t十六进制: %x\n",num);

printf("\t********************************************\n");

printf("是否继续?(任意键继续N键退出)"); scanf("%c",&w); getchar(); if(w=='N'||w=='n') quitflag=1;

break;

26

软件设计报告 10005808 方轶琦

case '3': //输入十进制

do{

err=0;i=0;num=0;

printf("\n\t请输入十进制数:");

scanf("%s",c);

getchar();

while(c[i]!='\0')

{

if(c[i]>'9' || c[i]

i++;

}

if(err) printf("\n输入数值错误,不是十进制数!\n");

} while(err);

i=0;

while(c[i]!='\0')

{

num=num*10;

num=num+c[i]-48;

i++;

}

printf("\n\t十进制数 %s 转换为其他进制:\n\n",c);

printf("\t********************************************\n"); bishow(num);

printf("\t八进制: %o\n",num);

printf("\t十六进制: %x\n",num);

printf("\t********************************************\n");

printf("是否继续?(任意键继续N键退出)"); scanf("%c",&w); getchar(); if(w=='N'||w=='n') quitflag=1;

break;

case '4': //输入十六进制

do{

err=0;i=0;num=0;

printf("\n\t请输入十六进制数:");

scanf("%s",c);

getchar();

while(c[i]!='\0')

{

if(c[i]='0') err=0;//若输入数据为非数字符号,则错误

27

软件设计报告 10005808 方轶琦

else if(c[i]>='a'&&c[i]

else if(c[i]>='A'&&c[i]

else err=1;

i++;

}

if(err) printf("\n输入数值错误,不是十六进制数!\n");

} while(err);

i=0;

while(c[i]!='\0')

{

num=num*16;

if('0'

if('a'

if('A'

i++;

}

printf("\n\t十六进制数 %s 转换为其他进制:\n\n",c);

printf("\t********************************************\n"); bishow(num);

printf("\t八进制: %o\n",num);

printf("\t十进制: %d\n",num);

printf("\t********************************************\n");

printf("是否继续?(任意键继续N键退出)"); scanf("%c",&w); getchar(); if(w=='N'||w=='n') quitflag=1;

break; case '0':

quitflag=1;

break;

}

}while(!quitflag);

}

void bishow(int m) //转换成二进制数 { int b[20];

int i=0;

28

软件设计报告 10005808 方轶琦

while(m) { b[i]=m%2; m=m/2; i++; } i--; printf("\t二进制: "); if(m==0) printf("%d",0); while(i>=0) { printf("%d",b[i--]); //输出二进制数 } printf("\n"); } 3.5.4结果及完善方向 程序运行结果:

图3.5- 3 进制转换系统界面运行情况

系统的完善

本系统能够较好的完成

二、

八、

十、十六进制数之间的相互转换,并且对可能出现的异常情况进行了处理。例如,当用户选择输入二进制,用户就无法在其

29

软件设计报告 10005808 方轶琦

他进制的文本框内输入数据。还有,如果用户要键入非该进制内的字符,用户的键入将无效,非法字符将无法输入到文本框内。这样的设计能方便用户操作。

系统还有一些地方有待完善,比如,用户输入的字符串的最大长度需要进行一定的限制等等。

3.6 分数统计

3.6.1设计题目及要求

设计题目:学生成绩核算系统的设计与实现 要求:(1)、按班级按课程从文件中读入相应的平时成绩、期中考试成绩和期末考试成绩。

(2)、三个成绩对总评成绩的百分比被定义为常数,各占总成绩的30%、30%和40%。

(3)、计算每位学生的总评成绩。 (4)、计算该班级本课程的总平均成绩。 (5)、计算处于优、良、中、及格、不及格的学生人数以及占总人数的百分比。其中100-90为优,89-80为良,79-70为中,69-60为及格,60分以下为不及格。

(6)、按要求输出成绩在优、良、中、及格、不及格各区间的学生学号、成绩。

3.6.2设计思想及程序流程框图 设计思想:

1.建立文本文件 note.dat,第一行为学生的总人数,其后为每个学生的成绩,每个学生的信息占一行,格式为:

学号(9位)平时成绩

期中考试成绩

期末考试成绩 例如: 15 B10040801

88

75.5

66

B10040802

91

79.5

76 B10040803

85

75

77

B10040804

79

82

80.5 B10040805

94

83.5

81.5

B10040806

80

69

68 B10040807

82

77

71

B10040808

77

57

58 B10040809

91

88

86

B10040810

96

89

90 B10040811

70

45.5

50

B10040812

74

65

66 B10040813

81

71

76

B10040814

83

75

77 B10040815

85

78

79

2.数据结构(用C++实现)

本题中共设计了两个类:学生(Student)和学生成绩(marks) (1)基类学生(Student),定义如下:

cla Student //基类学生

30

软件设计报告 10005808 方轶琦

{ private: //私有成员:

char stu_no[10]; //学号(题目中用到的) char stu_name[10]; //姓名(可拓展的) char stu_zhy[20]; //专业(可拓展的) public: //公有成员:

Student() //构造函数

{

strcpy(stu_no,"NULL");

strcpy(stu_name,"NULL");

strcpy(stu_zhy,"NULL");

}

~Student(){} //析构函数

void setno(char no[]) //设置学号

{strcpy(stu_no,no);}

void setname(char name[]) //设置姓名

{strcpy(stu_name,name);}

void setzhy(char zhy[]) //设置专业

{strcpy(stu_zhy,zhy);}

char *getno() //取学号

{return stu_no;}

char *getname() //取姓名

{return stu_name;}

char *getzhy() //取专业

{return stu_zhy;} };

(2)基类学生(Student)的派生类学生成绩(marks),定义如下: cla marks:public Student //派生类学生成绩 { protected: //保护成员:

float sco1; //平时成绩

float sco2; //期中成绩

float sco3; //期末成绩

float avg; //总评成绩

char dengj; //等级 public: //公有成员:

void setsco1(float s1){sco1=s1;} //设置平时成绩

void setsco2(float s2){sco2=s2;} //设置期中成绩

void setsco3(float s3){sco3=s3;} //设置期末成绩

float getsco1(){return sco1;} //取平时成绩

float getsco2(){return sco2;} //取期中成绩

float getsco3(){return sco3;} //取期末成绩

float getavg() {return avg;} //取总评成绩

char getdengj(){return dengj;} //取等级

31

软件设计报告 10005808 方轶琦

void Computavg(); //计算总评成绩 void GetDJ(); //计算等级 }mark[100]; 3.从文件中读入相应的平时成绩、期中考试成绩和期末考试成绩时,用C++中的流实现。

4.每次计算出的结果可在屏幕输出,并把每个学生的总评成绩输入到新文件out.dat文件中,格式为:

学生学号(9位)

总评成绩

成绩等级 例如: B07040801

88

B

为查询方便,可把总评成绩所处等级(优、良、中、及格、不及格)同时保存在文件out.dat中,分别用字母A、B、C、D、E表示。

5.设计方法:本系统采用自顶向下,逐步细化的方法,将整个系统细化为5个模块:读入文件,计算成绩模块,保存文件模块,计算并输出等级分布模块以及退出模块。根据这个思想,主程序的流程图如3.6-1图所示:

开始显示菜单键盘输入选项读入文件否计算成绩保存文件计算输出等级分布退出系统是否退出系统?是结束图3.7- 1主程序流程图

3.6.3逻辑功能程序 具体程序及注释如下:

#include #include #define N 100 struct student { char number[10];

char psgra[5];

32

软件设计报告 10005808 方轶琦

char qzgra[5]; char qmgra[5];

};

int information() {

FILE* fp;

int i;

struct student std[15]=

{{"B10040801", "88", "75.5", "66" },

{"B10040802" ,"91", "79.5","76"},

{"B10040803","85","75","77" },

{"B10040804","79","82","80.5"},

{"B10040805","94","83.5","81.5"},

{"B10040806" ,"80","69","68"},

{"B10040807","82","77","71"} ,

{"B10040808","77","57","58"},

{"B10040809","91","88","86"} ,

{"B10040810","96", "89","90"},

{"B10040811","70","45.5","50"} ,

{"B10040812","74","65","66"},

{"B10040813","81","71","76"},

{"B10040814","83","75","77"},

{"B10040815","85","78","79" }};

if((fp=fopen("note.dat","w"))==NULL) {

printf("文件打开错误!\n");

exit(0); }

fprintf(fp," 学号

平时成绩

期中成绩

期末成绩\n

15\n");

for(i=0;i

fclose(fp);

return 0;

33

软件设计报告 10005808 方轶琦

}

int read(struct student st[15])

//读取文件的函数; { FILE*fp1;

struct student s; int size; int i=0; if((fp1=fopen("note.dat","r"))==NULL)

//打开information文件; {

printf(" 文件打开错误!\n");

exit(0); }

size=sizeof(struct student); fseek(fp1,0L,SEEK_SET); fread(&s,size,1,fp1);

//读取一个字节的fp1指针

fread(&s,size,1,fp1); for(i=0;i

{

fscanf(fp1,"%s", st[i].number);

fscanf(fp1,"%s", st[i].psgra);

fscanf(fp1,"%s", st[i].qzgra);

fscanf(fp1,"%s", st[i].qmgra);

}

fclose(fp1);

return 0;

}

void output(double n[20],char a[20],struct student st[15],char ch) {

int j=0;

int i;

printf("得等级%c的学生及其分数:\n",ch);

for(i=0;i

34

软件设计报告 10005808 方轶琦

{

if(a[i]==ch)

{

printf("%-8s %8.1lf %8c \n",st[i].number,n[i],a[i]);

//判断后循环输出满足相应条件的学生的学号、分数及其等级;

j++;

}

} printf("得%c的人数为:%d人\n",ch,j); printf("得%c的比例为:%.1lf%%\n",ch,100*j/15.0);

printf("\n\n"); }

char level(double //判断得ABCDE的条件; { if(n>=0&&n

return 'E';

else

if(n>=60&&n

return 'D';

else

if (n>=70&&n

return 'C';

else

if(n>=80&&n

return 'B';

else

return 'A'; }

35

n)

软件设计报告 10005808 方轶琦

int main() { FILE*fp1; struct student st[15]; int i=0;double n[N];char a[N];double d=0.0;

information();

read(st);

if((fp1=fopen("out.dat","w"))==NULL) {

printf(" File open error!\n");

exit(0); }

fprintf(fp1," 学号

总评成绩

等级\n

15\n");

for(i=0;i

{

n[i]=0.3*atof(st[i].psgra)+0.3*atof(st[i].qzgra)+0.4*atof(st[i].qzgra);

//按照0.3 0.3 0.4计算成绩;

a[i]=level(n[i]);

//输出等级给a[i];

fprintf(fp1," %-8s %8.1lf %8c \n",st[i].number,n[i],a[i]);

d=d+n[i];

//求总成绩;

} fclose(fp1);

while(1) {

printf("\t\t\t\t

南京邮电大学\n\n\n");

printf("------------------");

printf("\t\t\t\t请选择服务类型:\n\t\t\t\t1:输出得A的学生。\n\t\t\t\t2:输出得B的学生。\n\t\t\t\t3:输出得C的学生。\n");

printf("\t\t\t\t4:输出得D的学生。\n\t\t\t\t5:输出得E的学生。\n\t\t\t\t6:输出总平均成绩。\n\t\t\t\t7:输出学生相应的等级。\n");

printf("\t\t\t\t8:输出原始成绩。\n\t\t\t\t0:退出\n");

printf("------------------");

scanf("%d",&i);

printf("\n\n\n");

36

软件设计报告 10005808 方轶琦

if(i==0)

break;

else

switch(i)

{

case 1:

//进入得A学生的判断;

{

printf("A:优

B:良

C:中

D:及格

E:不及格\n ");

output( n,a,st,'A');

system("pause");

暂停以清屏;

system("cls");

清屏;

}

break;

case 2:

进入得B学生的判断;

{

printf("A:优

B:良

C:中

D:及格

E:不及格\n ");

output( n,a,st,'B');

system("pause");

system("cls");

}

break;

case 3 //进入得C学生的判断;

{

printf("A:优

B:良

C:中

D:及格

E:不及格\n ");

output( n,a,st,'C');

system("pause");

system("cls");

}

break;

case //进入得D学生的判断;

{

printf("A:优

B:良

C:中

D:及格

E:不及格\n ");

output( n,a,st,'D');

system("pause");

system("cls");

}

break;

case 37

//////

: 4: 5:

软件设计报告 10005808 方轶琦

//进入得A学生的判断;

{

printf("A:优

B:良

C:中

D:及格

E:不及格\n ");

output( n,a,st,'E');

system("pause");

system("cls");

}

break;

case 6:printf("总平均成绩为:%.2lf\n\n\n",d/15);

//总成绩d/15求平均成绩;

system("pause");

system("cls");

break;

case 7:{

//输出学生的成绩及其等级;

printf(" 成绩及相应等级信息\n");

printf("

学号

成绩

等级\n");

for(i=0;i

//15个学生的信息全部输出;

printf(" %-8s %8.1lf %8c \n",st[i].number,n[i],a[i]);

system("pause");

system("cls");

}

break;

case 8:{

//输出15个学生的所有信息;

printf(" 学号

平时成绩

期中成绩

期末成绩\n");

printf(" 15\n");

for(i=0;i

{

printf(" %-8s %8s %8s ",st[i].number,st[i].psgra,st[i].qzgra);

printf("%10s\n",st[i].qmgra);

}

system("pause");

system("cls");

}

break;

default: printf("输入错误,请重新输入。\n");

break;

}

38

软件设计报告 10005808 方轶琦

printf("\n");

}

}3.6.4结果及完善方向

(一).程序运行结果如下:

1、菜单选择界面如图3.6-2所示。

(三).系统有待完善的方向

该系统还有一些细节有待改进完善。如输出5个等级区间学生学号和成绩时,分别都进行了一个循环,共进行了5个循环,这个算法的时间效率较低。可以改进算法,使其进行一次循环便可输出5个等级的情况。

3.7 模拟电信计费系统的设计与实现(B2)

3.7.1设计题目及要求

设计题目:模拟电信计费系统的设计与实现 要求:(1)、计费功能。根据存放在源数据文件中的通话记录和长途费率文件对每一条通话记录计算其通话费用,并将结果保存在费用文件中。其中:通话费的计算方法如下:

通话费=长途电话费+本地电话费

长途电话费=费率(元/分钟)×通话时长(分钟) (通话时长不满1分钟的按1分钟计算)

39

软件设计报告 10005808 方轶琦

本地电话费为:3分钟以内0.5元,以后每3分钟递增0.2元。 (2)、话费查询。输入一个电话号码,从费用文件中统计该电话号码的所有本地话费、长途话费,并从用户文件中查找其用户名,最后在屏幕上显示:

用户名 电话号码 本地话费 长途话费 话费总计 (3)、话单查询。输入一个电话号码,查询并在屏幕显示该用户的所话通话记录,格式为:

用户名 主叫电话号码 被叫电话号码 通话时长 3.7.2设计思想及程序流程框图

1.本系统的输入输出文件 本系统的输入文件有三个: (1) 源数据文件(hd.dat) 存放:主叫区号

主叫电话号码

被叫区号 被叫电话号码

通话时长(秒) 每次通话作为一条记录,占源数据文件的一行。每条记录中各数据之间以空格间隔,例如:025 83491234 010 62320983 90 每个电话号码可以有多次通话记录。 如果主、被叫区号相同,则通话记录为本地通话记录;否则为长途通话记录。 (2) 长话费率文件(fl.dat) 存放:区号 费率

例如:010 1.20 表示从本地打往区号为010的地区每分钟收费1.20元。 (3) 用户文件(yh.dat)

存放: 电话号码

用户姓名 例如: 83491234 张明

本系统的输出文件有一个: 费用文件(fy.dat)

存放:主叫电话号码

通话类型

话费金额 其中,通话类型表示本次通话是长途还是本地。 2.系统输入数据

hd.dat—有20条通话记录,分别是:

fl.dat

有4条记录

025 83491234 025 85319971

70

010

1.20

025 84927038 010 62110045 236

020

1.20

025 87216340 025 84521009

310

021

0.80 025 83491234 0571 82199516 100

0571 1.00 025 58120321 021 81094532 50

025 83491234 025 85319971

80

025 84927038 025 83491234

115

yh.dat

有5条记录 025 58120321 025 87216340

47

83491234 张明 025 87216340 010 62110045 93

84927038 李小红 025 83491234 010 62110045 792

87216340 王励 025 84927038 0571 82199516 931

83492200 赵强 025 83491234 025 85319971

580

58120321 杨冬 025 84927038 025 83491234

358

025 58120321 021 81094532 197 025 87216340 025 84521009

256

025 87216340 010 62110045 193

40

软件设计报告 10005808 方轶琦

025 83492200 025 84521009

320

025 83491234 025 85319971

270 025 84927038 025 83491234

231

025 83492200 025 84927038

72 3.数据结构(用C++实现)

本题共设计了三个类:话单(callist)、费用(charge)和用户(user),类的定义如下:

(1)、基类:话单类Callist #include #include #include #include #define N 100

struct callist

{

char zqnum[5];

char znum[20];

char bqnum[5];

char bnum[20];

char longti[10]; }cali[N]; struct charge

{

char bqnum[5];

char cha[5]; }

ch[N]; struct user {

char znum[20]; char name[15]; }

use[N]; struct huaf {

char znum[20];

int flag;

double huafei; }

41

hf[N];

int readuse () {

FILE* fp; int i=0;

char a[10];

strcpy(a,"yh.dat");

if((fp=fopen(a,"r"))==NULL) {

printf("文件打开错误!\n");

exit(0); }

while(!feof(fp)) {

fscanf(fp,"%s %s \n",use[i].znum,use[i].name);

i++;

}

fclose(fp); return i-- ; }

int readcharge() {

FILE* fp; int i=0;

if((fp=fopen("fl.dat","r"))==NULL)

费规则; {

printf(" File open error!\n");

exit(0); } while(!feof(fp))

42

软件设计报告 10005808 方轶琦

//将yh.dat写入数组a; //输出号码与名字;

//打开fl.dat通话计费

软件设计报告 10005808 方轶琦

{

fscanf(fp,"%s %s \n",ch[i].bqnum,ch[i].cha);

i++;

}

fclose(fp); return i--; }

int readcallist() {

FILE* fp; int i=0;

if((fp=fopen("hd.dat","r"))==NULL)

//打开通话记录表; {

printf(" 文件打开错误!\n");

exit(0); } while(!feof(fp)) {

fscanf(fp,"%s

%s

%s

%s

%s\n",cali[i].zqnum,cali[i].znum,cali[i].bqnum,cali[i].bnum,cali[i].longti);

i++;

}

fclose(fp); return i--; }

int Billing()

//计费函数; {

FILE* fp;

int i;int j;int m;int l;

43

软件设计报告 10005808 方轶琦

double bd=0.0;

//通话时间初始化0;

j=readcallist();

m=readcharge();

for(i=0;i

{

strcpy(hf[i].znum,cali[i].znum);

hf[i].huafei=0.0;

//初始化话费为0.0元;

bd=atof(cali[i].longti)/60.0;

//计算通话时间(n个一分钟);

if(!strcmp(cali[i].bqnum,cali[i].zqnum))

{

hf[i].flag=0;

if(bd

//本地话费:3分钟以内0.3元,以后每1分钟递增0.2元;

hf[i].huafei=0.3;

else

if(bd==floor(bd))

hf[i].huafei=0.3+0.2*(bd-3);

else

hf[i].huafei=0.3+0.2*(floor(bd)-2);

}

else

{

hf[i].flag=1;

//长途话费计算;

for(l=0;l

{

if(!strcmp(cali[i].bqnum,ch[l].bqnum))

if(bd==floor(bd))

hf[i].huafei=atof(ch[l].cha)*bd;

else

hf[i].huafei=atof(ch[l].cha)*(floor(bd)+1);

}

}

}

if((fp=fopen("fy.dat","w"))==NULL)

//打开通话

44

软件设计报告 10005808 方轶琦

类型数据并向其写入数据; {

printf(" 文件打开错误!\n");

exit(0); }

for(i=0;i

{

fprintf(fp,"%s

%d

%.2lf\n",hf[i].znum,hf[i].flag,hf[i].huafei); //输出号码、长途以及本地话费;

} fclose(fp);

return i--; }

int query()

话费函数; {

char a[10];

char na[15];

int i;

int j;

int l;

double bd=0.0;

double ct=0.0;

j=Billing();

l=readuse ();

getchar();

printf("请输入要查询的号码\n");

gets(a);

for (i=0;i

{

if(!strcmp(hf[i].znum,a))

数据;

if(hf[i].flag==0)

bd=bd+hf[i].huafei;

else

45

//查询

//寻找与输入字符串(号码)相匹配的

软件设计报告 10005808 方轶琦

ct=ct+hf[i].huafei;

}

for (i=0;i

{

if(!strcmp(use[i].znum,a))

{

strcpy(na,use[i].name);

//条件成立则将use[i].name的内容复制到na中

break;

}

}

if(i==l)

printf("输用户不存在,请重新输入!\n");

else

printf("\t\t\t\t用户:%s\n\t\t\t\t号码:%s\n\t\t\t\t本地话费: %.2lf\n\t\t\t\t长途话费:%.2lf\n\t\t\t\t总话费: %.2lf\n",na,a,bd,ct,bd+ct);

return 0;

system("cls"); }

int billquery()

//话单查询函数; {

int i;

int j;

int l;

char na[15];

char a[10];

j=Billing();

l=readuse ();

getchar();

printf("请输入要查询的号码\n");

gets(a);

for (i=0;i

//比较输入号码与表单中号码是否有符合;

46

软件设计报告 10005808 方轶琦

{

if(!strcmp(use[i].znum,a))

{

strcpy(na,use[i].name);

break;

}

}

if(i==l)

printf("输用户不存在,请重新输入!\n");

else

for (i=0;i

if(!strcmp(hf[i].znum,a))

printf("\t\t\t\t用户:%s\n\t\t\t\t主叫号码:%s\n\t\t\t\t被叫电话号码:%s\n\t\t\t\t通话时长%s秒\n",na,cali[i].znum,cali[i].bnum,cali[i].longti);//输出话单;

return 0;

}

int main() { int i;

while(1) {

printf("\t\t\t\t

南京邮电大学\n\n\n");

printf("------------------");

printf("\t\t\t\t 请选择服务类型:\n\t\t\t\t 1:计费功能。\n\t\t\t\t 2:话费查询。\n\t\t\t\t 3:话单查询。\n\t\t\t\t 0:退出服务。\n");

printf("------------------");

scanf("%d",&i);

if(i==0)

//选择服务类型;

break;

else

{

47

软件设计报告 10005808 方轶琦

switch(i)

{

case 1:

Billing(); system("pause"); //计费选项;

break;

case 2:

query(); system("pause"); system("cls");

system("cls");

//话费查询选项;

break;

case 3:

billquery();system("pause"); //话单查询选项;

break;

default: printf("输入错误!\n");

}

}

printf("\n");

}

} 3.7.4结果及完善方向 (一).程序运行结果如下:

1、菜单选择

界面48

如图system("cls");

3.7-2所示。

推荐第4篇:系统开发总结

宿舍管理信息系统

系统管理

指导老师(李政忙老师)

开发团队成员:

姓名: 杨正明

姓名: 胡友文

姓名: 赵 坤

姓名: 卓仁慧

姓名: 肖远林

姓名: 李茂良

姓名: 宋 洁

总结书写人:宋学号:学号:20094042073 学号:20094086066 学号:20094042044 学号: 20094082052 学号: 20094084012 学号:20094084032 学号:20094171085

20094171085

系统开发总结

我们小组经过了这几个月的紧张而有序的系统开发,收获颇丰,感触颇深。现下分经验收获、教训反思、下步设想三大部分总结如下:

二、教训反思

1.学习与实践的结合不当。当我们进行程序开发的时候,发现以前学习的知识点到用时却忘得一干二净了,也只好重新学习基本知识了。如果以前把知识学得透彻点,理解深刻点,也许在开发过程中可以缩短时间,提高效率。反思自我,归其原因:不是当时的学习不够认真,而是缺乏对知识点的运用实践;对于像我们这样“半路出家”的编程人员来说,只是理解知识点是远远不够的,如果当时没有经过编译、运行、调试的过程,很快就会忘记的。

2.学习不精,对VFP的学习只是一些简单的肤浅的了解,导致我们在设计的时候,程序指令混乱,在设计的过程中遇到了很多的麻烦,最后还有很多都是借鉴的老师上课时候讲的,才得以完成。所以VFP没学好,也是我们的教训之一。

3.在做系统的时候,没有经常讨论,而是各自做各自的。没有沟通,导致我们再系统设计的时候的环节出现短时间的断裂,这是很不好的一点,以后一定要改正的。不然要是真正做系统的时候,会耽误很多东西。

二、经验收获 1.编写程序前,对已完成设计构思的系统进行主次分析,排好功能实现顺序,列出程序编写步骤,从系统规划对于理清编程思路很有帮助。人的逻辑思维可能很发达,在设计当中可以不用笔记,在脑中就能想好三到五个功能的逻辑关系和编写步骤。然而我们面对的是一个庞大的系统,大系统下分多个子系统,子系统下分多个功能模块,功能模块下分多个功能页面,功能页面下分多个子功能,而且子系统、功能模块、功能页面、子功能之间的逻辑关系构成了一张复杂庞大的逻辑关系网。这就需要我们在原先做好设计流程图上,系统规划,全面分析,逐步细化、反复斟酌、推敲,然后列出编程计划。

2.善于借鉴他人的成果,实现自己的功能,可以有效地缩短开发时间,提高工作效率,是快速提高编程能力的最佳途径。借鉴他人的劳动成果并不是简单地拷贝别人的源代码,如果只是这样的话,你会因为系统经常的报错,却束手无策,最后将其认为是鸡肋而抱怨连天。应该是先要分析读透他人的程序思想,取其精华,去其糟粕,使之成为自己的思想,然后将这些功能块与自己的功能块融合。如果其中有些内容只是单凭自己凝思构想的话,可能也会设计得很好,但是在 短时间内完成是不可能的。这次系统考试,开始只是简单代码拷贝、粘贴,结果可想而知,出现了一大堆的错误。后来只好深入解读其编程思路,先是了解其数据库相关表的关系和作用,根据数据预测各个字段的用途以及之间的数据关系,然后理解每个代码块的功能和之间的相互关系,最后自己又认真敲打了一遍。经过这么一个完整的过程,对于程序编写时在规范性,安全性,高效性上的要求和运用有了进一步的理解。这对于我们一个编程新手来说是有很大的好处的。

3.及时、清楚、完整的工作笔记,有利于快速提高自身的业务水平,也有利于提高编程效率。工作笔记是指将工作中出现的事件按照一定的顺序记录下来。写工作笔记就像是记录流水帐似的填写事件的相关要素,看似简单的工作记录却蕴含着很深的学问,工作笔记需要包含哪些要素才能记录完整、一目了然的事件?笔记要如何记录、分门别类才能更有利于以后我们的在学习?我是这样做的,以一天为工作节点,睡觉之前回忆今天所完成的任务,遇到什么困难,怎样解决,自己有什么心得体会,以表格形式,字段要素依次为:时间、事件、重点难点、解决死路、心得体会,把事件相对完整地记录下来,还可以按照时间、困难等级和心得体会来分类,以方便以后查阅学习。

4.每编完一个功能,应及时与其它完成功能一起测试,运行无误后,方可进行下一步开发。这样做是为了在测试时如果出错能很方便地找到出错的环节和病因所在,我们称之为“step by step”(一步一脚印),对于一个初级的程序开发者来说是很有帮助的。对于编程人员来说每一个环节都是来不得有半点差错的,每一个功能都是环环相扣,相互关联,相互作用的。如果一环出错,将会对系统造成不可估计的影响。

要完成一个优秀的系统,必须熟练掌握工具的特点及用法,要学会举一反三,充分实现VFP程序的灵活性。在平时的学习实践中,要不断开动脑筋,活学活用。要发扬团体合作的精神,互帮互助,共同进步。善于发问,善于思考。

推荐第5篇:系统开发请示报告

篇1:关于开发客户信息管理系统的申请报告 关于开发客户信息管理系统的申请

信息部:

客户是企业的宝贵资源,谁拥有客户,谁就拥有未来。客户在企业生存、发展的进程中的地位是毋庸质疑的。在企业信息化进程中,越来越多的企业将客户数据的管理作为重点内容。 基于客户信息的重要性,我支公司越来越重视对客户信息的管理及应用,而客户信息数据量大,来源渠道多,我支公司原本采用办公软件实现客户信息管理的方式不仅费时耗力,而且准确性又难以把握,已严重的影响了信息管理工作的工作效率。因此我支公司特申请开发一个客户信息管理系统。

一、信息管理系统信息分类

1、客户基础信息,含保单号、被保人、车牌号、起保日、终保日、初登日期、厂牌型号、车架号、发动机号、身份证号、客户地址。

2、客户联系信息,含办公电话、家庭电话、移动电话。

二、信息管理系统功能范围

1、自动关联核心业务系统中最新的客户基础信息,如客户批改相关信息也实现实时的更新,从而保证客户信息的及时和准确性。

2、自动关联分公司各个渠道的客户联系信息,如报案渠道、电销渠道、面签渠道、续保到期客户渠道和承保渠道等等。

3、实现客户信息的唯一性,非联系电话方面的重复信息以最新信息为准,原始信息转为历史数据备忘,联系电话方面的信息实现非唯一性累加。

4、根据厂牌型号实现车系分类,如广本车型包含有奥德赛*、锋范*、思迪*、雅阁*、飞度*。

5、实现错误的客户联系信息甄别:各单位在进行客户回访之后,集中收集错误的客户联系信息注入客户信息管理系统中单独识别,避免今后回访工作中重复劳动。

6、开辟一个承保渠道客户联系信息录入平台,在各网点操作员入单核保通过且刷卡完毕之后,该平台提取客户的基础信息(如同一客户有多条记录,只保留包含第一年商业车险的保单信息即可,避免操作员重复操作),各操作员通过保单号关联可录入客户联系信息。

7、以终保月份为数据导取的条件,实现到期客户信息导取。新的一年即将到来,我支公司希望在新的一年里能够更有效、更合理、更全面的利用客户资源,实现更透彻的公关展业,因此特申请开发上述系统,望批准。

中国人民财产保险股份有限公司 厦门市禾山支公司

2010-12-21篇2:测评系统请示报告

人力资源部关于引进人才测评系统的请示报告 xx总监:

近年来,随着社会主义市场经济的不断发展,人力资源管理在企业管理中的作用也变得日益重要,其已成为企业可持续发展的根本保障。为企业吸引、激励。保留、开发人才做出重大贡献。而人才测评作为人力资源管理的一项基础工具也显得尤为重要。

人才测评是指对各类人才所必备的、重要的和关键的素质进行测量评估,为人力资源的决策提供可靠、客观的依据。

1、人才测评在人力资源管理工作中的重要作用 首先,人才测评对人员招聘与配置有着重要意义。人才测评是通过多种科学方法对人的知识、能力、技能、个性特征、职业兴趣、动机等素质因素进行测评与评价的过程。简言之,我们可通过测评结果来了解人员素质特点和人才与企业岗位的匹配程度。招聘初期可根据工作岗位分析确定该岗位所需要的基本素质,通过测评结果在预选人员中选择与该岗位职业匹配度高的员工做适合的工作。人尽其才是我们的初衷。 以人力资源部招聘为例,我们可先在应聘者中选择出人力资源相关专业技能掌握较强及团队合作精神良好的应聘者。之后对被选中的应聘者进行认知、情绪和性格特点等测试,把一些性格外向、宜人性、言语技能高的人员安排到招聘和员工关系模块,性格偏内向、但心思更缜密的人员安排到薪酬福利、绩效模块。这样,员工的能力才可以得到最大化的发挥,资源的配置也更加优化,而不是简单的一刀切。

其次,人才测评也为培训和开发奠定基础。企业对员工的培训和开发需要建立在对员工充分了解的基础上,人才测评则是全面了解员工的最好的方式。一方面,培训和开发一个主要目标是开发员工本身的潜能,一些员工所具备的不易外现某些潜能可以通过测评来获知。另一方面,培训和开发也可改变员工的态度,测评结果可以为企业提供员工当前的工作、生活和精神状态。

以企业为员工提供mba的培训为例,从公司的角度来看,让员工接受mba的课程是为企业培养出优秀管理人才,达到人才储备的目的,那么这就要求被选的员工能够有一定的管理才能或潜能;另外,从mba这一课程来看,学员需要一定的知识储备,正常的或偏高的智力水平。这样,我们可以使用人才测评常用的工具,如智力测验、兴趣量表、气质量表等工具为我们筛选合适的员工。

除了上述两方面,人才测评还有助于人力资源的全面普查,有助于人员的使用和管理,能够为团队建设和班子搭配提供依据。我们常讲有的放矢,当我们有了弓箭,同时有了目标,理论上是可以放箭的,但如果准星不正或者精度不够的话,即使放再多的箭依然无法中的。人才测评则是人力资源管理的精度矫正器。

2、现有的人才测评工具

现代人才测评的主要鉴别考察内容是个人稳定的素质特点,主要包括三个方面,即能力因素,二是动力因素,三是个人风格因素,简单一点说,人才测评测的不是专业知识的多少,而是一些智力、人格和动机方面的内容,所以人才测评更多的是参照心理学理论,对心理测量的完善,使其更适合人才的评选。传统的人才测评主要通过四种技术来对人才进行评价:心理测验,面试,情景模拟技术和评价中心技术。这四种技术都会或多或少地受到面试考官的影响,而且当前人才选拔的模式也过于依赖于面试官,故其信度和效度成为了面试官发挥好坏的附庸,而且测评过程缺乏客观性,测评的标准化远远不能达到理想状态。

然而,信息技术的发展为人才测评改良和进步提供了契机。研究人员可以在人才测评的理论基础上,把测评的方法和工具数字化,编制成计算机软件,再根据抽取样本建立起一般性常模或特殊性常模,形成一个人才测评系统。这样,人才测评可以直接在计算机上得以实施进行,而且速度更快,效率也更高。所以,人才测评软件在人才测评的工具中是非常先进的,而且实用性也很高。人才测评系统也是衡量企业人力资源管理先进性的标准之一。

目前市面上已经投入使用的人才测评软件有以下几种:北森,诺姆四达,中智,wintalent等。

据我们的考察结果:相较于其他人才测评服务公司而言,北森(beisen)是业内有能力将人才管理技术、咨询服务和软件平台较为完善地结合在一起的少数几家人才管理解决方案服务商,是国内较早开展人才测评的专业机构之一,其技术成熟度也受到业内的认可;另外,在人才测评的理论研究也走在了行业的前沿,其关于人才测评的著作和科研论文影响也较为广泛,这一点是业内其他机构所不能企及的。北森人才测评系统按照不同层次的员工制定出相应的方案,来更好地使测评能够细化且更准确的反应出员工或应聘者的特点。其测评题库涵盖面较广,选取的题目多是出自于一些经典的心理量表,且内容构成上也较为合理,可靠性也很高。目前,蒙牛、正泰、松下等国内外企业亦选择使用北森的人才管理与测评解决方案,从而在招聘、选拔、吸引、雇用、留住关键人才方面节省了大量的成本,并且显著提高了效率和成功率。而我们作为一家走在行业前沿的交通设计类公司,也正需要选择这样的团队给予我们技术上的支持。因此从设计团队的专业性和权威性,测试的结构和内容,我们自身的需求,设计公司的专业性、从业时间和好评度,这四个维度上综合考虑,我们认为北森人才测评系统能够较好的满足人资部门的需要。 3.人才测评软件系统引入对我公司的积极作用

人才测评软件系统的引进对人力资源管理部门的影响是积极的,而且效果应该是立竿见影的。前文所述,人才测评软件系统是由信息技术的发展,带给人才测评的一项革命,不但整合了人才测评的所有技术,而且其在甄别、鉴定人才方面有着更加标准化、客观性的优点。这样,人力资源部门的工作不但可以节省成本且更加富有成效。

这项技术的引入还可以从根本上造福于员工。人力测评软件由于选取了人格、情绪等心理测验的内容,故其还有对员工的心理状况进行检测的功能。一旦有突发的危机性事件出现时,可以使用该软件对员工的心理状态进行调查,从而能够有效地防治不良心理问题的出现,从最大程度上减少由于员工的身心问题对工作的影响,降低公司的损失。同时,这也是公司对员工进行人文关怀的重要方式,也是一种重要的心理层面的福利项目。 整个公司从该项技术的获益则是战略性的。公司可以依靠人力测评软件系统选拔适合的人才,也可以通过其来对员工进行心理援助和心理干预。由此一来,不但劳动生产率会有所提升,我公司的品牌效应还能大大的增加。而且,我公司对人力测评软件系统的引进,可以说是用较为低廉的成本请到一位心理专家,所以从投资的角度说,该项技术的引进也是非常值得的。 特此,我人力资源管理部门请求公司领导考虑引进人力测评软件系统,从而改进我公司人资管理的技术,以期率先在本行业中完善人力资源管理方法,以谋求公司的战略性发展。

以上意见妥否,请批准。

人力资源部篇3:智能化系统设计招标请示报告

关于佛山xx项目

进行“智能化设计单位”招标的请示报告 地产集团领导:

佛山xx为多业态、地标型、大型商业综合体项目,现设计进度已进行到施工图设计阶段,各专项设计须根据整体进度依次介入,我部已在集团指导下积极开展相关工作。

本项目定位为涉外5a级智能化写字楼,智能化系统非常复杂,对内涉及“ba楼宇智能化”、“ca通讯智能化系统”、“oa办公智能化”、“fa消防智能化”、“sa安防智能化”五大系统,每个系统又下辖五个子系统,总计25个系统;对外需要移动、联通、电信、广电四大运营商提供数据、语音、电视信号、信号覆盖的工程施工和接入运营服务;软件系统上涉及到物业管理系统、能源管理系统、ibsm集成管理系统等,需要把不同子系统、不同协议、不同标准系统集成到统一的软件平台,可以说智能化涉及到的专业、技术类别非常多,而本项目的定位智能化又是重中之重,智能化是本项目的神经系统,要实现预期目标定位,须有高标准的智能化软硬件配套。

鉴于本项目智能化的重要性和复杂性,需要通过招标,确定一家类似项目经验丰富、资质达标的专业智能化设计公司或专业机电顾问公司(仅负责智能化),负责整个项目的智能化方案的确定、完成技术标准的编制、施工图设计、工程招投标的协助、安装调试等施工过程的监管。

以上请示妥否,请领导予以批示!

报告部门: 佛山xx发展有限公司 报告时间: 2014年11月26日报 告 人: 审 核: 审 定: 1

推荐第6篇:系统开发总结

课程综合论文系统开发总结

经过了两个月紧张而有序的系统开发,收获颇丰,感触颇深。现下分经验收获、教训反思、下步设想三大部分总结如下:

一、经验收获

1.编写程序前,对已完成设计构思的系统进行主次分析,排好功能实现顺序,列出程序编写步骤,对于理清编程思路很有帮助。人的逻辑思维可能很发达,在设计当中可以不用笔记,在脑中就能想好三到五个功能的逻辑关系和编写步骤。然而我们面对的是一个庞大的系统,大系统下分多个子系统,子系统下分多个功能模块,功能模块下分多个功能页面,功能页面下分多个子功能,而且子系统、功能模块、功能页面、子功能之间的逻辑关系构成了一张复杂庞大的逻辑关系网。这就需要我们在原先做好设计流程图上,系统规划,全面分析,逐步细化、反复斟酌、推敲,然后列出编程计划。

2.善于借鉴他人的成果,实现自己的功能,可以有效地缩短开发时间,提高工作效率,是快速提高编程能力的最佳途径。借鉴他人的劳动成果并不是简单地拷贝别人的源代码,如果只是这样的话,你会因为系统经常的报错,却束手无策,最后将其认为是鸡肋而抱怨连天。应该是先要分析读透他人的程序思想,取其精华,去其糟粕,使之成为自己的思想,然后将这些功能块与自己的功能块融合。比如在短消息功能模块中,如果只是单凭自己凝思构想的话,可能也会设计得很好,但是在一两个星期内完成是不可能的。后来发现了《自动化办公系统》有相同的功能模块,开始只是简单代码拷贝、粘贴,结果可想而知,出现了一大堆的错误。后来只好深入解读其编程思路,先是了解其数据库相关表的关系和作用,根据数据预测各个字段的用途以及之间的数据关系,然后理解每个代码块的功能和之间的相互关系,最后自己又认真敲打了一遍。经过这么一个完整的过程,对于程序编写时在规范性,安全性,高效性上的要求和运用有了进一步的理解。这对于我一个编程新手来说是有很大的裨益的。

3.及时、清楚、完整的工作日志,有利于快速提高自身的业务水平,也有利于提高编程效率。工作日志是指将工作中出现的事件按照一定的顺序记录下来。写工作日志就像是记录流水帐似的填写事件的相关要素,看似简单的工作记录却蕴含着很深的学问,工作日志需要包含哪些要素才能记录完整、一目了然的事件?日志要如何记录、分门别类才能更有利于以后我们的在学习?我是这样做的,以一天为工作节点,睡觉之前回忆今天所完成的任务,遇到什么困难,怎样解决,自己有什么心得体会,以表格形式,字段要素依次为:时间、事件、重点难点、解决死路、心得体会,把事件相对完整地记录下来,还可以按照时间、困难等级和心得体会来分类,以方便以后查阅学习。

4.每编完一个功能,应及时与其它完成功能一起测试,运行无误后,方可进行下一步开发。这样做是为了在测试时如果出错能很方便地找到出错的环节和病因所在,我们称之为“step by step”(一步一脚印),对于一个初级的程序开发者来说是很有帮助的。对于编程人员来说每一个环节都是来不得有半点差错的,每一个功能都是环环相扣,相互关联,相互作用的。如果一环出错,将会对系统造成不可估计的影响,最可怕的危害是它有可能会成为系统的一个隐形的漏洞或是黑客工具的后门。

二、教训反思

1.学习与实践的结合不当。当我进行程序开发的时候,发现以前学习的知识点到用时却忘得一干二净了,也只好重新学习基本知识了。如果以前把知识学得透彻点,理解深刻点,也许在开发过程中可以缩短时间,提高效率。反思自我,归其原因:不是当时的学习不够认真,而是缺乏对知识点的运用实践;对于像我这样“半路出家”的编程人员来说,只是理解知识点是远远不够的,如果当时没有经过编译、运行、调试的过程,很快就会忘记的。

2.学习目标不专一。我们都知道在学习的时候是最忌讳这个还没学明白就去学那个的,结果当然是哪个也没学明白。VS.NET中微软本身就提供了有很多的控件,再加上它支持第三方提供的控件,这么多的控件各有各的特性,要想运用这些控件就必须了解它提供的接口和性质。由于多数是免费的控件,在控件介绍上就比较模糊或者根本就没有,在学习上造成很大的阻碍。这个没学好,就想用另一个,造成学习不深入,学习效果不好。

三、下步设想

1.文章的类型应该有动态添加功能。论文分为“学员论文”、“示范论文”、“论文题目”三大类,只是从整体上粗糙地进行分类,不利于学员的人性化学习。我们还可以从论文的研究方向、深度、等级等进行细化分类的。研究方向可以分为:军事理论、情报分析、心理学、教育学、管理学、计算机等;性质可以分为:课程论文、毕业论文、学术论文等;等级可以分为:

一、

二、三或优、良、中、一般、差等。细化分类后的文章更有利于学员的阅读学习,学员可以根据论文的研究方向进行搜索相同方向的学习,也可以根据论文的性质进行学习,还可以把自己的论文与不同等级的论文进行对比,找出自己的差距和不足,有效地提高学习效率。

2.利用XML,减少数据库的负担,提高系统的整体效率。根据XML是一种数据流不同验证就可以直接通过防火墙,高效的数据传输可以有效地在胖客户端快速显示几千字甚至上万字的文章。一篇文章所占的空间并不大,最多也是几百KB,但是资源一多,文章的数量很有可能超过几百万篇,至少占几个G的资源,而一般来说数据库要运行这么大的数据是很困难的。

3.增加RSS阅读器,将最新的文章提供给其它的网站。这样可以增强本网站与其它网站的联系性,也可以在网络的无限空间里有效地推广我们的网站。

推荐第7篇:系统开发合同

甲方:

联系人:

电话: 邮 编:

乙方: 上海应龙网络技术有限公司

联系人:

电话: 邮 编:

鉴于甲方委托乙方开发系统,帮助甲方企业信息化,,拓宽销售渠道,为明确双方责任,根据中国法律,经双方友好协商,签订此合同,以期双方共同遵守。

第一条、双方的权利和义务

1.甲方的权利和义务

提供相关的、有效的、必要的材料和图表等,并保证材料完整、图表清晰、思路明确。

依合同约定时间按时支付费用。

依合同约定时间使用主页。

2.乙方的权利和义务

依照甲方的要求及提供的材料和按时完成系统开发。

依合同约定收取费用。

第二条、合同金额

甲方委托乙方开发模块:上述费用总计人民币(大写): 拾 万 仟 佰 拾 元整。

第三条、付款方式及合同期限

本合同涉及总金额共计人民币(大写): 拾万仟佰 拾 元整,甲方须在本合同签订的同时一次性向乙方支付合同金额的 %,即 元整。作为

预付款。

乙方开发完成后,由甲方进行验收,验收合格,甲方须以书面方式签收,同时须一次性支付合同余款元整。

系统开发完成时间:乙方须在 日内完成系统的开发。

合同期限:年月日 至年月日

付款期限:甲方须在当日内一次性向乙方付清所有剩余款项。

交验方式:

1、开发过程中在乙方指定的空间进行校验,甲方认可签字后,乙方方可进行下一步开发工作,否则开发内容甲方不认可造成重新开发的后果由乙方承担;

2、如经甲方认可后的开发内容需改动造成重新开发的后果又甲方承担;

3、系统开发完成后甲方再乙方指定的空间进行验收,认可后交付余款给乙方,乙方在收余款后将整个系统的电子文件交甲方。

本合同自签订之日起生效,有效期至系统开发完成并且甲方将所有合同款项支付给乙方并且乙方将整个系统的电子文件交甲方后结束。

第四条、合同解除、终止及违约责任

如因甲方原因(如材料不全、付款不及时等)造成双方争议的,由甲方负责。

如因乙方原因造成网站未即时建设,造成双方争议的,由乙方负责。

在本合同的有效期结束后,本合同自动失效。

第五条、其它约定

本合同的订立、效力、解释、履行和争议的解决均适用中华人民共和国法律法规和计算机行业的规范。

对本合同的理解与解释应依据合同目的和文本原义及业界通行的理解和惯例进行。

任何一方对本合同内容和对方当事人的商业秘密(包括经营和技术秘密、源代码、数据库等)均负有保密的义务,否则应承担相应的责任。

第六条、附则

本合同经甲乙双方签字盖章后生效。本合同共计贰页,一式贰份,甲乙双方各执一份。

甲乙双方认为有必要约定的其它事项,应在本合同达成的原则基础上,以书面形式通过补充条款加以明确,补充条款与本合同具有同等的法律效力。

本合同未尽事宜或与合同法冲突时,均按合同法执行。

甲方: 乙方:上海应龙网络技术有限公司

代表人签字: 代表人签字:

日期:年月日 日期:年月日

推荐第8篇:信息系统开发

信息系统开发是一个社会过程

信息系统建设的困难不仅来自技术方面,还来自企业内外环境。影响信息系统成败的有体制、政策、法规、观念、技术等多种因素。技术不是唯一因素,甚至不是主要因素。

在相当长的一段时间里,开发信息系统的过程中,用户和开发人员双方误解,用户认为开发是技术人员的事,开发人员因为用户陈述清楚他们的需求,由此开发系统,其它的不要干预。当完成系统开发,用户提出“你开发的系统不是我所要的系统”,延误开发时间,浪费资源,或者因维护困难而使系统短命。

信息系统建设的实践,使人们越来越重视社会人文因素对信息系统建设的影响。信息系统是人机交互系统,其开发、维护都离不开入的参与。信息系统开发过程本质上是一个社会过程。从社会行动观点看,信息系统开发是人类活动的协调序列,是多种参与者的协作过程。在信息系统开发过程中,用户、系统管理者、系统分析员、技术专家、程序员等参与者相互联系,相互影响。他们的通力合作,是系统建设成功的基础。但是,由于这些人员知识背景、经历不同,影响彼此沟通。通信的误解是系统成功的隐患。更重要的是,信息系统建设不可避免地要改变某些业务流程乃至组织机构,这将影响某些部门和人员的工作方式、权力关系,引起部门之间、人员之间的利益冲突。有人会担心丢掉自己熟悉的工作,感到自己的传统地位和能力受到威胁;由于缺乏计算机知识,有人感到难以适应现代信息系统的运行。这些担心,常常造成系统开发的阻力。

信息系统不只是单纯的计算机系统,而是辅助企业管理的人机系统。人是信息管理的主体。由于人的作用是一种高级而复杂的因素,有人参与并由人控制决策的社会系统,往往会使本应理性的行为变得富有感情、丰富多彩。离开了人,再好的计算机系统,也不过是价格昂贵的装饰品而已。把信息系统的开发、应用、管理看作纯技术过程,许多问题永远得不到解决。只有从更深层次探讨,重视非技术因素,才有可能解决长期困扰人们的“软件危机”。

推荐第9篇:移动app软件设计

广州移动app软件设计开发公司【启汇网络】分析,移动应用市场蓬勃发展也让众多的移动app软件开发者获利匪浅,也由此涌现出了许多优秀的app软件设计,随着用户的品质需求的上升,App界面设计也被提升到了全新的高度。 一:专业APP设计是影响用户第一印象的重要因素。

从2005年到2013年,技术让世界的细节发生了深刻的改变。互联网公司知道移动端在于现在和未来几年的重要性,都疯狂的争斗着入口。那些我们看不到的硝烟都在演化着未来。我们看到的是那些每天都有新意的App应用程序。如何设计出经典,如何在岁月里长久存留的经典!

移动应用实现了从互联网到移动设备的成功蜕变,从用户角度出发,对视觉、风格、操作方式、架构、内容呈现等各个方面进行设计挖掘,从而打造出最为精致的应用。

设计移动app软件注意事项汇总:

1.不要在没有流程图之就前开始设计或者画线框图

2.分工要明确 不要忽略开发预算。

3.不要使用低分辨率的图片 避免使用位图。

4.不要把点击区域设置的太小,大多数用户的食指宽1.6~2厘米。

5.不要随意使用介绍动画,事实上,这些介绍动画也延迟了用户接触App的时间。

6.别让用户空等,App加载时间过长很容易让用户以为出现了什么故障,也会带来糟糕的用户体验。

7.不要盲目照搬别的操作系统。

8.不要在高密度像素屏幕上填充过多信息或者UI组件。

9.不要觉得每个用户有着跟你一样的App使用方式。

10.不要忘记手势 但不要滥用。

二:优秀APP软件是功能与设计的相结合。

随着智能手机市场的扩大,平板与智能手机的普及使现在的移动市场成为各大企业必争之地,各种APP层出不穷,有昙花一现的,也有经久不衰的。

我们在设开发移动手机APP应用软件时要注意哪些要点:

1:降低用户使用的门槛。不少用户在第一次使用一个app软件时,出于对app客户端的陌生,都会先了解app的使用步骤。

2:不要让用户迷惑。让用户迷惑的东西包括:用户看不懂的功能、隐藏的功能、速度慢、当发现用户被这些功能“困住”不能给及时的反馈。

3:永远不要为了美观牺牲了功能。开发一款手机app应用软件不能忽视功能,只有解决用户需求,才谈到app的美感。

4:了解用户行为的原因。不管是移动APP软件开发还是网页端的开发,到最后做的都是做的用户体验。让客户得到最好的用户体验,能实现他想要的功能,这才一款好的APP软件。

启汇网络认为,对于所有的设计师和开发者来说,未来几年可以称得上是拥有非常美好市场的,随着移动逐渐成主流,开发者和设计师拥有更多的机会来展示自己,也通过app应用从中获取利润,当然谁也不能拍拍胸脯保证一定赢,因为无论何时,祸福总相倚,但只要对人心所向的App设计趋势深入了解并加以利用,相信在未来让人爱不释手的优秀应用一定会层出不穷。

推荐第10篇:软件设计职业生涯规划

引言

古语有云“凡事预则立,不预则废”。作为当代大学生,我们面临着巨大的就业压力;同时,我们接受高等的素质教育,担负报答父母、建设祖国的责任;因此,我们更有理由为自己的四年大学生活作出规划,为将来的职业生涯作出规划。

一、自我分析

1、气质评定

具有较强的应变能力,善于处理各种复杂的情况在处理个方面问题时考虑周全,踏实肯干,具有较强的坚持性,与他人交往适度,既让人感到亲切又保持一定距离。

2霍兰德职业性测试

E(事业型)进取心强,勇于开拓勇挑重担,喜欢支配别人,具有领导才能,喜欢竞争,精力充沛,自信善于交际。

S(社会性)喜欢与人打交道,善于交际。 3 360度评价

家人评价:有责任感,诚实守信,学习刻苦,自控能力较差,胆小 老师评价:做事有条理,虚心好学,善于吸收别人的优点,太过坚持自己的想法,不能当机立断。

同学评价:乐于助人,不怕辛苦,不怕困难。过于拘谨。

自我评价:有责任感,有一定的洞察能力,善于进行沟通。有良好的团队合作精神,临场应变能力较差,表达能力不强,做事恒心不足。

自我分析小结:总结来说,我是个外向开朗、乐于沟通、善于学习并且处事条理的人;我认为我的个性与能力使我适合较为多样的工作类型。

二、环境分析

1、家庭环境分析 我的家庭很一般,家里收入一般,我之前并没有接触过与现在所学专业相关的东西,也没有特殊的家庭背景。由于家庭气氛比较和谐,让我无形中更懂得如何与人相处,这样潜移默化的让我也能更认真的对待生活,工作中的事情。

2、学校环境分析

我所在的学校是一个普通专科院校,在学校前途一片大好的大环境下,我自身也会有很好的发展。学校是一个小社会,在这里,我们要处理很多的人际关系,与周围的同学相处的能力就很能体现一个人自身与他人的沟通交流能力。学校的学生来自于全国各地,我们能通过对不同生活背景,不同生活习惯的人交往来锻炼自己的与人交往能力。

3、社会环境分析

随着科学技术的发展,所有大型企业都开始进行智能化改革,所有企业都需要网络人来来设计,管理。这就为我们提供了广阔的就业天地。现在信息化浪潮正在席卷全球,新经济的发展和经济全球化都必须依托信息化。

4、职业环境分析 (1)行业分析

软件业的发展关系到一个国家的政治和未来,软件产业将成为21世纪拥有最大产业规模和最具广阔前景的新兴产业之一。软件领域是一个包括系统软件,嵌入式软件,数据库软件,财务及企业管理软件,教育软件,游戏软件等在内的复杂的集合体。软件行业对人才的需求量也成上升趋势。人才供给缺口将是未来一段时间软件人才市场的主旋律。 (2)

职业分析

人才行情:需求大,对专业功底要求比较深,但也适合一般本科生从事。最重要的是职业发展空间足够大。

三、职业定位

1、初级程序员:达到工作承担要求;具有一定沟通能力和工作责任心。

2、软件工程师:所负责的项目客户满意度达到满意以上。

3、系统分析师:熟练掌握软件需求分析/大型项目的策划。熟练掌握软件的系统设计。熟悉高级项目管理和质量控制。

四、工作计划

1、短期目标(大学期间) 在校期间完成基本的学业,掌握好基础课,为毕业后做准备,通过英语六级考试,利用课余时间深入的学习软件编程技术,LINUX系统,数据库语言,汇编语言、数据结构,提升自己的专业素质。积极的参加各项活动,提高自己沟通能力,语言表达能力,交际能力,团队合作能力,利用假期时间找一些小型的公司工作实践,在实践中发现问提,提高自己,了解最新的行业发展动态,学习最新的技术。

2、中期目标(毕业后) 积极投放简历,利用几年工作实践的时间熟练掌握软件编程,积累大量软件编程经验,学习企业管理知识,关注最新的行业发展动态新技术的应用,为以后的发展做好准备。工作后不多讲求薪酬的高低,重在汲取经验。多跟同学,老师交流,尤其跟老师和实践时的老员工交流,向他们学习成功的经验,失败的教训。好好学习, 基础扎实, 视野开阔。 三脉积累 (知脉、人 脉、资金脉) 多个朋友多 条路

3、长期计划(工作十年以后)

尝试和一些志同道合的朋友合作创业,以自己的成熟技术和良好的信誉为核心竞争力,在同行中拥有自己的优势一点点的积累经验,扩展自己的客户群。

五、评估和调整

职业生涯规划是一个动态的过程,必须根据实施结果的情况及环境的变化及时的评估和修正

1、评估时间

规划实施过程中,我将定期半年或一年评估规划,或者出现特殊情况时,随时评估并进行相应的调整。

2、规划调整的原则

我可能遇到自身情况、外部如社会、家庭环境、机遇情况的变化及不可抗拒的因素,如果出现这种情况将及时评估,灵活调整。 结束语

计划固然宏大而美好,但更重要的,在于其具体实践并取得成效。只说不做,所谓的职业规划目标就如空中楼阁般美好却遥不可及,到头来只是一个安慰自己的美丽谎言。然而,现实是未知多变的,定出的目标计划随时都可能遭遇问题,要求有清醒的头脑,巨大的勇气,克服困难,取得成功。也许最终我们的目标也不能达成,但至少我们努力过,奋斗过,拼搏过,人生也便无悔。随着社会信息化的深入,各行业大都需要软件工程专业人才,而且薪金很高。学生毕业后可以从事软件设备和信息系统的设计、应用开发以及技术管理等。比如,做软件工程师,设计开发一些软件、通信器件;做软件工程师,设计开发与硬件相关的各种软件;做项目主管,策划一些大的系统,这对经验、知识要求很高;还可以继续进修成为大专院校教室,从事科研或实验教学等工作。

中国it行业起步至今有十几年,很年轻。新鲜的事物、朝阳的产业总是备受注目。正是这个原因,计算机专业迅速成为高校的热门专业,不少同学削尖又再削尖了脑袋往这个象牙塔里的象牙顶钻,或为兴趣,或为谋生掌握一门技能,或为前途更好更快地发展

第11篇:02软件设计说明书

文档编号: LMS - 02 版 本 号:

V1.0

文档名称: 项目名称:

软件设计说明书 学生考勤管理系统

编写: 学号:10006410 姓名:李春林 校对: 学号:10006410 姓名:李春林 审核: 学号:10006410 姓名:李春林 日期: 院系: 专业:

2013年5月8日

通达学院 计算机科学与技术 1. 引言 1.1 编写目的

要求《学生考勤管理系统》对学校全体学生的资料和考勤情况进行管理,通过每日的打卡把出勤信息输入到学校的考勤管理中心,保存学生每日的出勤情况,以便统计学生的出勤情况。同时方便班长查阅,即节省了人力,又省去了中间的很多容易出错的步骤。让学校学生的考勤管理更具有透明性,且方便管理。

明确所要开发的软件应具有的功能、性能,是系统分析人员和软件设计人员能清楚地了解用户的需求,并在此基础上进一步提出概要设计和完成后续设计与开发工作,为软件开发范围、业务处理规范提供依据。根据《需求规格说明书》,在仔细考虑讨论之后,我们又进一步对《学生考勤管理系统》软件的功能划分、数据结构、软件总体结构进行设计,从而完成概要设计,作为软件详细设计的基础。

1.2 项目背景

项目委托单位:计算机学院软件工程系。

开发单位:*************************************。

考勤作为一个基础管理,是学校对学生进行管理的基本依据。实际管理和记录工作非常需要快速获知各个年级学生的每日出勤情况,以便于及时向班长反映学生出勤、缺勤情况(包括迟到、早退、病假、事假、旷课等情况)。因此此系统在操作系统的基础上,结合Accese数据库管理系统,运用VC++来实现运行。

1.3 定义

学生考勤管理系统

GUI:Graphic User Interface,图形用户界面。

1.4 参考资料

[1] 国刚 周峰 孙更新编著

《UML与Rational Rose 2003》 北京:电子工业出版社 2007

[2] 彭德中编著《软件工程—理论与实践》 高等教育出版社 2004 [3] 李佳若 《Accese2002数据库应用》 人民邮电出版社 2006

[4] 《学生考勤管理系统》 曲阜师范大学计算机科学学院06级2班 第二小组 2. 任务概述 2.1 目标

《学生考勤管理系统》相应的需求有:

1.具有输入、查询、删除、修改记录的任课老师,学院领导以及系统开发人员等系统管理员;

2.具有查询记录的学生作为普通用户;3.能够对需要的统计结果提供打印输出;

4. 能够提供一定的安全机制,提供数据信息授权访问,防止随意删改,同时提供信息备份的服务。

a) 运行环境

Intel486以上系列、AMD K6 以上系列等PC台式机和便携式电脑; 运行时占用内存:≤1MB; 所需硬盘空间:≤5MB;

软件平台:中文Windows2003/xp或更高版本;

b) 条件与限制

由于时间比较短,使用计算机不方便以及对于网络编程不熟悉,本图书馆管理系统并没有提供数据的远程访问功能。对信息的保护手段仅限于设置用户级别,以及提供数据文件的备份,比较简单,安全性能有待进一步完善。 5. 总体设计 3.1 处理流程

1.主流程

1) 建立与数据库的连接 2) 获取系统设置

3) 显示主对话框(即主界面)

4) 等待用户输入,如为学生:进入学生考勤流程(显示学生对话框)。如为教师:进入教师工作流程(显示教师对话框)。如为院系领导:进入院系领导流程(显示院系领导对话框)。如为系统管理:进入系统管理流程(进行授权)。如为退出:检查所有子窗口,关闭对话框,断开与数据库的连接

2.学生考勤流程

1) 要求用户输入学号,姓名 2) 学生身份检验

3) 获取相关的学生信息并显示

4) 等待用户输入,如为确认输入操作:读入操作,提交请求,更新信息显示,把操作信息写入考勤访问记录文件进行备份,显示考勤操作结果。如为完成相应操作:结束学生流程。

3.教师工作流程

1) 等待用户输入:如为确认输入教师号:读入教师号,提交教师请求,显示教师操作的返还信息。如为查询考勤状态:显示考勤信息,如为退出:结束教师工作流程。

4.院系领导流程

1) 等待用户输入,如为确认输入院系领导:读入院系领导,显示相应操作,显示操作结果。如为退出状态:结束该流程。

5. 系统管理流程

1) 要求用户输入账号及口令 2) 用户操作权限检验

3) 根据操作权限级别显示系统管理对话框

4) 等待用户输入,如为请假操作:进入请假操作流程。如为学生考勤库操作:进入学生考勤库操作流程。如为数据统计:进入数据统计流程。如为更改口令:要求用户输入口令,检验正确后更新。如为返回:结束系统管理流程

6. 请假操作流程 1) 显示请假信息

2) 等待用户输入,如为事假: 要求输入原因、时间,提交申请,等待审批。如为病假: 要求输入时间和相应证明的照片,确认为病假,等待审批。

7. 查询操作流程 1) 显示学生考勤信息

2) 等待用户输入,如为学生: 输入学生号,查询记录,显示数据。如院系领导:输入口令,查看是否有学生请假或病假审批,要求及时返回审批结果,修改相应信息。 刷新数据显示。如为返回:更新当前记录,结束学生考勤操作流程。

8. 数据统计流程

1) 等待管理员输入,如为开始统计: 读入统计条件,生成统计结果并显示。如为返回:结束统计流程。

3.2

3.2.1 总体结构

1) 主模块调用:

2) 学生考勤模块调用:学生身份检验模块,考勤查询模块,请假申请模块

数据库操作模块

3) 教师工作模块调用:访问记录模块,确认考勤记录模块,考勤查询模

块,教师身份检验模块

数据库操作模块

4) 院系领导模块调用: 访问记录模块,审批请假模块,考勤查询模块,

院系领导身份检验模块

学生考勤模块,教师工作模块,院系领导模块, 系统管理模块。 总体结构和模块外部设计

数据库操作模块

5) 管理员模块调用: 管理员身份检验模块,考勤操作模块,数据显示

模块

5) 考勤查询模块调用: 查询命令生成模块,数据库查询模块

数据显示模块

6) 系统管理模块调用: 考勤操作模块,各身份检验模块

数据统计模块,更改口令等设置模块

7) 身份检验模块调用: 数据库查询模块

8) 考勤检验模块调用:

9) 考勤记录模块调用:

数据库查询模块

10) 考勤操作模块调用: 考勤记录集获取模块,当前记录更新模块

更新显示模块,数据库查询模块

11) 数据统计模块调用: 查询命令生成模块,数据库查询模块

数据显示模块

12) 当前记录更新模块: 数据库操作模块

13) 考勤记录集获取模块: 数据库查询模块

3.2.2 模块外部描述

1) 主模块:从操作系统获得程序运行所需资源,显示主对话框,完成消息处理,调用相应的子模块。

2) 学生考勤信息模块:检验输入的学生学号,获取相关的学生信息并根据操作结果予以刷新,读入用户输入的学生学号,检验学号信息确定操作合法性,对合法学生考勤操作,登记入访问记录库,

数据库查询模块

数据库操作模块 对非法的学生考勤操作,提出警告,并返回。

3) 学生考勤信息模块:检验输入的学生学号,获取相关的学生信息并根据操作结果予以刷新,读入用户输入的学生学号,检验学号信息确定操作合法性,对合法学生考勤操作,登记入访问记录库,对非法的学生考勤操作,提出警告,并返回。

4) 教师工作模块:检验输入的教师号,获取相关的教师信息并根据操作结果予以刷新,读入用户输入的教师号,检验教师号信息确定操作合法性,对合法教师号操作,登记入访问记录库,对非法教师号操作,提出警告,并返回。

5) 院系领导模块:检验输入的口令,获取相关的领导信息并根据操作结果予以刷新,读入用户输入的口令,检验口令确定操作合法性,对合法领导操作,登记入访问记录库,对非法领导操作,提出警告,并返回。

6) 学生考勤信息查询模块:根据用户界面的输入生成数据库查询命令,向数据库提交查询请求,查询并显示查询操作的结果。 7) 系统管理模块:根据用户输入检验操作权限,根据用户输入选择调用不同的子模块,根据不同的操作权限,对数据进行保护。 8) 身份检验模块:根据输入的证号或口令生成查询语句,查询数据库,返回查询结果。

9) 请假申请模块:根据请假原因进行审批, 返回请假成功/失败结果。

10) 访问记录检验模块:根据学生学号生成查询语句,调用数据库查询模块查询借书记录,返回查询结果。

11) 系统操作权限查验:检验是否正确的用户与口令,返回相应的操作级别。

12) 学生考勤信息库操作模块:显示考勤信息的数据项,根据院系领导或管理员输入修改,增加或删除。

13) 数据统计模块:根据用户输入,生成查询命令,根据要求进行查询,将所得结果显示给用户。

14) 数据库操作模块:根据输入的数据库操作命令,完成相应操作,将操作结果返回。

15) 查询命令生成模块:将用户界面的输入转换成为数据库查询命令 16) 数据库查询模块:根据输入的数据库查询命令,进行查询,将查询生成的结果返回。

17) 数据显示模块:将数据按照一定格式显示(列表),根据用户输入,调整格式。 功能分配

1浏览功能:学生考勤信息库操作模块

查询功能:学生考勤信息库操作模块

插入功能:学生考勤信息库操作模块

修改功能: 学生考勤信息库操作模块

删除功能:学生考勤信息库操作模块

授权功能: 系统操作权限检验模块

数据统计模块

管理员操作模块 管理员操作模块 管理员操作模块

3.3

6. 接口设计 4.1 用户接口

使用基于对话框的GUI,用户通过鼠标的点击和键盘的输入完成操作,编辑框用于用户的输入。

4.2 外部接口

1.用户界面

使用Windows的标准对话框的形式,完全用对话框实现。应用工具:Visual C++。

1) 主对话框:由六个功能按钮构成

学生、教师、院系领导、管理员、帮助、退出

2) 学生对话框:

学生学号编辑框: 用于输入学生学号; 学生信息显示区: 用于显示学生信息(姓名); 学生考勤信息显示区:用于显示学生考勤信息 学生请假显示区:用于输入学生请假申请; 请假申请提交按钮:提交请假申请请求; 退出按钮:退出学生对话框。

3) 教师工作对话框:

教师号编辑框:用于输入教师号;

教师信息显示区:用于显示教师信息(教师号、教师姓名,教授课程号); 学生考勤信息显示区:用于显示学生考勤(正常、请假、旷课、迟到、早

退等);

提交按钮:用于提交确认学生考勤信息; 返回按钮:用于退出教师对话框。

4) 院系领导对话框:

院系领导口令编辑框:用于输入领导口令

学生考勤信息显示区:用于显示学生考勤(正常、请假、旷课、迟到、早

退等);

学生请假显示区:用于输入学生请假审批; 时间编辑框:用于编辑年与月; 退出按钮:用于院系领导对话框;

5) 管理员对话框:

管理员口令编辑框:用于输入管理员口令;

学生考勤信息显示区:用于显示学生考勤(正常、请假、旷课、迟到、早

退等);

学生考勤信息修改编辑框:用于修改某些特殊情况的学生信息; 学生考勤信息录入编辑框:用于录入学生考勤信息;

6) 系统操作对话框:由六个功能按钮构成

学生考勤信息库操作、数据统计、数据备份、更改口令、返回。

7) 学生考勤信息库对话框:

学生学号编辑框:用于显示学生学号; 学生姓名编辑框:用于显示学生姓名; 课程号编辑框:用于显示相应的课程号; 事假申请编辑框:用于显示事假申请; 病假申请编辑框:用于显示病假申请; 迟到编辑框:用于显示迟到; 早退编辑框:用于显示早退; 旷课编辑框:用于显示旷课;

“前一个”按钮:显示和编辑前一个记录; “后一个”按钮:显示和编辑后一个记录;

“移动到”按钮:显示和编辑指定学生学号的考勤信息; “修改”按钮:修改某些特殊情况考勤信息; “添加”按钮:增加学生考勤信息; “删除”按钮:删除当前的学生考勤信息; “退出”按钮:退出学生考勤信息库操作对话框。

8) 数据统计对话框:

统计条件单选框:用于选择统计条件类别(学生、教师、院系领导、管理

员情况);

学生考勤统计条件复选框:用于指定统计条件包含的相关项(学生学号、

学生姓名);

教师统计条件复选框:用于指定统计条件包含的相关项(教师号、学生学

号、课程号); 院系领导统计条件复选框:用于指定统计条件包含的相关性(领导口令、

相关操作、审批日期);

统计输出设置单选框:用于选择统计结果的输出类别;

学生考勤统计输出设置复选框:用于指定输出项(学生学号、考勤状态); 教师统计输出设置复选框:用于指定输出项(教师号、课程号、查询的考

勤状况);

院系领导输出设置复选框:用于指定输出项(领导口令、审批结果、审

批日期、查询信息)

管理员输出设置复选框:用于指定输出项(管理员口令、考勤状态)

“开始统计”按钮:提交统计请求; “返回”按钮:退出数据统计对话框。

9) 更改口令对话框:

旧口令输入框:输入旧口令; 新口令输入框:输入新口令;

新口令确认输入框:再输入一次新口令; 确认按钮:确认输入的新口令,并提交。

2.软件接口

使用Acce数据库的驱动程序,通过ODBC接口访问。

4.3 内部接口 1.主模块:

输入:操作系统传递至的各种消息以及用户的输入数据 输出:用户界面显示 上层模块:无

下层模块:学生考勤模块、教师工作模块、院系领导模块、系统管

理模块

2.学生考勤模块:

输入:学生学号、课程号 输出:考勤信息 上层模块:主模块

下层模块:学生考勤检验模块、请假模块、访问记录登记模块、相

关信息获取模块。

3.教师工作模块: 输入:教师号、学生号 输出:查询信息、确认信息 上层模块:主模块

下层模块:访问记录检验模块、相关信息获取模块。

4.院系领导模块:

输入:领导口令

输出:审批结果、查询信息 上层模块:主模块

下层模块:访问记录检验模块、相关信息获取模块。

5.系统操作模块:

输入:与系统管理对话框有关的各种用户及系统消息 输出:

上层模块:主模块

下层模块:系统操作权限检验模块、考勤信息库操作模块、数据统

计模块。

6.各身份检验模块:

输入: 身份验证号 输出:合法\\非法用户标志 上层模块:对应身份模块 下层模块:数据库查询模块

7.相关信息获取模块:

输入:身份验证号

输出:与身份验证号匹配的记录集 上层模块:对应身份模块 下层模块:数据库查询模块

8.访问记录登记模块:

输入:身份验证号 输出:操作结果信息 上层模块:对应身份模块 下层模块:数据库操作模块

9.查询命令生成模块:

输入:用户界面的输入

输出:数据库查询命令(SQL命令) 上层模块:查询模块、数据统计模块 下层模块:无

10.数据显示模块:

输入:数据库操作的结果集 输出:用户界面的数据列表显示 上层模块:查询模块、数据统计模块。 下层模块:无

11.系统操作权限检验模块:

输入:用户名、用户口令 输出:合法/非法用户标志 上层模块:系统操作模块 下层模块:数据库查询模块

12.显示更新模块

输入:

输出:用户界面显示

上层模块:学生考勤信息库操作模块、、系统设置模块。 下层模块:

13.更新当前记录模块

输入:

输出:操作结果信息

上层模块:学生考勤信息库操作模块、系统设置模块 下层模块:数据库操作模块

14.数据统计模块:

输入:统计方式及其关键字 输出:统计结果视图显示 上层模块:系统操作模块

下层模块:查询命令生成模块、数据库查询模块、数据显示模块

15.数据库操作模块:

输入:数据操作命令 输出:

上层模块:学生考勤模块 下层模块:无

16.数据库查询模块:

输入:数据查询命令 输出:查询结果集

上层模块:各身份检验模块、访问记录登记模块、相关信息获取模

块、查询模块、系统操作权限查验模块、数据统计模块、系统设置模块。

下层模块:无

4.4 功能分配

浏览功能:学生考勤信息库操作模块

查询功能:学生考勤信息库操作模块

插入功能:学生考勤信息库操作模块

修改功能: 学生考勤信息库操作模块

删除功能:学生考勤信息库操作模块

授权功能: 系统操作权限检验模块

管理员操作模块

管理员操作模块

管理员操作模块

数据统计模块

7.数据结构设计 5.1 逻辑结构设计

学生考勤表:由多个学生考勤记录构成

学生考勤记录的数据结构如下: 学生学号

学生姓名

院系

年级

专业

性别

迟到

早退

旷课

请假

整数(唯一标识)

变长字符串 变长字符串 变长字符串 变长字符串 变长字符串 变长字符串

变长字符串

变长字符串 变长字符串

教师表:由多个教师记录构成

教师记录的数据结构如下:

教师号 课程号

整数(唯一标识)

变长字符串 变长字符串 教师姓名

院系领导表:由多个院系领导记录构成

院系领导记录的数据结构如下:

院系领导口令

院系领导姓名

整数(唯一标识) 变长字符串

访问记录表:由若干个访问记录构成

请假记录的数据结构如下: 请假学生学号(BookID) 姓名(ReaderID) 请假时间(BorrowDate) 销假学生学号(BookID) 姓名(ReaderID) 还书时间(ReturnDate)

整数(与学生考勤库中的学生学号对应)(唯一标识)

变长字符串(与学生考勤库中的姓名对应)

日期

整数(与学生考勤库中的学生学号对应)(唯一标识)

变长字符串(与学生考勤库中的姓名对应) 日期 销假记录的数据结构如下:

系统操作员记录表:由若干个系统操作员记录构成 系统操作员记录的数据结构如下:

记录序号(id) 整数(系统自动生成,唯一标示符) 账号(Administrater) 口令(Paword)

5.2 物理结构设计 数据的物理结构由使用的数据库决定。

5.3 数据结构与程序的关系 主模块:连接数据库;

学生考勤模块:指定学号,姓名,读出考勤状态,记录考勤时期,对应课程号的相关信息,并把相关信息记录到访问记录模块中。

教师模块:指定学号,教师号,读出学生考勤状态,对考勤状态确认,记录查询日期,教师的相关信息,并把相关信息记录到访问记录模块中。

院系领导模块:制定学号,院系领导号,读出学生考勤状态和请假申请相关信息,对请假申请进行审批,并把相关信息记录到访问记录模块中。

查询模块:指定查询条件,提交给数据库操作模块。

系统操作模块:对学生考勤信息库操作,调用数据库操作模块对各个库进行相应操作,对数据进行备份,在授权操作中检验用户身份。

权限级别(Level)

变长字符串 变长字符串 整数 8.

运行设计 6.1 运行模块的组合

程序启动后,进入主模块,用户的单击对话框按钮事件触发主模块调用各下层模块,进入对应的子对话框,同样由用户的输入触发这些模块调用其下层模块,完成相应操作。

6.2 运行控制

本软件控制流程:主程序运行,等待用户的输入,根据用户的输入调用各子模块。

6.3 出错处理及安全保密设计

1.提供丰富的出错提示信息;2.提供一定的保密手段。

6.4 维护设计

第12篇:3D游戏软件设计

注:“★考核知识点”后面的标注内容在PPT中均有对应章节,因PPT序号混乱,不在考核知识点后一一罗列,请在PPT中查找。

一、客观部分:(单项选择、多项选择、不定项选择、判断)

(一)、选择部分

(1)OPenGL常用的库里面,属于核心库的是( )

A GL B GLU C GLAUX DGLUT ★考核知识点: OpenGL概述

(2)OPenGL渲染流水中,对光栅化描述正确的是( )

A 把顶点变换成图元

B 把几何数据和像素数据转换为片断的过程。它将几何数据转换成片元,片元和要显示的像素一一对应

C OpenGL应用程序可以在几何物体上应用纹理图像,使它们看上去更为逼真D主要的内容就是裁剪,它的任务是消除位于半空间之外的那部分几何图元。在某些情况下,还要进行透视除法,用以得到归一化的设备坐标

★考核知识点: OpenGL概述

(3)下面对于OpenGL特点描述正确的有( )

A标准支持灵活,可以用软件例程实现也可以使用软硬件组合使用 B具有灵活的伸缩性

C提供了一套良好的功能扩充机制,并且各个版本向后兼容 D跨平台,在科研和教学上是主流

★考核知识点: OpenGL概述

(4)1992年7月,SGI公司发布了OpenGL的1.0版本,随后又与微软公司共同开发了NT版本的OpenGL,从而使一些原来必须在高档图形工作站上运行的大型3D图形处理软件也可以在微机上运用( )

★考核知识点: OpenGL概述

(5)OpenGL(开放性图形库Open Graphics Library):是图形硬件的一种软件接口( )

★考核知识点: OpenGL概述

(6)( )是用于定义构成物体的三角形单元列表的坐标系。

A 观察坐标系B世界坐标系C本地坐标系D转换坐标系

★考核知识点: 状态管理和绘制几何物体

(7)glBegin()函数的意义是( ) A标志着程序的执行的开始 B标志着一个顶点数据列表的开始 C标志着OpenGL的绘制操作的开始 D标志着当前函数的开始

★考核知识点: 状态管理和绘制几何物体

(8)在win32程序中,主函数是从哪里进入执行的( )

A GLMain B WinMain C Begin Dmain ★考核知识点: 状态管理和绘制几何物体

(9)OpenGL中在颜色索引模式下使用的用于选择单值索引的函数是( )。 A glIndex BglClampColor C glClear D glColor3f ★考核知识点: 颜色渲染和纹理贴图 (10)下列哪个颜色不属于三原色( ) A红 B蓝 C绿D白

★考核知识点: 颜色渲染和纹理贴图

(11)OpenGL的光照模型根据材料反射的红、绿和蓝光的比例来模拟它的颜色。当一个纯红的球体,如果给球体仅仅投上绿色的光线,那么看起来球的颜色会是黑色( )

★考核知识点: 颜色渲染和纹理贴图

A (0,0,0) B(255,0,255) C(255,255,255) D(1,1,1) (12)用函数glColor3i()函数设置的黑色的颜色值为( )

★考核知识点: 颜色渲染和纹理贴图

(13)OpenGL中光照模型,被物体表面均匀的反射。即使光是被均匀的反射回去的,它直射的物体表面比从某个角度照射过来时要亮( )

A环境光B散射光C镜面光D发射光

★考核知识点:环境光、散射光、镜面光、发射光

(14)OpenGL中如何判断一个点接收了光源的多少光线( )

A通过距离光源的距离进行计算 B通过法线相对光源的方向进行计算 C通过物体的颜色值进行计算

D通过物体和光源的颜色值的综合考虑进行计算

★考核知识点:光照

(15)OpenGL提供了最大数目为N的单场景内光照光源模型,N为( )

A 1 B 8 C 16

D不限制,只要为2的幂就可以了

★考核知识点:光照

(16)OpenGL光照模型中,有一种会将光源强烈的反射到了另外一个特定的方向。高亮 A镜面光B聚光灯光C环境光D发射光 度的光柱往往能在被照射的物体上产生称之为亮斑的亮点( )

★考核知识点:光照

(17)OpenGL光照模型中,表面的发射颜色可以增加物体的强度,但是他们不受任何★考核知识点:光照 光源的影响,在整个场景中,并没有作为一种额外的光照( ) (18)设置光源位置时,当我们的光源坐标位置(x,y,z,w)中的w为0时代表我们的光为平行光源( )

★考核知识点:光照

(19)OpenGL一个场景中至多可以在包含16个光源( )

★考核知识点:光照

(20)用函数glColor3i()函数设置的黑色的颜色值为( )

★考核知识点:绘制像素、位图字体和图像

(21)像素数据从可以开始从缓冲区读取到内存然后把像素数据从内存写入到帧缓冲最后在帧缓冲内部复制像素数据( )

★考核知识点:绘制像素、位图字体和图像

(22)以下哪个函数可以设置当前的光栅位置( )

A glTranslatef() B glRasterPos() C glRotatef() D glDrawPos() ★考核知识点:绘制像素、位图字体和图像

(23)在绘制几何图形之时,我们可以使用glColor*( )函数去设置当前颜色或者当前颜色索引( )

★考核知识点:绘制像素、位图字体和图像

(24)在设置了光栅位置之后,我们可以使用glBitmap函数来绘制数据( )

★考核知识点:绘制像素、位图字体和图像

(25)void glRasterPos2*(type x,type y);用于设置位图的绘制位置。( )

★考核知识点:绘制像素、位图字体和图像

(26)glCopyPixels的像素路径包括( )

A像素传输操作B基于片断的操作C在帧缓冲区暂存D光栅化操作

★考核知识点:绘制像素、位图字体和图像

(27)当我们的源和目标的alpha值都为0.35时,当使用函数glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)进行像素混合,得出的结果描述正确的是? ( )

A源和目标混合效果相同 B混合色更接近源 C混合色更接近目标 D无法判断

★考核知识点:混合抗锯齿雾多边形偏移

(28)启动混合后,如果绿色物体和一个红色物体用glBlendFunc(GL_ONE,GL_ONE)方式混合后,结果的混合部分的颜色为(D) A红色B绿色C白色D黄色

★考核知识点:混合抗锯齿雾多边形偏移

(29)图形学中称由于采样频率不足而造成的失真为走样,反走样通过多重采样改善图形锯齿效果( )

★考核知识点:混合抗锯齿雾多边形偏移

(30)如果不进行混和操作,每个新的片元都被OpenGL当成是不透明的,覆盖掉帧缓存已存在的颜色值。( )

★考核知识点:混合抗锯齿雾多边形偏移

(31)颜色定义中RGBA的A是alpha值,alpha值的作用是将已处理过的片元颜色值与存储在帧缓存中的像素颜色结合起来( )

★考核知识点:混合抗锯齿雾多边形偏移

(32)当前属于颜色索引模式时,我们可以进行的操作有( )。

A实现颜色混和操作B实现透明效果C实现颜色叠加D实现颜色渐变效果

★考核知识点:混合抗锯齿雾多边形偏移

(33)void glBlendFunc(Glenumafactor,Glenumbfactor)

其中参数afactor和参数bfactor分别用于指定源和目标的混合因子( )

★考核知识点:混合抗锯齿雾多边形偏移

(34)颜色混合方程中,GL_FUNC_ADD实现的功能是()

A CsS+CdD B CsS-CcD C min(CsS,CdD) D max(CsS,CdD) ★考核知识点:混合抗锯齿雾多边形偏移

(35)开启颜色混合的函数方式为( )

A GL_BLEND B GL_BLENDING C GL_RENDER D GL_ENABLEBLEND ★考核知识点:混合抗锯齿雾多边形偏移

(36)一个矢量加上一个矢量结果为( )

A一个矢量 B一个标量

C如果为零则不是矢量,其它情况下皆为矢量 D以上说法都不对

★考核知识点:图形变换的数学基础

(37)两个矢量之间的点乘结果为( )

A一个矢量 B一个标量

C如果为零则不是矢量,其它情况下皆为矢量 D以上说法都不对

★考核知识点:图形变换的数学基础

(38)glLoadIdentity()函数对于4×4矩阵操作结果为( )

A [0,0,0,0;0,0,0,0;0,0,0,0;0,0,0,0] B1,1,1,1;1,1,1,1;1,1,1,1;1,1,1,1] C[1,0,0,1;0,1,0,1;0,0,1,1;0,0,0,1] D[1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1] ★考核知识点:图形变换的数学基础

(39)我们在使用定义视口函数 glViewport 中,第三个参数有什么作用( )

A描述视口的距离屏幕最左位置 B描述视口的距离屏幕最上位置 C描述视口的高度 D描述视口的宽度

★考核知识点:图形变换的数学基础

(40)通过矩阵[sx,0;0,sy]对二维的不经过原点的图元进行缩放变换,有可能得到的结果为( )

A图元相对原点的位置变化了 B图元自身尺寸变化了

C图元可以只发生旋转,相对原点位置没有移动 D图元自身发生了旋转

★考核知识点:图形变换的数学基础

(41)从物体坐标到屏幕坐标的显示流程中我们必须要经过的经典的变换流水包( )

A世界坐标系内地变换 B对窗口的裁剪操作 C窗口到视口的变换 D对模型进行坐标进行变换

★考核知识点:OpenGL的视图变换

(42)函数void gluPerspective ( Param1,Param2,Param3,Param4 )中,标示近裁剪面的是哪个参数( )

A Param1 BParam2 C Param3 D Param4 ★考核知识点:OpenGL的视图变换

(43)哪些变换分别用于设定物体在世界坐标系中的位置、方向以及模型大小。( )

A平移变换B旋转变换C缩放变换D投影变换

★考核知识点:OpenGL的视图变换

(44)( )变换后的的几何体位于观察坐标系中。

A局部变换B取景变换C世界变换D空间变换 ★考核知识点:OpenGL的视图变换

(45)投影变换包括哪几种投影方式。( )

A平面投影B透视投影C正射投影D缩放投影

★考核知识点:OpenGL的视图变换

(46)下对函数gluLookAt(0,0,0, 0,0,-3,1,0,0)描述正确的是

A观察点在原点(AD) B正方向为z轴负方向 C观察方向指向z轴正方向 D正方向为x轴正方向

★考核知识点:OpenGL的视图变换

(47)glRotatef(fRot,1,1,0)描述先按照X轴旋转fRot,接着绕Y轴旋转fRot( )

★考核知识点:OpenGL的视图变换

(48)在OpenGL中如果要实现运动模糊效果,需要借助以下哪个缓冲区( )

A深度缓冲区B帧缓冲区C模版缓冲区D积累缓冲区

★考核知识点:帧缓冲区

(49)当前程序的状态处于常规的绘图模式,那么接下来使用下列哪些函数可以退出当前绘图模式( )

A glRender(GL_FEEDBACK); B glRender(GL_SELECT); C glEnd(); D glBegin(GL_TRIANGLES) ★考核知识点:帧缓冲区

(50)雾化效果在颜色索引模式下是不可用的( )

★考核知识点:帧缓冲区

(51)如果我们需要使用OpenGL进行3维点选操作,那么可以通过函数glRenderMode()指定( )进入选择模式

A GL_FEEDBACK BGL_SELECT C GL_PEEK D GL_MODEVIEW ★考核知识点:帧缓冲区

(52)OpenGL中如果锁住了深度缓冲区,那么所有的物体的深度就无法测试了,物体只是根据绘制的先后相互覆盖了( )

★考核知识点:帧缓冲区

(53)绘制球体,我们使用函数:

void gluSphere( GLUquadricObj *obj,Gldoubleradius,Glintslices,Glint stacks );( )

下面,我们对参数描述正确的选项有( ) A slice代表的就是经线的数目 B stacks参数代表的就是纬线的数目 C slice参数代表的就是纬线的数目 D stacks代表的就是经线的数目

★考核知识点:分割化和二次方程表面

(54)OpenGL中我们需要完成对NURBS对象的销毁,调用的函数是gluDeleteNurbsRenderer( )

★考核知识点:分割化和二次方程表面

(55)常见的纹理寻址模式有( ) A重叠纹理寻址模式B镜像纹理寻址模式 C钳位纹理寻址模式D边界颜色纹理寻址模式

★考核知识点:分割化和二次方程表面

(56)gluQuadricDrawStyle 函数选择用于绘制几何形状的图元类型。系统默认的类型是使用三角条状图元来填充所要绘制的几何形状,填充模式默认为 A GLU_LINE B GL_FILL C GLU_SILHOUETTE D GLU_POINT ★考核知识点:分割化和二次方程表面

(57)绘制球体,我们使用函数:

void gluSphere( GLUquadricObj *obj,Gldoubleradius,Glintslices,Glint stacks ); 下面,我们对参数描述正确的选项有( )

A slice代表的就是经线的数目 B stacks参数代表的就是纬线的数目 C slice参数代表的就是纬线的数目 D stacks代表的就是经线的数目

★考核知识点:求值器和NURBS (58)我们的B样条曲线(三次)和与贝塞尔曲线很相似,不同之处是此曲线会分解成很多的小段。每个给定段的形状都仅受到最近4个控制点的影响( )

★考核知识点:求值器和NURBS (59)我们的B样条曲线(三次)和与贝塞尔曲线很相似,不同之处是此曲线会分解成很多的小段。每个给定段的形状都仅受到最近4个控制点的影响( )

★考核知识点:求值器和NURBS (60)( )是Direct3D用来存储绘制到屏幕上的每个像素点深度信息的一块内存缓冲区

A 广度缓存 B 深度缓存 C 深度测试 D 广度测试

★考核知识点:求值器和NURBS (61)OpenGL中我们需要完成对NURBS对象的销毁,调用的函数是gluDeleteNurbsRenderer( )

★考核知识点:求值器和NURBS (62)纹理阶段混合状态用于指定当前纹理颜色值和Alpha值的混合方法( )

★考核知识点:求值器和NURBS (63)通常情况下,深度缓存用于判断三维空间中物体的遮挡情况( )

★考核知识点:求值器和NURBS (64)设置深度缓存是指设置深度测试成功时对深度缓存如何操作( )

★考核知识点:求值器和NURBS (65)图形学中称由于采样频率不足而造成的失真为走样,反走样通过多重采样改善图形锯齿效果( )

★考核知识点:求值器和NURBS (66)渲染后物体模型通常是由三角形图元组成的,我们称它为一个Mesh结构( )

★考核知识点:求值器和NURBS (67)若要从缓存中只读不写数据,就不需要锁定缓存,用完后解锁( ) (68)如果我们需要使用OpenGL进行3维点选操作,那么可以通过函数glRenderMode()指定GL_SELECT,进入选择模式( )

(69)在执行用于操纵名字堆栈的函数或调用glRenderMode()函数之后,如果出现了一次点击,OpenGL就会在选择数组中写入一个点击记录,所以,如果共享相同的名称对象,不会产生多条点击记录。( ) (70)在点击发生时,名字堆栈的内容从( )的元素开始。 A最顶部B上一个操作的位置C最底部D任意

(71)如果我们需要使用OpenGL进行3维点选操作,那么可以通过函数glRenderMode()指定GL_SELECT,进入选择模式( )

(72)进行点选操作后,假设当前的选择缓冲区为pSelectBuff,那么其中的pSelectBuff[0]的值得含义是( )

A自上一个点击记录之后,与视景体相交的图元的所有顶点的最小窗口坐标的z值 B自上一个点击记录之后,与视景体相交的图元的所有顶点的最大窗口坐标的z值 C点击发生时名字堆栈的内容 D名字堆栈中压入的名字数

(73)OpenGL中如果锁住了深度缓冲区,那么所有的物体的深度就无法测试了,物体只是根据绘制的先后相互覆盖了( )

★考核知识点:选择和反馈

(74)名字堆栈形成了返回选择信息的基础,如果此时我们需要使用某个名称来替换名字堆栈顶部的元素,可以使用函数为( )

A void glInitNames( void );B void glPushName( GLuint name ); C void glPopName( void );D void glLoadName( Gluint name ); ★考核知识点:选择和反馈

(75)选择返回功能函数:

void glSelectBuffer( Glsizeisize,Gluint *buffer )对函数描述正确的是( ) A buffer参数指向的数组用于存放选择数据

B buffer参数指向的数组仅仅用于存放选择的物体ID C size表示这个数组可以存储单个数据的大小 D size表示这个数组可以存储的最大值

★考核知识点:选择和反馈

(76)用glSelectBuffer()函数指定用于返回点击记录的数组( )

★考核知识点:选择和反馈

(77)使用函数 void gluPickMatrix(

Gldoublex,Gldoubley,Gldoublewidth,Gldoubleheight,Glint viewport[4] );选择的挑选区域的中心是( ) A 世界坐标B窗口坐标C物体坐标D可以任意指定

★考核知识点:选择和反馈

(78)由于粒子之间的碰撞计算量很大并且对于大多数模拟来说没有必要,所以我们很少使用粒子之间的碰撞。( )

★考核知识点:粒子系统

(79)粒子(Particle)是一种微小的物体,在数学上通常用点来表示其模型,所以显示和表示粒子时,我们通常使用点结构来描述。( )

★考核知识点:粒子系统

(80)以下可以通过常见的粒子系统实现的是( ) A雪花B下雨C喷泉喷水D金属车漆效果

★考核知识点:粒子系统

(81)如果有两束光进入人眼,他们的成分为(R1,G1,B1)和(R2,G2,B2)那么叠加在一起的时候,如果蓝色分量超出1了,那么最后的叠加结果为( )

A(R1, R2,1)B(R1+R2, R1+R2,1-R1-R2)C(R1+R2, R1+R2,1) D(R1, R2, 1- R1-R2) ★考核知识点:混合效果

(82)Alpha分量主要是用来指定像素的混合计算比例的( )

★考核知识点:混合效果

(83)D3DCOLORVALUE结构体中包含r、g、b和a4个分量,表示物体表面对各种反射光的各种成分的反射比率。r=0.0 g=b=a=1.0;r=g=0.0 。此时红光和蓝光照射过来,只有蓝光被反射,即材质看上去为蓝色( )

★考核知识点:混合效果

(84)OpenGL的光照模型根据材料反射的红、绿和蓝光的比例来模拟它的颜色。当一个纯红的球体,如果给球体仅仅投上绿色的光线,那么看起来球的颜色会是( ) A红色B绿色C白色D黑色

★考核知识点:混合效果

(85)平面着色模式,所有像素的Alpha值都大于等于该多边形的第一个顶点的Alpha值( )

★考核知识点:混合效果

(86)像素的Alpha值就是用来做纹理Alpha混合时进行加权计算的的权值( )

★考核知识点:混合效果

(87)Alpha测试并不把当前像素的颜色与颜色缓冲中像素的颜色混合,像素要么完全不透明,要么完全透明( )

★考核知识点:混合效果

(88)OpenGL中指定源混和因子和目标混和因子的函数:

void glBlendFunc(Glenumafactor,Glenumbfactor)描述正确的是( ) A其中参数afactor和参数用于指定源混合因子 B其中参数bfactor用于指定目标的混合因子 C其中参数afactor用于指定目标的混合因子 D其中参数bfactorb用于指定源的混合因子

★考核知识点:混合效果

(89)常见的纹理寻址模式有( )

A重叠纹理寻址模式B镜像纹理寻址模式C钳位纹理寻址模式D边界颜色纹理寻址模式

★考核知识点:纹理的高级技巧

(90)通过矩阵[sx,0;0,sy]对二维的不经过原点的图元进行缩放变换,有可能得到的结果为 A图元相对原点的位置变化了( ) B图元自身尺寸变化了

C图元可以只发生旋转,相对原点位置没有移动 D图元自身发生了旋转

★考核知识点:纹理的高级技巧

(91)创建一个矩形图元255*255,它的大小恰好与纹理图中纹理的大小一样,要映射整个图元面积,分配给图元纹理坐标为( ).A(0.0,0.0)(1.0,0.0)(1.0,1.0)(0.0,1.0) B(0.0,0.0)(255.0,0.0)(255.0,255.0)(0.0,255.0)C (0.0,0.0) (0.0,1.0) (1.0,0.0)(1.0,1.0) D(0.0,0.0) (0.0,255.0) (255.0,0.0)(255.0,255.0) ★考核知识点:纹理的高级技巧

(92)三维纹理图像可以看成是由一层一层的二维子图像矩阵构成的,在内存中,这些矩形按顺序排列在一起。( )

★考核知识点:纹理的高级技巧 (93)对函数void glTexImage3D( Glenum target, Glint level,GlintinternalFormat ,Glsizeiwidth,Glsizeiheight,Glsizeidepth,Glintborder,Glenumformat,Glenum type, constGlvoid * texels );参数描述正确的是( ) A level是纹理目标在内存中的优先级 Blevel是mipmap细节层的序号 C level描述了纹理的强度程度 D描述了纹理的有效值取值范围

★考核知识点:纹理的高级技巧

(94)glCopyPixels()函数,但是并不把像素读到缓冲区,而是放在纹理内存中( )

★考核知识点:纹理的高级技巧

(95)对OpenGL实现的Mipmap描述正确的是( )

A它必须根据被贴图的物体的大小手动的确定应该使用哪个纹理 B它会根据被贴图的物体的大小自动确定应该使用哪个纹理 C Mipmap不需要一些额外的计算

D Mipmap并不需要额外的一些纹理存储区域

★考核知识点:纹理的高级技巧

(96)glPixelStore*( )函数可以用于设置像素存储模式,使用诸如*ROW_LENGTH、*ALIGNMENT、*SKIP_PIXELS和*SKIP_ROWS这样的参数。这个函数用于控制对一个完整的像素或纹理单元矩形的一个子矩形的引用( )

★考核知识点:纹理的高级技巧

(97)一个带有纹理图像的物体迅速的远离观察点而去时,纹理图像必须随必须被投影的图像一起缩小。为了避免闪烁抖动等人工痕迹,可以指定一系列预先过滤的分辨率递减的纹理图像称为( )

A Vertex Shader B mipmap C HLSL D Cg ★考核知识点:纹理的高级技巧

(98)void glTexParameteri 第三个参数类型为GL_CLAMP描述正确的是

A将大于1.0的数值设置为1.0,将超出[0.0,1.0]范围的数值截取到[0.0,1.0]范围内 B这样会导致纹理边缘的重复 C将小于0.0的数值设置为0.0 D图象在物体表面上不断重复,但是每次重复的时候对图象进行镜像或者反转 (99)纹理坐标比一定非要在RGBA模式下才可以能使用( )

★考核知识点:纹理的高级技巧

(100)void glTexParameteri 第三个参数类型为GL_REPEAT描述正确的是A A图象在表面上重复出现

B自动将超出[0.0,1.0]范围的数值截取到[0.0,1.0]范围内

C图象在物体表面上不断重复,但是每次重复的时候对图象进行镜像或者反转 D这样的模式在纹理边缘处比较连贯

★考核知识点:纹理的高级技巧

(101)对函数glTexParameteri边界截取类型描述正确的是( )

A GL_CLAMP_TO_EDGE B CLAMP_TO_BORDER_ARB C GL_REPEAT D GL_CLAMP ★考核知识点:纹理的高级技巧

二、主观部分:(程序设计,简答题)

1关于现实字体的一段程序如下,运行截图如下,现有若干空缺,请完成填空。

我们完成创建字体的功能函数CreateFont() 如下:

HFONT hFont; HFONT hOldFont; iBase=glGenLists(256); hFont=CreateFont(

-24, 0, 0, 0,

//高度 //宽度 //旋转角度 //定位角 //字宽设置 FW_BOLD, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_TT_PRECIS,

CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY, FF_DONTCARE|DEFAULT_PITCH, \"Courier New\" );

//使用字体名称为Courier New //保存之前的字体

hOldFont=(HFONT)SelectObject(hdc,hFont); //从系统下载的字体文件中生成这些位图

wglUseFontOutlines(hdc,32,96,iBase,0.0,0.2f,WGL_FONT_POLYGONS,gmf); //还原设备句柄为hdc,还原原来的字体类型 SelectObject(hdc,hOldFont); //释放资源

DeleteObject(hFont); 2.关于二次曲面的一段程序如下,运行截图如下,现有若干空缺,请完成填空。

我们生成二次曲面的功能函数如下: //二次曲面的生成状态 GLUquadric *Quadric; //创建一个二次方程对象,指定这个二次方程对象的属性 Quadric = gluNewQuadric(); //自动为二次表面生成纹理坐标 gluQuadricTexture(Quadric,GL_TRUE); //显示灯的列表 iLamp = glGenLists(1); glNewList(iLamp,GL_COMPILE); //激活纹理0地板的纹理

glBindTexture(GL_TEXTURE_2D,texture[2]); //绑定纹理

glBindTexture(GL_TEXTURE_2D,texture[2]);

2.如下一段程序,运行完成加载纹理的功能,现在有若干空缺,请根据上下文完成填写。

程序截图1 LoadTexture() {

);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR

glPixelStorei(GL_UNPACK_ALIGNMENT,4); //绑定纹理

glBindTexture(GL_TEXTURE_2D,m_nBodyTex);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); //BMP文件的handle HBITMAP hBMP; //存储BMP的数据结构 BITMAP BMP; byte Texture[1]={IDB_MISSILE}; //产生三个纹理

glGenTextures(1,&m_nBodyTex); hBMP=(HBITMAP)LoadImage(GetModuleHandle(NULL),MAKEINTRESOURCE(Texture[0]),

IMAGE_BITMAP,0, 0, LR_CREATEDIBSECTION);

if(hBMP) { GetObject(hBMP,sizeof(BMP),&BMP);

//构建二维Mipmap gluBuild2DMipmaps(GL_TEXTURE_2D,3,BMP.bmWidth,BMP.bmHeight,

GL_BGR_EXT, GL_UNSIGNED_BYTE, BMP.bmBits); //删除位图资源

}

3.如下一段程序,运行完成物体颜色和材质属性相关功能,现在有若干空缺,请根据上下文完成填写。 DeleteObject(hBMP);

}//if

程序截图1 在进行光照和材质相关的计算时,需要先进行必要设置操作,我们需要进行如下操作:

{ glClearColor(1.0,1.0,1.0,1.0); voidInitScene( )

//设置明暗处理模型 glShadeModel(GL_SMOOTH); //glShadeModel(GL_FLAT); //开启深度测试

glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glClearColor(0.0f,0.0f,0.0f,0.0f); glClearDepth(1.0f); //使光源生效

glEnable(GL_LIGHTING); //设置环境光

GLfloatambientLignt[]={0.8,0.7,0.9,1.0}; glLightModelfv(GL_LIGHT_MODEL_AMBIENT,ambientLignt); //设置材料属性,自身的反光属性 GLfloatShinine[]={80.0}; //镜面强度,白色

GLfloatSpecular[]={1.0,1.0,1.0,1.0}; //设置材质颜色属性

GLfloatMatColor[]={0.9,0.9,0.9,1.0}; //光源位置

GLfloatPostion[]={1.0,1.0,1.0,0}; //具体设置GL_FRONT_AND_BACK

//GL_FLAT

glMaterialfv(GL_FRONT,GL_SPECULAR,Specular); glMaterialfv(GL_FRONT,GL_SHININESS,Shinine); //设置光照模型

glLightfv(GL_LIGHT0,GL_POSITION,Postion); //给光源设置位置*/ glLightfv(GL_LIGHT0,GL_SPECULAR,MatColor); //给镜面光设置颜色 glLightfv(GL_LIGHT0,GL_DIFFUSE,MatColor); //设置漫反射颜色 //开启光照特征 glEnable(GL_LIGHT0);

}//endfnc 4.如下一段程序,运行完成雾化功能,现在有若干空缺,请根据上下文完成填写。

程序截图1 { //Get FPS void DrawScene() if( GetTickCount() - g_dwLastFPS >= 1000 )

glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); //设置位图

glPixelTransferf(GL_RED_SCALE, 1.0); {

g_dwLastFPS = GetTickCount();

char szTitle[256]={0};

sprintf( szTitle, \" Current %d FPS\", g_nFrames ); SetWindowText( hwnd, szTitle ); g_nFrames = 0;

}//if g_nFrames++;*/ glPixelTransferf(GL_GREEN_SCALE, 0.0); glPixelTransferf(GL_BLUE_SCALE, 0.0); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND); glFlush(); }//endfnc //初始化操作

五、简答题(共15 分)

关于构建一个立体曲面的程序有如下截图,程序有部分功能空缺,请完成

//渲染场景 void DrawScene() { //调用显示列表进行渲染

glCallList(drawlist); if( showCPoints ) {

//禁止纹理

glDisable(GL_TEXTURE_2D);

glColor3f(1.0f,0.0f,0.0f);

for( i=0;i

//绘制控制点

glBegin(GL_LINE_STRIP); for( j=0;j

}//for glEnd(); }//for for( i=0;i

glBegin(GL_LINE_STRIP); for(j=0;j

glVertex3d(pCtrData[j][i].x, pCtrData[j][i].y,pCtrData[j][i].z); glEnd(); }//for glColor3f(1.0f,1.0f,1.0f); //启用纹理

glEnable(GL_TEXTURE_2D);

}//if glFlush();

}//endfnc

2.关于现实Bezier曲线的一段程序如下,运行截图如下,关于功能现有部分空缺,请完成。

intInitScene( ) {

glShadeModel(GL_SMOOTH);

glClearColor(1.0f, 1.0f, 1.0f, 0.5f); //设置清空颜色为白色 glClearDepth(1.0f);

//初始化深度缓存最大为 1.0f //开启深度测试 glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); //开启求值器

glEnable(GL_MAP1_VERTEX_3); //设置控制点的类型,起始位置从0-100,控制点数目为4,跨度为3 //点的存储数组为B_Points[4][3]

} glMap1f(GL_MAP1_VERTEX_3,

0.0f, 100.0f, 3,

//起始 //终止范围

//点数目 iNumPoint,

&B_Points[0][0]); //均匀分布网格,有100个单位,从u1到u2 glMapGrid1d(100,0.0,100); return TRUE;

boolDrawScene( ) {

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(0,0,-20.0f); inti; //设置点的尺寸大小为 10 glPointSize(10); //设置控制点为红色 glColor3f(1.0,0.0,0.0); glBegin(GL_POINTS);

for ( i=0;i

{ glVertex2fv(B_Points[i]); }//for glEnd(); return true;

}//DrawScene 3.关于实现光照效果对比的程序。左图为加光照,右边为未加光照。部分功能空缺,请完成

void DrawScene() { GLfloat spotPostion[]={0.0,0.0,1.0,1.0};

//清空缓冲区

glClear(GL_COLOR_BUFFER_BIT |GL_DEPTH_BUFFER_BIT ); glLoadIdentity();

glPushMatrix(); glColor3f(1.0,0.0,0.0); glRotatef(fRot, 1.0f, 0.0f, 0.0f); //使用灯光

glLightfv(GL_LIGHT2,GL_POSITION,spotPostion); glLightfv(GL_LIGHT2,GL_SPOT_DIRECTION,spotDir); glTranslatef(spotPostion[0],spotPostion[1],spotPostion[2]); glutSolidCone(0.05f,3.0f,15,15); glPopMatrix(); glTranslatef(0,0,-6.0); //glRotatef(fRot,1,0,0); //绕y轴旋转60° glRotatef(60,0,1,0); //属性堆栈压栈

// glPushAttrib(GL_LIGHTING_BIT); // glDisable(GL_LIGHTING);

glColor3f(1.0f,1.0f,1.0f); glBegin(GL_TRIANGLES); //计算法线一

calNormal(vTrangle1,vector); glNormal3fv(vector);

glVertex3fv(vTrangle1[0]); glVertex3fv(vTrangle1[1]); glVertex3fv(vTrangle1[2]); glFlush(); }//endfnc

第13篇:软件设计大赛策划书

西安财经学院信息学院

软件设计大赛

信息学院团工委2012年10月9日

信息学院软件设计大赛策划书

主办方:西安财经学院校团委

承办方:信息学院团工委 信息学院科技联盟

一、活动背景:

为了深入贯彻“素质、技能、自学”的六字方针,正确引导我校同学积极参加科技创新活动,不断培养创新精神和团队意识,切实增强理论联系实际的能力,通过富有自由、开放、创新精神的大赛,为广大同学提供一个提高自我、展示才华的平台,并且通过这一平台,结交更多优秀的人才,提高广大同学的学习积极性、创新意识和勇于实践的科学精神。校园科技文化节是一个交流文化,学习技能的好机会,是展现西安财经学院学子良好风采的不二之选。

二、活动主题:

演绎精彩·创意无限

三、活动目的:

科技文化节旨在服务同学,展现学院风采,培养健康生活方式,宣传化学文化,进一步深化校园文化建设,激发大学生创新意识与科研探究热情,营造活跃、浓郁的科学和人文精神氛围,提高学生学以致用的能力。

第一:培养科学研究精神,提高实践创新能力,为学生提供一个发掘自身潜能的平台,通过参赛培养学生的创新意识,竞争精神及实际动手的能力。达到选拔一批、带动一批、影响一大片的效果。

第二:创建一流校风、学风,丰富学生的校园生活,发挥当代大学生的创造力,提高广大学生的电脑技术水平。充分展示大学生的精神文明建设,体现西安财经学院精神文明建设成果,丰富在校大学生的课余生活。

第三:激发我校学生学习计算机科学技术知识的热情,检验动多媒体设计的水平。为在校学生提供一个挑战自我的个机会。

第四:强化同学们计算机操作技能的提高,进一步加强同学们对计算机应用广泛性和实用性的了解。推动多媒体产品的应用,提高学生的实际开发能力,加速软件后备人才的培养。

四、活动时间:

前期宣传2012年10月中旬

活动阶段2012年11月中旬——2013年5月末

五、报名方式:

1、固定地点:西安财经学院长安校区二食堂门口。

2、由各个班级统一下发报名表,统一报名。

六、活动对象: 西安财经学院长安校区全体学生

七、参赛要求:

(一)作品类型:

手机游戏,软件开发,Web设计,电子商务,论坛,办公软件, 应用软件, 游戏娱乐

(二)作品内容:

1) 作品内容健康,丰富科学,结构清晰、创意新颖,设计技术先进。不

得违反国家的有关法律、法规和规定。

2) 作品必须是独立的软件,具备可演示的运行环境,可演示的用户界面

(图形用户界面,Web界面或者命令行界面等)。

3) 提交内容为作品源代码、编译安装脚本、版权说明及相关设计文档

(如:PPT文档,不超过一页的摘要;项目规格书,包括创作思路,应用领域等;分析设计文档,描述设计架构,模块功能描述,相关依赖软件的说明等);作者应自行保留备份,提交的作品不予退回。

4) 提交的作品应实现设计文档中描述的基本功能,能正确运行,并给出

正确结果。

5) 作者必须确保作品软件和相关文档无任何知识产权纠纷,若存在任何

知识产权纠纷则取消参赛资格,并由作者个人承担相应责任。

6) 作品须为自己创作,如发现作品属于抄袭、克隆行为,一经发现,组

委会将取消参赛者的评奖资格。

八、活动流程:

(一)组织发动阶段(2012年10月中旬)

2012年10月初,向各院下发比赛通知、参赛规则和报名表等,各院采取各种形式对大赛进行宣传动员。同时在启动仪式是通过计算机作品展示吸引大家兴趣。

(二)统一报名阶段

在文化节启动的开始,启动统一报名,针对所有的大赛进行规范合理

的统一报名。(报名持续一个礼拜)

(三)作品准备阶段

2012年11月份,2013年

1、2月份,报名参赛的选手可利用这二

(三)个月的时间包括节假日,自行进行软件设计制作。3月上旬,将对推荐参加软件设计大赛的作品以电子版的形式并报送至信息学院团工委,由大赛评审委员会对参赛作品进行分类及作品的参赛资格和形式审查和前期测试,不合格的作品(包括非原创的作品)通报后取消参赛资格。

(四)评审准备阶段

1、3月末,由专家组成评审委员会,根据《评审实施细则》进行评审,通过测试,择优选出约三分之一作品进入决赛。

2、5月末,由专家组成评审委员会,根据《评审实施细则》进行评审,通过测试,择优选出约三分之一作品进入决赛。

(五)终评阶段

参加终评决赛的个人或小组进行顺序抽签,现场演示及答辩(每个作品的答辩时间为3-8分钟)。由评委会打分最终确定各奖项获得者。

(六)、评分标准

1、作品创意:软件要创意新颖,实用性强。

2、设计科学:软件开发符合软件工程思想,算法设计合理。

3、运行效果:作品要界面美观,运行稳定,使用方便,可操作性强。

4、汇报表现:汇报要思路请示、表达清楚,回答问题准确。

八、经费预算:

打印费用300 元

宣传海报200 元 横幅300 元 服装、化妆费400 元 布置教室200 元 茶叶纸杯50元 奖品1000荣誉证书200 机动费200

总计2850元 元 元 元

信息学院团工委2012年10月9日

第14篇:通信软件设计教学大纲

通信软件设计 (专业限选课) Design of Communication Software

【课程编号】XZ26199 【学分数】3

【学时数】60 = 38(理论)+ 6(研究)+ 16(实验) 【适用专业】网络通信工程

一、教学目的、任务

本课程属于软件工程实践应用型课程。通过本课程的学习,使学生了解网络通信协议的类别与设计要求、掌握WINDOWS WINSOCK库的使用、掌握Windows下多线程开发的技术,并初步具备Windows下网络通信软件开发的能力。

二、课程教学的基本要求

通过理论和实践的结合,使学生了解网络通信协议的类别,网络通信协议制定的规则和目的。熟练掌握Windows下进行通信软件开发必需具备的技能,如Windows winsock库的使用、win32 多线程 API 的使用、STL模板库的使用等。通过课程设计,完成一个简单的网络通信软件的设计和开发,最终,初步掌握Windows下网络通信软件开发的技术。

三、教学内容和学时分配 (4 + 10 + 16 + 12 + 4 + 14 = 60) 第一章 初识网络通信协议 4 学时(课堂讲授学时) 主要内容:

1.1 通信协议设计概述 1.2 HTTP协议概述 1.3 重温TCP协议 教学要求:

介绍通信协议相关知识、以HTTP协议为例,简单介绍应用层协议如何工作。以TCP协议为例,介绍传输层协议如何工作。

【课程类别】专业限选课 【编写日期】2010.3.30 【先修课程】计算机网络、C++

其它教学环节(如实验、习题课、讨论课、其它实践活动):1研究。

第二章 常用应用层通信协议-从“知道”到“了解” 10学时(课堂讲授学时+实验课时+研究课时) 主要内容:

2.1 HTTP协议 2.2 FTP协议

2.3 SMTP及POP3协议 教学要求:

掌握HTTP协议、FTP协议、SMTP协议及POP3协议。掌握Sniffer软件的使用。 其它教学环节:2实验 + 2研究

实验一:SnifferPro软件捕获数据并分析(2学时)

要求:使用SnifferPro软件,捕获HTTP网站访问数据,并在HTTP和TCP层对数据进行分析。

研究:完成“SnifferPro软件捕获数据并分析”的实验报告(2学时)

第三章 Windows网络编程 16学时(课堂讲授学时+实验学时)

3.1 网络原理和协议 3.2 地址家族和名字解析 3.3 Winsock基础 3.4 Winsock I/O方法 教学要求:

掌握Windows WINSOCK lib的使用。掌握TCP、UDP编程。掌握相关API的使用。 其它教学环节:4实验学时

实验二:TCP协议通信实验(2学时)

要求:编写一个使用TCP协议进行通信的程序。 实验三:UDP协议通信实验(2学时)

要求:编写一个使用UDP协议进行通信的程序。 第四章 多线程编程 12学时(课堂讲授学时+实验学时) 主要内容:

4.1 进程与线程 4.2 线程的WIN32 API 4.3 线程间通信的方法 4.4 线程的同步方法 教学要求:

掌握进程与线程的概念,掌握使用WIN32 API产生线程的方法,掌握线程间通信中的消息通信机制,掌握使用互斥锁、事件等进行线程间同步的方法。 其它教学环节:6实验课时

实验四:线程间通信实验(2学时)

要求:编写一个多线程程序,分别使用共享内存、同步消息和异步消息进行通信。 实验五:线程间同步实验(1)(2学时)

要求:编写一个多线程程序,分别使用关键区技术、互斥量进行同步。 实验六:线程间同步实验(2)(2学时)

要求:编写一个多线程程序,分别使用信号量、事件进行同步。 第五章 STL库应用 4学时(课堂讲授学时) 主要内容:

5.1 STL简介 5.2 List容器 5.3 Map容器 教学要求:

掌握STL的概念、掌握STL中List和Map容器的使用方法。 其它教学环节:无

第六章 点对点的文件传输软件设计与开发 14 学时(课堂讲授学时+实验学时+研究学时) 主要内容:

6.1 软件需求分析

6.2 通信协议设计设计讨论 6.3 软件模型设计讨论 6.4 软件功能模块划分讨论 6.5 软件GUI设计讨论

6.6 软件设计模式与软件工程管理 教学要求:

从设计并开发一个简单的“点对点文件传输软件”入手,初步掌握通信软件的设计和开发。 其它教学环节:4实验学时 + 3研究学时

实验七:点对点的文件传输软件开发(4学时)

要求:完成课程大作业“点对点的文件传输软件开发” 研究:完成课程大作业“点对点的文件传输软件开发”,提交课程设计报告,并进行答辩。(3学时)

四、教学重点、难点及教学方法

重点:HTTP、TCP协议及通信协议设计技术、WINSOCK LIB的使用、通信软件架构。 难点:WINSOCK LIB的使用、通信协议分组结构设计、通信软件架构。

五、考核方式及成绩评定方式:考查

六、教材及参考书目

1、推荐教材:

无,由科任教师提供。—已备有电子版资料和教材。

2、主要参考书:

[1] Sniffer中文使用教程。中国协议分析网http://www.daodoc.com

[3] 周良忠 译。 C++面向对象多线程编程。北京:人民邮电出版社,2003.4.[4] 侯捷 译。Win32多线程程序设计。 华中科技大学出版社,1997.1.[5] 侯捷 译。C++标准程序库。网络电子版资料。

修(制)订人: 审核人:

2010年 3 月30 日

第15篇:软件设计说明书封皮

山西农业大学信息学院

《软件工程》课程

设计名称:姓 名:姓 名:姓 名:姓 名:姓 名:指导教师:成 绩:

软件设计说明书学 号:

学 号:

学 号:

学 号:

学 号:

信息工程系 2017.05

第16篇:软件设计大赛策划

信息工程学院科技创新与创业协会 “大学生软件设计大赛”主题活动策划书

一、活动背景

正确引导我校学子积极参加科技竞技活动,不断培养创新精神和团队意识,切实增强理论联系实际的能力,通过富有自由、开放、创新精神的大赛,为广大学子提供一个提高自我、展示才华的舞台,为我国民族软件行业发掘和培养更多的优秀青年人才; 同时提高广大青年学生的学习积极性、创新意识和勇于实践的科学精神;进一步锻炼我校学生的综合素质和创新能力,发现和激励更多有作为、有潜力的软件人才,孵化和转化更多的软件创新成果,深化高校教学改革,推动软件行业产、学、研结合,促进软件产业的可持续健康发展。

二、活动主题

创意改变生活,人才创造价值

二、活动目的

①为同学们提供一个展示自我的平台

②让更多的同己学发现软件设计的魅力,激发同学们学习的欲望 ③通过参与软件设计大赛,与老师面对面的交流,增加对软件的认识及对专业技能的掌握。

④通过举办软件设计大赛,增加全校师生对软件设计大赛的认识,同时扩大信息学院的影响力。

⑤确立信息技术学科在长安大学的地位,使其与道路交通、国土资源齐头并进,为长安大学再添神采。

三、活动对象

A组:长安大学

一、

二、三年级的在读本科生

B组:长安大学在校本科生、研究生

四、报名方式和地点:

以学院为单位组织报名,学生将报名表纸质版和电子版先交到所在学院科协,并由各学院科协于3月14日统一将报名表交至信息学院学生办公室。

五、资源准备

已有资源:信息科协全体成员,信息科协标准实验室

需要资源:大学生活动中心3楼多功能厅,各学院宣传栏,比赛活动经费

六、人员分配

统筹人员:****

七、赛前科协内部准备

1、活动场地的审批

2、活动小组负责人组员的确定

3、宣传物品准备

八、活动流程

1、赛前宣传与通知(开幕式)

时间:2011年3月9日详情见活动程序安排。

2、报名:

时间:2011年3月9日——3月14日

3、作品制作期:

时间:2011年3月9日至2011年4月1日

在此期间,参赛队完成报名时提交的自定作品,如果不能完成,应有

作品初体模型,并能实现一定功能。

4、比赛作品提交

时间:2011年4月1日至2011年4月7日

在此期间,各参赛队须将作品发到指定邮箱或提交到各个学院科协,汇

总之后统一交到信息工程学院学生会办公室,如不按时提交默认为弃权(提交文档必须严格按照提交说明的要求)。

5、答辩环节

时间:2011年4月中旬

邀请评委老师对参赛作品进行评估。

6、闭幕式(评选及颁奖)时间:2011年5月上旬

地点:大学生活动中心3楼多功能厅

嘉宾:评委老师、各科协代表、信息学院各班班委

九、活动程序安排

1、宣传方式:

(1)比赛开幕式将在第三周举行,届时将邀请信息学院评委老师、校

科协、信息学院个伴科技发展委员和各学院科协代表协(2)介绍比赛相关事宜:竞赛方式、竞赛安排、竞赛要求

(3)东西区食堂门口各拉两条宣传横幅(4)在渭水学子网、先锋家园宣传(5)展板于东西区食堂门口展出(6)学校广播站,宣传栏通知(7)各个宿舍楼下张贴海报

2、活动开展:

1、比赛通知:通过开幕式、宣讲会的举行,各科协成员到场签到后

发放通知,未签到的将送去通知,使各个学院科协向该学院的同

学进行大赛通知,信息工程学院由本协会向各班科技发展委员通知。(通知过程中须详细告知参赛要求,各项流程的开展日期等详细情况。)

2、参赛要求:

A组:竞赛方式及成绩评判方式见附件。

B组:可根据专业特色及个人兴趣开发应用软件或游戏软件,保留源代码,并制成可执行操作程序,刻录到光盘上,上交。

3、对各个队伍的作品情况及时跟进和相关事宜的告知,并提供电脑

等实验设备的使用场所。

4、开幕式准备:

①相关证书、奖品 ②两名主持,四名礼仪

3、活动后期工作:

对各队的作品情况进行跟踪,收完作品后将及时将作品给老师评价。获奖作品按参赛作品情况而定,并把获奖情况公布给全校师生,在科协网站展示并宣传优秀作品,以供同学借鉴学习。

在大学生活动中心3楼多功能厅召开颁奖典礼,典礼邀请老师对获奖队伍进行颁奖,接下来依次邀请获奖同学领奖并合影留念,最后老师与全体获奖同学合影留念。可以寻找有意的赞助商,邀请商家参与,对获奖队伍进行物质奖励或发奖金。

颁奖典礼结束后,在校内悬挂横幅热烈祝贺软件设计大赛的完成。

十、意外处理

1.宣讲会邀请的嘉宾未能及时赶到,将安排机动组人员送去通知

2.如果欲参赛者因特殊原因未能及时报名将延期报名

十一、经费预算(单位:元)

长安大学信息工程学院科技创新与创业协会

二零一一年三月五日

第17篇:3D游戏软件设计

《3D游戏软件设计》

一、单选题(共 20 道试题,共 40 分。)

1.现有三组逆时针环绕的轮廓线,依次包含。现在,如果把区域的环绕属性设置为奇数类型,那么最终绘制出的区域描述正确的是 A.一个环形 B.实体块

C.一个环形加一个实体块 D.无法确定具体填充区域 满分:2 分

2.在进行点选操作时,我们使用一个名称标识了三个重叠的圆形。现在对它进行一次点击,那么它产生的点击记录为多少次 A.3 B.1 C.2 D.0 满分:2 分

3.在利用矩阵进行图形三维变换时,我们只用3×3矩阵无法完成的变换操作是

A.平移 B.旋转 C.错切

D.以上说法都不对 满分:2 分

4.在复合变换中,固定坐标模式的变换,对于坐标变换操作的调用和执行顺序描述中,正确的是

A.相对于同一个固定坐标系先调用的变换先执行 B.相对于同一个固定坐标系先调用的变换后执行

C.相对于同一个固定坐标系调用和执行的顺序没有必然联系 D.以上说法都不对 满分:2 分

5.函数glAlpaFunc用于设置alpha测试的参考值和比较函数的参数中,哪个参数的意义表示“绝不接受这个片段” A.GL_NERVER B.GL_ALWAYS C.GL_LESS D.GL_EQUAL 满分:2 分

6.函数void glBlendEquation(Glenum mode)函数中的mode对取值为GL_FUNC_SUBSTRACT描述正确的是 A.CsS+CdD B.CsS-CdD C.CdD-CsS D.CsopCd 满分:2 分

7.我们在绘制完物体后,如果锁定了深度缓冲区,接着再调换物体的z方向的次序,此时关于遮挡关系以下说法中正确的是 A.AB物体重叠部分会发生混合

B.遮挡关系发生改变,AB物体遮挡关系互调 C.遮挡关系不变 D.无法判断 满分:2 分

8.glPixelMap{ui us f}v( Glenum map,Glint mapsize,const TYPE* values )函数被加载,它的函数参数参数mapsize的取值有意义的是 A.10 B.20 C.32 D.42

满分:2 分

9.一束白光照射一个有光泽的蓝色球体,那么这个球体的整体看上去是蓝色的,它上面的亮点则是什么颜色的 A.红色 B.绿色 C.白色 D.蓝色 满分:2 分

10.白色的颜色值为

A.(0,0,0) B.(255,0,255) C.(255,255,255) D.(1,1,1) 满分:2 分

11.现在有控制点为四个,每个顶点有三个坐标,现在我们想利用函数gluNurbsSurface进行NURBS表面设置,那么u_stride的值应该设置为 A.3 B.4 C.12 D.48 满分:2 分

12.进行点选操作后,假设当前的选择缓冲区为pSelectBuff,那么其中的pSelectBuff[0]的值得含义是

A.名字堆栈中压入的名字数

B.自上一个点击记录之后,与视景体相交的图元的所有顶点的最小窗口坐标的z值 C.自上一个点击记录之后,与视景体相交的图元的所有顶点的最大窗口坐标的z值 D.点击发生时名字堆栈的内容 满分:2 分 13.下列哪个不属于计算机上支持的像素位数

A.4位 B.24位 C.20位 D.32位 满分:2 分

14.OpenGL中如何判断一个点接收了光源的多少光线

A.通过距离光源的距离进行计算 B.通过法线相对光源的方向进行计算 C.通过物体的颜色值进行计算

D.通过物体和光源的颜色值的综合考虑进行计算 满分:2 分

15.OpenGL提供的投影矩阵堆栈个数为

A.1 B.2 C.4 D.8 满分:2 分

16.利用3×3矩阵进行二维点集变化时,我们使用的矩阵为[1,0,0;0,-1,0;0,0,1],那么变化后的效果为

A.沿着X轴对称变换 B.沿着Y轴对称变换 C.沿着原点对称变换 D.沿着直线y=x对称变换 满分:2 分

17.下列哪个颜色不属于三原色

A.红

B.蓝 C.绿 D.黑 满分:2 分

18.如果有两束光进入人眼,他们的成分为(R1,G1,B1)和(R2,G2,B2)那么叠加在一起的时候,如果红色分量超出1了,那么最后的叠加结果为 A.R1+R2 B.1-R1-R2 C.1 D.R1+R2-1 满分:2 分

19.通常,我们的运动模糊效果,可以利用哪个缓冲区实现

A.颜色缓冲区 B.深度缓冲区 C.模板缓冲区 D.积累缓冲区 满分:2 分

20.OpenGL中复杂的图形绘制一般都是如何实现的

A.用曲线模拟 B.用四边形拼接 C.用三角形拼接

D.只要是凸多边形拼接就可以 满分:2 分

二、多选题(共 10 道试题,共 20 分。)

V

1.下列哪些是OpenGL的常用库

A.GL B.GLU

C.GLAUX D.GLUT 满分:2 分

2.在多边形偏移中,可以有哪几种模式用于不同的多边形光栅化

A.GL_FILL B.GL_LINE C.GL_POINT D.GL_TRANGLES 满分:2 分

3.对计算机图形进行显示的方法中可以起到抗锯齿作用的有哪些方法

A.提高屏幕分辨率 B.采用区域覆盖法 C.加权覆盖法 D.抖动技术 满分:2 分

4.OpenGL允许把与颜色相关的哪三个不同参数和光源相关联

A.GL_AMBIENT B.GL_DIFFUSE C.GL_SPECULAR D.GL_AMBIENT 满分:2 分

5.OpenGL包含有哪几个缓冲区

A.颜色缓冲区 B.深度缓冲区 C.模板缓冲区 D.积累缓冲区

满分:2 分

6.实现物体坐标到达屏幕坐标的处理管线中,包括的处理步骤有

A.视图模型矩阵操作 B.投影操作

C.透视除法进行规范化 D.视口变换 满分:2 分

7.在局部光源模型中,随着光源的距离增加,光的强度不会随之衰减的有

A.环境光 B.散射光 C.镜面光 D.发射光 满分:2 分

8.以下是正交投影glOrtho函数作用特点的是

A.视体是一个椎体 B.物体近大远小 C.视体为立方体

D.物体的距离并不影响它看上去的大小 满分:2 分

9.以下是描述glBindTexture函数功能的是

A.将生成的纹理的名称绑定到指定的纹理上 B.创建纹理并加载

C.选择已经加载的纹理进行贴纹理操作 D.以上都对 满分:2 分

10.一下那些属于OpenGL的特点

A.标准支持灵活

B.具有良好伸缩性 C.具有良好扩展性 D.扩展性不强 E.

满分:2 分

三、判断题(共 20 道试题,共 40 分。)

V

1.设置光源位置时,当我们的光源坐标位置(x,y,z,w)中的w为0时代表我们的光为局部光源 A.错误 B.正确 满分:2 分

2.glNormal*函数是glBegin和glEnd之间的合法函数

A.错误 B.正确 满分:2 分

3.无论是在反馈模式下还是选择模式下,物体的信息总是在任何片断测试之前返回

A.错误 B.正确 满分:2 分

4.函数glLoadName用于将当前的名字替换名字堆栈顶部的元素

A.错误 B.正确 满分:2 分

5.函数glPerspective(GLdouble fogy,GLdouble aspect, GLdouble near,GLdouble far)所定义的视体仅限于和X和Y轴对称的平截头体 A.错误 B.正确 满分:2 分

6.视图变换和模型变换可以互逆变换

A.错误 B.正确 满分:2 分

7.位图字体无法进行旋转

A.错误 B.正确 满分:2 分

8.过滤函数中的参数GL_LINER它会对一小块区域的纹理单元值进行加权平均,用于放大或者缩小 A.错误 B.正确 满分:2 分

9.对物体进行平移变换和缩放变换的顺序不会对最后结果产生影响

A.错误 B.正确 满分:2 分

10.OpenGL至少可以在场景中包含1个光源

A.错误 B.正确 满分:2 分

11.已知两个向量,可以通过运算V1^.V^2获得它们所在平面的法线

A.错误 B.正确 满分:2 分

12.glEnable(GL_DEPTH_TEST)函数的作用是开启深度测试

A.错误 B.正确 满分:2 分

13.为了使用mipmap,必须提供全系列的大小为2的整数次方的纹理图像,其范围从2*2到纹理的最大单元

A.错误 B.正确 满分:2 分

14.纹理坐标必须在RGBA模式下才能使用

A.错误 B.正确 满分:2 分

15.函数glDepthMask的flag参数设置为GL_TRUE,则标志着深度缓冲区可以写入

A.错误 B.正确 满分:2 分

16.对于基本的求值器使用绘制步骤为先开启求值器,设置控制点,设置绘制属性和模式,最后进行渲染 A.错误 B.正确 满分:2 分

17.位图是由0和1组成的矩形数组

A.错误 B.正确 满分:2 分

18.镜面亮点的颜色就是光源的镜面光的颜色

A.错误 B.正确 满分:2 分

19.颜色混合操作在颜色索引模式下是非法的

A.错误 B.正确 满分:2 分

20.glRotatef(fRot,0.0f,1.0f,0.0f)函数可以让图形绕着X轴偏转fRot角度

A.错误

B.正确 满分:2 分

第18篇:通信软件设计心得体会

通信软件设计课程总结

关于这门课程,有很多话想说,对崔老师说的话、对队友们说的话、对自己说的话。这门课程应该算是我上大学以来最享受的一门课程,它不仅仅让我学到了知识、学到了技能,它更是一次宝贵的团队合作的项目经历,它带给了我太多太多的东西。

首先总结一下这门课程学到的知识和技能。

1.学到了软件工程的相关知识。对于软件有了更清晰的认识,不只是文档+程序+

数据,我通过听老师的讲课以及查阅书籍(《软件工程概论》张海藩著),还懂了什么是软件过程,我们的课程完成的就是瀑布模型中计划、需求分析、和设计的过程。此外还了解了软件工程诞生的过程,软件危机又是怎么回事。书中还有讲

2.整个软件研发的过程中相关的管理学知识,由于课程比较近,还没有读过。面向对象的编程思想。这个也应属于软件工程相关知识,单独提出来是因为我对

这个有更深刻的理解。之前无论是大一的C++,大二的数据结构,大三的汇编语言,我见识到的几乎都是面向过程思想编出来的程序,C++虽然有讲,但也没有少实践经历,印象不太深刻。而这一次UML建模语言几乎完全是针对面向对象思想设计程序的,通过建类、建对象画时序图、类图等,我对面向对象=对象+继承+消息传递的结论有了理解得更透彻清晰。同时组长为我揭开了JAVA这种之前最熟悉而又最神秘的程序设计语言的面纱,我想抽时间自学一下Java的相关内容,以更好地理解面向对象编程思想。

3.UML建模语言。之前从来没有听说过这三个英文字母的组合。直到听到老师的第

四节课,我才恍然大悟原来我们这个课程主要是来学这个东西的。通过一学期的学习,现在对这个有了以下认识:

(1) UML是用来帮我们进行程序设计的,尤其是在编写较大较复杂的项目(诸

如飞鸽传书、简单的网页浏览器、一些小的PC程序)时才更能体会出它

的方便性。

(2) UML中的各种图中最重要的是类图,也是和我们编写代码相关性最大的

一种图。其他的图大都是帮我们理清设计思路,从而更准确地设计类图。

比如时序图和协作图强调的是各个类之间的交互关系;活动图是从先后

步骤地角度来理清程序设计思路,它是一种面向过程的设计思路,此外

活动图还可以用来做我们程序编写时的流程图,用它来绘制要比之前用

word绘制方便得多。

(3) UML语言带给了我们一种从表层逐步深入分析程序设计的思路,也是一

种多角度看待程序的思路。从用例图到时序图、再到活动图、状态图、

组件图、最后到类图,逐步求精;从时间先后、对象交互、状态变换的

多角度看待问题。

4.Rose软件。Rose软件和UML是分不开的,但Rose绝不会像别的一些课程学到

的软件一样,用完就会被删去,因为除了有助于以后编程的方便外,它还可以帮助我思考一些复杂的问题,组织一次班会的流程等。

网络编程相关知识。因为我们编写的是通信软件,也就是涉及网络的编程,为了更准确地设计类图,在组长的指导下,我们查阅了不少网络编程的相关书籍。初步地理解了网络编程的机制,从最开始丈二和尚摸不到头脑地看到socket这个东西,到开始思考文件传输和即时聊天采用TCP还是UDP协议实现,再到确定采5.

用C++语言编写windows上运行的程序后阅读MFC编程的相关知识,到最后建立了CSocketFile和CArchive这两个类用于文件传输,都是我们不断查阅相关资料、整理更新思路的成果。尤其是我这个之前编程经验很少的人看到采用MFC竟然可以如此方便地编写程序,直接就在画完时序图后兴奋地将两个书上的MFC编程的小案例在机器上实现了一下。

我个人感觉查阅网络编程知识是我在整个课程学习工程中收获最大的部分。

之前我是个遇到编程题目就很头疼的学生,大一大二的C++,数据结构课程没有少copy别人的代码,也不是自己不想编,可能是一直对编程有恐惧心理,潜意识里认为自己编不出来,觉得编程好难,是件大牛才能做到的事情。幸好这次有我们编程经验很丰富的组长的督促和指导,让我一点点地认识到设计、编写程序其实并没有那么恐怖,而且对这个过程产生了极大的兴趣。

再说一些在这门课程学习过程中收获的一些其他的东西。

我们学到了采用SCRUM的团队工作方式来完成一个项目的方法。在学习过程中我们采用了任务分配、任务认领,定期会议总结讨论经验得失,深切体会到了SCRUM确实是一种很高效的团队协作模式,而且能使整个团队保持良好的氛围,将成员间民主、公平的关系解决得很好,也能调动起大家的积极性。此外我们一直保持着两人一组操作同一台电脑的工作方式,不但高效,而且两个人遇到问题可以商量解决,感觉要比一个人做容易得多,而且也不易出现一个人把图画得乱七八糟,使别的队友都看不懂的情况。

再有,在老师不断地强调、和组长的敦促下,我逐渐树立起了一个以用户为上帝的思想。以前无论是编程还是学习、写作业,我都是按照自己的想法在做事情,因为觉得学习是我自己的事情,我觉得怎样学好就怎么学,写作业也是这样,从来没有考虑过我提交的作业是要给老师看的,我应该考虑到老师的感受。插一句题外话,感觉我们八零九零的一代年轻人做事情似乎都有这个恶习,就是不知道多替别人着想。回忆起自己之前做的事情,好像只有过一次是在为别人着想的指导思想下做事情,就是准备高考的时候,但那时我还不屑地认为我只是为了考个好大学而应试,是教育体制的症结决定的,我还是崇尚按照自己的想法来做事情。

但这一次彻底地改变了我的想法,而且我确定老师您倡导的、我们组长一直坚持的这种理念是正确的。我们在编程是在为用户提供服务,只有我们的服务好,用户才会采纳我们的方案,我们才能挣到钱有饭吃。我们平常都爱去就餐环境好、服务态度好的店里吃饭,因为作为用户都会更喜欢为自己着想更多的东西。所以以后无论是编写程序、还是提交作业、还是进行演讲、组织会议,都要始终将对方的感受放在心里,这样一来可以赢得对方的喜爱很信任,更重要的是这是对对方的一种尊重。

最后写一些我们团队合作过程中的一些“花絮”。首先强调一下我们的组长(张昕)真的很牛,无论是技术能力、管理能力、表达能力都是我远远不能及,只好膜拜的程度。每次我们遇到技术难题,都可以放心地提交给他,他或者根据自己的经验、或者去查看资料、或者和老师进行交流都可以将问题解决。此外每次开会都非常准时,准备充分,承担了N 次写会议记录的工作。我在他身上看到了一个项目开发团队领袖所具备的品质,也感觉自己无形中学到了很多东西。总之一句话,对组长很感谢很膜拜。再有老宿(宿晨曦)几乎在每一个过程中都和我在一起工作,他的努力和细致都令我钦佩,很多我认为不重要可以模糊处理的细小的东西,他都会很细致地辨析,力求准确。此外小乔(乔雅楠)在开会的时候总可以在我们表述不清,争论不清的时候一针见血地指明问题之所在,这个能力给我留下了很深刻的印象。总之,我们是个很厉害的组长带领下的很努力很和谐的团队,我很荣幸能在这个团队中做出了微薄的贡献,并学到了很多东西。

总之,这门名叫通信软件设计的课程,就在很风趣很博学的崔老师的讲授下,很专业很

善言的组长的带领下,很和谐很努力的团队共同学习中完成了。我很享受这个学习过程,要不是在其他科目疯狂的时间瓜分压榨下,我们还可以做得更好、学得更多一些。但通过这门课程,我树立了对设计、编写程序的信心,培养了对编程的爱好,更加坚定了以后从事软件方面研究、工作的想法。

第19篇:软件设计项目要求

按照瀑布模型中的各个阶段实现所选题目,要求如下:

1.分组讨论分工,每个成员都要完成一个文档

2.自选程序设计语言设计该项目,并按模块化的概念分工完成

3.给出相应的文档(可行性研究报告、需求规格说明书、概要设计说明书、详细设计说明

书、测试计划、用户手册),按照模板编写文档,文档的整理者为第一作者,其他成员为第二作者

4.其中在可行性研究报告中要出现UML图和系统界面;需求规格说明书中要出现数据流

图;概要设计说明书中要出现层次方框图;详细设计说明书中要出现甘特图;

5.若要研究现行系统,可到网上搜索相关系统

6.在结课时前将文档和程序打包上传到FTP中,中间时间自行保存

课程设计题目

题目一“教务管理系统之子系统——系内课程安排”

1.系统简介

每学期的期中,学院教务处分别向各个系发出下学期的教学计划,包 括课程名、课时、班级类别(本科、专科、高职)、班号等;系教学主管人员根据教学任务和要求给出各课程的相关限制(如:任课教师职称、和班数、最高周学时数等);任课教师自报本人授课计划,经所在教研室协调确认,将教学计划上交系主管教学计划的主任,批准后上报学院教务处,最终有教务处给出下学期全系教师的教学任务书。 假设上述排课过程全部为人工操作,现要求改造为能利用计算机实现的自动处理过

程。

1. 限定条件

(1)每位教师的主讲门数不超过 2 门/学期:讲师以下职称的教师不能承担系定主课的主讲任务。

(2)系级干部的主讲课时不能超过 4 学时/周。

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

(4)本系统的输入项至少应包含 3 个:教务处布置的教学计划、系教师自报的讲课计划和系定的有关讲课限制条件。

(5)本系统的输出项至少应包含 2 个:教务处最终下达的全系教师教学任务书和系各教学班一学期的课程表(可不包含上课地点)。

题目

二、“学校教材订购系统”

1、系统简介

本系统可细化为两个子系统:销售系统和采购系统 销售系统的工作过程为:首先由教师或学生提交购书单,经教材发行人员审核是有效购书单后,开发票、登记并返给教师或学生领书单,教师或学生即可去书库领书。 采购系统的主要工作过程为:若是脱销教材,则登记缺书,发缺书单给书库采购人员;一旦新书入库后,即发进书通知给教材发行人员 以上的功能要求在计算机上实现。

2、技术要求和限制条件

(1)当书库中的各种书籍数量发生变化(包括领书和进书时),都应修改相关的书库记录,如库存表或进/出库表。

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

(3)系统的外部项至少包含三个:教师、学生和教材工作人员。

(4)系统的相关数据存储至少包含 6 个:购书表、库存表、缺书登记表、待购教材表、

进/出库表。

题目

三、“机票预订系统”

1、系统简介

航空公司为给旅客乘机提供方便,需开发一机票预定系统。各旅行社把预定机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入到该系统,系统为旅客安排航班。当旅客交付了预定金后,系统印出取票通知和帐单给旅客,旅客在飞机起飞的前一天凭取票通知和帐单交款取票,系统核对无误即印出机票给旅客。此外航空公司为随时掌握各航向飞机的乘载情况,需定期进行查询统计,以便适当调整。

2、技术要求及限定条件

(1)在分析系统功能时要考虑有关证件的合法性验证(如身份证、取票通知、交款发票等)。

(2)对于本系统还应补充以下功能:

(1)旅客延误了取票时间的处理

(2)班机取消后的处理

(3)旅客临时更改机票班次的处理

(3)系统的外部项至少包含三个:旅客、旅行社和航空公司。

题目四:“学校内部工资管理系统”

1、系统简介

假设学校共有教职工约 1000 人,10 个行政部门和 8 个系部。每个月 20 日前各部门(包括系、部)要将出勤情况上报人事处,23 日前人事处将出勤工资、奖金及扣款清单送财务处。财务处于每月月底将教职工的工资表做好并将数据送银行。每月初(3 日前)将工资条发给各单位。若有员工调入、调出、校内调动、离退休等数据变化,则由人事处通知相关部门和财务处。

2、技术要求及限定条件

(1)本系统的数据存储至少包含:工资表、部门汇总表、扣税款表、银行发放表

(2)除人事处、财务处外,其他只能部门和系部名称可简化,如系1,系 2„..等

(3)工资、奖金、扣款细节可由学生自定

题目

五、“实验室设备管理系统”

1、系统简介

每学年要对实验室设备使用情况进行统计、更新,其中:

(1)对于已彻底损坏的作报废处理,同时详细记录有关信息。

(2)对于有严重问题(故障)的要即使修理,并记录修理日期、设备名、修理厂家、修理费、责任人等。

(3)对于急需但又缺少的设备需以“申请表”的形式送交上级领导请求批准购买。新设备购入后要立即进行设备登记(包括类别、设备名、型号、规格、单价、数量、购置日期、生产厂家、购买人等),同时更新申请表的内容。

(4)随时对现有设备及其修理、报废情况进行统计、查询,要求能够按类别和时间段(某日期之前)查询。

2、技术要求及限定条件

(1)所有工作由专门人员负责完成,其他人不得任意使用。

(2)每件设备在作入库登记时均由系统按类别自动顺序编号,形成设备号;设备报废时要及时修改相应的设备记录,且有领导认可。

(3)本系统的数据存储至少应包含:设备记录、修理记录、报废记录、购买申请。

(4)本系统的输入项至少包含:新设备信息、修理信息、申请购买信息、报废信息、具

体查询统计要求。

本系统的输出项至少包含:设备购买申请表、修理/报废注销/设备资金统计表。

题目

六、分房管理系统

某大学拟开发一个计算机分房管理系统,要求系统具有分房、调房、退房和咨询统计等功能。房产科把用户申请表输入系统后,系统首先检查申请表是否合理,对不合法申请表拒绝接受;对合法表根据类型进行处理。

分房申请,根据申请者情况(年龄、工龄、职称、职务、家庭人口等)计算其分数,高于阀值的进行排队。分房时,读空房文件,把好房优先分给排在分房队列前面的人,并将房屋信息与申请者一起写入住房文件中。

若为退房申请,从住房文件中删除有关信息,并将房屋信息计入空房文件。

若是调房申请,根据申请者情况计算分数,并进行以上退房和分房处理。

系统可进行房屋信息维护(输入、删除、排序),以及各种住房信息统计、查询、打印等。题目七基金管理系统

为实现政务公开,某省拟采用网上自然基金申报和审批,需开发一套包括基金申报(使用说明、文档提交、申报情况查询)、基金信息公告(基金公告、基金新闻、最新立项)、网上审批与鉴定(专家定量网上审批、项目鉴定)、基金项目管理(发布申报计划、批复申请、查询申请项目等)与推荐优秀基金项目等功能的办公网站。

要求具有基金申报管理(申报文档提交,申报情况查询等),信息公告维护(增加,撤除和修改等),审批流程管理(管理员可指定审批流程,对需执行审批的专家显示审批流程,进行审批提示),项目鉴定管理(管理员可指定鉴定流程,对需执行鉴定的专家显示审批流程,进行鉴定提示)等功能。

题目八汽车俱乐部管理系统

为实现汽车俱乐部行业信息的规范化管理,某软件开发商要求开发一汽车俱乐部管理系统,面向俱乐部工作人员进行会员信息的管理。主要功能包括:用户(俱乐部工作人员)身份验证和用户权限组织;提醒服务(提醒各种该执行的车务活动);会员管理(会员信息、会员费收缴记录录入,查询,修改);车务管理(新车上牌代办,保险代办,验证代办,落户代办等);救援服务(呼救记录,救援情况记录以及救援车辆管理);旅行服务(旅行信息记录、修改、查询);统计报表、图表(所有当日、当月、当年向会员提供的各种服务信息及其收费的详细情况列表及汇总);系统管理(设置提醒提前日期,用户管理等);俱乐部管理(俱乐部部门、工作人员、救援车辆管理);系统帮助。

题目

八、学生学籍管理系统

功能说明

本学生学籍管理系统分为学生信息管理、学生成绩管理、考试管理和用户管理四个功能模块。

(1)学生信息管理模块主要是对学生信息(如学号、姓名、性别、家庭住址等)进行管理。本模块又分为三个子模块:

◇学生信息录入

◇学生信息查询

◇学生信息修改/删除

其中,学生信息查询不需登录即可使用,信息录入和修改/删除模块则需要先登录后才能使用。

(2)学生成绩管理模块主要是对学生成绩进行管理。本模块又分为五个子模块:◇学生成绩录入

◇学生成绩查询

◇学生成绩修改/删除

◇计算总分与排名

◇目标分管理

其中,学生成绩查询不需登录即可使用,其他模块则需要先登录后才能使用。

(3)考试管理模块主要对考试进行如下管理:

◇添加新考试

◇对已有的考试信息进行修改/删除

◇对考试科目进行添加/删除

本模块需要先登录后才能使用。

(4)用户管理模块主要对使用本系统的用户进行如下管理:

◇添加新用户

◇对已有的用户进行更改用户名、密码和权限(管理员或普通用户)等操作◇删除用户

本模块只有管理员才能使用,普通用户不能进入。

第20篇:UPS监控软件设计

UPS监控软件设计

摘要:设计了一个UPS监控软件,以监视UPS的实时状态,控制UPS进行保护和切换的参数、诊断和开关排程等。

关键词:UPS;监控软件

1 UPS监控软件的功能

UPS监控软件的作用是用来监视和控制UPS。其中,监视功能是给一般用户使用的,而控制功能是给具有特权用户使用的。对于一般用户只能读取电源事件和数据信息,供用户分析、判断UPS故障用;对于具有特权的用户,就可以对被监控的UPS进行诊断、测试、配置参数等操作。具体来说,有以下几个方面:

1)各种图形用户界面显示UPS的输入电压、输出电压、输入频率、输出频率、电池电压、输出电流等参数,以掌握当前UPS的实时状态;

2)可查看UPS的事件日志和数据日志,全面分析电源的历史状况;

3)灵活的事件管理与告警方式,以便系统管理员或用户采取相应的应急措施;

4)无人值守时发生严重电源故障情况下的文件自动保存并关闭系统,使已做的工作不会因电源故障丢失;

5)可对UPS的运行参数和关机参数进行设置;

6)可预定UPS的关机、重启和测试计划;

7)中、英文界面,能适应各种主流操作系统。 2 监控平台的设计 2.1 监控界面设计

如果要实现UPS的监控功能,很明显,一个窗体是不能满足要求的,必须采用多窗体界面。为了程序能同时打开多个文件,使用多文档界面MDI(Multiple Document Interface)编程。MDI是指在一个窗体中能够建立多个子窗体的操作界面,它允许程序同时显示多个文档,每个文档显示在它自己的窗口中。文档或子窗口被包含在父窗体中,父窗口为应用程序中所有的子窗口提供工作空间。在运行时,子窗体显示在MDI窗体工作空间之内(其区域在父窗体边框以内及标题与菜单栏之下)。当子窗体最小化时,它的图标显示在MDI窗体的工作空间之内,而不是在任务栏中。图1为该监控平台的主窗体。

图1 UPS监控界面平台主窗体

由于该软件的设计得到了(温州)中国鸿宝电源有限公司的大力支持,为了表示感谢,在该软件的运行前先显示该公司的标志画面,也就是给该软件添加一个程序封面。程序封面的设计有2种方法:多窗体编程方法和隐藏控件方法。前者是在程序封面窗体上放置一个时间控件,待设定的时间后自动关闭封面切换到主窗体,为了能够人为地切换封面和主窗体,可在封面窗体鼠标单击事件中增加相应的代码;后者是在程序运行时使用Visible属性,首先,将主窗体上的全部控件隐藏,然后,在主窗体内进行程序封面的演示,延时一定时间后再恢复所有控件的显示,如果主窗体内的控件很多,可以将这些控件设计在一个容器控件上,这样只要设置该容器控件的Visible属性即可。

由于UPS监控软件适合两种用户,所以接下来的是登录窗体和注册窗体的设计。为了用多种图形界面显示UPS的实时状态,该软件设计了4种窗体专门用来显示UPS的运行参数及其状态。在数据日志中,用户可以自由设定历史数据存储周期,并借助数据列表回放UPS的运行状态,分析UPS的某一次异常事件,全面了解UPS的运行状态与走势。另外,还有事件日志、计划任务、事件及其反映、遥控、UPS运行参数和关机参数设置等窗体。可自主设置UPS的运行计划,检测计划系统可按用户事先选定的项目以一定周期进行自检,同时,系统还可按用户的需要预约UPS的开机、关机时间。

根据上述监控软件的功能,可以设计该监控平台的菜单结构如图2所示。

图2 监控界面平台的菜单结构

2.2 软件实现

该软件包含2个部分:数据库部分和应用程序部分。在本程序里面,将使用Microsoft Acce 2000来建立数据库,使用VisualBasic6.0来编制应用程序。数据库部分包含3个表格:用户表,事件日志表和数据日志表。用户表中包含该用户的帐号,密码和用户类型;事件日志表中包含日期,时间,事件描述,事件处理等各项内容;数据日志表中包含日期,时间和UPS的主要运行状态参数。

要使用该软件必须输入用户名和密码,软件根据数据库中的资料判断该用户的注册类型,决定该软件的使用权限。如果没有这个用户,则请求用户注册成为新用户。用户注册时,要填写一些必要的个人信息,如果该注册名已经存在,系统将要求采用其它的用户名重新注册,保存后存放到用户表中去。只有系统管理员级别的用户才能使用该软件的所有功能,一般用户只能使用该监视方面的功能。

电源监控软件开发的关键环节是如何实现计算机串并口与电源设备的通信(即计算机采集电源设备送出的状态信号,经分析处理后在终端上显示或发出控制信号送往电源设备),而最简单的信息传送方式就是使用串行通信。VB中提供了一个重要的通信控件:MSComm。在本程序中使用到该软件的5个重要属性:CommPort,Settings,PortOpen,Input,Output。Settings属性设置为“1200,N,8,1”。PortOpen属性使用前必须打开,用完后必须关闭。图3是该监控软件的主流程图。

图3 上位机监控软件主流程图

该软件包含对30多种电源事件的处理,处理的方式有:通知系统管理员,执行命令文件,发送电子邮件或传呼信息给指定的用户报警,在严重的情况下执行文件自动保存后关闭系统。这里主要通过调用系统的API函数来实现。实际上,在整个软件的编写过程中,很多子程序都用到了相应的API函数调用。使用Windows API,可以访问常用代码库,使用通过测试的和认证过的代码,获得跨平台的兼容性,得到一个更小巧的应用程序。

该软件通过输出电流来推算负载百分比,而蓄电池的电压可以反映电池的剩余容量,所以程序通过测量电池电压并查表来近似推算蓄电池的剩余容量。并通过当前输出电流和计算得到的电池剩余容量估算出电池的剩余放电时间,再根据得到的剩余放电时间来决定是否需要进行计算机的自动保存操作。如果自动存档时,档案未赋予文件名,软件以temp格式暂存或离开,供电系统正常后,用户还可查看上次关闭Windows时关闭的应用程序名称和储存的档案。

由于该软件要适应各种主流操作系统,如Win9X和Win2000。当文件自动保存后,要退出操作系统,安全关机。这时,要注意两类操作系统的区别。在Win9X中退出操作系统,只需调用一个底层的API函数ExitWindowsEx()就可以了,但是Win2000用的是NT的内核,Windows NT不象Win9X和DOS那样可以随意进行底层的操作,它非常注重系统每个进程的权利(这也是为什么Win9X和DOS底下病毒成灾的原因),在Win2000下,要退出操作系统,必须赋予它足够的权限。图4是关机子程序流程图。

图4 关机子程序流程图

为了绘制UPS各个运行参数的实时平滑曲线,得到扫描的效果,本程序中使用了一个重要的API函数BitBlt。在主窗体的菜单中,“窗口”主菜单在设计时,选取“显示窗口列表”项。这样,不用编写任何代码,“窗口”主菜单下就会自动显示MDI窗体的已打开子窗体的列表。其它子菜单的程序也很简单,只需调用MDIForm对象的Arrange方法就可以了。“语言”菜单下的“英文”或简体中文,编程的思路和过程是一样的,只不过是做做翻译工作而已。对于菜单中的“关于UPS监控软件”,主要是获得注册表中的一些系统信息,Visual Basic开发软件本身也带有这方面的例示窗体和源代码,可以根据需要作相应的改变。

3 结语

该软件在Windows98和Windows2000下调试通过,其功能也基本上能满足一般UPS监控系统的要求。不过,程序运行时总觉得不是很流畅,这是因为当一个窗体界面的设计中要容纳多张图片和多个控制时,将出现窗体显示速度明显变慢的现象。为此,将“界面设计窗体”和“功能实现窗体”分开处理,基本可以解决这一问题。即在设计时根据需要设计漂亮的界面,但是在全屏运行时将该界面复制到剪贴板上,然后将其作为一张图片粘贴在功能实现窗体的背景上。这样,从外观上看效果相同,但是显示速度明显加快。不过,不可避免地增加了程序本身的存储容量。

系统开发软件设计岗位职责
《系统开发软件设计岗位职责.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
相关专题
点击下载本文文档