




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件设计报告姓名姓名:琳琳学号:学号:B12060421 2015 年年 5 月月 16 日日2015 年年 6 月月 16 日日目目 录录第一章 软件设计介绍.1第二章 软件开发平台简介.2第三章软件设计的内容.33.1分数统计软件(A1).33.1.1 设计题目及要求 .33.1.2 设计思想及程序流程框图 .33.1.3 逻辑功能程序 .33.1.4 结果及完善方向 .33.2打字软件(A2).33.2.1 设计题目及要求 .33.2.2 设计思想及程序流程框图 .33.2.3 逻辑功能程序 .33.2.4 结果及完善方向 .33.3文本编辑器(A3).33.3.1 设计题目及要求 .3
2、3.3.2 设计思想及程序流程框图 .43.3.3 逻辑功能程序 .43.3.4 结果及完善方向 .43.4加密软件(A4).43.4.1 设计题目及要求 .43.4.2 设计思想及程序流程框图 .43.4.3 逻辑功能程序 .43.4.4 结果及完善方向 .43.5进制转换器(A5).43.5.1 设计题目及要求 .43.5.2 设计思想及程序流程框图 .43.5.3 逻辑功能程序 .43.5.4 结果及完善方向 .53.6学生成绩核算系统的设计与实现(B1).53.6.1 设计题目及要求 .53.6.2 设计思想及程序流程框图 .53.6.3 逻辑功能程序 .53.6.4 结果及完善方向
3、.53.7模拟电信计费系统的设计与实现(B2).53.7.1 设计题目及要求 .53.7.2 设计思想及程序流程框图 .53.7.3 逻辑功能程序 .53.7.4 结果及完善方向 .5第四章 心得体会.60第一章第一章 软件设计介绍软件设计介绍一、所涉及的课程及知识点一、所涉及的课程及知识点高级语言程序设计:常量、变量、表达式的基本知识;函数的定义与调用;文件读写;数组、指针、结构体等自定义类型的使用;排序等知识。二、目的与任务二、目的与任务目的:目的:通过集中时间上机实验,对学生的程序设计能力进行一次综合训练,使学生充分发挥已有的编程能力,熟悉编译环境。选择若干课题,进行审题、分析、设计和调
4、试,在程序准备、程序实现、完成文档、答辩验收过程中,将全面巩固已学过的编程知识,全面提高编程技能,在编程风格、调试器的使用、测试技术等方面得到全面训练。学生在程序设计过程中,学生需要查找各种资料获取有用信息解决实际问题,自学相关知识,提高文档书写能力,加强团队合作意识,提高口头表达能力。任务:任务:软件设计课题共分 A 、B 两档。A 档共 5 题,题目较简单,第一周完成;B 档共 2 题,题目是综合性的,较复杂,第二周完成。三、主要仪器设备三、主要仪器设备硬件:硬件:微型计算机软件:软件:C、C+、Visual C+等四、参考书四、参考书【1】朱立华,王立柱C 语言程序设计北京:人民邮电出版
5、社,2009【2】朱立华,朱建,俞琼面向对象程序设计及 C+北京:人民邮电出版社,2008【3】张引等C 程序设计基础课程设计浙江:浙江大学出版社,20071第二章第二章 软件开发平台简介软件开发平台简介软件开发平台是一种软件开发工具,是以通用技术架构(例如软件开发平台是一种软件开发工具,是以通用技术架构(例如MVCMVC)为基础,集成常用建模工具、二次开发包、基础解决方案等而)为基础,集成常用建模工具、二次开发包、基础解决方案等而成。可以大幅缩减编码率,使开发者有更多的时间关注客户的需求,成。可以大幅缩减编码率,使开发者有更多的时间关注客户的需求,在项目的需求、设计、开发、测试、部署、维护等
6、各个阶段均可提在项目的需求、设计、开发、测试、部署、维护等各个阶段均可提供强大的支持。软件开发平台有两种平台模式,一种是传统的供强大的支持。软件开发平台有两种平台模式,一种是传统的 c/sc/s架构模式,一种是现在比较流行的架构模式,一种是现在比较流行的 b/sb/s 架构模式。架构模式。软甲件开发平台的分类,一般有三种:一种是软甲件开发平台的分类,一般有三种:一种是 SUNSUN 公司的公司的 SUNSUN ONEONE 框架平台,一种是框架平台,一种是 LAMP,LAMP,它是它是 LinuxLinux、ApacheApache、MysqlMysql、PHPPHP 四项四项技术的缩写,还有
7、一种是技术的缩写,还有一种是.NET.NET Framework(Framework(一般简称为一般简称为 NETNET 框架平台框架平台) )。LAMPLAMP 是一组常用来搭建动态网站或者服务器的开源软件,本身是一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个高的兼容度,共同组成了一个 WebWeb 应用程序平台。随着开源潮流的应用程序平台。随着开源潮流的蓬勃发展,开放了源代码的蓬勃发展,开放了源代码的 LAMPLAMP 已经与已经与 J2EEJ2E
8、E 和和.NET.NET 平台形成了三平台形成了三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此手袋整个因此手袋整个 ITIT 界的关注。从网站的流量上来说,界的关注。从网站的流量上来说,70%70%以上的访问以上的访问流量都是流量都是 LAMPLAMP 来提供的,来提供的,LAMPLAMP 是最强大的网站解决方案。是最强大的网站解决方案。LAMPLAMP 是是基于基于 LinuxLinux、ApacheApache、MySQLMySQL 和和 PHPPHP 的开放资源网络开发平台,这个的开放资源网络开发平台,这个术语来
9、自欧洲,在那里这些程序常用来作为一种标准开发环境。名术语来自欧洲,在那里这些程序常用来作为一种标准开发环境。名字来源于每个程序的第一个字母。每个程序在所有权里都符合开发字来源于每个程序的第一个字母。每个程序在所有权里都符合开发源代码标准:源代码标准:LinuxLinux 是开放系统,是开放系统,ApacheApache 是最通用的网络服务器,是最通用的网络服务器,2MySQLMySQL 是带有基于网络管理附加工具的关系数据库,是流行是带有基于网络管理附加工具的关系数据库,是流行的对象脚本语言,他包含了多数其他语言的优秀特征来使得它的网的对象脚本语言,他包含了多数其他语言的优秀特征来使得它的网络
10、开发更加有效。虽然这些开放源代码程序本身并不是专门设计成络开发更加有效。虽然这些开放源代码程序本身并不是专门设计成同另外几个程序一起工作的,但由于他们都是影响较大的开源软件,同另外几个程序一起工作的,但由于他们都是影响较大的开源软件,拥有许多共同特征,这就导致了这些组件经常在一起使用。在过去拥有许多共同特征,这就导致了这些组件经常在一起使用。在过去的几年里,这些软件的兼容性不断完善,在一起的应用情形变得更的几年里,这些软件的兼容性不断完善,在一起的应用情形变得更加普遍。越来越多的供应商、用户和企业投资者日益认识到,经过加普遍。越来越多的供应商、用户和企业投资者日益认识到,经过单个组件的开源软件
11、组成的平台用来构建以及运行各种商单个组件的开源软件组成的平台用来构建以及运行各种商业应用和协作构建各种网络应用程序变为一种可能和实践,变得更业应用和协作构建各种网络应用程序变为一种可能和实践,变得更加具有竞争力,更加吸引客户。无论是性能、质量还是价加具有竞争力,更加吸引客户。无论是性能、质量还是价格都将成为企业、政府信息化所必须考虑的平台。格都将成为企业、政府信息化所必须考虑的平台。平台是一种新型的软件平台,可用来在网络计算机系平台是一种新型的软件平台,可用来在网络计算机系统开发和运行高交互性、动态的、安全的小程序和应用程统开发和运行高交互性、动态的、安全的小程序和应用程序。平台有三种三种版本
12、,这使软件开发人员、服务提供序。平台有三种三种版本,这使软件开发人员、服务提供商和设备生产商可以针对特定的市场进行开发。商和设备生产商可以针对特定的市场进行开发。开发平台是一种用于建立服务器应用程序和开发平台是一种用于建立服务器应用程序和桌面应用程序的软件组件,用该平台创建的应用程桌面应用程序的软件组件,用该平台创建的应用程序在序在(通用语(通用语言运行环境)的控制下进行。是一个软件引擎,用来加载应言运行环境)的控制下进行。是一个软件引擎,用来加载应用程序,确认他们可以没有错误的执行,进行相应的安全许可验证,用程序,确认他们可以没有错误的执行,进行相应的安全许可验证,执行应用程序,然后在运行结
13、束后将他们删除。类库集提供了使应执行应用程序,然后在运行结束后将他们删除。类库集提供了使应用程序可以读写数据、在上通信、访问数用程序可以读写数据、在上通信、访问数3据库等的代码。所有的类库都建立在一个基础的类库之上,他提供据库等的代码。所有的类库都建立在一个基础的类库之上,他提供管理使用最为频繁的数据类型(例如数值或文本字符串)的功能,管理使用最为频繁的数据类型(例如数值或文本字符串)的功能,以及诸如文件输入输出等底层功能。以及诸如文件输入输出等底层功能。VisualVisual StudioStudio 是是微软公司微软公司推出的推出的开发环境开发环境,VisualVisual Studio
14、Studio 可以用来创建可以用来创建 WindowsWindows 平台下的平台下的 WindowsWindows 应用程序应用程序和网络应用程序,也可以用来创建网络服务、智和网络应用程序,也可以用来创建网络服务、智能设备应用程序和能设备应用程序和 OfficeOffice 插件插件。VisualVisual StudioStudio 是目前最流行的是目前最流行的WindowsWindows 平台平台应用程序开发应用程序开发环境。环境。VisualVisual StudioStudio 20082008 包括各种增强功能,例如包括各种增强功能,例如可视化设计可视化设计器器(使用(使用 .NE
15、T.NET FrameworkFramework 3.53.5 加速开发)加速开发) 、对、对 WebWeb 开发工具的大量开发工具的大量改进,以及能够加速开发和处理所有类型数据的语言增强功能。改进,以及能够加速开发和处理所有类型数据的语言增强功能。VisualVisual StudioStudio 20082008 为开发人员提供了所有相关的工具和框架支持,为开发人员提供了所有相关的工具和框架支持,帮助创建引人注目的、令人印象深刻并支持帮助创建引人注目的、令人印象深刻并支持 AJAXAJAX 的的 WebWeb 应用程序应用程序。开发人员能够利用这些丰富的开发人员能够利用这些丰富的客户端客户
16、端和服务器端框架轻松构建以和服务器端框架轻松构建以客户为中心的客户为中心的 WebWeb 应用程序,这些应用程序可以集成任何后端数据应用程序,这些应用程序可以集成任何后端数据提供程序、在任何当前提供程序、在任何当前浏览器浏览器内运行并完全访问内运行并完全访问 ASPASP NETNET 应用程序应用程序服务服务和和 MicrosoftMicrosoft 平台。平台。支持多种程序设计语言如:支持多种程序设计语言如:、等,实现了、等,实现了语言互用性。而只能用语言。随着开源潮流的蓬语言互用性。而只能用语言。随着开源潮流的蓬勃发展,开放源代码的已经与和商业软勃发展,开放源代码的已经与和商业软4件形成
17、三足鼎立之势。件形成三足鼎立之势。5第三章第三章 软件设计的内容软件设计的内容3.13.1 分数统计软件(分数统计软件(A1A1).1 设计题目及要求设计题目及要求课题内容:课题内容:设计一个分数统计程序。包括学生信息的输入输出以及排序。通过该课题全面熟悉数组、字符串、文件的使用,掌握程序设计的基本方法及友好界面的设计。课题要求:课题要求:(1)输入某班级学生的姓名、分数;(2)对(1)的分数进行降幂排列并输出;(3)具有输入输出界面。.2 设计思想及程序流程框图设计思想及程序流程框图设计思想为设计思想为:建立学生结构体数组,结构体成员包括存储姓名的字符型数组以
18、及存储分数的整型,使用 for 循环语句从输入处获取 n 个学生的姓名和成绩,成绩输入的信息存入结构体数组。再选择按成绩降幂排名,将结构体数组从头进行输出。算法流程框图为:算法流程框图为:开 始输入学生人数清屏输入是否正确?输入学生姓名 name和分数 gradeN.3 逻辑功能程序逻辑功能程序#include#include#includestruct student /存放学生信息的结构体char name20; /字符型数组存放姓名int grade; /成绩类型temp,std100;int main() int err; char x5; int n; int i;
19、 int m; char ch20; system(color F9); do system(cls); printf( nn); printf( * n); printf(t n); printf( O(_)O 欢迎使用本系统 O(_)O n); printf(t n ); printf( * n); printf( n); printf( 请输入学生个数 nn);do printf(tt 学生个数: );err=0;i=0;自动降幂排序输出排序后的成绩单 结 束7scanf(%s,x); /输入选项getchar();while(xi!=0) /依次检查输入的字符串是否为数字 if(xi9
20、|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,); getchar(); printf(tt 分数:); scanf(%d,&stdi.grade);if (stdi.grade100)printf ( 您的输入错误,请重新输入:n); printf(tt 分数:);scanf(%d,&stdi
21、.grade); getchar();printf( 输入信息:n);printf( * n);printf( 姓名 成绩 nn);for(i=0;in;i+)printf( %s %dn,,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);8 printf( * n); printf
22、( 名次 姓名 成绩 nn);for(i=0;in;i+) printf( 第 %d 名 %s %dn,i+1,,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); return 0;.4 结果及完善方向结果及完善方向实验结
23、果:A.初始界面:B.输入学生信息之后直接排序,界面如图所示:9C.若所输入的学生成绩在有效范围(0100)之外系统将会提示输入错误,界面如下图:程序分析:程序分析:10 此程序功能上满足基本的题目要求,能够做到输入学生的姓名和成绩,能够按成绩降幂排列并输出。完善方向:完善方向: 基本功能已实现,对于实际的系统,接下来完善的功能的是能够选择不同的科目进行输入,能够选择进行降幂或者升幂排序,同时能添加或删除学生信息,对于成绩相同的学生进行并列排名。3.23.2 打字软件打字软件(A2A2).1 设计题目及要求设计题目及要求课题内容:课题内容:设计一个打字程序。包括随机产生字符串,
24、以及字符串比较和统计。通过此课题,熟练掌握数组、格式输出、字符串处理等。课题要求:课题要求:(1)随机产生一字符串,每次产生的字符串内容、长度都不同;(2)根据(1)的结果,输入字符串,判断输入是否正确,输出正确率;(3)具有输入输出界面。.2 设计思想及程序流程框图设计思想及程序流程框图设计思想为:设计思想为:利用函数库里提供的产生随机函数 rand()产生随机的字符串长度,默认将长度定位在 1至 10 个字符。再产生一串由大小写字母以及数字组成的随机字符串,每产生一个字符串就按字保存至数组里。显示产生的字符串,开始打字后,将输入字符串保存至数组,打字完毕。再与产生字符进行逐
25、个比较,若相同,则正确个数加 1,最终得出正确率,输出显示。11算法流程框图为:算法流程框图为:.3 逻辑功能程序逻辑功能程序#include #include #include #include void main(void) int i,num,flag,m=0,k,over=1;char str100; /产生随机数组char str1100; /输入随机数组char c;float p;开 始随机产生字符串输入字符串依次比较,计算正确率输出正确率是否继续 结 束YN12system(color F9);while(over) /选择是否继续 num=0; /产生字符长度
26、 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;knum;k+) flag=rand()%3; /随机产生小于 3 的数 if(flag=0) strk=A+rand()%26; /产生
27、大写字母 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); printf(tt *nn); printf(请输入上面的字符串:); scanf(%s,str1);/输入字符串getchar();for(i=0;str1i!=0&stri!=0;i+) /进行比较 if(stri=str1i) m+; /m 为正确字符个数 p=(float) m/
28、num; printf(nnn * nn); printf( 正确率为:%.1f%n,p*100);printf( 正确个数为:%dn,m); printf(n * nnn);printf( n);printf( 是否还需继续练习?(任意键继续/N 键退出)n);scanf(%c,&c);/输入选项getchar();if(c=N|c=n) over=0;13 .4 结果及完善方向结果及完善方向A.A.初始界面:即随机产生的字符串为输出页面初始界面:即随机产生的字符串为输出页面B.B.当输入的字符串与随机产生的字符串一致时,正确率为当输入的字符串与随机产生的字符串一致时
29、,正确率为 100%100%,如图:,如图:14C.C.当输入的字符串与随机产生的字符串不一致时,程序将计算正确率并给出输当输入的字符串与随机产生的字符串不一致时,程序将计算正确率并给出输入正确的个数,如图:入正确的个数,如图:程序结果分析:程序结果分析: 此程序能保证每次产生的字符串不一样,且能正确地输出准确率,基本完成了打字训15练的任务。考虑到程序的实用性,可以为程序添加计时功能、记录保存功能等,可以使使用者更加灵活地运用打字软件。程序完善方向:程序完善方向: 对于这个程序,不足的就是可以添加计时功能,在打字前,可以询问用户是否进行计时,还可以添加功能,由用户自己选择可从从其他文件导入一
30、段字符串。3.3 文本编辑器文本编辑器(A3).1 设计题目及要求设计题目及要求课题内容:课题内容:设计一个简单的文本编辑器,该系统要求对一个文本文件中的内容进行各种常规操作,如:插入、删除、查找、替换等功能。通过此课题,熟练掌握文本文件的操作及用字符数组或字符指针实现字符串操作的功能。 课题要求:课题要求:(1)编辑文本;(2)保存、打开指定位置的文本文件;(3)具有输入输出界面。.2 设计思想及程序流程框图设计思想及程序流程框图设计思想为:设计思想为:在主菜单可选择建立文本、编辑文本、读取文本和退出程序。以只写方式编辑文本,若文本不存在则提示“不能打开文件”
31、 ,打开的文件则输入的内容以“#”作为结束标识;读取文件时,提示需要读取的目标文本路径,将文本里的内容输出。算法流程框图为:算法流程框图为: 开 始输出功能菜单输入选项 choosechoose=1choose=2choose=4choose=3NNN.3 逻辑功能程序逻辑功能程序#include #include #include void menu1() printf( nn);printf( * O(_)O 欢迎使用此软件 O(_)O *nn);printf( * 文本编辑器 * nn); printf( 1.建立文件 2.查看文件 3.编辑文件 0.退出 1.查找
32、2.删除 3.插入 4.替换 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); rewind(fp);/返回文件首,输出整个文件的内容 do ch=fgetc(fp); putchar(ch); while(ch!=EOF);fclose(fp);return 0;int
33、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;18char hou;char huan; char filepath30;/路径 char t;FILE *fp; switch(n) case 1:/查找功能 printf(n 请输入文件路径: ); scanf(%s,filepath);/输入路径 getchar();/接收 Enter 字符 fp=fopen(filepath,r); printf(n 文件内容如下:n); rewind(fp);/
34、返回文件首,输出整个文件的内容 do ch=fgetc(fp); putchar(ch); testi=ch; i+; while(ch!=EOF); testi=0;/串尾标识符fclose(fp);p=test;doa=0,x=0;printf(n 请输入要查找字符:);scanf(%c,&t);getchar();while(xi) if(t=*(p+x)printf(n 您要查找的字为:%c,它是第 %d 个n,t,x+1); a=1; x+; 19if(a=0) printf(n 对不起,您要找的字不存在!n); printf(n 是否还需要继续查找?(任意键继续/0 退出)
35、n);scanf(%c,&m); if(m=0) fc=1; while(!fc);break;case 2:/删除功能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;
36、/串尾标识符fclose(fp);printf(n 请输入要删除字符:);scanf(%c,&t);getchar(); while(x(i-a) if(testx=t) a+;for (c=x;c(i-a);c+)20 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 对不起,此字符不存在,无法删除!n); printf(n 文件已保存!n);getchar(); printf
37、(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();/接收 Enter 字符 fp=fopen(filepath,r); printf(n 文件内容如下:n); rewind(fp);/返回文件首,输出整个文件的内容 do ch=fgetc(fp); putchar(ch);21 testi=ch; i+; wh
38、ile(ch!=EOF); testi=0;/串尾标识符fclose(fp);p=test;printf(n 请输入要插入到哪个字符后面:n);scanf(%c,&hou);getchar(); while(xi+a) if(hou=*(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(xx;j-) testj+1=testj; 22 testx+1=t; testi+
39、b+1=0;b+; x+; fp=fopen(filepath,w); for(j=0;ji+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(%s,filepath);/输入路径 getchar();/接
40、收 Enter 字符 fp=fopen(filepath,r); printf(n 文件内容如下:n); rewind(fp);/返回文件首,输出整个文件的内容 do ch=fgetc(fp); putchar(ch); testi=ch; i+; while(ch!=EOF);23 testi=0;/串尾标识符fclose(fp);p=test; printf(n 请输入文章中要替换的字符:n);scanf(%c,&t); getchar(); while(xi) if(t=*(p+x) a=1; x+; if(a=0) printf(n 对不起,找不到您要替换的字符!n); get
41、char(); return 0; printf( 请输入您想要替换的字符: n);scanf(%c,&huan); getchar();int x=0;while(xi) if(t=*(p+x) testx=huan; x+; 24 fp=fopen(filepath,w); for(j=0;ji+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(!f
42、t); break; case 0: break; default:printf(n 输入错误!); return 0; return 0;void main() system(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)25 case 1:/写
43、入文件 printf( 请输入文件路径(如 D:name.txt): ); 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:/编辑
44、文件 menu2(); printf(请选择:); scanf(%d,&n); edit(n); break; case 0: quitflag=1;break;/若输入 0,则退出标志符为 1 default:printf(输入错误!); .4 结果及完善方向结果及完善方向A.A.初始界面:初始界面:26B.B.建立文本:建立文本:C.C.读取文本:读取文本:27D.D.编辑文本子界面:编辑文本子界面:E.E.查找:查找:28F.F.若输入多个字符则以第一个为准:若输入多个字符则以第一个为准:G.G.若输入不存在的字符,系统将提示并重新输入若输入不存在的字符,系统将提
45、示并重新输入29H.H.删除:删除:I.I.插入:插入:30J.J.替换:替换:程序结果分析程序结果分析: 本程序可以根据指定文件名进行建立文件、读取文件、编辑文件等操作。31程序完善方向程序完善方向: 在编辑文本阶段,只是以覆盖的方式进行编辑,这样会导致文件以前的内容完全丢失。应该在编辑函数中增加“追加编辑”的功能,这样可以使使用者灵活的通过“覆盖方式”“追加方式”进行文件编辑。3.4 加密软件加密软件(A4).1 设计题目及要求设计题目及要求课题内容:课题内容:设计一个加密程序。包括明文与密钥的转换。通过此课题,熟练掌握数组、格式输出、字符串处理、类型转换等。课题要求:课题
46、要求:(1)输入任意一段明文 M,以及密钥 K;(2)根据以下公式将其转换为密文 C。 Ci = mi + K ,其中 i = 0,1,n-1 , K 为密钥;(3)具有输入输出界面。.2 设计思想及程序流程框图设计思想及程序流程框图设计思想为设计思想为: 输入明文,保存在字符串中,输入密钥,以字符数组形式获取,若为数字字符,则取其数值,若为其他,则取其 ASCII 码值,最后转换成十进制数,将每个字符+密钥后生成密文字符,然后按顺序输出显示密文。算法流程框图为算法流程框图为: 输入明文和密钥 密钥转换 加密 解密 输出明文输出密文NY 开始3.3 逻辑功能程
47、序逻辑功能程序#include#include#include#include#includevoid menu();int itn(char s);void Jiami(char m,int k);void Jiemi(char m,char y);int main() char m1000; /输入的明文 char y1000; /输入的密钥 char s10; char m11000; char ch; int k,choice; int i,n;system(color fd); do system(cls); menu();printf(nnn *n); printf( 请输入一段明
48、文:); gets(m); strcpy(m1,m); printf(n 请输入密钥(按#号键结束):); for(i=0;i+) /密钥输入不显示字符,显示* ch=getch(); if(ch=#) yi=0; break; putchar(*); yi=ch; 结束33 k=itn(y); Jiami(m,k); printf( 是否需要解密?(y/n): ); ch=getchar(); getchar(); if(ch=y|ch=Y) Jiemi(m1,y); printf(n 继续请按 1,退出请按 0:); scanf(%d,&n); getchar(); if(!n)
49、printf(nnttt* 谢谢使用!*nn); while(n); return 0;void menu() printf(nnnt*O(_)O欢迎进入此软件O(_)O*n);printf(t*n);printf(t 加密系统 n);printf(t*nn);int itn(char s) /输入字符串转换为数值 int i,k=0,l;l=strlen(s); for(i=0;i127)k=k%128;return k;void Jiami(char m,int k) /加密 int i,l; l=strlen(m);printf(tttnn * 密文如下:* nn); for(i=0;i
50、l;i+) / 其间为可打印字符mi=mi+k;if(mi126)34mi=mi-127;if(mi33)mi=mi+33; printf(%c,mi); printf(nn n);void Jiemi(char m,char y) int count=0,i,f; char s1000,ch; do f=0; printf(n 请输入密钥(按#号键结束):); for(i=0;i+) /密钥输入不显示字符,显示* ch=getch(); if(ch=#) si=0; break; putchar(*); si=ch; if(strcmp(s,y)=0) printf(nn 解密成功,明文为:
51、);puts(m); else printf( 密钥错误!n);f=1;count+; if(count=3)printf(n 您输入的 3 次密钥均错误,解密失败!n); break; while(f);.4 结果及完善方向结果及完善方向A.A.初始界面:初始界面:35B.B.加密过程:加密过程:C.C.解密过程:解密过程:36D.D.密匙输入错误时:密匙输入错误时:E.E.当密匙三次输入错误时,解密失败:当密匙三次输入错误时,解密失败:37F.F.退出界面退出界面程序结果分析:程序结果分析: 此程序基本完成功能,能实现字符串的加密与解密,具有较友好的界面,能实现多次加密与解
52、密。程序完善方向:程序完善方向:38 此程序没有将加密和解密模块分开,应在程序上加以完善。界面可以做得更友好。3.5 进制转换器进制转换器(A5).1 设计题目及要求设计题目及要求课题内容:课题内容:设计一个进制转换器程序。包括二进制、八进制、十进制、十六进制数互相转换。通过此课题,熟练掌握字符串、格式输出、进制换算的各种操作。课题要求:课题要求:(1)可输入二进制、八进制、十进制、十六进制数;(2)将已输入的数转换成其余进制的数;(3)具有输入输出界面。.2 设计思想及程序流程框图设计思想及程序流程框图设计思想:设计思想:(1)输入“输入进制”base1; (
53、2)输入一个 base1 进制的数 n,检验 n 数字的合法性; (3)输入“输出进制”base2; (4)将 n 转换成十进制数 temp,再将 temp 转换成 base2 进制数; (5)为防止数据溢出,限制数据位数为 6 位。算法流程框图为:算法流程框图为:39 1 2 3 4 N N N Y Y Y YY N 输入n n二进制八进制十六进制十进制 结 束二进制十六进制十进制八进制转换十进制转换二进制、十进制转换二进制转换二进制、十进制转成并输出其他进制转成并输出其他进制转成并输出其他进制转成并输出其他进制 是否继续?输出功能菜单开始0NYYYY40.3 逻辑功能程序逻
54、辑功能程序#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;system(color fd);do system(cls);printf(nnn);printf(t * O(_)O 欢迎使用此软件 O(_)O *nn);printf(t * * * n);printf(t 数制转换系统 1 二进制 2 八进制 3 十进制 4 十六进制 0 退出 4|x7 | ci9 | ci0) err=1;/若输入数据为非数字符号,则错误 i+
55、; 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);43 printf(t 八进制: %on,num); printf(t 十六进制: %xn,num); printf(t*nn); printf(t 是否需要继续?(任意键继续 N 键退出); scanf(%c,&w); getchar(); if(w=N|w=n) quitfl
56、ag=1; break; case 4: /输入十六进制 do err=0;i=0;num=0; printf(nt 请输入十六进制数:); scanf(%s,c); getchar(); while(ci!=0) if(ci=0) err=0;/若输入数据为非数字符号,则错误 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) num=num+c
57、i-48; if(a=ci&ci=f) num=num+ci-97+10; if(A=ci&ci=0) printf(%d,bi-); /输出二进制数 printf(n);.4 结果及完善方向结果及完善方向A.A.初始界面:初始界面:45B.B.当输入为二进制时:当输入为二进制时:C.C.当输入为八进制时:当输入为八进制时:46D.D.当输入为十进制时:当输入为十进制时:E.E.当输入为十六进制时:当输入为十六进制时:47F.F.输入错误时,程序将提示输入错误并回到输入界面,如图所示:输入错误时,程序将提示输入错误并回到输入界面,如图所示:48程序结果分析:程序
58、结果分析: 本程序基本实现功能,且能实现 16 以下的任意进制间的相互转换,在输入非法进制数时能报错提醒,并可以多次转换。程序完善方向:程序完善方向: 本程序只能实现整数进制之间的转换,应对代码进行进一步优化,以实现小数进制间的相互转换;数字的大小受到一定的限制,可以尝试用数组解决大数间进制转换问题;题输出界面可以进一步美化。3.6 学生成绩核算系统的设计与实现学生成绩核算系统的设计与实现(B1).1 设计题目及要求设计题目及要求课题内容:课题内容:设计一个学生成绩核算系统。能实现从文件中读取学生成绩资料,并提供成绩查询统计服务。通过此课题,熟练掌握文件、数组、结构体的各种操作
59、以及友好界面的设计。课题要求:课题要求:(1)按班级按课程从文件中读入相应的平时成绩、期中考试成绩和期末考试成绩。(2)三个成绩对总评成绩的百分比被定义为常数,各占总成绩的 30%、30%和 40%。(3)计算每位学生的总评成绩。(4)计算该班级本课程的总平均成绩。(5)计算处于优、良、中、及格、不及格的学生人数以及占总人数的百分比。其中100-90 为优,89-80 为良,79-70 为中,69-60 为及格,60 分以下为不及格。(6)按要求输出成绩在优、良、中、及格、不及格各区间的学生学号、成绩。.2 设计思想及程序流程框图设计思想及程序流程框图设计思想: 先显示一个功能
60、菜单供用户选择所需功能。菜单功能分别为:1、显示学生成绩;2、显示学生的总评成绩及该班级本课程的总平均成绩;3、显示学生的成绩等级及占总人数的百分比;4、显示成绩在各等级区间的学生学号、成绩;5、退出程序。程序先判断读取的文件是否存在,不存在则显示打开文本错误;存在则读取文件中的学生的信息,然后设计程序将每位学生的总评成绩以及该班级本课程的总平均成绩计算出来,并将总评成绩判定为相应的等级,之后建立一个文本输入学生学号总评成绩,成绩等级。若用户选择读取学生成绩则从文件中读取相应的平时成绩期中成绩期末成绩,并在界面上显示出来。若选择查询学生的总评成绩及总平均成绩,则从文本中读取相应的信息并在界面上显示出来。选择查询学生成绩等级及占总人数的百分比,则从文本中读取学生学号和相应的成绩等级,并将计算的百分比也读取,最后显示在界面上。选择输出成绩在优良中及格不及格各区间学生学号成绩,先请用户输入要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代理租地服务合同范例
- 危化品代办合同范例
- 华能煤炭合同范例
- 加盟海鲜水产合同范例
- 买卖车位房产合同范例
- 叉车雇用合同范例
- 厂房买房合同范例
- 农村园子出售合同范例
- 入境接送租车合同范例
- 与老外书面合同范例
- 运动训练学-运动员技术能力及其训练
- 数字经济学导论-全套课件
- 保护用户隐私需要“规则之锁”(2021湖北十堰中考议论文阅读试题含答案)
- 职工大会民主测评表
- 近5年高考理科数学试卷及答案解析(含2017-2021年全国卷共16套)
- HG-T 6050-2022 管线阀门用抗气体快速减压橡胶密封圈
- 【语言学习】趣味识字:“鸟”字的前世今生
- 110kV线路备自投福源调试报告
- 环境空气自动监测站运行维护技术方案说明
- 幼儿园绘本故事:《老虎拔牙》 课件
- GB/T 17146-2015建筑材料及其制品水蒸气透过性能试验方法
评论
0/150
提交评论