字符串是字符的序列,它是许多程序设计语言的基本数据结构。有些语言中的字符串是通过字符数组实现的(如C语言),Java语言是通过字符串类实现的。Java语言提供了三个字符串类:String类、StringBuilder类和StringBuffer类。String类是不变字符串,StringBuilder和StringBuffer是可变字符串,这3种字符串都是16位的Unicode字符序列,并且这3个类都被声明为final,因此不能被继承。
计算机科学技术发展异常徐速,内容更新很快。Java语言作为面向对象的、跨平台的编程语言,迅速成为IT领域里的主流编程语言。字符串作为计算机语言常用的处理对象,更加是Java中强大的处理能力的方法。所以,对String类的方法的调用、实现以及对String类的高效操作更是体现了一个程序员的能力。作为一个合格的程序员,只有多编写计算机程序和在计算机上调试程序,擦能把Java语言的语法规则、编程基本方法和技巧、各种算法编程实实在在的知识。在此之前,熟悉各种Java的基本语言特性、语法规则,尤其是String类的掌握与应用就显得十分必要。
本次笔者利用Java语言提供的各种类包、方法以及各种接口,做了一个小型的可视化的String类的处理小工具,一方面是为了锻炼和强化自己的编程能力,另一方面,利用自己做的这个工具,可以很好的解决一些关于String类的小问题,解决一些实际方面的现实问题,从而将自己所学的知识运用的实际生活当中。
整个程序可以完成String字符串的一些常用处理,String类的基本功能都能完成,还做了可视化界面,方便用户的操作,使用起来更是简单易懂。通过这个小程序,实为锻炼自己的所学。
由于制作时间有限,加之编者水平有限,不当之处在所难免,希望广大朋友批评指正。
I
摘要
本该设计要求实现jdk基础类库中String类的主要方法。
通过该题目的设计,培养学生面向对象程序设计的思想,要求学生达到熟练掌握Java语言的基本知识和技能,基本掌握面向对象程序设计的基本思路和方法,能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。同时强调好的程序设计风格,提高解决实际问题的能力。
要求利用面向对象的方法以及Java的编程思想来完成系统的设计。要求在设计的过程中,建立清晰的类层。在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法。在系统的设计中,要求运用面向对象的机制(继承、派生及多态性)来实现系统功能。 关键词:String类;对象;Java;程序设计
II
目录
序言................................................................................................................................ I 摘要............................................................................................................................... II 一、 系统分析与设计.................................................................................................. 1
1.1功能分析 ......................................................................................................................... 1 1.2总体设计 ......................................................................................................................... 1 1.3系统类层次关系图 ......................................................................................................... 2
二、 详细设计.............................................................................................................. 3
2.1MainHS类的设计 ............................................................................................................ 3 2.2 Stringcp类的设计 ...................................................................................................... 4 2.3 其它界面子类的设计 ................................................................................................... 5
三、 系统测试.............................................................................................................. 6
3.1 常用的测试方法 ........................................................................................................... 6 3.2 测试方案 ....................................................................................................................... 6 3.3 测试过程 ....................................................................................................................... 7 3.4 测试结果 ..................................................................................................................... 11
四、 软件说明书........................................................................................................ 12 五、设计总结.............................................................................................................. 16 六、参考文献.............................................................................................................. 17 附录:源代码(部分程序)...................................................................................... 18
III
一、 系统分析与设计
1.1功能分析
进过对题目要求的仔细分析,要完成String类的基本功能,该系统的要求实现以下功能:
实现字符串的连接; 求字符串的长度;
求字符串中某个字符的位置; 实现字符串的比较;
实现字符串中提取某个子串; 字符串中字符大小写的转换; 字符串中指定字符的替换。
1.2总体设计
Java
程序编辑器是:图形界面、流与文件等技术的综合应用。图
形界面的实现:考虑到简单、实用、高效等特点,就选择了Swing来完成实现,在选择组件上,选用了JFrame、Jbutton等作为主要的部件。
为了完成可视化的界面图形,用Java语言完成各个功能的实现,我借助了jdk1.7.25的开发环境,开发工具主要借助eclipse来完成,用到了Swing插件以及Swing提供的各种类包,来完成软件。
考虑到String类主要的功能实现,用到图形界面,我总共设计了10个大类来完成这个系统。大致分为一个主界面类,一个实现方法的类,八个功能界面的类。具体如下:
Class MainHS //主界面类
Class Stringcp //所有方法实现的方法类
1
Class sub Class sub2 Class sub3 Class sub4 Class sub5 Class sub6 Class sub7 Class sub8
//字符串连接功能界面 //字符串长度求取功能界面
//字符串中某字符位置求取功能界面 //两个字符串比较功能界面 //提取字串功能界面
//字符串大写字母—〉小写字母功能界面 //字符串小写字母—〉大写字母功能界面 //字符串中某字符替换的功能界面
1.3系统类层次关系图
图1.3.1为界面调用类的关系图,每个子块的功能实现君调用Stringcp类中的功能函数来实现。
String类处理主界面 提 求 求 比 取 长 位 较 子 串 度 置 图1.3.1
连 接 大 写 -> 小 写 小 写 -> 大 写 字 符 替 换 2
二、 详细设计
2.1MainHS类的设计
MainHS一方面作为程序的主界面类,一方面作为整个程序的入口,主要以简单的界面方式做成,简单到只有八个按钮,主要作为程序入口介入功能。主要实现代码如下:
frmString = new JFrame();
frmString.getContentPane().setEnabled(false); frmString.setAlwaysOnTop(true);
frmString.setTitle(\"String\类\处\理\"); frmString.setBounds(100, 100, 287, 379);
frmString.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frmString.getContentPane().setLayout(null) JButton button = new JButton(\"\连\接\");
button.setBackground(UIManager.getColor(\"Button.shadow\")) button.setBounds(0, 0, 276, 45);
frmString.getContentPane().add(button);
其中每个按钮有一个事件监听,就给出一个例子,代码如下:
btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { sub2 a = new sub2(); a.main(null); }
3
2.2 Stringcp类的设计
Stringcp类作为整个系统的核心运算部分,主要完成各个功能的实现,里边包含了八个功能实现函数,通过类的创建对象来实施调用,从而实现各个功能的实现。其中主要包含的函数有:
(1) public String link(String st1,String st2)
功能实现:实现字符串的连接
实现方法:通过字符串连接符“+”完成
(2) public int Leng(String st)
功能实现:求字符串的长度
实现方法:通过length函数来完成
(3)public static String Pl(String st,char x)
功能实现:求字符串中某个字符的位置
参数说明:x为st字符串中所要查找的字符 实现方法:通过循环搜索来完成
(3) public String Sstring(String st,int a,int)
功能实现:实现字符串中提取某个子串 参数说明:从a开始,从b结束
实现方法:用函数substring()来实现
(4) public String Switch(String st)
功能实现:字符串中字符小写->大写的转换 实现方法:用函数toLowerCase()来实现
(5)public String Switch2(String st)
功能实现:字符串中字符大写->小写的转换 实现方法:用函数toUpperCse()来实现
(5) public static String Zhchar(String st,int b,char x)
功能实现:字符串中指定字符的替换
参数说明:b表示要替换的位置,x表示替换的元素
(6)public boolean Cp(String st1,String st2)
功能实现:两个字符串比较,相等取true,不等取false
实现方法:用equals()函数来实现
在功能子类中,用到了很多的方法,其中很多是java类库提供的方法,其中有charAt(int index)(返回字符串index位置处的字符)、String.valueOf(int i)(将int i 转换成String类型)、String.vlaueOf(char[] index)(将index字符数组转换成String类型)等等的函数。
4
2.3 其它界面子类的设计
其它功能子类的设计大多相似,主要用了各种的文本窗口(JTextField)和各种的按钮(JButton)以及各种事件监听(addActionListener)来实现功能。 其主要用到的成员定义如下:
private JFrame frame;
private JTextField textField; private JTextField textField_1; private JTextField textField_2; JButton button = new JButton();
//按钮的定义
//文本输入框的定义
子类主要是通过文本框和按钮来实现,在文本框中输入相应的内容,点击相应的按钮,在结果处就会看到相对应的结果,完成String类处理的功能。
事件监听按钮主要通过(button.addActionListener(new ActionListener()) 方法来实现,通过调用Stringcp类中的方法,来实现相应的功能,下方为一个具体的例子:
public void actionPerformed(ActionEvent e) {
String p = new String(textField.getText()); String p2 = new String(textField_1.getText()); Stringcp a = new Stringcp(); String p3=a.link(p, p2); textField_2.setText(p3); }
5
三、 系统测试
3.1 常用的测试方法
软件测试非方法有很多,比如 1)β测试,英文是Beta testing。又称Beta测试,用户验收测试(UAT)。
2)α测试,英文是Alpha testing。又称Alpha测试。 3)可移植性测试,英文是Portability testing。又称兼容性测试。 4)用户界面测试,英文是User interface testing。又称UI测试。 5)冒烟测试,英文是Smoke testing。 6)随机测试,英文是Ad hoc testing。 7)白盒测试。 8)黑盒测试。 9)自动化测试。 10)回归测试。 11)验收测试。 12)动态测试等等。
3.2 测试方案
本系统采用的是黑盒测试,采用各个字符串进行测试。
6
3.3 测试过程
1.主界面测试: 测试结果如下:
2.字符串连接测试: 测试用例:
字符串1输入:asdfiop 字符串2输入:dsopirps 测试结果如下:
7
3.字符串长度测试: 测试用例:
输入字符串:sioealkjsdfao 测试结果如下:
4.字符串位置测试: 测试用例:
输入字符串:asdfiiasdfaerda 要查找字符:a 测试结果如下:
8
5.字符串比较测试: 测试用例(2组): (1) 字符串1输入:asdfpoi
字符串2输入:asdfpol 测试结果如下:
(2) 字符串1输入:abcdejkl
字符串2输入:abcdejkl 测试结果如下:
9
6.提取子串测试: 测试用例:
输入字符串:Hello world! 起始位置:3 结束位置:10 测试结果如下:
7.大写字母->小写字母测试: 测试用例:
输入字符串:whosYOURdaddy 测试结果如下:
10
8.小写字母->大写字母测试: 测试用例:
输入字符串:whosYOURdaddy 测试结果如下:
9.字符替换测试: 测试用例:
输入字符串:Showmethemoney 输入要改变第几个字符:5 输入要改成的目标字符:9 测试结果如下:
3.4 测试结果
经过测试,所得结果与预期完全一致。
11
四、 软件说明书
运行功能及其所用附件功能在可视化窗口已经详细列出,按照界面窗口的提示,按步骤输入,即可得到正确的结果。 所有功能如下图所示: 1.字符串连接
2.字符串长度求取
12
3.字符位置求取
4.字符串比较
13
5.提取子串
6.大写字母->小写字母
14
7.小写字母->大写字母
8.字符替换
只要按照提示一步步输入,就可以得到正确结果。
15
五、设计总结
经过两个星期的努力,完成了此次课程设计。通过这次的课程设计,将书本上的知识运用到实践上,从而进一步巩固和丰富所学知识,也让我更加深层次的认识了java及其功能的强大。为了更好地完成这次课程设计,我上网查阅资料,到图书馆翻阅书籍。这个过程中也锻炼了我的思维分析、遇到问题及想法设法通过各种途径解决问题的能力。
本次课程设计要求以图形用户界面技术来实现,用到许多GUI的知识,比如:各种组件、容器、布局管理、事件监听、事件响应等。因此我了解了更多的GUI方面的知识。
在课程设计过程中,在把书本上的知识给系统的复习了一下的同时,同时也发现了自己的太多不足,对java语言整体知识构架不够熟悉,不能灵活地运用所学的知识点,掌握的知识不够多,在课程设计过程中遇到了许多困难,因此应该在将来学习更多的java方面的知识。
16
六、参考文献
[1]曲朝阳,杨杰明等.Java程序设计. 北京: 清华大学出版社,2008.10 [2]耿祥以,张跃平.Java大学生实用教程. 北京: 电子工业出版社,2012.6 [3]明日科技.Java经典编程.北京:清华大学出版社,2012.10 [4]李尊朝,苏军.Java语言程序设计.北京:中国铁道出版社,2004.2 [5]王博. 面向对象的建模、设计技术与方法. 北京希望电脑公司,1990.
17
附录:源代码(部分程序)
public class Stringcp {
public String link(String st1,String st2) //实现字符串的连接; { }
public int Leng(String st) //求字符串的长度 { }
public static String Pl(String st,char x) //求字符串中某个字符的位置 //x为st字符串中所要查找的字符 { }
public String Sstring(String st,int a,int b) //实现字符串中提取某个子串 //从a开始,从b结束
18
String st3; st3=st1+st2; return st3;
int a;
a = st.length(); return a;
char a[]=st.toCharArray(); int i,k,p=0; String c=\" \"; k=a.length; for(i=0;i return \"所查找的字符不在串中\"; else return c; if(a[i]==x) { } String j=String.valueOf(i+1); // 将int->String c=c+j+\" \"; p++; } { } public String Switch(String st) //字符串中字符小写->大写的转换 { } public String Switch2(String st) //字符串中字符大写->小写的转换 { } public static String Zhchar(String st,int b,char x) //字符串中指定字符的替换 //b表示要替换的位置,x表示替换的元素 { } public boolean Cp(String st1,String st2) //两个字符串比较,相等取true,不等取false { } boolean x; x = st1.equals(st2); return x; char a[]; int i,k; a = st.toCharArray(); k = st.length(); for(i=0;i if(i==(b-1)) { } a[i]=x; return st.toLowerCase(); String s=st.toUpperCase(); return s; String cmst; cmst=st.substring(a,b); return cmst; 19 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuowenda.com 版权所有 湘ICP备2023022495号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务