




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件设计报告姓名:姓名: 方轶琦方轶琦 学号:学号:10005808 2013 年年 6 月月 18 日日2013 年年 6 月月 28 日日目目 录录第一章 软件设计介绍.1第三章 软件设计的内容.43.1分数统计软件(A1).43.1.1 设计题目及要求 .43.1.2 设计思想及程序流程框图 .43.1.3 逻辑功能程序 .53.1.4 结果及完善方向 .83.2打字软件(A2).93.2.1 设计题目及要求 .93.2.2 设计思想及程序流程框图 .93.2.3 逻辑功能程序 .103.2.4 结果及完善方向 .123.3文本编辑器(A3).133.3.1 设计题目及要求 .133.3
2、.2 设计思想及程序流程框图 .133.3.3 逻辑功能程序 .143.3.4 结果及完善方向 .173.4加密软件(A4).183.4.1 设计题目及要求 .183.4.2 设计思想及程序流程框图 .193.4.3 逻辑功能程序 .193.4.4 结果及完善方向 .213.5进制转换器(A5).223.5.1 设计题目及要求 .223.5.2 设计思想及程序流程框图 .223.5.3 逻辑功能程序 .243.5.4 结果及完善方向 .293.6学生成绩核算系统的设计与实现(B1).303.6.1 设计题目及要求 .303.6.2 设计思想及程序流程框图 .303.6.3 逻辑功能程序 .32
3、3.6.4 结果及完善方向 .423.7模拟电信计费系统的设计与实现(B2).483.7.1 设计题目及要求 .483.7.2 设计思想及程序流程框图 .483.7.3 逻辑功能程序 .503.7.4 结果及完善方向 .66第四章 心得体会.72软件设计报告 10005808 方轶琦1软件设计介绍软件设计介绍一一 软软件件的的设设计计概概念念软件设计是把许多事物和问题抽象起来,并且抽象它们不同的层次和角度。建议用数学语言来抽象事务和问题,因为数学是最好的抽象语言,并且它的本质就是抽象。将复杂的问题分解成可以管理的片断会更容易。将问题或事物分解并模块化这使得解决问题变得容易,分解的越细模块数量也
4、就越多,它的副作用就是使得设计者考虑更多的模块之间耦合度的情况。二软件设计的性质、目的:二软件设计的性质、目的:本课程是一门技能训练课,为在校学生的必修课程。通过设计培养学生良好的编程习惯,使学生掌握编程的基本步骤,规范学生的编写程序的格式,锻炼学生编写程序的能力,为将来编写较大程序的打好基础。三软件设计总时间:三软件设计总时间:二周四实验设备:四实验设备:南京邮电大学微机室微机。五软件设计的任务五软件设计的任务通过集中时间上机实验,使学生充分发挥已有的编程能力,熟悉编译环境,选择若干课题,进行审题、分析、设计和调试,并根据要求写出实验报告。六实验内容六实验内容软件设计课题共分 A 、B 两档
5、。A 档共 5 题,第一周完成;B档共 2 题,第二周完成。软件设计报告 10005808 方轶琦2第二章第二章 软件开发平台简介软件开发平台简介Visual Studio 2008 简介简介Microsoft Visual Studio 2008 使开发人员能够快速创建高质量、用户体验丰富而又紧密联系的应用程序,充分展示了 Microsoft 开发智能客户端应用程序的构想。借助 Visual Studio 2008,采集和分析信息将变得更为简单便捷,业务决策也会因此变得更为有效。任何规模的组织都可以使用 Visual Studio 2008 快速创建能够利用 Windows Vista 和
6、2007 Visual Studio system 的更安全、更易于管理并且更可靠的应用程序。Visual Studio 2008 提供了高级开发工具、调试功能、数据库功能和创新功能,帮助在各种平台上快速创建当前最先进的应用程序。Visual Studio 2008 包括各种增强功能,例如可视化设计器(使用 .NET Framework 3.5 加速开发) 、对 Web 开发工具的大量改进,以及能够加速开发和处理所有类型数据的语言增强功能。Visual Studio 2008 为开发人员提供了所有相关的工具和框架支持,帮助创建引人注目的、令人印象深刻并支持 AJAX 的 Web 应用程序。开发
7、人员能够利用这些丰富的客户端和服务器端框架轻松构建以客户为中心的 Web 应用程序,这些应用程序可以集成任何后端数据提供程序、在任何当前浏览器内运行并完全访问 ASP.NET 应用程序服务和 Microsoft 平台。Visual Studio 2008 具备如下优势:快速开发新突破从建模到编码,再到调试,Visual Studio 2008 提供了增强的编程语言、设计器、编辑器以及和数据相关的新功能,可以帮助您体验到生产力的突破。创建杰出的用户体验Visual Studio 2008 为开发人员提供了新的工具,通过使用最新的平台,如Web, Windows Vista、2007 Micros
8、oft Office System、Microsoft SQL Server 2008、Windows Mobile以及 Windows Server2008,开发人员可以快速创建个性化很强的用户体验以及互联的应用程序。跨越开发周期的协作Visual Studio 2008 可以让开发人员、设计人员、测试人员、架构师以及项目经理通过共享工具以及过程整合的方式,实现协同工作,从而减少了解决方案所花费的时间。采用统一整合的方式处理数据Visual Studio 2008 可以显著的改进开发人员处理数据的方法。传统方式中,开发人员不得不根据数据的存储位置以及用户的连接方法,对数据进行不同的操作。通过
9、语言集成查询(Language-Integrated Query, LINQ), 开发人员可以使用单独的模型来查询并转换 XML, Microsoft SQL Server和对象数据,而不需要学习或使用特定的编程语言,这样就降低了复杂度并提高了生产力。体验全新的 Web 开发工具Visual Studio 2008 为公司或开发团队提供了一个健壮的、端到端的平台来构建应用程序并通过 Web 方式提供应用程序。通过 Visual Studio 2008, 开发人员可以很容易的将最新的 Windows Presentation Foundation (WPF) 功能整合到现有的 Windows F
10、orms 应用程序以及新的应用程序中,并在 Windows 平台上创建高保真的用户体验。通过额外的 ASP.NET AJAX 1.0 和 Microsoft 软件设计报告 10005808 方轶琦3IntelliSense以及对调试 JavaScript 8.0 的支持,构建 AJAX 应用程序将会更加快捷。增强的 Web 设计器带有分离视图编辑功能,可以让开发人员同时看到HTML 页面以及结果页面,从而提升了 Web 开发的体验。将数据库功能整合到应用程序生命周期的管理中Visual Studio 2008 为不同的团队成员提供了一系列针对架构、设计、程序开发、数据库开发以及应用程序测试的相
11、关工具。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 版本。开发人员不再需要安装多个版
12、本的 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 Of
13、fice Visio , Microsoft Office InfoPath , 以及 Microsoft Office Project, 从而提升用户生产力并且更有效的利用了 Office 2007 中的新增功能。对Microsoft Office 进行自定义,同时应用程序支持 ClickOnce 部署,从而使开发人员可以采用正确的工具以及框架来实现对 Microsoft Office 解决方案进行从容部署。为 Windows Vista 构建完美的应用程序Visual Studio 2008 可以让开发人员快捷的创建出同 Windows Vista 外观风格一样炫的应用程序,并且可以利用
14、Windows Vista 中所提供的 8000 多种新API.在开发人员和设计人员之间实现无缝协作Microsoft 已经针对设计人员发布了名为 Microsoft Expression 的工具。在Visual Studio 2008 中,来自于 Microsoft Expression Web 以及 Microsoft Expression Blend中的设计元素可以在不更改后台代码的情况下,从 VisualStudio 中进行导入导出的操作。这就意味着开发人员和设计人员可以实时的进行无缝协作,并且不用担心用户界面设计更改所引起的开发问题。 软件设计报告 10005808 方轶琦4第三章第
15、三章 软件设计的内容软件设计的内容3.1 分数统计软件(分数统计软件(A1)3.1.1 设计题目及要求设计题目及要求设计题目:分数统计要求:(1) 、输入某班级学生的姓名、分数;(2) 、对(1)的分数进行降幂排列并输出;(3) 、具有输入输出界面。3.1.2 设计思想及程序流程框图设计思想及程序流程框图这道题我是用 C# 的可视化环境制作了一个分数统计系统。制作的界面如图 3.1-1 所示:实现的功能和设计方法:1.在“姓名”和“分数”后面的文本框内输入学生信息,输入完毕后,按“输入”按钮,学生信息就会显示到左下方的listbox中。2.当用户输入若干名学生信息后,按“排序”按钮,右下方的l
16、istbox中就会显示按成绩降幂排序后的学生信息。排序方法是使用冒泡排序法。3.当用户输入学生信息出错时,用鼠标选择出错项,按下“删除选中的输入项”,即可删除输错项,继续输入学生信息。方法是用listBox.SelectedIndex找到选中的索引值,然后删除数组中该学生信息和listbox中信息就可以了。4.当用户想重新输入学生信息,按下“重新开始”清空数组和listbox中的信息。5.当用户要结束操作,按下“结束”,调用close()函数就可以跳出界面。主程序的流程图如图3.1-2所示。冒泡排序的流程图如图3.1-3所示。软件设计报告 10005808 方轶琦5 开始输入学生信息排序删除重
17、新开始结束开始结束N=学生数i=0ii?scorej - 1 scorej?交换scorej-1,scorej交换namej-1,namEj,k=ji=kj=j-1k=NNNNYYY图 3.1- 1 主流程图 图 3.1- 2 冒泡排序流程图3.1.3 逻辑功能程序逻辑功能程序具体程序如下:#include#include#includestruct student /存放学生信息的结构体char name20; /字符型数组存放姓名int grade; /成绩类型temp,std100;int main() int err; char x5; int n; int i; int m; cha
18、r ch20;软件设计报告 10005808 方轶琦6 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(xi!=0) /依次检查输入的字符串是否为数字 if(xi9|xi0) err=1; i+;if(err) printf(ntt 请输入数字!n);while(err);n=atoi(x);
19、 /将字符型数组 x 转换成整型 nfor(i=0;in;i+) /循环 N 次输入学生信息 printf(ntt 请输入第%d 个人的信息ntt 姓名:,i+1); scanf(%s,); getchar(); printf(tt 分数:); scanf(%d,&stdi.grade); getchar();printf(输入信息:n);printf( - n);printf( 姓名 成绩 nn);for(i=0;in;i+)printf( %s %dn,,stdi.grade);软件设计报告 10005808 方轶琦7 printf(nn - n
20、);printf(n 排序后信息:n);for(m=0;mn;m+) for(i=0;in-m-1;i+)if(stdi.gradestdi+1.grade)temp=stdi;stdi=stdi+1;stdi+1=temp; /成绩按降幂排序printf(n 您所输入的学生名次如下:nn); printf( - n); printf( 名次 姓名 成绩 nn);for(i=0;in;i+) printf( 第 %d 名 %s %dn,i+1,,stdi.grade); printf(nn - n);printf(t 您还继续吗?请按 Y 键继续:); /选择是否继续scan
21、f(%s,ch); while(ch0=Y|ch0=y); /与开头组成 do-while 结构循环 printf(t); return 0;软件设计报告 10005808 方轶琦8图图 3.14图 3.1- 3 运行结果系统的完善:系统的完善:软件设计报告 10005808 方轶琦91. 当用户在分数框输入了非数字字符,则会提示用户输出正确格式的分数。2. 当用户未完整输入姓名和分数,系统会提示用户完整输入。完善方向完善方向该系统虽然考虑了并完善了很多用户操作可能出现的错误,但仍然有不足之处。比如,本系统中的删除按钮只能在用户排序前删除用户想删除的信息。若用户排序后删除左边栏目里的学生信息,
22、再来排序,这时排序出的结果就可能会出错。这点是需要改进的。另外这题和数据库 SQL 连接起来,程序会更加简单方便。这方面还需加以学习。3.2 打字软件(打字软件(A2)3.2.1 设计题目及要求设计题目及要求设计题目:打字程序要求:(1)随即产生一字符串,每次产生的字符串内容、长度都不同;(2)根据(1)的结果,输入字符串,判断输入是否正确,输出正确率;(3)具有输入输出界面。3.2.2 设计思想及程序流程框图设计思想及程序流程框图设计思想:采用 C#界面编程。(1).从题目的要求可知,本系统要求随机产生字符串,字符串的内容和长度都是随机的。要产生随机数,就可以使用 rand()函数。设定字符
23、串最长为 20。用 rand.Next(min, max)函数就可以产生 minmax 之间的随机数。(2).为使系统随机产生字母字符,首先用 rand.Next(0,25)产生 025 的随机数,将随机数加上 97,然后再将数字转换为相应的 ASCII 码的字母就可以了。(3).正确率的计算。将系统产生的随机字符和用户输入的字符进行逐个比较统计出相同的字符个数,在与系统产生的字符总数相除便可得到得正确率。设计的用户界面如图 3.2-1 所示。主流程图如图 3.2-2 所示 开始 产生随机字符串用户输入字符串计算正确率结束?结束YN 图 3.2- 1 主流程图软件设计报告 10005808 方
24、轶琦10界面按钮功能设计思想:“开始”:按下后,首先清空界面的三个输入文本框 textbox。然后再随机生成字符串显示在第一个文本框 textbox1 中。“确定”:用户在第二个文本框 textbox2 中输入字符串后,按下确定按钮,首先系统会读入用户的字符串,然后与系统字符串比较,计算出正确率最后输出到正确率的文本框里。“结束”:使用 close()函数,按下后退出系统。3.2.3 逻辑功能程序逻辑功能程序具体程序如下:#include#include#include#include#define max_len 40 /定义产生的字符串最长为 40 个字符void rand_str(cha
25、r *p,int length);double compare(char *p,char *s,int length);void display(); int main()char ch20;int length;double flag;srand(time(NULL);char p80=;char s80=; display();dochar p80=; char s80=; printf(nt-n);length=1+rand()%max_len;rand_str(p,length);printf(nt-n);printf(t 请输入上面的字母:n); printf(t);fflush(s
26、tdin);/减少不必要错误 scanf(%s,s);flag=compare(p,s,length);if(flag=1)printf(t 输入完全正确!n);软件设计报告 10005808 方轶琦11elseprintf(t 输入有误,您本次输入正确率:%0.2g%n,flag*100); printf(tn); getchar();printf(t 您还继续吗?请按任意键继续或者按 N 键结束:);scanf(%s,ch);while(ch0!=N&ch0!=n);printf(t);return 0;void rand_str(char *p,int length)int i;
27、char ch;printf(t); for(i=0;i90&num97);ch=num;printf(%c,num);pi=ch;double compare(char *p,char *s,int length)int j;int number=0;double rate;for(j=0;jlength;j+)if(pj-sj)=0)number=number+1;rate=1.0*number/length;软件设计报告 10005808 方轶琦12return rate;void display()printf(t*n);printf(t*n);printf(t* 欢迎进入打字
28、练习程序 *n);printf(t*n); printf(t*n);printf(tn);3.2.4 结果及完善方向结果及完善方向程序运行结果程序运行结果:软件设计报告 10005808 方轶琦13用户按下开始按钮后,输入字符串,最后按下确定按钮的程序运行情况如图 3.2-3 所示。按下开始按钮 输入字符串后按下确定按钮图 3.2- 2 程序运行结果系统的完善系统的完善最初编写的程序中存在输出正确率的 BUG。就是在用户输入字符串的前半段和系统的字符串一样,而后面又多输入了其他字符,这时算出的正确率是100%,这在常理上是不正确的,发现错误后,更正了正确率的计算方法。当用户输入的字符串长度小于
29、或等于系统产生的字符串长度时,正确率的计算方法为:正确率=系统产生的字符串长度母数与系统字符串相同的字当用户输入的字符长于系统字符串长度时,正确率的计算方法为:正确率=用户输入的字符串长度母数与系统字符串相同的字这样就避免了之前的错误情况。完善方向完善方向本打字系统仍然有需要完善的地方,如可增加计时系统,这样就增加了打字程序的趣味性。系统中正确率的计算方法也有待改进。3.3 文本编辑器(文本编辑器(A3)3.3.1 设计题目及要求设计题目及要求设计题目:文本编辑器要求:(1) 、编辑文本;软件设计报告 10005808 方轶琦14(2) 、保存、打开指定位置的文本文件;(3) 、具有输入输出界
30、面。3.3.2 设计思想及程序流程框图设计思想及程序流程框图文本编辑器的界面设计,我是参考了 word 中提供的部分功能,用 C#界面环境设计编写一个小型的文字编辑工具。在 C#界面的工具箱中,RichTextBox 控件拥有非常强大的文字格式化功能。很多对文字文本的各种操作只需要调用 RichTextBox 控件中的函数,就可以搞定,非常的方便。界面设计时,具有工具栏和功能图标按钮,提高了操作的便利性。文本编辑器的界面如图 3.3-1 所示。文本编辑器具有三个大模块,具有以下功能:1:文件:(新建 打开 保存 退出)2:编辑:(撤销 恢复 全选 复制 剪切 粘贴 清除)3:帮助:(关于版权信
31、息)模块结构如图 3.3-2 所示。开始用户选择操作文件帮助编辑新建打开保存退出撤销恢复粘贴剪切复制全选清除关于图 3.3- 1 模块结构图3.3.3 逻辑功能程序逻辑功能程序具体程序和注释如下:#include#include /包含exit(1)的原型#include#includewindows.hvoid create_file(FILE *fp,char *fname); /建立文本函数void write_file(FILE *fp,char *fname); /编辑函数void read_file(FILE *fp,char *fname); /读取函数int main()FIL
32、E *fp;软件设计报告 10005808 方轶琦15int count=0; char choose100;int flag1,flag2,flag3;char F_name20;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(choose0)ca
33、se 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 方轶琦16else if(flag2=1)flag2=0;printf(n*编辑文件*n);wr
34、ite_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):nt); gets(fname); if(fp=fopen(fname,w)=NULL)printf(不能打开文件!n);exit(0);printf(请输入内容(以#号键结束):n);ch=getchar();while(ch!=#)fputc(ch,fp);c
35、h=getchar();printf(nn);getchar();fclose(fp);Sleep(500); system(cls);void create_file(FILE *fp,char *fname)软件设计报告 10005808 方轶琦17printf(请键入新建的文件名(如D:name.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
36、(FILE *fp,char *fname)char ch;printf(请键入读取的文件名(如D:name.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 方轶琦18软件设计报告
37、 10005808 方轶琦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 设计思
38、想及程序流程框图设计思想及程序流程框图设计思想:用 C#界面编程。由题目可以知道,要实现加密,就要对用户输入的字符串进行操作。首先要将用户输入的字符串存入数组。将字符类型转换为相应的 ASCII 码,再与输入的密钥相加,最后再转换为字符型就可以得到密文。系统共有三个功能按钮,为“生成密文” , “重新输入”和“结束” 。“生成密文”是按上述的思想对用户输入的字符串进行加密。 “重新输入”是清空三个 textbox。 “结束是”调用 close()函数退出系统。系统界面和系统流程框图如图 3.4-1 所示。开始用户输入明文,密钥加密重新开始结束图 3.4- 1 程序流程框图3.4.3 逻辑功能程
39、序逻辑功能程序#include#include #include void dis_menu(); /显示函数软件设计报告 10005808 方轶琦20void 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);pr
40、intf(t* 1、加密 *n);printf(t* 2、解密 *n);printf(t* 3、退出 *n);printf(t*nn);printf(t 请选择你要进行的操作:);void set_menu() char m100=; /明文 char c100=; /密文 char key100=; /密钥 char n100; scanf(%s,n); if(strlen(n)1) printf(t 输入错误!请重新输入:); set_menu(); else switch(*n) case 1: encryption(m, c, key); break; case 2: decrypti
41、on(m, c, key); break; case 3: printf(t); exit(1); break; default: printf(t 输入错误!请重新输入:); set_menu(); 软件设计报告 10005808 方轶琦21break; 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)
42、 /密钥长度不能大于 1printf(t 输入密钥有误,请重输:); scanf(%s,key);int i,length;length=strlen(m);printf(t 你输入的明文为:);printf(%sn,m); for(i=0;i1) 软件设计报告 10005808 方轶琦22printf(t 输入密钥有误(应输入一个字符),请重输:); scanf(%s,key);int i,length;length=strlen(c);printf(t 你输入的密文为:);printf(%sn,c); for(i=0;ilength;i+)mi=ci-(key0-0); /密文反译prin
43、tf(t 破解后的明文为:);printf(%snn,m);3.4.4 结果及完善方向结果及完善方向运行结果:运行结果:用户输入明文和密钥后,按下“生成密文”后的程序运行结果如图 3.4-2 所示。软件设计报告 10005808 方轶琦23图 3.4- 2 密钥运行结果系统完善系统完善1. 当用户明文和密钥输入的不完整,系统会提示要求用户输入完整。2. 当用户输入的密钥不在要求的 09 之间,系统会提示用户。如图 3.4-3 所示。完善方向完善方向当密钥过大时,生成的密文字符有些无法输出,因此可改进加密算法,更好完善这个加密系统。3.5 进制转换器(进制转换器(A5)3.5.1 设计题目及要求
44、设计题目及要求设计题目:进制转换器要求:(1)可输入二进制、八进制、十进制、十六进制数;(2)将已输入的数转换成其余进制的数;(3)具有输入输出界面。3.5.2 设计思想及程序流程框图设计思想及程序流程框图设计思想:由题目可以知道,本系统要求实现二、八、十、十六进制数之间的相互转换功能。(1)、对于数字的显示问题,可以用字符串的形式进行数字的输入输出。在软件设计报告 10005808 方轶琦24系统内部进行转换前,利用 ASCII 码将字符串再转换为相应的数字进行处理。(2)、进制的转换。系统中,首先将用户输入的任意进制的数统一转换为十进制。然后再将得到的十进制数转换为其他进制最后输出。(3)
45、. 转化成十进制时可以先得到用户输入的字符串的长度,在知道输入是什么进制数的前提下就可以将不同位上的数乘以进制的相应幂次最后求和就可以十进制数;由十进制转换成任意进制时可以使用短除法,不断相除取余数直到商为零为止,得到的字符串在翻转后即使得到的任意进制数对应的字符串。(4).转换输出时,是将该数据的所有进制转换结果进行输出。进制转换系统是采用 C#界面环境编程制作的。系统界面如图 3.5-1 所示。图 3.5- 1 进制转换系统界面界面中用户可以打开下拉菜单选择要输入的进制,选定后,选择的进制输入文本框会变白,用户可以输入要转换的数,按下“转换”按钮后,其他进制后面的文本框就会显示转换后的数。
46、按下“结束”按钮可以退出系统。整个程序可分为四个模块,分别是:数据输入模块,数据转换为十进制模块,十进制转换为其他进制模块,数据输出模块。程序流程框图如图 3.5-2 所示。开始用户选择要输入的进制数据读入转换为十进制十进制转换其他进制数据输出结束图 3.5- 2 程序流程框图3.5.3 逻辑功能程序逻辑功能程序具体程序和注释如下:#include stdio.h#include void bishow(int m);void main()char x,w;char c10;int i=0,err=0,quitflag=0;int num=0;do system(cls);printf(t-
47、n);软件设计报告 10005808 方轶琦25printf(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(nt请选择: );do err=0;scanf(%c,&x);/输入选项getchar(); if(x4|x7 | ci9 | ci0) err=1;/若输入数据为非数字符号,则错误 i
48、+; if(err) printf(n输入数值错误,不是十进制数!n); while(err); i=0; while(ci!=0) num=num*10; num=num+ci-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;
49、 case 4: /输入十六进制 do err=0;i=0;num=0; printf(nt请输入十六进制数:); scanf(%s,c); getchar(); while(ci!=0) if(ci=0) err=0;/若输入数据为非数字符号,则软件设计报告 10005808 方轶琦28错误 else if(ci=a&ci=A&ci=F) err=0; else err=1; i+; if(err) printf(n输入数值错误,不是十六进制数!n); while(err); i=0; while(ci!=0) num=num*16; if(0=ci&ci=9) nu
50、m=num+ci-48; if(a=ci&ci=f) num=num+ci-97+10; if(A=ci&ci=0) printf(%d,bi-); /输出二进制数 printf(n);3.5.4 结果及完善方向结果及完善方向程序运行结果:程序运行结果:图 3.5- 3 进制转换系统界面运行情况系统的完善系统的完善本系统能够较好的完成二、八、十、十六进制数之间的相互转换,并且对软件设计报告 10005808 方轶琦30可能出现的异常情况进行了处理。例如,当用户选择输入二进制,用户就无法在其他进制的文本框内输入数据。还有,如果用户要键入非该进制内的字符,用户的键入将无效,非法字符
51、将无法输入到文本框内。这样的设计能方便用户操作。系统还有一些地方有待完善,比如,用户输入的字符串的最大长度需要进行一定的限制等等。3.6 分数统计分数统计3.6.1 设计题目及要求设计题目及要求设计题目:学生成绩核算系统的设计与实现要求:(1) 、按班级按课程从文件中读入相应的平时成绩、期中考试成绩和期末考试成绩。(2) 、三个成绩对总评成绩的百分比被定义为常数,各占总成绩的30%、30%和 40%。(3) 、计算每位学生的总评成绩。(4) 、计算该班级本课程的总平均成绩。(5) 、计算处于优、良、中、及格、不及格的学生人数以及占总人数的百分比。其中 100-90 为优,89-80 为良,79
52、-70 为中,69-60 为及格,60 分以下为不及格。(6) 、按要求输出成绩在优、良、中、及格、不及格各区间的学生学号、成绩。3.6.2 设计思想及程序流程框图设计思想及程序流程框图设计思想:1.建立文本文件 note.dat,第一行为学生的总人数,其后为每个学生的成绩,每个学生的信息占一行,格式为: 学号(9 位) 平时成绩 期中考试成绩 期末考试成绩例如: 15B10040801 88 75.5 66 B10040802 91 79.5 76B10040803 85 75 77 B10040804 79 82 80.5B10040805 94 83.5 81.5 B10040806 8
53、0 69 68B10040807 82 77 71 B10040808 77 57 58B10040809 91 88 86 B10040810 96 89 90B10040811 70 45.5 50 B10040812 74 65 66B10040813 81 71 76 B10040814 83 75 77B10040815 85 78 79 2. 数据结构(用 C+实现)本题中共设计了两个类:学生(Student)和学生成绩(marks)软件设计报告 10005808 方轶琦31(1)基类学生(Student) ,定义如下:class Student /基类学生private: /私有
54、成员:char stu_no10; /学号(题目中用到的)char stu_name10; /姓名(可拓展的)char stu_zhy20; /专业(可拓展的)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 z
55、hy) /设置专业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
56、; /等级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; /取期末成绩软件设计报告 10005808 方轶琦32float getavg() return avg; /取总评成绩char getde
57、ngj()return dengj; /取等级void Computavg(); /计算总评成绩void GetDJ(); /计算等级mark100;3从文件中读入相应的平时成绩、期中考试成绩和期末考试成绩时,用C+中的流实现。 4. 每次计算出的结果可在屏幕输出,并把每个学生的总评成绩输入到新文件 out.dat 文件中,格式为: 学生学号(9 位) 总评成绩 成绩等级例如: B07040801 88 B 为查询方便,可把总评成绩所处等级(优、良、中、及格、不及格)同时保存在文件 out.dat 中,分别用字母 A、B、C、D、E 表示。5.设计方法:本系统采用自顶向下,逐步细化的方法,将整
58、个系统细化为5 个模块:读入文件,计算成绩模块,保存文件模块,计算并输出等级分布模块以及退出模块。根据这个思想,主程序的流程图如 3.6-1 图所示:开始显示菜单键盘输入选项读入文件计算成绩退出系统计算输出等级分布保存文件是否退出系统?结束是否图 3.7- 1 主程序流程图3.6.3 逻辑功能程序逻辑功能程序具体程序及注释如下:#include#include#define N 100struct student软件设计报告 10005808 方轶琦33char number10; char psgra5;char qzgra5;char qmgra5; ;int information()
59、FILE* fp; int i; struct student std15= 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,6
60、6, 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;i15;i+)fprintf(fp, %-8s %8s %8s %8sn,stdi.number,stdi.psgra,stdi.qzgra,stdi.qmgra); /%8s表示输出 8 个字符的字符串,不够 8 个字符右对齐; fclose(fp);软件设计报告 10005808 方轶琦34return 0;int read(struct student st15) /读取文件的函数;FI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版七年级上学期历史与社会教学设计:3.1.1 稻作文化的印记
- 定向放倒施工方案
- 年产40万吨过氧化氢项目可行性研究报告
- 小学美术赣美版三年级下册第7课 放大镜教案及反思
- 路基检测施工方案
- 焊接设备项目可行性研究报告
- 《习作:二十年后的家乡》教学设计-2024-2025学年统编版语文五年级上册
- 锁定内固定系统临床应用常见问题培训课件
- 全新抵押合同书展期二零二五年
- 教师聘请劳务合同书的范例
- 图解液氨制冷企业重大事故隐患
- 2020年度城镇道路工程施工与质量验收规范
- 2022年电力电缆头制作施工方案【完整版】
- 基于STM32的光照控制系统设计
- 有限空间现场作业安全检查表(现场检查)
- 1、防止人身伤亡事故检查表
- 环境信息系统的GIS基础 03讲 空间数据模型
- 德语字母读音表
- 国际创伤生命支持创伤评估步骤与治疗决策树-Microsoft-Office-Word-文档
- GB/T 8766-2013单水氢氧化锂
- GB/T 2792-1998压敏胶粘带180°剥离强度试验方法
评论
0/150
提交评论