1、软件设计汇报姓名: 方轶琦 学号:10005808 6月18日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设计思想及程序步骤框图133.3.3逻辑功效程序143.3.4结果及完善方向173.4加密软件(A4)183.4.1设计题目及要求183
2、.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逻辑功效程序323.6.4结果及完善方向423.7模拟电信计费系统设计和实现(B2)483.7.1设计题目及要求483.7.2设计思想及程序步骤框图483.7.3逻辑功效程序503.7.4结果及完善方向66第四章 心得体会72软件设计介绍一 软件设
3、计概念软件设计是把很多事物和问题抽象起来,而且抽象它们不一样层次和角度。提议用数学语言来抽象事务和问题,因为数学是最好抽象语言,而且它本质就是抽象。将复杂问题分解成能够管理片断会更轻易。将问题或事物分解并模块化这使得处理问题变得轻易,分解越细模块数量也就越多,它副作用就是使得设计者考虑更多模块之间耦合度情况。二软件设计性质、目标:本课程是一门技能训练课,为在校学生必修课程。经过设计培养学生良好编程习惯,使学生掌握编程基础步骤,规范学生编写程序格式,锻炼学生编写程序能力,为未来编写较大程序打好基础。三软件设计总时间:二周四试验设备:南京邮电大学微机室微机。五软件设计任务经过集中时间上机试验,使学
4、生充足发挥已经有编程能力,熟悉编译环境,选择若干课题,进行审题、分析、设计和调试,并依据要求写出试验汇报。六试验内容软件设计课题共分A 、B两档。A档共5题,第一周完成;B档共2题,第二周完成。第二章 软件开发平台介绍Visual Studio 介绍Microsoft Visual Studio 使开发人员能够快速创建高质量、用户体验丰富而又紧密联络应用程序,充足展示了 Microsoft 开发智能用户端应用程序构想。借助 Visual Studio ,采集和分析信息将变得更为简单便捷,业务决议也会所以变得更为有效。任何规模组织全部能够使用 Visual Studio 快速创建能够利用 Win
5、dows Vista 和 Visual Studio system 更安全、更易于管理而且更可靠应用程序。Visual Studio 提供了高级开发工具、调试功效、数据库功效和创新功效,帮助在多种平台上快速创建目前最优异应用程序。Visual Studio 包含多种增强功效,比如可视化设计器(使用 .NET Framework 3.5 加速开发)、对 Web 开发工具大量改善,和能够加速开发和处理全部类型数据语言增强功效。Visual Studio 为开发人员提供了全部相关工具和框架支持,帮助创建引人注目标、令人印象深刻并支持 AJAX Web 应用程序。开发人员能够利用这些丰富用户端和服务器
6、端框架轻松构建以用户为中心 Web 应用程序,这些应用程序能够集成任何后端数据提供程序、在任何目前浏览器内运行并完全访问 ASP.NET 应用程序服务和 Microsoft 平台。Visual Studio 含有以下优势:快速开发新突破从建模到编码,再到调试,Visual Studio 提供了增强编程语言、设计器、编辑器和和数据相关新功效,能够帮助您体验到生产力突破。创建杰出用户体验Visual Studio 为开发人员提供了新工具,经过使用最新平台,如Web, Windows Vista、 Microsoft Office System、Microsoft SQL Server 、Windo
7、ws Mobile和Windows Server,开发人员能够快速创建个性化很强用户体验和互联应用程序。跨越开发周期协作Visual Studio 能够让开发人员、设计人员、测试人员、架构师和项目经理经过共享工具和过程整合方法,实现协同工作,从而降低了处理方案所花费时间。采取统一整合方法处理数据Visual Studio 能够显著改善开发人员处理数据方法。传统方法中,开发人员不得不依据数据存放位置和用户连接方法,对数据进行不一样操作。经过语言集成查询(Language-Integrated Query, LINQ), 开发人员能够使用单独模型来查询并转换XML, Microsoft SQL S
8、erver和对象数据,而不需要学习或使用特定编程语言,这么就降低了复杂度并提升了生产力。体验全新Web开发工具Visual Studio 为企业或开发团体提供了一个健壮、端到端平台来构建应用程序并经过Web 方法提供给用程序。经过Visual Studio , 开发人员能够很轻易将最新Windows Presentation Foundation (WPF) 功效整合到现有Windows Forms 应用程序和新应用程序中,并在Windows 平台上创建高保真用户体验。经过额外ASP.NET AJAX 1.0和Microsoft IntelliSense和对调试JavaScript 8.0支持
9、,构建AJAX 应用程序将会愈加紧捷。增强Web 设计器带有分离视图编辑功效,能够让开发人员同时看到HTML 页面和结果页面,从而提升了Web 开发体验。将数据库功效整合到应用程序生命周期管理中Visual Studio 为不一样团体组员提供了一系列针对架构、设计、程序开发、数据库开发和应用程序测试相关工具。Microsoft Visual Studio Team System Database Edition 现在已经全部整合到了Microsoft Visual Studio Team System Team Suite 中。构建运行在多个版本 .NET Framework 之上应用程序经过
10、Visual Studio , 开发人员能够使用一个工具来管理并构建针对多个版本.NET Framework 应用程序。Visual Studio 将会自动让项目和设置适应开发人员所指定.NET framework 版本。开发人员不再需要安装多个版本Visual Studio 来维护运行于多个版本 .NET Framework 之上应用程序。为Microsoft Office 系列构建可靠、可伸缩应用程序Visual Studio Tools for Office 现在已经完全整合到了Visual Studio 专业版当中。Visual Studio 能够让开发人员自己定制Microsoft
11、Office Word, Microsoft Office Excel ,Microsoft Office PowerPoint , Microsoft Office Outlook ,Microsoft Office Visio , Microsoft Office InfoPath , 和Microsoft Office Project, 从而提升用户生产力而且更有效利用了Office 中新增功效。对Microsoft Office 进行自定义,同时应用程序支持ClickOnce 布署,从而使开发人员能够采取正确工具和框架来实现对Microsoft Office 处理方案进行从容布署。为W
12、indows Vista 构建完美应用程序Visual Studio 能够让开发人员快捷创建出同Windows Vista 外观风格一样炫应用程序,而且能够利用Windows Vista 中所提供8000多个新API.在开发人员和设计人员之间实现无缝协作Microsoft已经针对设计人员公布了名为Microsoft Expression工具。在Visual Studio 中,来自于Microsoft Expression Web 和Microsoft Expression Blend中设计元素能够在不更改后台代码情况下,从VisualStudio 中进行导入导出操作。这就意味着开发人员和设计人
13、员能够实时进行无缝协作,而且不用担心用户界面设计更改所引发开发问题。 第三章 软件设计内容3.1 分数统计软件(A1)3.1.1设计题目及要求设计题目:分数统计要求:(1)、输入某班级学生姓名、分数;(2)、对(1)分数进行降幂排列并输出;(3)、含有输入输出界面。3.1.2设计思想及程序步骤框图这道题我是用C# 可视化环境制作了一个分数统计系统。制作界面图3.1-1所表示:实现功效和设计方法:1.在“姓名”和“分数”后面文本框内输入学生信息,输入完成后,按“输入”按钮,学生信息就会显示到左下方listbox中。2.当用户输入若干名学生信息后,按“排序”按钮,右下方listbox中就会显示按成
14、绩降幂排序后学生信息。排序方法是使用冒泡排序法。3.当用户输入学生信息犯错时,用鼠标选择犯错项,按下“删除选中输入项”,即可删除输错项,继续输入学生信息。方法是用listBox.SelectedIndex找到选中索引值,然后删除数组中该学生信息和listbox中信息就能够了。4.当用户想重新输入学生信息,按下“重新开始”清空数组和listbox中信息。5.当用户要结束操作,按下“结束”,调用close()函数就能够跳出界面。主程序步骤图图3.1-2所表示。冒泡排序步骤图图3.1-3所表示。 图3.1- 1 主步骤图 图3.1- 2冒泡排序步骤图3.1.3逻辑功效程序具体程序以下:#includ
15、e#include#includestruct student /存放学生信息结构体char name20; /字符型数组存放姓名int grade; /成绩类型temp,std100;int main() int err; char x5; int n; int i; int m; char ch20; do system(cls); printf( nn); printf( - n); printf( | 欢迎使用本系统 | n); printf( - n); printf( n); printf( -请输入学生数-nn);do printf(tt学生数: );err=0;i=0;scan
16、f(%s,x); /输入选项getchar();while(xi!=0) /依次检验输入字符串是否为数字 if(xi9|xi0) err=1; i+;if(err) printf(ntt请输入数字!n);while(err);n=atoi(x); /将字符型数组x转换成整型nfor(i=0;in;i+) /循环N次输入学生信息 printf(ntt请输入第%d个人信息ntt姓名:,i+1); scanf(%s,stdi.name); getchar(); printf(tt分数:); scanf(%d,&stdi.grade); getchar();printf(输入信息:n);printf(
17、 - n);printf( 姓名 成绩 nn);for(i=0;in;i+)printf( %s %dn,stdi.name,stdi.grade); printf(nn - n);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 名 %
18、s %dn,i+1,stdi.name,stdi.grade); printf(nn - n);printf(t您还继续吗?请按Y键继续:); /选择是否继续scanf(%s,ch); while(ch0=Y|ch0=y); /和开头组成do-while结构循环 printf(t); return 0;图3.14图3.1- 3 运行结果系统完善:1. 当用户在分数框输入了非数字字符,则会提醒用户输出正确格式分数。2. 当用户未完整输入姓名和分数,系统会提醒用户完整输入。完善方向该系统即使考虑了并完善了很多用户操作可能出现错误,但仍然有不足之处。比如,本系统中删除按钮只能在用户排序前删除用户想删
19、除信息。若用户排序后删除左边栏目里学生信息,再来排序,这时排序出结果就可能会犯错。这点是需要改善。另外这题和数据库SQL连接起来,程序会愈加简单方便。这方面还需加以学习。3.2 打字软件(A2)3.2.1设计题目及要求设计题目:打字程序要求:(1)随即产生一字符串,每次产生字符串内容、长度全部不一样;(2)依据(1)结果,输入字符串,判定输入是否正确,输出正确率;(3)含有输入输出界面。3.2.2设计思想及程序步骤框图设计思想:采取C#界面编程。(1).从题目标要求可知,本系统要求随机产生字符串,字符串内容和长度全部是随机。要产生随机数,就能够使用rand()函数。设定字符串最长为20。用ra
20、nd.Next(min, max)函数就能够产生minmax之间随机数。(2).为使系统随机产生字母字符,首先用rand.Next(0,25)产生025随机数,将随机数加上97,然后再将数字转换为对应ASCII码字母就能够了。(3).正确率计算。将系统产生随机字符和用户输入字符进行逐一比较统计出相同字符个数,在和系统产生字符总数相除便可得到得正确率。设计用户界面图3.2-1所表示。主步骤图图3.2-2所表示 图3.2- 1主步骤图界面按钮功效设计思想:“开始”:按下后,首先清空界面三个输入文本框textbox。然后再随机生成字符串显示在第一个文本框textbox1中。“确定”:用户在第二个文本
21、框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 ch20;int length
22、;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(stdin);/降低无须要错误 scanf(%s,s);flag=compare(p,s,length);if(flag=1)printf(t输入完全正确!n);elseprintf(t输入有误,您此次输入正确率:%0
23、.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;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;
24、for(j=0;jlength;j+)if(pj-sj)=0)number=number+1;rate=1.0*number/length;return rate;void display()printf(t*n);printf(t*n);printf(t* 欢迎进入打字练习程序 *n);printf(t*n); printf(t*n);printf(tn);3.2.4结果及完善方向程序运行结果:用户按下开始按钮后,输入字符串,最终按下确定按钮程序运行情况图3.2-3所表示。按下开始按钮 输入字符串后按下确定按钮图3.2- 2 程序运行结果系统完善最初编写程序中存在输出正确率BUG。就是在用户
25、输入字符串前半段和系统字符串一样,以后面又多输入了其它字符,这时算出正确率是100%,这在常理上是不正确,发觉错误后,更正了正确率计算方法。当用户输入字符串长度小于或等于系统产生字符串长度时,正确率计算方法为:正确率=当用户输入字符长于系统字符串长度时,正确率计算方法为:正确率=这么就避免了之前错误情况。完善方向本打字系统仍然有需要完善地方,如可增加计时系统,这么就增加了打字程序趣味性。系统中正确率计算方法也有待改善。3.3 文本编辑器(A3)3.3.1设计题目及要求设计题目:文本编辑器要求:(1)、编辑文本;(2)、保留、打开指定位置文本文件;(3)、含有输入输出界面。3.3.2设计思想及程
26、序步骤框图文本编辑器界面设计,我是参考了word中提供部分功效,用C#界面环境设计编写一个小型文字编辑工具。在C#界面工具箱中,RichTextBox控件拥有很强大文字格式化功效。很多对文字文本多种操作只需要调用RichTextBox控件中函数,就能够搞定,很方便。界面设计时,含有工具栏和功效图标按钮,提升了操作便利性。文本编辑器界面图3.3-1所表示。文本编辑器含有三个大模块,含有以下功效:1:文件:(新建 打开 保留 退出)2:编辑:(撤销 恢复 全选 复制 剪切 粘贴 清除)3:帮助:(相关版权信息)模块结构图3.3-2所表示。图3.3- 1模块结构图3.3.3逻辑功效程序具体程序和注释
27、以下:#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()FILE *fp;int count=0; char choose100;int flag1,flag2,flag3;char F_name20;while(1) printf(*n);printf
28、(*文本编辑器*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)case 1: flag1=1; break; case 2: flag2=1; break; case 3: flag3=1; break; case 4: printf(t);printf(nnt* 谢谢使用! *n);exit(0);
29、 break;default : printf(t输入错误!n);Sleep(500);system(cls);if(flag1=1)flag1=0; printf(n*建立文件*n); create_file(fp,F_name); 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;p
30、rintf(请键入编辑文件名(如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);ch=getchar();printf(nn);getchar();fclose(fp);Sleep(500); system(cls);void create_file(FILE *fp,char *fname)printf(请键入新建文件名(如D:name.txt):nt);g
31、ets(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:name.txt):nt);gets(fname);if(fp=fopen(fname,r)=NULL)printf(不能打开文件!n);exit(0);printf(*文件内容*n);printf(- n);while(ch
32、=fgetc(fp)!=EOF) /输出文件直到文件结束符putchar(ch);printf(n- nn);fclose(fp);Sleep(1000); printf(nn);3.3.4结果及完善方向系统完善方向这次设计文本编辑器基础上能够很好模拟出word中对文本部分操作功效。基于RichTextBox控件功效很多,能够在此基础上添加更多有用方便功效,如改变文本背景颜色,字体格式和颜色,文本左对齐右对齐等。这么文本编辑器功效就会愈加完善。3.4 加密软件(A4)3.4.1设计题目及要求设计题目:加密要求:(1)输入任意一段明文M,和密钥K;(2)依据以下公式将其转换为密文C。 Ci =
33、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逻辑功效程
34、序#include#include #include void dis_menu(); /显示函数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 m100=; /明文 char c100=; /密文 char key