收藏 分销(赏)

软件设计方案报告.doc

上传人:二*** 文档编号:4768434 上传时间:2024-10-12 格式:DOC 页数:73 大小:1.21MB 下载积分:5 金币
下载 相关 举报
软件设计方案报告.doc_第1页
第1页 / 共73页
本文档共73页,全文阅读请下载到手机保存,查看更方便
资源描述
软件设计汇报 姓名: 方轶琦 学号:10005808 6月18日~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 软件设计介绍 一. 软件设计概念 软件设计是把很多事物和问题抽象起来,而且抽象它们不一样层次和角度。提议用数学语言来抽象事务和问题,因为数学是最好抽象语言,而且它本质就是抽象。将复杂问题分解成能够管理片断会更轻易。将问题或事物分解并模块化这使得处理问题变得轻易,分解越细模块数量也就越多,它副作用就是使得设计者考虑更多模块之间耦合度情况。 二.软件设计性质、目标: 本课程是一门技能训练课,为在校学生必修课程。经过设计培养学生良好编程习惯,使学生掌握编程基础步骤,规范学生编写程序格式,锻炼学生编写程序能力,为未来编写较大程序打好基础。 三.软件设计总时间:二周 四.试验设备:南京邮电大学微机室微机。 五.软件设计任务 经过集中时间上机试验,使学生充足发挥已经有编程能力,熟悉编译环境,选择若干课题,进行审题、分析、设计和调试,并依据要求写出试验汇报。 六.试验内容 软件设计课题共分A 、B两档。A档共5题,第一周完成;B档共2题,第二周完成。 第二章 软件开发平台介绍 Visual Studio 介绍 Microsoft® Visual Studio® 使开发人员能够快速创建高质量、用户体验丰富而又紧密联络应用程序,充足展示了 Microsoft 开发智能用户端应用程序构想。借助 Visual Studio ,采集和分析信息将变得更为简单便捷,业务决议也会所以变得更为有效。任何规模组织全部能够使用 Visual Studio 快速创建能够利用 Windows Vista™ 和 Visual Studio system 更安全、更易于管理而且更可靠应用程序。 Visual Studio 提供了高级开发工具、调试功效、数据库功效和创新功效,帮助在多种平台上快速创建目前最优异应用程序。 Visual Studio 包含多种增强功效,比如可视化设计器(使用 .NET Framework 3.5 加速开发)、对 Web 开发工具大量改善,和能够加速开发和处理全部类型数据语言增强功效。Visual Studio 为开发人员提供了全部相关工具和框架支持,帮助创建引人注目标、令人印象深刻并支持 AJAX Web 应用程序。开发人员能够利用这些丰富用户端和服务器端框架轻松构建以用户为中心 Web 应用程序,这些应用程序能够集成任何后端数据提供程序、在任何目前浏览器内运行并完全访问 ASP.NET 应用程序服务和 Microsoft 平台。 Visual Studio 含有以下优势:   快速开发新突破   从建模到编码,再到调试,Visual Studio 提供了增强编程语言、设计器、编辑器和和数据相关新功效,能够帮助您体验到生产力突破。   创建杰出用户体验   Visual Studio 为开发人员提供了新工具,经过使用最新平台,如Web, Windows Vista、 Microsoft Office System、Microsoft SQL Server 、Windows Mobile®和Windows Server®,开发人员能够快速创建个性化很强用户体验和互联应用程序。   跨越开发周期协作   Visual Studio 能够让开发人员、设计人员、测试人员、架构师和项目经理经过共享工具和过程整合方法,实现协同工作,从而降低了处理方案所花费时间。   采取统一整合方法处理数据   Visual Studio 能够显著改善开发人员处理数据方法。传统方法中,开发人员不得不依据数据存放位置和用户连接方法,对数据进行不一样操作。经过语言集成查询(Language-Integrated Query, LINQ), 开发人员能够使用单独模型来查询并转换XML, Microsoft SQL Server™和对象数据,而不需要学习或使用特定编程语言,这么就降低了复杂度并提升了生产力。   体验全新Web开发工具   Visual Studio 为企业或开发团体提供了一个健壮、端到端平台来构建应用程序并经过Web 方法提供给用程序。经过Visual Studio , 开发人员能够很轻易将最新Windows Presentation Foundation (WPF) 功效整合到现   有Windows Forms 应用程序和新应用程序中,并在Windows 平台上创建高保真用户体验。经过额外ASP.NET AJAX 1.0和Microsoft IntelliSense®和对调试JavaScript 8.0支持,构建AJAX 应用程序将会愈加紧捷。增强Web 设计器带有分离视图编辑功效,能够让开发人员同时看到HTML 页面和结果页面,从而提升了Web 开发体验。   将数据库功效整合到应用程序生命周期管理中   Visual Studio 为不一样团体组员提供了一系列针对架构、设计、程序开发、数据库开发和应用程序测试相关工具。Microsoft Visual Studio Team System Database Edition 现在已经全部整合到了Microsoft Visual Studio Team System Team Suite 中。   构建运行在多个版本 .NET Framework 之上应用程序   经过Visual Studio , 开发人员能够使用一个工具来管理并构建针对多个版本.NET Framework 应用程序。Visual Studio 将会自动让项目和设置适应开发人员所指定.NET framework 版本。开发人员不再需要安装多个版本Visual Studio 来维护运行于多个版本 .NET Framework 之上应用程序。   为Microsoft Office 系列构建可靠、可伸缩应用程序   Visual Studio Tools for Office 现在已经完全整合到了Visual Studio 专业版当中。Visual Studio 能够让开发人员自己定制Microsoft 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 处理方案进行从容布署。   为Windows Vista 构建完美应用程序   Visual Studio 能够让开发人员快捷创建出同Windows Vista 外观风格一样炫应用程序,而且能够利用Windows Vista 中所提供8000多个新API.   在开发人员和设计人员之间实现无缝协作   Microsoft已经针对设计人员公布了名为Microsoft Expression工具。在Visual Studio 中,来自于Microsoft Expression Web 和Microsoft Expression Blend™中设计元素能够在不更改后台代码情况下,从Visual   Studio 中进行导入导出操作。这就意味着开发人员和设计人员能够实时进行无缝协作,而且不用担心用户界面设计更改所引发开发问题。 第三章 软件设计内容 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所表示。 图3.1- 1 主步骤图 图3.1- 2冒泡排序步骤图 3.1.3逻辑功效程序 具体程序以下: #include<stdio.h> #include<string.h> #include<stdlib.h> 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]; 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",&std[i].grade); getchar(); } printf("输入信息:\n"); printf(" ----------------------------------- \n"); printf(" 姓名 成绩 \n\n"); for(i=0;i<n;i++) { printf(" %s %d\n",std[i].name,std[i].grade); } 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; } 图3.1—4 图3.1- 3 运行结果 系统完善: 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所表示 图3.2- 1主步骤图 界面按钮功效设计思想:“开始”:按下后,首先清空界面三个输入文本框textbox。然后再随机生成字符串显示在第一个文本框textbox1中。 “确定”:用户在第二个文本框textbox2中输入字符串后,按下确定按钮,首先系统会读入用户字符串,然后和系统字符串比较,计算出正确率最终输出到正确率文本框里。 “结束”:使用close()函数,按下后退出系统。 3.2.3逻辑功效程序 具体程序以下: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> #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"); else printf("\t输入有误,您此次输入正确率:%0.2g%%\n",flag*100); printf("\t\n"); 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<length;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<length;j++) { if((p[j]-s[j])==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("\t\n"); } 3.2.4结果及完善方向 程序运行结果: 用户按下开始按钮后,输入字符串,最终按下确定按钮程序运行情况图3.2-3所表示。 按下开始按钮 输入字符串后按下确定按钮 图3.2- 2 程序运行结果 系统完善 最初编写程序中存在输出正确率BUG。就是在用户输入字符串前半段和系统字符串一样,以后面又多输入了其它字符,这时算出正确率是100%,这在常理上是不正确,发觉错误后,更正了正确率计算方法。 当用户输入字符串长度小于或等于系统产生字符串长度时,正确率计算方法为: 正确率= 当用户输入字符长于系统字符串长度时,正确率计算方法为: 正确率= 这么就避免了之前错误情况。 完善方向 本打字系统仍然有需要完善地方,如可增加计时系统,这么就增加了打字程序趣味性。系统中正确率计算方法也有待改善。 3.3 文本编辑器(A3) 3.3.1设计题目及要求 设计题目:文本编辑器 要求:(1)、编辑文本; (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<stdio.h> #include<stdlib.h> //包含exit(1)原型 #include<string.h> #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; 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); } 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) { 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结果及完善方向 系统完善方向 这次设计文本编辑器基础上能够很好模拟出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<stdio.h> #include<stdlib.h> #include<string.h> 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******************************************************\n\n"); printf("\t请选择你要进行操作:"); } void set_menu() { char m[100]=""; //明文 char c[100]=""; //密文 char key
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服