软件设计报告_第1页
软件设计报告_第2页
软件设计报告_第3页
软件设计报告_第4页
软件设计报告_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件设计报告 姓名 姓名 方方轶轶琦琦 学号 学号 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 结果及完善方向 8 3 2打字软件 A2 9 3 2 1 设计题目及要求 9 3 2 2 设计思想及程序流程框图 9 3 2 3 逻辑功能程序 10 3 2 4 结果及完善方向 12 3 3文本编辑器 A3 13 3 3 1 设计题目及要求 13 3 3 2 设计思想及程序流程框图 13 3 3 3 逻辑功能程序 14 3 3 4 结果及完善方向 17 3 4加密软件 A4 18 3 4 1 设计题目及要求 18 3 4 2 设计思想及程序流程框图 19 3 4 3 逻辑功能程序 19 3 4 4 结果及完善方向 21 3 5进制转换器 A5 22 3 5 1 设计题目及要求 22 3 5 2 设计思想及程序流程框图 22 3 5 3 逻辑功能程序 24 3 5 4 结果及完善方向 29 3 6学生成绩核算系统的设计与实现 B1 30 3 6 1 设计题目及要求 30 3 6 2 设计思想及程序流程框图 30 3 6 3 逻辑功能程序 32 3 6 4 结果及完善方向 42 3 7模拟电信计费系统的设计与实现 B2 48 3 7 1 设计题目及要求 48 3 7 2 设计思想及程序流程框图 48 3 7 3 逻辑功能程序 50 3 7 4 结果及完善方向 66 第四章 心得体会 72 软件设计报告 方轶琦 1 软件设计介绍软件设计介绍 一 一 软软件件的的设设计计概概念念 软件设计是把许多事物和问题抽象起来 并且抽象它们不同的 层次和角度 建议用数学语言来抽象事务和问题 因为数学是最好 的抽象语言 并且它的本质就是抽象 将复杂的问题分解成可以管 理的片断会更容易 将问题或事物分解并模块化这使得解决问题变 得容易 分解的越细模块数量也就越多 它的副作用就是使得设计 者考虑更多的模块之间耦合度的情况 二 软件设计的性质 目的 二 软件设计的性质 目的 本课程是一门技能训练课 为在校学生的必修课程 通过设计 培养学生良好的编程习惯 使学生掌握编程的基本步骤 规范学生 的编写程序的格式 锻炼学生编写程序的能力 为将来编写较大程 序的打好基础 三 软件设计总时间 三 软件设计总时间 二周 四 实验设备 四 实验设备 南京邮电大学微机室微机 五 软件设计的任务五 软件设计的任务 通过集中时间上机实验 使学生充分发挥已有的编程能力 熟 悉编译环境 选择若干课题 进行审题 分析 设计和调试 并根 据要求写出实验报告 六 实验内容六 实验内容 软件设计课题共分 A B 两档 A 档共 5 题 第一周完成 B 档共 2 题 第二周完成 软件设计报告 方轶琦 2 第二章第二章 软件开发平台简介软件开发平台简介 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 软件设计报告 方轶琦 3 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 中进行导入导出的操作 这就意味着开发人员和设计人员可以实时 的进行无缝协作 并且不用担心用户界面设计更改所引起的开发问题 软件设计报告 方轶琦 4 第三章第三章 软件设计的内容软件设计的内容 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所示 软件设计报告 方轶琦 5 开始 输入学生 信息 排序删除重新开始结束 开始 结束 N 学生数 i 0 ii score j 1 score j 交换score j 1 score j 交换name j 1 namE j k j i k j j 1 k N N N N Y Y Y 图 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 软件设计报告 方轶琦 6 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 0 err 1 i if err printf n t t 请输入数字 n while err n atoi x 将字符型数组 x 转换成整型 n for i 0 i n i 循环 N 次输入学生信息 printf n t t 请输入第 d 个人的信息 n t t 姓名 i 1 scanf s std i name getchar printf t t 分数 scanf d getchar printf 输入信息 n printf n printf 姓名 成绩 n n for i 0 i n i printf s d n std i name std i grade 软件设计报告 方轶琦 7 printf n n n printf n 排序后信息 n for m 0 m n m for i 0 i n m 1 i if std i grade std i 1 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 n i printf 第 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 软件设计报告 方轶琦 8 图图 3 1 4 图 3 1 3 运行结果 系统的完善 系统的完善 软件设计报告 方轶琦 9 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 所示 开始 产生随机字符串 用户输入字符串 计算正确率 结束 结束 Y N 图 3 2 1 主流程图 软件设计报告 方轶琦 10 界面按钮功能设计思想 开始 按下后 首先清空界面的三个输入文 本框 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 软件设计报告 方轶琦 11 else printf t 输入有误 您本次输入正确率 0 2g n flag 100 printf t n getchar printf t 您还继续吗 请按任意键继续或者按 N 键结束 scanf s ch while ch 0 N printf t return 0 void rand str char p int length int i char ch printf t for i 0 i90 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 length j if p j s j 0 number number 1 rate 1 0 number length 软件设计报告 方轶琦 12 return rate void display printf t n printf t n printf t 欢迎进入打字练习程序 n printf t n printf t n printf t n 3 2 4 结果及完善方向结果及完善方向 程序运行结果程序运行结果 软件设计报告 方轶琦 13 用户按下开始按钮后 输入字符串 最后按下确定按钮的程序运行情况如 图 3 2 3 所示 按下开始按钮 输入字符串后按下确定按钮 图 3 2 2 程序运行结果 系统的完善系统的完善 最初编写的程序中存在输出正确率的 BUG 就是在用户输入字符串的前半 段和系统的字符串一样 而后面又多输入了其他字符 这时算出的正确率是 100 这在常理上是不正确的 发现错误后 更正了正确率的计算方法 当用户输入的字符串长度小于或等于系统产生的字符串长度时 正确率的 计算方法为 正确率 系统产生的字符串长度 母数与系统字符串相同的字 当用户输入的字符长于系统字符串长度时 正确率的计算方法为 正确率 用户输入的字符串长度 母数与系统字符串相同的字 这样就避免了之前的错误情况 完善方向完善方向 本打字系统仍然有需要完善的地方 如可增加计时系统 这样就增加了打 字程序的趣味性 系统中正确率的计算方法也有待改进 3 3 文本编辑器 文本编辑器 A3 3 3 1 设计题目及要求设计题目及要求 设计题目 文本编辑器 要求 1 编辑文本 软件设计报告 方轶琦 14 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 软件设计报告 方轶琦 15 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 软件设计报告 方轶琦 16 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 name 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 软件设计报告 方轶琦 17 printf 请键入新建的文件名 如D name 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 name 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 结果及完善方向结果及完善方向 软件设计报告 方轶琦 18 软件设计报告 方轶琦 19 系统完善方向系统完善方向 这次设计的文本编辑器基本上能够较好的模拟出 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 显示函数 软件设计报告 方轶琦 20 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 软件设计报告 方轶琦 21 break 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 i1 软件设计报告 方轶琦 22 printf t 输入密钥有误 应输入一个字符 请重输 scanf s key int i length length strlen c printf t 你输入的密文为 printf s n c for i 0 i length i m i c i key 0 0 密文反译 printf t 破解后的明文为 printf s n n m 3 4 4 结果及完善方向结果及完善方向 运行结果 运行结果 用户输入明文和密钥后 按下 生成密文 后的程序运行结果如图 3 4 2 所 示 软件设计报告 方轶琦 23 图 3 4 2 密钥运行结果 系统完善系统完善 1 当用户明文和密钥输入的不完整 系统会提示要求用户输入完整 2 当用户输入的密钥不在要求的 0 9 之间 系统会提示用户 如图 3 4 3 所示 完善方向完善方向 当密钥过大时 生成的密文字符有些无法输出 因此可改进加密算法 更 好完善这个加密系统 3 5 进制转换器 进制转换器 A5 3 5 1 设计题目及要求设计题目及要求 设计题目 进制转换器 要求 1 可输入二进制 八进制 十进制 十六进制数 2 将已输入的数转换成其余进制的数 3 具有输入输出界面 3 5 2 设计思想及程序流程框图设计思想及程序流程框图 设计思想 由题目可以知道 本系统要求实现二 八 十 十六进制数之间的相互转 换功能 1 对于数字的显示问题 可以用字符串的形式进行数字的输入输出 在 软件设计报告 方轶琦 24 系统内部进行转换前 利用 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 软件设计报告 方轶琦 25 printf t 欢迎数制转换系统 n 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 输入选项 getchar if x 4 x 7 c i 9 c i 0 err 1 若输入数据为非数字符号 则错误 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 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 若输入数据为非数字符号 则 软件设计报告 方轶琦 28 错误 else if c i a else err 1 i if err printf n输入数值错误 不是十六进制数 n while err i 0 while c i 0 num num 16 if 0 c i if a c i if A c i 输出二进制数 printf n 3 5 4 结果及完善方向结果及完善方向 程序运行结果 程序运行结果 图 3 5 3 进制转换系统界面运行情况 系统的完善系统的完善 本系统能够较好的完成二 八 十 十六进制数之间的相互转换 并且对 软件设计报告 方轶琦 30 可能出现的异常情况进行了处理 例如 当用户选择输入二进制 用户就无法 在其他进制的文本框内输入数据 还有 如果用户要键入非该进制内的字符 用户的键入将无效 非法字符将无法输入到文本框内 这样的设计能方便用户 操作 系统还有一些地方有待完善 比如 用户输入的字符串的最大长度需要进 行一定的限制等等 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 B 88 75 5 66 B 91 79 5 76 B 85 75 77 B 79 82 80 5 B 94 83 5 81 5 B 80 69 68 B 82 77 71 B 77 57 58 B 91 88 86 B 96 89 90 B 70 45 5 50 B 74 65 66 B 81 71 76 B 83 75 77 B 85 78 79 2 数据结构 用 C 实现 本题中共设计了两个类 学生 Student 和学生成绩 marks 软件设计报告 方轶琦 31 1 基类学生 Student 定义如下 class Student 基类学生 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 取期末成绩 软件设计报告 方轶琦 32 float getavg return avg 取总评成绩 char getdengj return dengj 取等级 void Computavg 计算总评成绩 void GetDJ 计算等级 mark 100 3 从文件中读入相应的平时成绩 期中考试成绩和期末考试成绩时 用 C 中的流实现 4 每次计算出的结果可在屏幕输出 并把每个学生的总评成绩输入到新文 件 out dat 文件中 格式为 学生学号 9 位 总评成绩 成绩等级 例如 B 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 软件设计报告 方轶琦 33 char number 10 char psgra 5 char qzgra 5 char qmgra 5 int information FILE fp int i struct student std 15 B 88 75 5 66 B 91 79 5 76 B 85 75 77 B 79 82 80 5 B 94 83 5 81 5 B 80 69 68 B 82 77 71 B 77 57 58 B 91 88 86 B 96 89 90 B 70 45 5 50 B 74 65 66 B 81 71 76 B 83 75 77 B 85 78 79 if fp fopen note dat w NULL printf 文件打开错误 n exit 0 fprintf fp 学号 平时成绩 期中成绩 期末成绩 n 15 n for i 0 i 15 i fprintf fp 8s 8s 8s 8s n std i number std i psgra std i qzgra std i qmgra 8s 表示输出 8 个字符的字符串 不够 8 个字符右对齐 fclose fp 软件设计报告 方轶琦 34 return 0 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 读取一个字节的 fp1 指针 fread 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 软件设计报告 方轶琦 35 printf 得等级 c 的学生及其分数 n ch for i 0 i 0 else return A 软件设计报告 方轶琦 36 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 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 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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论