最新软件设计报告 免费下载.doc_第1页
最新软件设计报告 免费下载.doc_第2页
最新软件设计报告 免费下载.doc_第3页
最新软件设计报告 免费下载.doc_第4页
最新软件设计报告 免费下载.doc_第5页
已阅读5页,还剩54页未读 继续免费阅读

最新软件设计报告 免费下载.doc.doc 免费下载

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

文档简介

软件设计报告 姓名 姓名 学号 学号 2014 年年 6 月月 23 日 日 2012 年年 7 月月 4 日日 目目 录录 第一章 软件设计介绍 1 第二章 软件开发平台简介 2 第三章软件设计的内容 3 3 1分数统计软件 A1 3 3 1 1 设计题目及要求 3 3 1 2 设计思想及程序流程框图 3 3 1 3 逻辑功能程序 3 3 1 4 结果及完善方向 3 3 2打字软件 A2 3 3 2 1 设计题目及要求 3 3 2 2 设计思想及程序流程框图 3 3 2 3 逻辑功能程序 3 3 2 4 结果及完善方向 3 3 3文本编辑器 A3 3 3 3 1 设计题目及要求 3 3 3 2 设计思想及程序流程框图 4 3 3 3 逻辑功能程序 4 3 3 4 结果及完善方向 4 3 4加密软件 A4 4 3 4 1 设计题目及要求 4 3 4 2 设计思想及程序流程框图 4 3 4 3 逻辑功能程序 4 3 4 4 结果及完善方向 4 3 5进制转换器 A5 4 3 5 1 设计题目及要求 4 3 5 2 设计思想及程序流程框图 4 3 5 3 逻辑功能程序 4 3 5 4 结果及完善方向 5 3 6学生成绩核算系统的设计与实现 B1 5 3 6 1 设计题目及要求 5 3 6 2 设计思想及程序流程框图 5 3 6 3 逻辑功能程序 5 3 6 4 结果及完善方向 5 3 7模拟电信计费系统的设计与实现 B2 5 3 7 1 设计题目及要求 5 3 7 2 设计思想及程序流程框图 5 3 7 3 逻辑功能程序 5 3 7 4 结果及完善方向 5 第四章 心得体会 6 第一章第一章 软件设计介绍软件设计介绍 一 所涉及的课程及知识点 高级语言程序设计 常量 变量 表达式的基本知识 函数的定义与调用 文件 读写 数组 指针 结构体等自定义类型的使用 排序等知识 二 目的与任务 目的 目的 通过集中时间上机实验 对学生的程序设计能力进行一次综合训练 使学生充 分发挥已有的编程能力 熟悉编译环境 选择若干课题 进行审题 分析 设计和调试 在程序准备 程序实现 完成文档 答辩验收过程中 将全面巩固已学过的编程知识 全 面提高编程技能 在编程风格 调试器的使用 测试技术等方面得到全面训练 学生在程 序设计过程中 学生需要查找各种资料获取有用信息解决实际问题 自学相关知识 提高 文档书写能力 加强团队合作意识 提高口头表达能力 任务 任务 软件设计 课题共分 A B 两档 A 档共 5 题 题目较简单 第一周完成 B 档共 2 题 题目是综合性的 较复杂 第二周完成 三 考核及报告要求考核及报告要求 1 1 考核考核 根据学生平时的上机出勤情况 为上机所作的准备情况 上机时的表现 程序的完成 情况 验收答辩时的表现 报告的完成情况等综合打分 等级为 优秀 良好 中等 及 格 不及格 2 2 报告要求报告要求 报告以电子版形式递交 要求书写规范 文字简练 语句通顺 图表清晰 见本大纲 最后的一个软件设计报告样例 四 主要仪器设备 硬件 硬件 微型计算机 软件 软件 C C Visual C 等 五 参考书 参考书参考书 1 朱立华 王立柱 C 语言程序设计 北京 人民邮电出版社 2009 2 朱立华 朱建 俞琼 面向对象程序设计及 C 北京 人民邮电出版社 2008 3 张引等 C 程序设计基础课程设计 浙江 浙江大学出版社 2007 第二章第二章 软件开发平台简介软件开发平台简介 本次实验所用的开发软件是 Microsoft Visual C 6 0 Visual C 是一个功能强大的可视化软件开发工具 自 1993 年 Microsoft 公司推出 Visual C 1 0 后 随着其新版本的不断问世 Visual C 已成为专业程序员进行软件开发 的首选工具 虽然微软公司推出了 Visual C NET Visual C 7 0 但它的应用的很大的局限性 只适用于 Windows 2000 Windows XP 和 Windows NT4 0 所以实际中 更多的是以 Visual C 6 0 为平台 VC 6 集成开发环境中集成了编辑器 编译器 连接器以及调试程序 覆盖了的开发 应用程序的整个过程 与开发其他高级语言的程序一样 开发一个 C C 语言程序包括编辑 编译 链接和 运行几个步骤 1 编辑 编辑是将编写好的 C C 语言源程序通过输入设备录入到计算机保存 生成扩展名为 c 或 cpp 的源程序文件 编辑源程序的方法有两种 一种是选用 C 集成开发环境中的编 辑器 这是最常用的方法 另一种是使用计算机中的其他文本编辑器 如写字板 记事本 等 2 编译 编译是将已生成的 C C 语言源程序代码转换为机器可识别的目标代码 即二进制代 码 生成相应的扩展名为 obj 的目标文件 编译又包括预处理和编译两个子过程 先执 行程序中的以 开头的预处理命令进行预处理 然后再进行正常的编译过程 在编译过程中 主要进行词法和语法分析 发现有不符合的 及时以 error 或 warning 信息提示用户 用 户必须重新修改源程序文件直至编译正确才能进行下面的步骤 3 链接 链接是在编译生成的目标代码中加入某些系统提供的库文件代码 进行必要的地址链 接 最后生成扩展名为 exe 的可执行文件 4 运行 生成了可执行文件后就可以运行程序 运行程序的方法很多 最常用是选择集成环境 中的 运行 命令来运行可执行文件 另一种方法是在 MS DOS 提示符后直接键入可执行文 件名 如果主函数有形式参数 则应提供实在参数 按回车确认 运行后在显示器上显示 结果 需要说明的是 在以上 4 个过程中都有可能出错 无论是哪一个阶段出了错 都应该 回到编辑步骤 因为如果源文件有错 就无法保证后面各步生成正确的文件 如果是运行 期出错 则程序存在逻辑上的错误 要借助调试器找出错误才能保证源程序的修改正确 C 语言程序的开发在特定的集成开发环境下进行 集成环境中提供了编辑器 编译器 链接器 调试器等多种工具 使得程序员从源程序的编辑到最后的运行均可在集成环境中 完成 第三章第三章 软件设计的内容软件设计的内容 3 1 分数统计软件 分数统计软件 A1 3 1 1 设计题目及要求设计题目及要求 课题内容 课题内容 设计一个分数统计程序 包括学生信息的输入输出以及排序 通过该课题全面熟悉结 构体数组 字符串的使用以及排序的方法 掌握程序设计的基本方法及友好界面的设计 课题要求 课题要求 1 输入某班级学生的姓名 分数 2 对 1 的分数进行降幂排列并输出 3 具有输入输出界面 3 1 2 设计思想及程序流程框图设计思想及程序流程框图 设计思想设计思想 1 建立一个 student 结构体 包含数据成员姓名 分数 分别用于存放学生的姓名和分 数 2 输入学生人数和基本信息 3 采用选择排序法对学生分数进行排序 通过循环比较 a i score 和 s j score 的大小并 交换顺序实现分数的降序排列 4 通过菜单选择程序的功能 程序流程图程序流程图 1 系统整体框图系统整体框图 开始 选择 输入 choice 2 降序输出 成绩 其他选择 退 出系统 退出系统 主菜单 0 退出 2 降序输出成绩 1 输入学生信 息 选择 输入 choice 2 排序过程排序过程 3 1 3 逻辑功能程序逻辑功能程序 include include include struct Student char name 20 double grades typedef struct Student Student void Display printf 主菜单主菜单 n i 0 i n 1 输出排序结果 结束 j i j n i a i score a j score j 交换 a i 和 a j N Y Y N Y N 开始 退出系统 printf 0 退出 退出 1 输入学生信息 输入学生信息 2 降序输出成绩 降序输出成绩 n printf n printf 请选择请选择 0 1 2 int Input Student pa int m i p 1 printf 请输入学生人数 请输入学生人数 scanf d for i 0 i m i printf name d p scanf s printf grades d p scanf Lf p printf 输入完毕输入完毕 n return m void SelectSort Student pa int n int i j max k Student temp for i 0 i n 1 i max i for j i 1 jpa max grades max j if max i temp pa i pa i pa max pa max temp printf 降序排列为 降序排列为 n for k 0 k n k printf s g n pa k name pa k grades void main int choice int a 0 Student sa sa struct Student malloc a sizeof struct Student printf 欢迎进入学生成绩统计系统欢迎进入学生成绩统计系统 n printf n Display scanf d switch choice case 1 a Input sa printf n Display scanf d if choice 2 break else case 2 SelectSort sa a break case 0 printf 退出退出 n printf 谢谢使用谢谢使用 n 3 1 4 结果及完善方向结果及完善方向 主菜单 选择 1 输入学生信息 若再选择 2 降序输出学生成绩 若再选择其他 则退出系统 程序分析 程序分析 此程序功能上满足基本的题目要求 能够做到输入学生的姓名和成绩 能够按成绩降 幂排列并输出 完善方向完善方向 基本功能已实现 对于实际的系统 接下来完善的功能的是能够选择不同的科目进行输 入 能够选择进行降幂或者升幂排序 同时能添加或删除学生信息 对于成绩相同的学生进 行并列排名 3 2 打字软件 打字软件 A2 3 2 1 设计题目及要求设计题目及要求 课题内容 课题内容 设计一个打字程序 包括随机产生字符串 以及字符串比较和统计 通过此课题 熟 练掌握数组 格式输出 字符串处理等 课题要求 课题要求 1 随机产生一字符串 每次产生的字符串内容 长度都不同 2 根据 1 的结果 输入字符串 判断输入是否正确 输出正确率 3 具有输入输出界面 3 2 2 设计思想及程序流程框图设计思想及程序流程框图 设计思想设计思想 1 利用随机函数产生随机数作为产生的字符串长度 2 利用随机函数产生随机数 0 1 用于控制产生小写字母 大写字母的随机性 并产 生随机字符串 3 建立新的数组 用户输入字符串 4 用户输入字符串与随机字符串对比统计 若两者字符个数相同 则直接计算出正确率 否则提示字符串长度不对 退出系统 程序流程图 程序流程图 1 系统整体框图系统整体框图 j 0 j length j length 开始 flag rand 2 产生随机数 length 为字符串的长度 origin j a rand 26 origin j A rand 26 j Y N 输出随机字符串 输入字符串 guess n k strlen guess 提示字符串长度不 对 统计输出正确率 退出系统 N Y flag 1 flag 0 k length 2 正确率统计流程图 正确率统计流程图 Y Y 3 2 3 逻辑功能程序逻辑功能程序 include include include include int main char origin 20 char guess 20 int length int flag int right 0 float r int k j i n srand time NULL length rand 15 1 printf 欢迎进入打字程序系统欢迎进入打字程序系统 n printf n printf the string s length is d n length n 0 n length Guess i origin i n right r float right length 输出正确率 for j 0 j length j flag rand 2 if flag origin j a rand 26 else origin j A rand 26 随机输入随机输入 26 个字母大小写任意个字母大小写任意 printf the original string is for i 0 i length i printf c origin i printf nplease guess the string scanf s guess k strlen guess if k length printf length error n return 0 for n 0 n length n if origin n guess n right printf the right number is d n right r float right length printf 你的正确率是你的正确率是 f n r printf 谢谢使用 谢谢使用 n return 0 3 2 4 结果及完善方向结果及完善方向 打字前的界面 输入正确长度的字符串 显示正确率 输入的字符串长度错误 显示 length error 程序结果分析 程序结果分析 此程序功能上满足题目的基本要求 能够产生随机的字符串 每次产生的字符串内容 长 度都不同 能够判断输入是否正确 能够输出正确率 程序完善方向 程序完善方向 对于这个程序 不足的就是可以添加计时功能 在打字前 可以询问用户是否进行计时 还可以添加功能 由用户自己选择可从从其他文件导入一段字符串 3 3 文本编辑器 文本编辑器 A3 3 3 1 设计题目及要求设计题目及要求 课题内容 课题内容 设计一个简单的文本编辑器 通过此课题 熟练掌握文本文件的操作及用字符数组或 字符指针实现字符串操作的功能 课题要求 课题要求 1 编辑文本 2 保存 打开指定位置的文本文件 3 具有输入输出界面 3 3 2 设计思想及程序流程框图设计思想及程序流程框图 系统整体框图系统整体框图 3 3 3 逻辑功能程序逻辑功能程序 include include int main int choice char filepath 30 char ch FILE fp printf 欢迎进入文本编辑器系统欢迎进入文本编辑器系统 n n printf 0 退出系统 退出系统 1 写入并保存文件 写入并保存文件 2 读取文件读取文件 n printf 请选择 请选择 0 1 2 scanf d switch choice case 1 printf 请输入文件路径请输入文件路径 scanf s filepath fp fopen filepath w 以写的方式建立一个新的文本文件以写的方式建立一个新的文本文件 if fp 开始 choice 1 写入一 个新的文本文 件并保存 0 退出2 读取文本文 件 结束 退出 结束 退出 printf 文件没有正常打开文件没有正常打开 n exit 1 文件没有正常打开文件没有正常打开 printf 请输入内容请输入内容 以以 结束结束 n ch getchar while ch fputc ch fp ch getchar fclose fp printf n 文件已保存文件已保存 n break case 2 printf 请输入文件路径请输入文件路径 scanf s filepath 输入路径输入路径 fp fopen filepath r if fp printf 文件没有正常打开文件没有正常打开 n exit 1 printf n 文件内容如下 文件内容如下 n rewind fp 返回文件首 输出整个文件的内容返回文件首 输出整个文件的内容 do ch fgetc fp putchar ch while ch EOF fclose fp break case 0 printf 退出系统退出系统 n break printf n 谢谢使用此系统谢谢使用此系统 n 3 3 4 结果及完善方向结果及完善方向 进入系统的界面 选择 1 输入文件路径 写入文件内容并保存 选择 2 读取文件内容 选择 0 退出系统 程序结果分析 程序结果分析 此程序在功能上基本满足要求 能实现文本文档的的写入 保存和读取 程序完善方向 程序完善方向 没能实现文档的插入 删除 查找等功能 软件用起来会不方便 3 4 加密软件 加密软件 A4 3 4 1 设计题目及要求设计题目及要求 课题内容 课题内容 设计一个加密程序 包括明文与密钥的转换 通过此课题 熟练掌握数组 格式输出 字符串处理 类型转换等 课题要求 课题要求 1 输入任意一段明文 M 以及密钥 K 2 根据以下公式将其转换为密文 C Ci mi K 其中 i 0 1 n 1 K 为密钥 3 具有输入输出界面 3 4 2 设计思想及程序流程框图设计思想及程序流程框图 设计思想设计思想 1 输入明文和密钥字符串 2 运用公式 Ci mi K 其中 i 0 1 n 1 K 为密钥 进行加密 3 解密是加密的逆运算 程序流程图程序流程图 1 程序整体框图程序整体框图 开始 choice 0 退出系统 1 加密 2 解密 输入明文 输入密钥 输出加密结果 输入密文 输入密钥 输出解密结果 3 4 3 逻辑功能程序逻辑功能程序 include include include void jiami char a char c 100 int i k l l strlen a printf 输入密钥输入密钥 scanf d for i 0 i l i c i a i k c l 0 printf 加密结果加密结果 printf s n c void jiemi char b char d 100 int i l k l strlen b printf 输入密钥输入密钥 scanf d for i 0 i l i d i b i k d l 0 printf 解密结果解密结果 puts d int main int choice char a 100 b 100 printf 欢迎进入加密系统欢迎进入加密系统 n n printf 0 退出系统 退出系统 1 加密 加密 2 解密 解密 n printf 请输入你的选择 请输入你的选择 scanf d switch choice case 1 printf 请输入原文请输入原文 getchar gets a jiami a break case 2 printf 输入密文 输入密文 getchar gets b jiemi b break case 0 printf 退出系统退出系统 break printf n 谢谢使用谢谢使用 return 0 3 4 4 结果及完善方结果及完善方向向 选择 2 解密 选择 1 加密 选择 0 退出系统 程序结果分析 程序结果分析 此程序基本完成功能 能实现字符串的加密与解密 具有较友好的界面 程序完善方向 程序完善方向 此程序完成的是一个十分简单的加密过程 在实际生活中没有应用价值 应该往更复杂 和专业的加密解密模块发展 3 5 进制转换器 进制转换器 A5 3 5 1 设计题目及要求设计题目及要求 课题内容 课题内容 设计一个进制转换器程序 包括二进制 八进制 十进制 十六进制数互相转换 通 过此课题 熟练掌握字符串 格式输出 进制换算的各种操作 课题要求 课题要求 1 可输入二进制 八进制 十进制 十六进制数 2 将已输入的数转换成其余进制的数 3 具有输入输出界面 3 5 2 设计思想及程序流程框图设计思想及程序流程框图 设计思想设计思想 1 除十进制外 其他进制按照字符串方式输入 2 输入一个进制后 首先验证它的合法性 3 验证合法之后首先转为一个十进制的数 再根据这个十进制的数输出其他进制的 数 整体结构流程图整体结构流程图 开始 输出界面 choice 1 二进 制 2 八进 制 3 十进 制 4 十六 进制 5 退出 转为其 他进制 输出 转为其他 进制输出 转为其 他进制 输出 转为其他 进制输出 3 5 3 逻辑功能程序逻辑功能程序 include include include void zhuan2 int k 十进制转换成二进制数十进制转换成二进制数 int b 30 int i 0 while k b i k 2 取余数取余数 k k 2 取相除的整数商取相除的整数商 i i printf 二进制二进制 if k 0 printf d 0 while i 0 printf d b i 输出二进制数输出二进制数 printf n void display printf 欢迎进入进制转换系统欢迎进入进制转换系统 n printf n printf 1 二进制二进制 n printf 2 八进制八进制 n printf 3 十进制十进制 n printf 4 十六进制十六进制 n printf 0 退出退出 n printf n printf 请选择请选择 int main char m 100 int x f 0 int n 0 int choice int i 0 display scanf d switch choice case 1 f 0 while f i 0 f 1 printf 请输入二进制数 请输入二进制数 scanf s m getchar while m i 0 if m i 1 若输入数字不为若输入数字不为 1 或或 0 则输入错误则输入错误 i if f printf 您输入数值错误 不是二进制数您输入数值错误 不是二进制数 请重输请重输 n i 0 while m i 0 二进制转换为十进制二进制转换为十进制 n n 2 if m i 1 n n 1 i printf n 二进制数二进制数 s 转换为其他进制结果如下 转换为其他进制结果如下 n m printf 八进制 八进制 o n n printf 十进制 十进制 d n n printf 十六进制 十六进制 x n n break case 2 f 0 while f f 1 i 0 printf 请输入八进制数 请输入八进制数 scanf s m getchar while m i 0 if m i 7 m i 0 f 0 i if f printf 输入数值错误 不是八进制数输入数值错误 不是八进制数 请重输请重输 n i 0 while m i 0 n n 8 n n m i 48 i printf n 八进制数八进制数 s 转换为其他进制结果如下 转换为其他进制结果如下 n m zhuan2 n printf 十进制 十进制 d n n printf 十六进制 十六进制 x n n break case 3 printf 请输入十进制数 请输入十进制数 scanf d printf n 十进制数十进制数 d 转换为其他进制结果如下 转换为其他进制结果如下 n x zhuan2 x printf 十进制 十进制 d n x printf 十六进制 十六进制 x n x break case 4 f 0 while f i 0 f 1 printf 请输入十六进制数 请输入十六进制数 scanf s m getchar while m i 0 else if m i a else f 0 if f printf 输入数值错误 不是十六进制数输入数值错误 不是十六进制数 请重输请重输 n i i 0 while m i 0 n n 16 if 0 m i if a m i if A m i i printf n 十六进制数十六进制数 s 转换为其他进制 转换为其他进制 n m zhuan2 n printf 八进制 八进制 o n n printf 十进制 十进制 d n n break case 0 printf 退出退出 n break printf n 谢谢使用谢谢使用 n return 0 3 5 4 结果及完善方向结果及完善方向 选择 1 输入的是二进制 选择 2 输入的是八进制 选择 3 输入的是十进制 选择 4 输入的是十六进制 选择 0 退出系统 程序结果分析 程序结果分析 本程序基本实现功能 且能实现 16 以下的任意进制间的相互转换 在输入非法进制数 时能报错提醒 并可以多次转换 程序完善方向 程序完善方向 本程序只能实现整数进制之间的转换 应对代码进行进一步优化 以实现小数进制间 的相互转换 数字的大小受到一定的限制 可以尝试用数组解决大数间进制转换问题 题 输出界面可以进一步美化 3 6 学生成绩核算系统的设计与实现 学生成绩核算系统的设计与实现 B1 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 建立一个 stu 结构体 包含学生学号 平时成绩 期中成绩 期末成绩 总评成 绩 等级结构体常量 2 从文件中读出数据赋给结构体相应的变量 对数据进行计算得出综合成绩 等级 赋给相应结构体变量 3 查询时 通过不断比较结构体中的学号名与输入的学号找出该学号对应的的结构 体变量 对期中的数据进行处理输出 程序流程图 程序流程图 1 程序系统框图程序系统框图 开始 输入选项 choice 1choice 2 choice 3 choice 4choice 5 choice 6choice 7choice 0 从文 件中 读取 数据 计算 并显 示成 绩 按 等级 查询 按总 评成 绩排 序 按 学号 查询 等级 列表 保存 到文 件 退出系统 结束 按 任 意 键 返 回 主 菜 单 输入错误 2 查询部分程序流程 以查询学号为例 查询部分程序流程 以查询学号为例 输入待查询学号 temp 10 i 0 i90 计算总评成绩 list i score list i s1 0 3 list i s2 0 3 list i s3 0 4 输出 i amount i 0 N Y Y N 结束 开始 3 6 3 逻辑功能程序逻辑功能程序 include include include include struct stu char code 10 float s1 s2 s3 double score char grade temp void set printf 1 从文件读取数据 从文件读取数据 n printf 2 计算并显示成绩 计算并显示成绩 n printf 3 按等级查询 按等级查询 n printf 4 按总评成绩排序 按总评成绩排序 n printf 5 按学号查询 按学号查询 n printf 6 等级列表 等级列表 n i list i grade E list i grade D list i score 60 list i grade C list i score 70 list i grade B list i score 80 N Y N Y N Y printf 7 保存到文件 保存到文件 n printf 0 退出系统 退出系统 n n printf 请选择功能 请选择功能 void display printf 欢迎进入成绩核算系统欢迎进入成绩核算系统 n printf n n int readfile struct stu list int n int i 0 FILE fp fp fopen D note dat txt r fscanf fp d for i 0 i n i fscanf fp s f f f list i code printf n n printf 学号学号 平时成绩平时成绩 期中成绩期中成绩 期末成绩期末成绩 n printf n for i 0 i n i printf s 5 1lf 5 1lf 5 1lf n list i code list i s1 list i s2 list i s3 printf n printf n n 读取文件成功读取文件成功 按任意键继续按任意键继续 n getch fclose fp return n void view struct stu list int amount int i 0 double average 0 printf n n printf 学号学号 平时平时 期中期中 期末期末 总分总分 等级等级 n printf n for i 0 i amount i average list i score printf 10s 6 1f 6 1f 6 1f 6 1f c n list i code list i s1 list i s2 list i s3 list i score list i grade printf n average amount printf 本班总人数本班总人数 d 本班平均成绩本班平均成绩 1f n amount average printf n n n n n 按任意键继续按任意键继续 n getch void paixu struct stu list int amount double temp float temp3 char temp1 char temp2 10 int i j for i 0 i amount i for j i 1 jlist i score 比较分数比较分数 temp list j score list j score list i score list i score temp strcpy temp2 list j code strcpy list j code list i code strcpy list i code temp2 temp3 list j s1 list j s1 list i s1 list i s1 temp3 temp3 list j s2 list j s2 list i s2 list i s2 temp3 temp3 list j s3 list j s3 list i s3 list i s3 temp3 temp1 list j grade list j grade list i grade list i grade temp1 view list amount void calculate struct stu list int amount int i 0 for i 0 i 90 list i grade A else if list i score 80 list i grade B else if list i score 70 list i grade C else if list i score 60 list i grade D else list i grade E display view list amount void findgrade struct stu list int amount int i 0 j 0 char g display printf n n n 请选择查询的等级请选择查询的等级 输入大写输入大写 A B C D E getchar scanf c printf n n printf 学号学号 平时平时 期中期中 期末期末 总分总分 等级等级 n printf n for i 0 i amount i if list i grade g j printf 10s 6 1f 6 1f 6 1f 6 1f c n list i code list i s1 list i s2 list i s3 list i score list i grade printf n printf n 等级为等级为 c 总共有总共有 d 人 人 总人数总人数 d 占总人数的 占总人数的 2lf n g j amount double j amount printf n n 按任意键继续按任意键继续 n getch void gradelist struct stu list int amount int i 0 int j 0 printf n n printf 等级等级 人数人数 百分比百分比 n printf n for i 0 i amount i if list i grade A j printf A d 6 3lf n j double j amount j 0 for i 0 i amount i if list i grade B j printf B d 6 3lf n j double j amount j 0 for i 0 i amount i if list i grade C j printf C d 6 3lf n j double j amount j 0 for i 0 i amount i if list i grade D j printf D d 6 3lf n j double j amount j 0 for i 0 i amount i if list i grade E j printf E d 6 3lf n j double j amount printf n printf 请按任意键继续请按任意键继续 getch void findcode struct stu list int amount int i 0 int flag 1 char temp 10 int flag2 display do flag2 1 printf 请输入学号 请输入学号 scanf s temp for i 0 i amount i flag strcmp temp list i code 全部相等 返回值为全部相等 返回值为 0 if flag 0 flag2 0 break if flag2 1 printf 您输入的学号不存在您输入的学号不存在 请重新输入请重新输入 n while flag2 printf n n printf 学号学号 平时平时 期中期中 期末期末 总分总分 等级等级 n printf n printf 10s 6 1f 6 1f 6 1f 6 1f 6c n list i code list i s1 list i s2 list i s3 li st i score list i grade printf n printf n n 按任意键继续按任意键继续 n getch void save struct stu list int amount int i 0 FILE fp fp fopen D out dat txt w if fp printf 文本打不开文本打不开 exit 1 fprintf fp n n fprintf fp 学号学号 平时平时 期中期中 期末期末 总分总分 等级等级 n fprintf fp n for i 0 i amount i fprintf fp 10s 6 1f 6 1f 6 1f 6 1f 6c n list i code list i s1 list i s2 list i s 3 list i score list i grade fprintf fp n printf n n 保存成功 请查看 按任意键继续保存成功 请查看 按任意键继续 n fclose fp getch int main struct stu list 100 int choice int amount while 1 display set scanf d switch choice case 1 amount readfile list break case 2 calculate list amount break case 3 findgrade list amount break case 4 paixu list amount break case 5 findcode list amount break case 6 gradelist list amount break case 7 save list amount break case 0 printf n n n n n n n n n n n 谢谢使用谢谢使用 n break return 0 3 6 4 结果及完善方向结果及完善方向 界面 从文件读取数据 计算并显示成绩 按等级查询 按总评成绩排序 按学号查询 等级列表 保存到文件 程序结果分析 程序结果分析 该程序基本完成题目所给要求 能从文件中读入相应的平时成绩 期中考试成绩 期 末考试成绩 能根据百分比计算总评成绩和该班级的平均成绩 能根据总评成绩计算成绩 等级和计算每个等级占总人数的百分比 并输出相应等级的学生的成绩信息 具有良好的 输出界面 程序完善方向 程序完善方向 可设置文件读写方式对学生信息进行追加操作 界面可以进一步美化 3 7 模拟电信计费系统的设计与实现 模拟电信计费系统的设计与实现 B2 3 7 1 设计题目及要求设计题目及要求 课题内容 课题内容 设计一个模拟电信计费系统 能实现从文件中读取通话以及费率资料 并提供计费 话费查询和话单查询等服务 通过此课题 熟练掌握文件读写 数组 结构体 格式输入 输出的各种操作 以及友好界面的设计和一些算法思想的应用 课题要求 课题要求 1 计费功能 根据存放在源数据文件中的通话记录和长途费率文件对每一条通话记录计 算其通话费用 并将结果保存在费用文件中 其中 通话费的计算方法如下 通话费 长途电话费 本地电话费 长途电话费 费率 元 分钟 通话时长 分钟 通话时长不满 1 分钟的按 1 分 钟计算 本地电话费为 3 分钟以内 0 5 元 以后每 3 分钟递增 0 2 元 2 话费查询 输入一个电话号码 从费用文件中统计该电话号码的所有本地话费 长 途话费 并从用户文件中查找其用户名 最后在屏幕上显示 用户名 电话号码 本地话费 长途话费 话费总计 3 话单查询 输入一个电话号码 查询并在屏幕显示该用户的所有通话记录 格式为 用户名 主叫电话号码 被叫电话号码 通话时间 3 7 2 设计思想及程序流程框图设计思想及程序流程框图 设计思想 设计思想 2 建立四个结构体变量 s1 s2 s3 s4 s1 中存放用户的通话信息 s2 中存放各地区 的费率信息 s3 中存放用户信息 s4 中存放用户费用信息 3 从相应文件中读入相应信息给相应的结构体变量 由 s1 s2 s3 中的基本信息计算 用户的通话费用和通话类型 将这些数据放入 s4 结构体变量中 4 查询或输出相应信息时 由 strcmp 函数在相应的结构体变量中查找相应信息进行处 理输出 5 能多次查询 程序流程图 程序流程图 1 系统整体框图系统整体框图 2 计费功能程序流程图 计费功能程序流程图 rate list2 j rate k list1 i time 60 0 bill rate kbill rate k 1 i 0 i amount flag 0 flag Strcmp list1 i aera1 list1 i aera2 strcpy list4 i type 本地通话 strcpy list4 i calling list1 i calling strcpy list4 i calling list1 i callin g list1 i time 180 bill 0 5 Y k 60 0 bill 0 5 k 180 0 2 2 bill 0 5 k 180 1 0 2 strcpy list4 i type 长途通话 strcpy list4 i calling list1 i calling strcpy list4 i calling list1 i callin g j 0 j 4 flag strcmp list1 i aera2 list2 j aera flag 0 j i 输出 开始 结束 k list1 i time 180 N 开始 choice 1 话 费计 算并 保存 在文 件夹 中 1 话 费查 询 2 话单 查询 0 退出 系统 返回主界面 3 7 3 逻辑功能程序逻辑功能程序 include include include include define amount 20 struct s1 通话记录通话记录 char aera1 5 char calling 10 char aera2 5 char called 10 int time struct s2 费率费率 char aera 5 double rate struct s3 用户信息用户信息 char num 10 char name 10 struct s4 费用费用 char calling 10 char type 10 double money void readfile struct s1 list1 struct s2 list2 struct s3 list3 int i FILE fp fp fopen D hd dat txt r for i 0 i amount i fscanf fp s s s s d fclose fp fp fopen D fl dat txt r for i 0 i 4 i fscanf fp s lf fclose fp fp fopen D yh dat txt r for i 0 i 5 i fscanf fp s s fclose fp void savefile struct s4 list4 int i FILE fp fp fopen D fy dat txt w fprintf fp s n 主叫电话号码主叫电话号码 通话类型通话类型 话费金额 元 话费金额 元 for i 0 i amount

温馨提示

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

评论

0/150

提交评论