第一篇:通信软件设计心得体会
通信软件设计课程总结
关于这门课程,有很多话想说,对崔老师说的话、对队友们说的话、对自己说的话。这门课程应该算是我上大学以来最享受的一门课程,它不仅仅让我学到了知识、学到了技能,它更是一次宝贵的团队合作的项目经历,它带给了我太多太多的东西。
首先总结一下这门课程学到的知识和技能。
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 次写会议记录的工作。我在他身上看到了一个项目开发团队领袖所具备的品质,也感觉自己无形中学到了很多东西。总之一句话,对组长很感谢很膜拜。再有老宿(宿晨曦)几乎在每一个过程中都和我在一起工作,他的努力和细致都令我钦佩,很多我认为不重要可以模糊处理的细小的东西,他都会很细致地辨析,力求准确。此外小乔(乔雅楠)在开会的时候总可以在我们表述不清,争论不清的时候一针见血地指明问题之所在,这个能力给我留下了很深刻的印象。总之,我们是个很厉害的组长带领下的很努力很和谐的团队,我很荣幸能在这个团队中做出了微薄的贡献,并学到了很多东西。
总之,这门名叫通信软件设计的课程,就在很风趣很博学的崔老师的讲授下,很专业很
善言的组长的带领下,很和谐很努力的团队共同学习中完成了。我很享受这个学习过程,要不是在其他科目疯狂的时间瓜分压榨下,我们还可以做得更好、学得更多一些。但通过这门课程,我树立了对设计、编写程序的信心,培养了对编程的爱好,更加坚定了以后从事软件方面研究、工作的想法。
第二篇:通信软件设计教学大纲
通信软件设计(专业限选课)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.xiexiebang.com
[3] 周良忠 译。C++面向对象多线程编程。北京:人民邮电出版社,2003.4.[4] 侯捷 译。Win32多线程程序设计。华中科技大学出版社,1997.1.[5] 侯捷 译。C++标准程序库。网络电子版资料。
修(制)订人: 审核人:
2010年 3 月30 日
第三篇:《通信软件设计基础》教学大纲
程控交换机的软件设计常采用两类语言:汇编语言、高级语言
选用哪类语言通常要考虑以下几点:
程序的效率
编程的效率
适于程序结构化和软件模块化的设计
便于程序的调试
可维护性和可移植性
数据修改的可能性和方便性 SDL的基本概念 系统
SDL系统是指所有规格试图定义的一切,在规格之外SDL不定义的部分都属于环境。
它由功能块和信道构成,系统一级SDL的定义包括:系统名,功能块定义,信号定义,信号表定义,信道定义,数据定义,宏定义。
功能块
功能块是由子功能块和进程构成。功能块一级SDL的定义包括:功能块名,进程定义,信号定义,信号表定义,信号路由定义,信号路由的连接,数据定义,宏定义。
进程
进程是一种扩展的有限状态机,它规定了一个系统的动态行为。进程操作包括:启动,输入,输出,判定,任务,进程创建,过程调用等,SDL/GR提供了一套标准的图形符号可精确地描述进程的行为。
SDT 开发工具
SDT是基于SDL语言的支持工具,是基于SDL系统开发的集成环境。它包括MSC图编辑器,SDL图形编辑器,SDT分析仪、SDT模拟器、SDT确认器和C代码生成器。
《通信软件设计基础》教学大纲
课程名称:通信软件设计基础 英文名称:Communication Software Design Base 课程编号:00504718 学时学分:36/2 课程性质:学位课、选修课 开课单位:电气信息学院
适用专业:交通信息工程及控制
预修课程:单片机原理、微机原理、通信原理、程控交换机原理、C语言程序设计 大纲执笔人:曾洁 副教授 开课学期:春
教学方式:主讲、研讨、上机编程并实验
考核方式:开卷、上机操作、实验、实验报告、答辩
一、课程目的与要求
由于近年来通信技术的迅猛发展,通信系统越来越复杂,通信软件越来越庞大,从事通信软件开发与维护工作的队伍越来越壮大,于是需要了解和掌握通信软件设计基础的人才也越来越多。为了适应通信技术发展形式的需要,特地为信息工程方面的硕士研究生开设“通信软件设计基础”课程。通信软件的最大特点是广泛使用通信协议和标准,为了便于人们理解和交流,ITU-T在制定各种通信协议和标准同时,采用了SDL语言作为协议和标准的描述语言。SDL是一种很好的通信软件设计语言。因此本课程重点介绍了SDL语言。同时还介绍了通用建模语言UML和消息跟踪语言MSC。通过学习该课程,让学生掌握通信软件设计基础,并要求以设计一个微型交换机软件为例,说明如何应用这些形式化语言进行通信软件的需求分析、概要设计和详细设计。最后具体设计关于多计算机间的串行通信软件,并实现之。
二、教学内容及学时安排
第一章 概述
2学时
一、通信软件的特点
二、通信软件的开发过程
三、通信软件开发工具
第二章 UML与建模技术
4学时
一、UML概述
二、UML语言介绍
第三章 消息顺序图
4学时
一、概述
二、MSC基础
三、MSC文档
四、MSC结构概念
第四章 SDL语言概述
2学时
一、系统行为
二、SDL系统结构
三、主要术语定义
四、SDL语法
五、关键字
第五章 SDL基本概念
6学时
一、定义包
二、代理
三、通信
四、状态机
五、迁移过程
六、定时器操作
七、正文扩展与注释
第六章 SDL数据
4学时
一、概述
二、数据定义
三、数据使用
第七章 SDL中面向对象的概念
2学时
一、概述
二、类的定义
三、上下文参数
四、关于类的特殊处理
第八章 SDL其它概念
2学时
一、远程过程调用
二、通用系统设计
第九章 设计举例
4学时
一、硬件结构设计
二、需求分析
三、概要设计
四、详细设计
第十章 计算机通信软件设计及其实验
6学时
一、两个单片机之间的串行通信软件设计及实验
二、多个单片机之间的串行通信软件设计及实验
三、单片机与PC机间的串行通信软件设计及实验
三、教材及主要参考
1、周之英,《现代软件工程》,科学技术出版社,1999
2、郑人杰等,《使用软件工程》,清华大学出版社,1998
3、ITU-T建议Z.120,《Message Sequence Chart》1999.11
4、Jan Ellsberger etc,<
5、蒋慧等,《UML设计核心技术》,希望电子出版社,2001
6、刘超等,《可视化面向对象建模技术----标准建模语言UML教程》,北京航空航天大学出版社,1999
7、刘润东,《UML对象设计与编程》,希望电子出版社,2001
8、ITU-T建议Z.100,《Specification and Dscription Language》,1999.11
9、叶敏,《程控数字交换》,北京邮电大学出版社,1988.6
10、A.Olsen,etc.
《通信软件设计基础》课程简介
课程名称:通信软件设计基础 英文名称:Communication Software Design Base 课程编号:00504718 学时学分:36/2 课程性质:学位课、选修课 开课单位:电气信息学院
适用专业:交通信息工程及控制
预修课程:单片机原理、微机原理、通信原理、程控交换机原理、C语言程序设计 大纲执笔人:曾洁 副教授 开课学期:春
教学方式:主讲、研讨、上机编程并实验
考核方式:开卷、上机操作、实验、实验报告、答辩
主要教学内容:
本课程主要针对通信软件的特点,介绍了几种适用于通信软件需求分析阶段和设计阶段的形式化语言,包括通用建模语言UML、消息跟踪语言MSC和规格说明与描述语言SDL,重点介绍了在电信领域得到广泛应用的SDL语言。并以设计一个微型交换机软件为例,说明如何应用这些形式化语言进行通信软件的需求分析、概要设计和详细设计。
教材及主要参考书:
1、周之英,《现代软件工程》,科学技术出版社,1999
2、郑人杰等,《使用软件工程》,清华大学出版社,1998
3、ITU-T建议Z.120,《Message Sequence Chart》1999.11
4、Jan Ellsberger etc,<
5、蒋慧等,《UML设计核心技术》,希望电子出版社,2001
6、刘超等,《可视化面向对象建模技术----标准建模语言UML教程》,北京航空航天大学出版社,1999
7、刘润东,《UML对象设计与编程》,希望电子出版社,2001
8、ITU-T建议Z.100,《Specification and Dscription Language》,1999.11
9、叶敏,《程控数字交换》,北京邮电大学出版社,1988.6
10、A.Olsen,etc.
第四篇:软件设计报告
软件设计报告
姓名: 方轶琦
学号: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 2008、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 Expression的工具。在Visual Studio 2008中,来自于Microsoft Expression Web 以及Microsoft Expression 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=0i 图3.1-1 主流程图 图3.1-2冒泡排序流程图 3.1.3逻辑功能程序 具体程序如下: #include 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(“ nn”);printf(“ --------n”);printf(“ | 欢迎使用本系统 | n”);printf(“ --------n”);printf(“ n”);printf(“ -------------请输入学生数--------------nn”);do{ printf(“tt学生数: ”); err=0;i=0; scanf(“%s”,x);//输入选项 getchar(); while(x[i]!=' ')//依次检查输入的字符串是否为数字 { if(x[i]>'9'||x[i]<'0')err=1; i++; } if(err)printf(“ntt请输入数字!n”);}while(err); n=atoi(x);//将字符型数组x转换成整型n for(i=0;i { printf(“ntt请输入第%d个人的信息ntt姓名:”,i+1);scanf(“%s”,std[i].name);getchar();printf(“tt分数:”);scanf(“%d”,&std[i].grade);getchar(); } printf(“输入信息:n”);printf(“----n”);printf(“ 姓名 成绩 nn”);for(i=0;i printf(“ %s %dn”,std[i].name,std[i].gra 软件设计报告 10005808 方轶琦 de);} printf(“nn----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您所输入的学生名次如下:nn”);printf(“ ------------n”);printf(“ 名次 姓名 成绩 nn”);for(i=0;i 第 %d 名 %s %dn”,i+1,std[i].name,std[i].grade);} printf(“nn------------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 //定义产生的字符串最长为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(”nt----n“); length=1+rand()%max_len; rand_str(p,length); printf(”nt----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(”tn“); 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<97); 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(”tn“);} 程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 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(”nnt*** 谢谢使用!****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):nt“);gets(fname);if((fp=fopen(fname,”w“))==NULL){ printf(”不能打开文件!n“); exit(0);} printf(”请输入内容(以#号键结束):n“);ch=getchar();while(ch!='#'){ fputc(ch,fp); ch=getchar();} printf(”nn“);getchar();fclose(fp);Sleep(500);system(”cls“);} void create_file(FILE *fp,char *fname){ 软件设计报告 10005808 方轶琦 printf(”请键入新建的文件名(如D:ame.txt):nt“);gets(fname);if((fp=fopen(fname,”w+“))==NULL){ printf(”不能打开文件!n“); exit(0);} printf(”%s文件已经创建好!nn“,fname);fclose(fp);Sleep(500);system(”cls“);} void read_file(FILE *fp,char *fname){ char ch;printf(”请键入读取的文件名(如D:ame.txt):nt“);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--------nn“);fclose(fp);Sleep(1000);printf(”nn“);} 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 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******************************************************nn“);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(”%sn“,m);for(i=0;i { c[i]=m[i]+key[0]-'0';} printf(”t转换后的码文为:“);printf(”%snn“,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){ 软件设计报告 10005808 方轶琦 printf(”t输入密钥有误(应输入一个字符),请重输:“);scanf(”%s“,key);} { int i,length;length=strlen(c);printf(”t你输入的密文为:“);printf(”%sn“,c);for(i=0;i m[i]=c[i]-(key[0]-'0');//密文反译 } printf(”t破解后的明文为:“);printf(”%snn“,m);} } 3.4.4结果及完善方向 运行结果: 用户输入明文和密钥后,按下“生成密文”后的程序运行结果如图3.4-2所示。 软件设计报告 10005808 方轶琦 图3.4-2密钥运行结果 系统完善 1.当用户明文和密钥输入的不完整,系统会提示要求用户输入完整。2.当用户输入的密钥不在要求的0~9之间,系统会提示用户。如图3.4-3所示。 完善方向 当密钥过大时,生成的密文字符有些无法输出,因此可改进加密算法,更好完善这个加密系统。 3.5 进制转换器(A5) 3.5.1设计题目及要求 设计题目:进制转换器 要求:(1)可输入二进制、八进制、十进制、十六进制数; (2)将已输入的数转换成其余进制的数;(3)具有输入输出界面。3.5.2设计思想及程序流程框图 设计思想: 由题目可以知道,本系统要求实现二、八、十、十六进制数之间的相互转换功能。 (1)、对于数字的显示问题,可以用字符串的形式进行数字的输入输出。在软件设计报告 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 软件设计报告 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(”nt请选择: “);do{ err=0;scanf(”%c“,&x);//输入选项 getchar();if(x>'4'||x<'0')//若输入非法,则重新输入 { err=1;printf(”n输入错误,请重新输入n“);} }while(err);switch(x){ case '1': //输入二进制 do{ err=0;i=0;num=0; printf(”nt请输入二进制数:“);scanf(”%s“,c); getchar(); while(c[i]!=' ')//‘ ’字符结尾 { 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]!=' ')//二进制转换为十进制 { num=num*2; if(c[i]=='1')num=num+1; i++;} 软件设计报告 10005808 方轶琦 printf(”nt二进制数 %s 转换为其他进制:nn“,c); printf(”t********************************************n“); printf(”t八进制: %on“,num);//输出八进制 printf(”t十进制: %dn“,num);//输出十进制 printf(”t十六进制: %xn“,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(”nt请输入八进制数:“); scanf(”%s“,c); getchar(); while(c[i]!=' ') { if(c[i]>'7' || c[i]<'0')err=1;//若输入数据不在0~7间则输入错误 i++; } if(err)printf(”n输入数值错误,不是八进制数!n“); } while(err); i=0; while(c[i]!=' ') { num=num*8; num=num+c[i]-48; i++; } printf(”nt八进制数 %s 转换为其他进制: nn“,c); printf(”t********************************************n“); bishow(num); printf(”t十进制: %dn“,num); printf(”t十六进制: %xn“,num); printf(”t********************************************n“); printf(”是否继续?(任意键继续N键退出)“);scanf(”%c“,&w);getchar();if(w=='N'||w=='n')quitflag=1; break; 软件设计报告 10005808 方轶琦 case '3': //输入十进制 do{ err=0;i=0;num=0; printf(”nt请输入十进制数:“); scanf(”%s“,c); getchar(); while(c[i]!=' ') { if(c[i]>'9' || c[i]<'0')err=1;//若输入数据为非数字符号,则错误 i++; } if(err)printf(”n输入数值错误,不是十进制数!n“); } while(err); i=0; while(c[i]!=' ') { num=num*10; num=num+c[i]-48; i++; } printf(”nt十进制数 %s 转换为其他进制:nn“,c); printf(”t********************************************n“);bishow(num); printf(”t八进制: %on“,num); printf(”t十六进制: %xn“,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(”nt请输入十六进制数:“); scanf(”%s“,c); getchar(); while(c[i]!=' ') { if(c[i]<='9' && c[i]>='0')err=0;//若输入数据为非数字符号,则错误 软件设计报告 10005808 方轶琦 else if(c[i]>='a'&&c[i]<='f')err=0; else if(c[i]>='A'&&c[i]<='F')err=0; else err=1; i++; } if(err)printf(”n输入数值错误,不是十六进制数!n“); } while(err); i=0; while(c[i]!=' ') { num=num*16; if('0'<=c[i]&&c[i]<='9')num=num+c[i]-48; if('a'<=c[i]&&c[i]<='f')num=num+c[i]-97+10; if('A'<=c[i]&&c[i]<='F')num=num+c[i]-65+10; i++; } printf(”nt十六进制数 %s 转换为其他进制:nn“,c); printf(”t********************************************n“);bishow(num); printf(”t八进制: %on“,num); printf(”t十进制: %dn“,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; 软件设计报告 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 进制转换系统界面运行情况 系统的完善 本系统能够较好的完成二、八、十、十六进制数之间的相互转换,并且对可能出现的异常情况进行了处理。例如,当用户选择输入二进制,用户就无法在其 软件设计报告 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 75.5 B10040802 79.5 B10040803 B10040804 80.5 B10040805 83.5 81.5 B10040806 B10040807 B10040808 B10040809 B10040810 B10040811 45.5 B10040812 B10040813 B10040814 B10040815 2.数据结构(用C++实现) 本题中共设计了两个类:学生(Student)和学生成绩(marks)(1)基类学生(Student),定义如下: class Student //基类学生 软件设计报告 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),定义如下: class 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;} //取等级 软件设计报告 10005808 方轶琦 void Computavg();//计算总评成绩 void GetDJ();//计算等级 }mark[100];3.从文件中读入相应的平时成绩、期中考试成绩和期末考试成绩时,用C++中的流实现。 4.每次计算出的结果可在屏幕输出,并把每个学生的总评成绩输入到新文件out.dat文件中,格式为: 学生学号(9位) 总评成绩 成绩等级 例如: B07040801 B 为查询方便,可把总评成绩所处等级(优、良、中、及格、不及格)同时保存在文件out.dat中,分别用字母A、B、C、D、E表示。 5.设计方法:本系统采用自顶向下,逐步细化的方法,将整个系统细化为5个模块:读入文件,计算成绩模块,保存文件模块,计算并输出等级分布模块以及退出模块。根据这个思想,主程序的流程图如3.6-1图所示: 开始显示菜单键盘输入选项读入文件否计算成绩保存文件计算输出等级分布退出系统是否退出系统?是结束图3.7-1主程序流程图 3.6.3逻辑功能程序 具体程序及注释如下: #include char psgra[5]; 软件设计报告 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 15n“); for(i=0;i<15;i++)fprintf(fp,” %-8s %8s %8s %8sn“,std[i].number,std[i].psgra,std[i].qzgra,std[i].qmgra);//%8s表示输出8个字符的字符串,不够8个字符右对齐; fclose(fp); return 0; 软件设计报告 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<15;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<15;i++) 软件设计报告 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(”nn“);} char level(double //判断得ABCDE的条件;{ if(n>=0&&n<60) return 'E'; else if(n>=60&&n<70) return 'D'; else if(n>=70&&n<80) return 'C'; else if(n>=80&&n<90) return 'B'; else return 'A';} 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 15n“); for(i=0;i<15;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(”tttt 南京邮电大学nnn“); printf(”------------------“); printf(”tttt请选择服务类型:ntttt1:输出得A的学生。ntttt2:输出得B的学生。ntttt3:输出得C的学生。n“); printf(”tttt4:输出得D的学生。ntttt5:输出得E的学生。ntttt6:输出总平均成绩。ntttt7:输出学生相应的等级。n“); printf(”tttt8:输出原始成绩。ntttt0:退出n“); printf(”------------------“); scanf(”%d“,&i); printf(”nnn“); 软件设计报告 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(”总平均成绩为:%.2lfnnn“,d/15); //总成绩d/15求平均成绩; system(”pause“); system(”cls“); break; case 7:{ //输出学生的成绩及其等级; printf(” 成绩及相应等级信息n“); printf(” 学号 成绩 等级n“); for(i=0;i<15;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(” 15n“); for(i=0;i<15;i++) { printf(” %-8s %8s %8s “,st[i].number,st[i].psgra,st[i].qzgra); printf(”%10sn“,st[i].qmgra); } system(”pause“); system(”cls“); } break; default: printf(”输入错误,请重新输入。n“); break; } 软件设计报告 10005808 方轶琦 printf(”n“); } }3.6.4结果及完善方向 (一).程序运行结果如下: 1、菜单选择界面如图3.6-2所示。 (三).系统有待完善的方向 该系统还有一些细节有待改进完善。如输出5个等级区间学生学号和成绩时,分别都进行了一个循环,共进行了5个循环,这个算法的时间效率较低。可以改进算法,使其进行一次循环便可输出5个等级的情况。 3.7 模拟电信计费系统的设计与实现(B2) 3.7.1设计题目及要求 设计题目:模拟电信计费系统的设计与实现 要求:(1)、计费功能。根据存放在源数据文件中的通话记录和长途费率文件对每一条通话记录计算其通话费用,并将结果保存在费用文件中。其中:通话费的计算方法如下: 通话费=长途电话费+本地电话费 长途电话费=费率(元/分钟)×通话时长(分钟)(通话时长不满1分钟的按1分钟计算) 软件设计报告 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 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 025 84927038 025 83491234 115 yh.dat 有5条记录 025 58120321 025 87216340 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 软件设计报告 10005808 方轶琦 025 83492200 025 84521009 320 025 83491234 025 85319971 270 025 84927038 025 83491234 231 025 83492200 025 84927038 3.数据结构(用C++实现) 本题共设计了三个类:话单(callist)、费用(charge)和用户(user),类的定义如下: (1)、基类:话单类Callist #include 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;} 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)) 软件设计报告 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 %sn“,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; 软件设计报告 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分钟以内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) //打开通话 软件设计报告 10005808 方轶琦 类型数据并向其写入数据;{ printf(” 文件打开错误!n“); exit(0);} for(i=0;i { fprintf(fp,”%s %d %.2lfn“,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 //查询 //寻找与输入字符串(号码)相匹配的 软件设计报告 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(”tttt用户:%sntttt号码:%sntttt本地话费: %.2lfntttt长途话费:%.2lfntttt总话费: %.2lfn“,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 //比较输入号码与表单中号码是否有符合; 软件设计报告 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(”tttt用户:%sntttt主叫号码:%sntttt被叫电话号码:%sntttt通话时长%s秒n“,na,cali[i].znum,cali[i].bnum,cali[i].longti);//输出话单; return 0; } int main(){ int i; while(1){ printf(”tttt 南京邮电大学nnn“); printf(”------------------“); printf(”tttt 请选择服务类型:ntttt 1:计费功能。ntttt 2:话费查询。ntttt 3:话单查询。ntttt 0:退出服务。n“); printf(”------------------“); scanf(”%d“,&i); if(i==0) //选择服务类型; break; else { 软件设计报告 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所示。 软件程序员是一个工作压力非常大的职业,下面就是小编为您收集整理的软件设计辞职报告的相关文章,希望可以帮到您,如果你觉得不错的话可以分享给更多小伙伴哦! 软件设计辞职报告一 尊敬的领导: 您好! 在经过我长时间的考虑之后,结合我自身的实际情况,我不得不作出辞职申请,因为很多的实际情况,我已经无法继续在公司中工作下去,这些是我不愿意看到的,也是领导不愿意看到的。可是现实就是这样,谁也无法左右,我感到十分的无奈,我会牢记我在今公司中工作的过去的。 入职以后先后在宽带无线接入和gbss维护开发部门工作,xx年年2月正式转正。转正成绩为c。以后的工作中表现正常,两次季度考核都获得c。由于个人的从业经历和专业的问题,对无线产品没有知识积累,但是在工作中我努力学习,积极请教,能够完成公司交给我的任务。 在职期间两个部门的主管对我的生活和工作都非常的关心,经常进行思想交流和技术点拨,使我受益很大,感谢领导们的关心。辞职主要原因是我自身的问题,无法适应目前的工作压力,精神上和身体上已经不勘重负。另一个原因是在华为入职以来一直找不到自己的位置,无法给自己定位。海外的生活使我感觉自己的性格特点和思维方式无法适应华为海外团队的文化。 出于保护自己的目的,特向您提出辞职申请。希望早日回到国内,完成离职手续,有时间调整自己的身体状态和精神状态。我想我会在调养好自己的身体之后,继续不断的努力工作下去的。可是现在的情况是我已经无法继续高质量完成公司的工作了,我只好选择离开,我在今后的工作中一定会更好的工作下去的。前提是我一定要养好自己的身体,我坚信自己能够走好! 请对我个人给予充分的谅解,并批准我的辞职申请,谢谢。 软件设计辞职报告二 尊敬的××领导: 当我在凌晨三点读到这段话时,心里面感慨万千,久不能眠。于是我打开Notebook,给您写了这封辞呈。 去年底开始,去与留这二字,在我心里一直反复。直到我想到了这句话“当您在很难作出选择的时候,您必须尊重发自你内心的声音”。当初进入公司时您对我的满怀期许。而我自持在外企呆过,做事条理清晰,对自已充满信心,看不到自已的短处。想起这些至今令我汗颜。 记得当时我在工作上遇到困难与挫折,我与我夫人商量准备离开公司时。我夫人一句意味深长的话让我留了下来。她说:“您先呆着看看,有的时候坏事它也末必是坏事”。我现在得感激她,因为现在看来,她的话是对的。是她的这句话,使我在工作之余每天都在反省自已的不足之处,并想办法加以弥补。我终于明白了一个道理,一个人在反省中不断完善和超越自我是多么的重要。 IT是一个技术性很强的行业,个人曾经历过一个又一个开发工具从受到大家的追捧到被冷落。最后我发现,我应抓住其中的一些基础的,和永恒的不变因素,即便人人都有权力去选择他感兴趣的部分。因此我努力的找到了自已的兴趣与擅长。并不断努力的学习。 在这三年的工作时间里曾经有过的激情,迷惘,彷徨,和温暖,感悟,奋进。父亲交给我的坚毅,诚实的心态使我在这些过程中坚难的走了过来,并在工作中,生活中不断的修正自已,努力的提高自已的认识。我也并因此而重拾生活的信心。 回首过去,当我想到要有足够的胸怀来接受你不能改变的事情,要有足够的勇气来改变你能改变的事情,要有足够的智慧来区分二者的不同.时,我恍然大悟,原来是因为自已的胸怀不够.人生无法重来,但是可以随时重新来,我有选择的权力.....曾记起研究开发部的朝气,热情。技术工程部的和谐,沉稳,责任。这些都给我留下难以磨灭的印象,它已深深的印在我的脑海里,也必将让我时常想起一起共事过的各位同仁。 最后我发自内心地—— 感谢和一起工作过的同仁,我曾经和他们度过了一段非常快乐的,令我难忘的时光。 感谢您这几年来对我的厚爱,对我自身存在缺点的包容,以及对我在工作中所犯错误的指正。您那颗正直的心,满怀激情的人生态度、宽广的胸怀、机敏的处事方式、必将令我受用终身。 也正因此,我祝愿您,您也必将用您的智慧引领公司走向一个更加高远的,全新的末来。 ×× 敬上第五篇:软件设计辞职报告