南邮软件设计报告(共88页)_第1页
南邮软件设计报告(共88页)_第2页
南邮软件设计报告(共88页)_第3页
南邮软件设计报告(共88页)_第4页
南邮软件设计报告(共88页)_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上软件设计报告姓名:琳学号:B 2015年5月16日2015年6月16日目 录专心-专注-专业第一章 软件设计介绍一、所涉及的课程及知识点高级语言程序设计:常量、变量、表达式的基本知识;函数的定义与调用;文件读写;数组、指针、结构体等自定义类型的使用;排序等知识。二、目的与任务目的:通过集中时间上机实验,对学生的程序设计能力进行一次综合训练,使学生充分发挥已有的编程能力,熟悉编译环境。选择若干课题,进行审题、分析、设计和调试,在程序准备、程序实现、完成文档、答辩验收过程中,将全面巩固已学过的编程知识,全面提高编程技能,在编程风格、调试器的使用、测试技术等方面得到全面训练

2、。学生在程序设计过程中,学生需要查找各种资料获取有用信息解决实际问题,自学相关知识,提高文档书写能力,加强团队合作意识,提高口头表达能力。任务:软件设计课题共分A 、B两档。A档共5题,题目较简单,第一周完成;B档共2题,题目是综合性的,较复杂,第二周完成。三、主要仪器设备硬件:微型计算机软件:C、C+、Visual C+等四、参考书【1】朱立华,王立柱C语言程序设计北京:人民邮电出版社,2009【2】朱立华,朱建,俞琼面向对象程序设计及C+北京:人民邮电出版社,2008【3】张引等C程序设计基础课程设计浙江:浙江大学出版社,2007第二章 软件开发平台简介软件开发平台是一种软件开发工具,是以

3、通用技术架构(例如MVC)为基础,集成常用建模工具、二次开发包、基础解决方案等而成。可以大幅缩减编码率,使开发者有更多的时间关注客户的需求,在项目的需求、设计、开发、测试、部署、维护等各个阶段均可提供强大的支持。软件开发平台有两种平台模式,一种是传统的c/s架构模式,一种是现在比较流行的b/s架构模式。软甲件开发平台的分类,一般有三种:一种是SUN公司的SUN ONE框架平台,一种是LAMP,它是Linux、Apache、Mysql、PHP四项技术的缩写,还有一种是.NET Framework(一般简称为NET框架平台)。LAMP是一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的

4、程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个Web应用程序平台。随着开源潮流的蓬勃发展,开放了源代码的LAMP已经与J2EE和.NET平台形成了三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此手袋整个IT界的关注。从网站的流量上来说,70%以上的访问流量都是LAMP来提供的,LAMP是最强大的网站解决方案。LAMP是基于Linux、Apache、MySQL和PHP的开放资源网络开发平台,这个术语来自欧洲,在那里这些程序常用来作为一种标准开发环境。名字来源于每个程序的第一个字母。每个程序在所有权里都符合开发源代码标准:Linux是开放系统,Apache是

5、最通用的网络服务器,MySQL是带有基于网络管理附加工具的关系数据库,是流行的对象脚本语言,他包含了多数其他语言的优秀特征来使得它的网络开发更加有效。虽然这些开放源代码程序本身并不是专门设计成同另外几个程序一起工作的,但由于他们都是影响较大的开源软件,拥有许多共同特征,这就导致了这些组件经常在一起使用。在过去的几年里,这些软件的兼容性不断完善,在一起的应用情形变得更加普遍。越来越多的供应商、用户和企业投资者日益认识到,经过单个组件的开源软件组成的平台用来构建以及运行各种商业应用和协作构建各种网络应用程序变为一种可能和实践,变得更加具有竞争力,更加吸引客户。无论是性能、质量还是价格都将成为企业、

6、政府信息化所必须考虑的平台。平台是一种新型的软件平台,可用来在网络计算机系统开发和运行高交互性、动态的、安全的小程序和应用程序。平台有三种三种版本,这使软件开发人员、服务提供商和设备生产商可以针对特定的市场进行开发。开发平台是一种用于建立服务器应用程序和桌面应用程序的软件组件,用该平台创建的应用程序在(通用语言运行环境)的控制下进行。是一个软件引擎,用来加载应用程序,确认他们可以没有错误的执行,进行相应的安全许可验证,执行应用程序,然后在运行结束后将他们删除。类库集提供了使应用程序可以读写数据、在上通信、访问数据库等的代码。所有的类库都建立在一个基础的类库之上,他提供管理使用最为频繁的数据类型

7、(例如数值或文本字符串)的功能,以及诸如文件输入输出等底层功能。Visual Studio 是推出的,Visual Studio 可以用来创建 Windows 平台下的 Windows和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office。是目前最流行的平台环境。Visual Studio 2008 包括各种增强功能,例如器(使用 .NET Framework 3.5 加速开发)、对 Web 开发工具的大量改进,以及能够加速开发和处理所有类型数据的语言增强功能。Visual Studio 2008 为开发人员提供了所有相关的工具和框架支持,帮助创建引人注目的、令人印象深刻并支

8、持 AJAX 的 Web。开发人员能够利用这些丰富的和服务器端框架轻松构建以客户为中心的 Web应用程序,这些应用程序可以集成任何后端数据提供程序、在任何当前内运行并完全访问 ASP NET和 Microsoft 平台。支持多种程序设计语言如:、等,实现了语言互用性。而只能用语言。随着开源潮流的蓬勃发展,开放源代码的已经与和商业软件形成三足鼎立之势。第三章 软件设计的内容3.1 分数统计软件(A1)3.1.1设计题目及要求课题内容:设计一个分数统计程序。包括学生信息的输入输出以及排序。通过该课题全面熟悉数组、字符串、文件的使用,掌握程序设计的基本方法及友好界面的设计。课题要求:(1)输入某班级

9、学生的姓名、分数;(2)对(1)的分数进行降幂排列并输出;(3)具有输入输出界面。3.1.2设计思想及程序流程框图设计思想为:建立学生结构体数组,结构体成员包括存储姓名的字符型数组以及存储分数的整型,使用for循环语句从输入处获取n 个学生的姓名和成绩,成绩输入的信息存入结构体数组。再选择按成绩降幂排名,将结构体数组从头进行输出。算法流程框图为:开 始输入学生人数清屏N输入是否正确?输入学生姓名name和分数grade自动降幂排序输出排序后的成绩单 结 束3.1.3逻辑功能程序#include<stdio.h>#include<string.h>#include<

10、stdlib.h>struct student /存放学生信息的结构体char name20; /字符型数组存放姓名int grade; /成绩类型temp,std100;int main() int err; char x5; int n; int i; int m; char ch20; system("color F9"); do system("cls"); printf(" nn"); printf(" * n"); printf("t n"); printf(" O(

11、_)O 欢迎使用本系统 O(_)O n"); printf("t n "); printf(" * n"); printf(" n"); printf(" 请输入学生个数 nn");do printf("tt学生个数: ");err=0;i=0;scanf("%s",x); /输入选项getchar();while(xi!='0') /依次检查输入的字符串是否为数字 if(xi>'9'|xi<'0') er

12、r=1; i+;if(err) printf("ntt请输入数字!n");while(err);n=atoi(x); /将字符型数组x转换成整型nfor(i=0;i<n;i+) /循环N次输入学生信息 printf("ntt请输入第%d个人的信息ntt姓名:",i+1); scanf("%s",); getchar(); printf("tt分数:"); scanf("%d",&stdi.grade);if (stdi.grade<0|stdi.grade&

13、gt;100)printf (" 您的输入错误,请重新输入:n"); printf("tt分数:");scanf("%d",&stdi.grade); getchar();printf(" 输入信息:n");printf(" * n");printf(" 姓名 成绩 nn");for(i=0;i<n;i+)printf(" %s %dn",,stdi.grade); printf("nn * n");pr

14、intf("n 排序后信息:n");for(m=0;m<n;m+) for(i=0;i<n-m-1;i+)if(stdi.grade<stdi+1.grade)temp=stdi;stdi=stdi+1;stdi+1=temp; /成绩按降幂排序printf("n 您所输入的学生名次如下:nn"); printf(" * n"); printf(" 名次 姓名 成绩 nn");for(i=0;i<n;i+) printf(" 第 %d 名 %s %dn",i+1,stdi

15、.name,stdi.grade); printf("nn * n"); printf("t n");printf("t您是否还需要继续?(请按Y键继续/任意键退出)"); /选择是否继续printf("t n");scanf("%s",ch); printf("t 感谢使用此软件,欢迎下次光临 O(_)O n"); while(ch0='Y'|ch0='y'); /与开头组成do-while结构循环 printf("t")

16、; return 0;3.1.4结果及完善方向实验结果:A. 初始界面:B. 输入学生信息之后直接排序,界面如图所示:C. 若所输入的学生成绩在有效范围(0100)之外系统将会提示输入错误,界面如下图:程序分析: 此程序功能上满足基本的题目要求,能够做到输入学生的姓名和成绩,能够按成绩降幂排列并输出。完善方向: 基本功能已实现,对于实际的系统,接下来完善的功能的是能够选择不同的科目进行输入,能够选择进行降幂或者升幂排序,同时能添加或删除学生信息,对于成绩相同的学生进行并列排名。3.2 打字软件(A2)3.2.1设计题目及要求课题内容:设计一个打字程序。包括随机产生字符串,以及字符串比较和统计。

17、通过此课题,熟练掌握数组、格式输出、字符串处理等。课题要求:(1)随机产生一字符串,每次产生的字符串内容、长度都不同;(2)根据(1)的结果,输入字符串,判断输入是否正确,输出正确率;(3)具有输入输出界面。3.2.2设计思想及程序流程框图设计思想为:利用函数库里提供的产生随机函数rand()产生随机的字符串长度,默认将长度定位在1至10个字符。再产生一串由大小写字母以及数字组成的随机字符串,每产生一个字符串就按字保存至数组里。显示产生的字符串,开始打字后,将输入字符串保存至数组,打字完毕。再与产生字符进行逐个比较,若相同,则正确个数加1,最终得出正确率,输出显示。算法流程框图为:开 始随机产

18、生字符串输入字符串依次比较,计算正确率输出正确率Y是否继续N 结 束3.2.3逻辑功能程序#include <stdio.h>#include <time.h>#include <stdlib.h>#include<iostream> void main(void) int i,num,flag,m=0,k,over=1;char str100; /产生随机数组char str1100; /输入随机数组char c;float p;system("color F9");while(over) /选择是否继续 num=0; /产

19、生字符长度num初始化为0m=0; /统计正确个数变量m初始化为0system("cls"); /清除屏幕 printf("nnn"); printf(" * n"); printf(" O(_)O 欢迎使用本系统 O(_)O n"); printf(" * n");printf(" * 打字软件 * n"); srand(time(NULL); /提取系统时间,以时间为seed产生随机数 num=1+ rand()%10; /产生长度不大于10的字符串 for(k=0;k&

20、lt;num;k+) flag=rand()%3; /随机产生小于3的数 if(flag=0) strk='A'+rand()%26; /产生大写字母 else if(flag=1) strk='a'+rand()%26; /产生小写字母 else strk='0'+rand()%9; /产生数字strk='0' printf("nntt *n");printf("随机字符串个数:tt%dn",num); printf("随机产生的字符串:t%sn",str); prin

21、tf("tt *nn"); printf("请输入上面的字符串:"); scanf("%s",str1);/输入字符串getchar();for(i=0;str1i!='0'&&stri!='0'i+) /进行比较 if(stri=str1i) m+; /m为正确字符个数 p=(float) m/num; printf("nnn * nn"); printf(" 正确率为:%.1f%n",p*100);printf(" 正确个数为:%dn

22、",m); printf("n * nnn");printf(" n");printf(" 是否还需继续练习?(任意键继续/N键退出)n");scanf("%c",&c);/输入选项getchar();if(c='N'|c='n') over=0;3.2.4结果及完善方向A. 初始界面:即随机产生的字符串为输出页面B. 当输入的字符串与随机产生的字符串一致时,正确率为100%,如图:C. 当输入的字符串与随机产生的字符串不一致时,程序将计算正确率并给出输入正确的个数

23、,如图:程序结果分析: 此程序能保证每次产生的字符串不一样,且能正确地输出准确率,基本完成了打字训练的任务。考虑到程序的实用性,可以为程序添加计时功能、记录保存功能等,可以使使用者更加灵活地运用打字软件。程序完善方向: 对于这个程序,不足的就是可以添加计时功能,在打字前,可以询问用户是否进行计时,还可以添加功能,由用户自己选择可从从其他文件导入一段字符串。3.3 文本编辑器(A3)3.3.1设计题目及要求课题内容:设计一个简单的文本编辑器,该系统要求对一个文本文件中的内容进行各种常规操作,如:插入、删除、查找、替换等功能。通过此课题,熟练掌握文本文件的操作及用字符数组或字符指针实现字符串操作的

24、功能。 课题要求:(1)编辑文本;(2)保存、打开指定位置的文本文件;(3)具有输入输出界面。3.3.2设计思想及程序流程框图设计思想为:在主菜单可选择建立文本、编辑文本、读取文本和退出程序。以只写方式编辑文本,若文本不存在则提示“不能打开文件”,打开的文件则输入的内容以“#”作为结束标识;读取文件时,提示需要读取的目标文本路径,将文本里的内容输出。算法流程框图为: 开 始输出功能菜单输入选项chooseNNNchoose=4choose=3choose=2choose=1N输入路径输入路径输入路径文件不存在文件不存在文件不存在YNNYYN建立文本编辑文本输出文本结束3.3.3逻辑功能程序#i

25、nclude <stdio.h>#include <time.h>#include <stdlib.h>void menu1() printf(" nn");printf(" * O(_)O 欢迎使用此软件 O(_)O *nn");printf(" * 文本编辑器 * nn"); printf(" >>>>>>> 1.建立文件 <<<<<<<n"); printf(" >>&

26、gt;>>>> 2.查看文件 <<<<<<<n"); printf(" >>>>>>> 3.编辑文件 <<<<<<<n"); printf(" >>>>>>> 0.退出 <<<<<<<nn");void menu2() printf("nn");printf(" * 编辑文件功能 *

27、n");printf(" n");printf(" >>>>> 1.查找 <<<<<n"); printf(" >>>>> 2.删除 <<<<<n"); printf(" >>>>> 3.插入 <<<<<n"); printf(" >>>>> 4.替换 <<<<&l

28、t;n"); printf(" >>>>> 0.返回上级菜单 <<<<<n");int output() char filepath30;/路径 FILE *fp; char ch; printf("n 请输入文件路径(如D:name.txt: "); scanf("%s",filepath);/输入路径 getchar();/接收Enter字符 fp=fopen(filepath,"r"); printf("n 文件内容如下:n&qu

29、ot;); rewind(fp);/返回文件首,输出整个文件的内容 do ch=fgetc(fp); putchar(ch); while(ch!=EOF);fclose(fp);return 0;int edit(int n) int i=0,x=0,fc=0,fch=0,fs=0,ft=0,a;char *p; int c=0,j; char test500;char m;char ch;char hou;char huan; char filepath30;/路径 char t;FILE *fp; switch(n) case 1:/查找功能 printf("n 请输入文件路径

30、: "); scanf("%s",filepath);/输入路径 getchar();/接收Enter字符 fp=fopen(filepath,"r"); printf("n文件内容如下:n"); rewind(fp);/返回文件首,输出整个文件的内容 do ch=fgetc(fp); putchar(ch); testi=ch; i+; while(ch!=EOF); testi='0'/串尾标识符fclose(fp);p=test;doa=0,x=0;printf("n 请输入要查找字符:&qu

31、ot;);scanf("%c",&t);getchar();while(x<i) if(t=*(p+x)printf("n 您要查找的字为:%c,它是第 %d个n",t,x+1); a=1; x+; if(a=0) printf("n 对不起,您要找的字不存在!n"); printf("n是否还需要继续查找?(任意键继续/0退出)n");scanf("%c",&m); if(m='0') fc=1; while(!fc);break;case 2:/删除功能

32、do int a=0,x=0; printf("n 请输入文件路径(如D:name.txt: "); scanf("%s",filepath);/输入路径 getchar();/接收Enter字符 fp=fopen(filepath,"r"); printf("n 文件内容如下:n"); rewind(fp);/返回文件首,输出整个文件的内容 do ch=fgetc(fp); putchar(ch); testi=ch; i+; while(ch!=EOF); testi='0'/串尾标识符fclo

33、se(fp);printf("n 请输入要删除字符:");scanf("%c",&t);getchar(); while(x<(i-a) if(testx=t) a+;for (c=x;c<(i-a);c+) testc=testc+1; testi-a-1='0' x-; x+; fp=fopen(filepath,"w"); for(j=0;j<(i-a);j+) ch=testj; fputc(ch,fp); fclose(fp); if(a=0) printf("n 对不起,

34、此字符不存在,无法删除!n"); printf("n 文件已保存!n");getchar(); printf("n是否还需要继续删除?(任意键继续/0退出)n");scanf("%c",&m);if(m='0') fs=1;while(!fs); break; case 3:/插入功能 do int a=0; i=0; /i的复位printf("n 请输入文件路径: "); scanf("%s",filepath);/输入路径 getchar();/接收Ente

35、r字符 fp=fopen(filepath,"r"); printf("n文件内容如下:n"); rewind(fp);/返回文件首,输出整个文件的内容 do ch=fgetc(fp); putchar(ch); testi=ch; i+; while(ch!=EOF); testi='0'/串尾标识符fclose(fp);p=test;printf("n 请输入要插入到哪个字符后面:n");scanf("%c",&hou);getchar(); while(x<i+a) if(hou

36、=*(p+x)a=1; x+;if(a=0) printf("n 此字符不存在,输入有误!n");getchar(); return 0; printf("n 请输入要插入的字符:n"); scanf("%c",&t); getchar();int x=0,b=0; while(x<i+b) if(hou=*(p+x) for(j=i+b-1;j>x;j-) testj+1=testj; testx+1=t; testi+b+1='0'b+; x+; fp=fopen(filepath,"

37、w"); for(j=0;j<i+1;j+) ch=testj; fputc(ch,fp); fclose(fp); printf("n文件已保存!n");getchar(); printf("n是否还需要继续插入?(任意键继续/0退出)n"); scanf("%c",&m); if(m='0') fch=1; while(!fch); break; case 4:/替换功能doint a=0; printf("n 请输入文件路径(如D:name.txt: "); scanf

38、("%s",filepath);/输入路径 getchar();/接收Enter字符 fp=fopen(filepath,"r"); printf("n 文件内容如下:n"); rewind(fp);/返回文件首,输出整个文件的内容 do ch=fgetc(fp); putchar(ch); testi=ch; i+; while(ch!=EOF); testi='0'/串尾标识符fclose(fp);p=test; printf("n 请输入文章中要替换的字符:n");scanf("%c

39、",&t); getchar(); while(x<i) if(t=*(p+x) a=1; x+; if(a=0) printf("n 对不起,找不到您要替换的字符!n"); getchar(); return 0; printf(" 请输入您想要替换的字符: n");scanf("%c",&huan); getchar();int x=0;while(x<i) if(t=*(p+x) testx=huan; x+; fp=fopen(filepath,"w"); for(j=

40、0;j<i+1;j+) ch=testj; fputc(ch,fp); fclose(fp); printf("n 文件已保存!n");getchar(); printf("n 是否还需要继续替换?(任意键继续/0退出)n"); scanf("%c",&m); if(m='0') ft=1;while(!ft); break; case 0: break; default:printf("n 输入错误!"); return 0; return 0;void main() system(

41、"color f9"); int i=0,quitflag=0,a;/标志符 int n; char ch;char filepath30;/路径FILE *fp; while(!quitflag)/若为选择退出则继续 system("cls");/清屏menu1(); printf("请选择:");scanf("%d",&a);/输入选择getchar();/接收Enter键字符switch(a) case 1:/写入文件 printf(" 请输入文件路径(如D:name.txt): "

42、;); scanf("%s",filepath);/输入路径 getchar();/接收Enter字符 fp=fopen(filepath,"w+"); if(fp=NULL) printf("文件不存在!n"); else printf("请输入内容(以#结束)n"); while(ch=getchar()!='#')/若不为"#"继续输入 fputc(ch,fp); fclose(fp); printf("n 文件已保存!n"); break; case 2:/查看文件 output(); getchar(); break; case 3:/编辑文件 menu2(); printf("请选择:"); scanf("%d",&n); edit(n); brea

温馨提示

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

评论

0/150

提交评论