Java设计报告汇总
Java程序设计报告
目录1、Java语言概述 (1)2、项目选题说明与项目计划 (1)3、项目需求分析 (2)4、数据库设计 (3)5、总体结构设计 (5)6、主要程序叙述 (7)7、程序测试及项目测试 (8)8、程序使用说明书 (11)9、总结 (11)参考文献 (12)附录 (13)1.Java 语言概述1.1Java语言Java是一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。
Java语言是可以编译也可以执行的,编译与执行需要分两步进行,先把编写的保存为Java 文件,再通过Java编译器编译成.class文件,再通过解释器解释称可执行的程序。
1.2Java平台Java的主要平台有JDK和JRE两种:JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。
自从Java推出以来,JDK已经成为使用最广泛的Java SDK。
JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。
JDK是学好Java的第一步。
而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。
从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。
SE(J2SE),standard edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE。
EE(J2EE),enterprise edition,企业版,使用这种JDK开发J2EE应用程序,从JDK 5.0开始,改名为Java EE。
ME(J2ME),micro edition,主要用于移动设备、嵌入式设备上的java应用程序,从JDK 5.0开始,改名为Java ME。
JRE为JavaRunTimeEnvironment的简称,JavaRuntimeEnvironment(包括JavaPlug-in)是Sun的产品,包括两部分:JavaRuntimeEnvironment和JavaPlug-in。
java类的设计实验报告
java类的设计实验报告Java 类的设计实验报告一、实验目的本次实验的主要目的是深入理解和掌握 Java 类的设计原则、方法和技巧,通过实际的编程实践,提高对面向对象编程思想的应用能力,培养良好的编程习惯和代码规范。
二、实验环境1、操作系统:Windows 102、开发工具:IntelliJ IDEA3、 JDK 版本:18三、实验内容1、设计一个简单的学生类(Student),包含学生的姓名(name)、年龄(age)、学号(studentId)等属性,并提供相应的构造方法、getter 和 setter 方法。
2、设计一个课程类(Course),包含课程名称(courseName)、课程编号(courseId)、授课教师(teacher)等属性,同样提供构造方法和相关的访问方法。
3、设计一个学生选课类(StudentCourse),用于关联学生和课程,包含学生对象(student)、课程对象(course)、选课时间(selectTime)等属性,并实现相应的方法来获取和设置这些属性。
四、实验步骤(一)学生类(Student)的设计```javapublic class Student {private String name;private int age;private String studentId;//无参构造方法public Student(){}//有参构造方法public Student(String name, int age, String studentId) {thisname = name;thisage = age;thisstudentId = studentId;}// getter 和 setter 方法public String getName(){return name;}public void setName(String name) {thisname = name;}public int getAge(){return age;}public void setAge(int age) {thisage = age;}public String getStudentId(){return studentId;}public void setStudentId(String studentId) {thisstudentId = studentId;}}```(二)课程类(Course)的设计```javapublic class Course {private String courseName;private String courseId;private String teacher;//无参构造方法public Course(){}//有参构造方法public Course(String courseName, String courseId, String teacher) {thiscourseName = courseName;thiscourseId = courseId;thisteacher = teacher;}// getter 和 setter 方法public String getCourseName(){return courseName;}public void setCourseName(String courseName) {thiscourseName = courseName;}public String getCourseId(){return courseId;}public void setCourseId(String courseId) {thiscourseId = courseId;}public String getTeacher(){return teacher;}public void setTeacher(String teacher) {thisteacher = teacher;}}```(三)学生选课类(StudentCourse)的设计```javapublic class StudentCourse {private Student student;private Course course;private String selectTime;//无参构造方法public StudentCourse(){}//有参构造方法public StudentCourse(Student student, Course course, String selectTime) {thisstudent = student;thiscourse = course;thisselectTime = selectTime;}// getter 和 setter 方法public Student getStudent(){return student;}public void setStudent(Student student) {thisstudent = student;}public Course getCourse(){return course;}public void setCourse(Course course) {thiscourse = course;}public String getSelectTime(){return selectTime;}public void setSelectTime(String selectTime) {thisselectTime = selectTime;}}```(四)测试类```javapublic class Test {public static void main(String args) {//创建学生对象Student student1 = new Student("张三", 20, "001");//创建课程对象Course course1 = new Course("Java 编程","001","李老师");//创建学生选课对象StudentCourse studentCourse1 = new StudentCourse(student1,course1, "2023-09-01");//输出学生选课信息Systemoutprintln("学生姓名:"+ studentCourse1getStudent()getName());Systemoutprintln("学生年龄:"+ studentCourse1getStudent()getAge());Systemoutprintln("学生学号:"+ studentCourse1getStudent()getStudentId());Systemoutprintln("课程名称:"+ studentCourse1getCourse()getCourseName());Systemoutprintln("课程编号:"+ studentCourse1getCourse()getCourseId());Systemoutprintln("授课教师:"+ studentCourse1getCourse()getTeacher());Systemoutprintln("选课时间:"+studentCourse1getSelectTime());}}```五、实验结果与分析通过运行测试类,成功输出了学生选课的相关信息,包括学生的姓名、年龄、学号,课程的名称、编号、授课教师以及选课时间。
Java设计报告汇总
JAVA程序设计实训报告系部:计算机系班级:13网络技术教师:胡恩勇姓名: 邓天顺-、设计题目数据库数据操作二、 目的和要求:1. 掌握JDBC 原理。
和用JAVA JDBC 技术连结数据2. 使用JDBC 数据库存取技术。
3. 用java 编写 数据库的增加,删除,查询,修改4. 实现主要功能,界面不作要求。
三、 设计过程JDBC 是基于java 的,用于访问关系数据库的应用程序编程接口 (API),提供在 java 应用程序中执行sql 语句以访问和操作关系数据库的方法。
JDBC 提供4种类型的驱动程序:1, JDBC-ODB 桥驱动程序 特点:具有大量的ODBC 驱动程序可用,缺点是不易 于移植,且运行速度较慢。
2, 本地库java 实现驱动程序 特点:能够充分利用已有的专用驱动程序,缺点 是不具有跨平台特性。
3, 网络协议驱动程序 特点:适用于网络的分布式应用,方式灵活缺点是设计 网络安全问题。
4, 数据库协议驱动程序 特点:应用程序直接于数据库服务器端通信,此类驱 动 程序全部使用java 编写。
1•受环境的制约,我们选用JDBC 连接数据库 的方式,首先打开Eclipse 设置好工作目录, 并新建项目,在该项目的默认包中创建如图 所示的几个类。
2•其中DBUtil.java 是用来连接数据库的专用 类;字母S 打头的四个类分别实现对数据库 的增删改查四个功能,Test.java 类用于启动 程序创建图形用户界面并调用别的类的方 法。
DBUtiljavaimport java.sql.C onn ecti on; import java.sql.DriverMa nager;import java.sql.PreparedStateme nt;-沼 School—sreIH 由(缺省包)E -占毗讥il J4V^ jjJ Sielet*. j ava . J Singer t. 尬 Ss*lect, jay* -p Jj Supd^te. java +■ .J] Test, jav^Eb 僅 JM 舷库[j lkl . 6.0_43:import java.sql.SQLExceptio n;public class DBUtil{public static Conn ecti on getC onn() {Conn ecti on conn = n ull;try{Stri ng driverName = "su n.jdbc.odbc.JdbcOdbcDriver"; // 指定驱动程序Class.forName(driverName);String dbUrl = "jdbc:odbc:school"; // 指定URL 数据源名称conn = DriverMa nager.getC onn ectio n(dbUrl);}catch (ClassNotF oun dExcepti on e){e.pri ntStackTrace();}catch (SQLExcepti on e){e.pri ntStackTrace();}retur n conn;}public static void close(PreparedStateme nt pstmt){if (pstmt != n ull){try{pstmt.close();}catch (SQLExcepti on e){e.pri ntStackTrace();}}}安徽冶金科技职业学院计算机系13网络技术班public static void close(C onnection conn) {if (conn != n ull){try{conn. close();}catch (SQLExcepti on e){e.pri ntStackTrace();}}}public static void main( Stri ng[] args){Conn ecti on conn = DBUtil.getC onn();System.out.pri ntl n( "ok");DBUtil.close(co nn);}}该文件下载与网络,但我们要知道创建它包含3个步骤:1、加载JDBC驱动程序:在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM( Java虚拟机),这通过ng.Class类的静态方法forName(String className实现。
JAVA程序设计报告
JAVA程序设计报告1. 简介在当前信息技术迅速发展的背景下,编程语言在软件开发中扮演着重要的角色。
JAVA作为一种功能强大且广泛应用的编程语言,其在程序设计领域中拥有广泛的应用。
本报告将全面介绍JAVA程序设计的基本原理和方法,以及在实际项目中的应用案例。
2. JAVA程序设计原理JAVA是一种面向对象的编程语言,具有强大的跨平台能力。
它的核心思想是将问题分解为多个对象,每个对象有自己的属性和方法,并通过相互之间的交互实现任务的完成。
在编写JAVA程序时,我们需要熟悉JAVA的基本语法规则,如变量的声明、条件判断和循环结构等。
同时,理解类和对象的概念,掌握封装、继承和多态等面向对象的特性也是必要的。
3. JAVA程序设计方法在实际项目中,我们需要遵循一系列的程序设计方法。
首先,需求分析是决定程序功能和结构的重要步骤。
通过详细的需求分析,我们能够清晰地定义问题并设计出合适的解决方案。
接下来,我们需要进行程序的设计和编码。
良好的程序设计应该具有模块化,即将程序划分为多个模块,各个模块之间耦合度低,易于维护和扩展。
在编码过程中,我们要注重代码的规范和风格,提高代码的可读性和可维护性。
最后,我们要进行测试和调试,确保程序的正确性和稳定性。
4. JAVA程序设计实例为了更好地理解JAVA程序设计的实际应用,我们将介绍一个实例项目。
假设我们要开发一个学生管理系统,实现学生的信息录入、查询和统计等功能。
我们可以利用JAVA的面向对象特性,创建学生类和管理类,并通过GUI界面与用户进行交互。
在程序设计中,我们可以运用JAVA提供的各种库和API来简化开发过程,如Swing库用于图形界面的设计和操作,JDBC库用于数据库的连接和操作等。
通过该项目实例,我们可以深入了解JAVA程序设计的整个流程和方法。
5. 结论本报告全面介绍了JAVA程序设计的基本原理和方法,以及在实际项目中的应用案例。
通过深入学习和实践,我们可以掌握JAVA编程的核心思想和技巧,提高程序设计的效率和质量。
java课程设计报告
java课程设计报告Java课程设计报告。
一、引言。
Java作为一种跨平台的编程语言,具有广泛的应用领域和强大的功能,因此在计算机专业课程中占据着重要的地位。
本次课程设计旨在通过对Java语言的学习和实践,提高学生对于面向对象程序设计的理解和应用能力,同时锻炼学生的编程实践能力和团队协作能力。
二、课程设计内容。
1. 课程设计主题。
本次课程设计的主题为“学生成绩管理系统的设计与实现”。
通过该主题的设计,旨在让学生通过实际的项目开发,掌握Java语言的基本语法和面向对象的编程思想,同时对软件开发的整个流程有一个清晰的认识。
2. 课程设计目标。
(1)掌握Java语言的基本语法和面向对象的编程思想;(2)了解软件开发的整个流程,包括需求分析、设计、编码、测试和维护;(3)培养学生的团队协作能力和解决问题的能力;(4)通过实际项目的开发,提高学生的编程实践能力。
三、课程设计过程。
1. 需求分析。
首先,团队成员对学生成绩管理系统的功能需求进行了详细的分析和讨论,确定了系统的基本功能模块,包括学生信息管理、课程信息管理、成绩管理等。
通过需求分析,明确了系统的功能和性能需求,为后续的设计和编码工作奠定了基础。
2. 系统设计。
在需求分析的基础上,团队成员进行了系统的整体设计和模块设计。
通过UML建模工具,绘制了系统的用例图、类图、时序图等,明确了各个模块之间的关系和交互流程。
同时,团队成员还对数据库的设计进行了详细的讨论和设计,确定了数据库的表结构和字段。
3. 编码实现。
在系统设计完成后,团队成员按照设计文档进行了编码实现工作。
在编码的过程中,严格按照Java语言的规范进行编码,同时注重代码的可读性和可维护性。
通过团队的协作和沟通,确保了各个模块的功能实现和整体功能的完整性。
4. 测试与调试。
在编码实现完成后,团队成员进行了系统的测试与调试工作。
通过单元测试、集成测试和系统测试,发现并修复了系统中存在的各种问题和bug。
JAVA设计报告
JAVA设计报告设计报告:Java应用程序设计一、引言Java是一种面向对象的程序设计语言,广泛应用于各个领域。
本报告将讨论Java应用程序设计的一些基本概念和技术,包括面向对象设计、设计模式、异常处理等。
二、面向对象设计面向对象设计是一种以对象为基本单位的设计方法。
在Java中,一切都是对象。
面向对象设计强调封装、继承和多态。
封装可以隐藏对象的实现细节,使得代码更加模块化;继承可以表达对象之间的“is-a”关系,实现代码的复用性;多态可以使对象在运行时表现出不同的行为。
三、设计模式设计模式是一种被广泛接受的软件设计经验的总结。
它提供了一系列解决特定问题的方法,可用于提高代码的重用性、可维护性和可扩展性。
常见的设计模式包括工厂模式、单例模式、观察者模式等。
工厂模式是一种用于创建对象的模式,它将对象的创建过程与使用对象的代码解耦。
通过工厂模式,可以在不暴露对象创建细节的情况下获得一个完整的对象。
单例模式是一种只能创建一个实例的模式。
在Java中,可以使用静态方法或静态代码块实现单例模式。
观察者模式是一种对象间的一对多依赖关系,当一个对象的状态发生变化时,它的所有依赖对象都会收到通知并自动更新。
在Java中,可以使用Observable和Observer接口来实现观察者模式。
四、异常处理异常是一种在程序执行期间可能发生的错误或意外情况。
Java提供了异常处理机制,用于捕获、处理和抛出异常。
异常处理可以增加程序的健壮性,提高程序的可靠性。
在Java中,可以使用try-catch-finally语句块来捕获和处理异常。
try块中包含可能发生异常的代码,catch块用于捕获并处理异常,finally块用于执行清理操作,不论异常是否发生。
五、总结Java应用程序设计是一种面向对象的设计方法。
它强调封装、继承和多态,使得代码更加模块化、可复用和可扩展。
设计模式提供了一些解决特定问题的方法,可以提高代码的重用性、可维护性和可扩展性。
java项目设计总结
设计数据库:根据项目需求,设计数据库表结构和索引
设计测试方案:根据项目需求,设计测试方案和测试用例
模块划分与功能实现
模块划分:根据项目需求,将项目划分为多个功能模块
模块间通信:模块之间通过接口进行通信,实现数据共享和功能调用
模块测试:对每个模块进行测试,确保其功能和性能满足设计要求
功能实现:每个模块实现特定的功能,如用户管理、权限管理、数据管理等
项目完成情况:项目进度、质量、成本等方面的完成情况
项目成果:项目实现的功能、性能、稳定性等方面的成果
项目经验教训分享
添加标题
添加标题
添加标题
添加标题
添加标题
添加标题
添加标题
设计过程中遇到的问题和解决方案
团队协作和沟通方面的经验和教训
项目文档和代码规范方面的经验和教训
项目后续维护和优化方面的经验和教训
确定运维人员:确定负责运维的人员和职责
故障排查与处理
处理措施:重启、修复、优化等
故障类型:硬件故障、软件故障、网络故障等
排查方法:日志分析、监控工具、性能分析等
预防措施:备份、监控、容灾等
项目成果总结
项目亮点:项目中的创新点、突破点等方面的亮点
项目问题与改进:项目中存在的问题、改进措施等方面的总结
设计规范:遵循Java语言规范,提高代码可读性和可维护性
架构设计思路
添加标题
添加标题
添加标题
添加标题
添加标题
添加标题
添加标题
确定项目需求:分析项目需求,确定项目目标
确定技术选型:根据项目需求,选择合适的技术栈和工具
设计接口:根据项目需求,设计接口和API
设计文档和说明书:根据项目需求,设计文档和说明书,包括需求文档、设计文档、用户手册等
java报告总结报告
java报告总结报告Java报告总结报告在本次实习中,我主要学习了Java编程语言,并通过实践项目加深了对Java的理解。
下面我将就本次实习的主要内容、所取得的成果和未来的个人发展计划进行总结。
1. 主要内容本次实习的主要内容是学习Java编程语言,并完成一个Java项目。
在项目中,我主要学习了Java的语法结构、面向对象编程的思想以及常用的设计模式。
通过阅读相关文档、参与讨论和实践编程,我对Java的使用有了较为全面的了解。
2. 取得的成果在实践项目中,我主要负责设计和实现一个学生信息管理系统。
通过该系统,可以方便地添加、修改、删除学生信息,同时还可以根据不同的条件进行信息的查询和排序。
在设计和实现的过程中,我主要运用了Java的类和对象、继承、封装、多态等特性,以及集合类、文件IO等常用类库。
通过项目的实践,我对Java编程的能力和技巧有了很大的提高。
此外,我还参与了团队合作的讨论和开发过程,与其他成员共同解决了一些技术难题。
在与团队的合作中,我学会了如何与他人进行良好的沟通和协作,并学到了一些项目管理和团队协作的经验。
3. 个人发展计划在未来的个人发展中,我将继续学习和提升自己的Java编程能力。
首先,我计划深入学习Java的高级特性和进阶知识,如多线程编程、网络编程和数据库编程等。
这些知识将帮助我更好地理解和应用Java。
其次,我将加强对Java编程的实践应用。
通过开发更复杂、更实用的项目,我将锻炼自己的问题解决能力和创新能力。
同时,我也会积极参与开源项目和技术社区的贡献,与其他开发者互动和交流,以进一步提升自己的技术水平。
另外,我还计划学习和掌握其他相关的编程语言和技术,如Python、JavaScript、HTML/CSS等。
这将增加我的技术广度,使我能够更灵活地应对不同的项目需求。
最后,我还计划参加一些相关的培训和认证考试,如Oracle Java认证、Java编程竞赛等。
这将为我提供更多的机会,与其他优秀的Java开发者进行交流和学习,同时也能够为我的个人发展增加一些亮点和竞争力。
java程序设计报告
java程序设计报告Java程序设计报告Java是一门非常重要的计算机编程语言,广泛应用于软件开发和各种应用程序的设计。
在本次程序设计报告中,我将介绍我设计和实现的一个简单的Java程序。
本次程序的目标是设计一个学生信息管理系统,用于管理学生的基本信息,包括学号、姓名、年龄、性别等。
该程序提供了添加学生信息、修改学生信息、查找学生信息和删除学生信息等功能。
首先,我创建了一个Student类来表示学生对象。
该类包含了学生的基本属性,并提供了相应的构造方法和访问方法。
例如,下面是Student类的一部分代码:```public class Student {private int studentNumber;private String name;private int age;private String gender;// 构造方法public Student(int studentNumber, String name, int age, String gender) {this.studentNumber = studentNumber; = name;this.age = age;this.gender = gender;}// 访问方法public int getStudentNumber() {return studentNumber;}public String getName() {return name;}public int getAge() {return age;}public String getGender() {return gender;}// 省略了一些其他方法}```接下来,我创建了一个StudentManagementSystem类来管理学生对象。
该类提供了添加学生信息、修改学生信息、查找学生信息和删除学生信息的功能。
该类内部使用一个ArrayList来存储所有的学生对象。
java课程设计报告
java课程设计报告1. 引言Java作为一种全球广泛使用的编程语言,具有跨平台、可靠性强、安全性高等优点,因而备受程序员和开发者的青睐。
本篇报告旨在对我所参与的Java课程设计进行总结和评估,分享学习过程中的经验和收获,以及对未来的展望。
2. 项目背景本次课程设计项目是一个在线购物平台的开发,团队共有3名成员,我们合作进行了2个月的开发工作。
通过这个项目,我学到了许多Java编程的实践经验,不仅提高了编程技能,也增进了团队合作和沟通能力。
3. 设计过程在设计初期,我们进行了需求分析和系统设计。
我们通过与用户进行会议和讨论,了解了用户的需求和期望。
然后,我们进行了功能拆解和流程设计,使用UML建模工具绘制了用例图和类图,明确了系统的整体结构。
4. 技术选型在技术选型上,我们选择了Spring框架作为项目的基础框架,使用了Spring Boot来简化开发流程。
为了实现用户认证和授权功能,我们使用了Spring Security。
此外,为了提高系统性能和扩展性,我们采用了Spring Cloud微服务架构,使用了Eureka作为注册中心、Ribbon作为负载均衡器。
5. 开发实践在开发过程中,我们遵循了面向对象的编程思想,并且使用了版本控制工具Git,实现了团队的协同开发。
我们按照模块划分任务,每个成员负责一个或多个模块的开发。
通过定期的代码审查和团队会议,我们保持了代码的质量和一致性。
6. 问题与挑战在项目开发中,我们也遇到了一些问题和挑战。
例如,数据一致性的处理、性能优化、多线程并发等。
但通过团队成员的共同努力和合作,我们成功地克服了这些问题,并取得了较好的开发效果。
7. 项目成果与展望在项目完成后,我们实现了一个功能完备、用户友好的在线购物平台。
用户可以注册、登录、浏览商品、下订单并进行支付等操作。
同时,我们也考虑到了扩展性和性能优化的问题,系统具备一定的容错和弹性。
未来,我们希望能继续完善和优化这个系统,并根据用户的反馈做出进一步的改进。
java课程设计报告(完整版)
目录1、摘要2、概要设计3、详细设计4、测试分析5、总结6、参考文献【前言】Java不依赖平台的特点使得它受到广泛的关注,Java已成为网络时代最重要的语言之一。
Java语言不仅是一门正在被广泛使用的编程语言,而且已成为软件设计开发者应当掌握的一门基础语言。
目前,很多新的技术领域都涉及Java语言,国内外许多大学已将Java语言列入了本科教学计划,掌握Java已经成为共识。
本次课程设计就是利用java语言来编写简单的计算器,能进行加、减、乘、除四则运算,下面给出了该设计的理论分析和具体步骤。
一、摘要本计算器可以进行简单的四则运算(加、减、乘、除),但仅限于十进制下。
“Backspace”按钮表示退格,“CE”按钮表示清除当前文本框内的数据,“C”按钮表示清除文本框内数据,同时var、answer清零。
该程序可在JCreator环境下直接运行。
二、概要设计1、自定义说明(1)类名:Calculator作用:主类继承的父类:JFrame类实现的接口:ActionListener类public class Calculator extends JFrame implements ActionListener{private static String[] btnTexts = {"0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","+/-"}; //定义数组bstTexts来存放计算器上的各个按钮Button button[] = new Button[16];Button BkButton,CeButton,CButton,EqButton;boolean clickable; //控制当前能否按键double vard, answerd; //用来保存double型数据的中间值(vard)和最后结果(answerd)short key = -1, prekey = -1; //key用来保存当前进行何种运算,prekey用来保存前次进行何种运算DecimalFormat df; //设置数据输出精度private JTextField displayField = new JTextField(" "); //计算结果显示区public Calculator(){………}public void actionPerformed(ActionEvent event){………}}(2)方法名:Calculator作用:设置窗体布局public Calculator(){//Frame frame = new Frame("Calculator");super("Calculator"); //显示主窗口标题“Calculator”df = new DecimalFormat("0.00000000"); //设置数据输出精度(对于double型值)BkButton = new Button("Backspace");BkButton.setForeground(Color.red);CeButton = new Button("CE");CeButton.setForeground(Color.red);CButton = new Button("C");CButton.setForeground(Color.red);EqButton = new Button("=");EqButton.setForeground(Color.red); //将“Backspace”、“CE”、”C”、“=”显示为红色BkButton.addActionListener(this);CeButton.addActionListener(this);CButton.addActionListener(this);EqButton.addActionListener(this);displayField.setHorizontalAlignment(JTextField.RIGHT); //将计算结果显示在displayField的右面JPanel p1 = new JPanel(new FlowLayout()); //以FlowLayout布局p1 p1.add(BkButton);p1.add(CeButton);p1.add(CButton);p1.add(EqButton); //设置四个按钮:"Backspace","CE","C","="JPanel p2 = new JPanel(new GridLayout(2,1)); //以GridLayout布局p2 p2.add(displayField);p2.add(p1); //加入显示结果的JTextField和p1JPanel p3 = new JPanel(new GridLayout(4,4)); //以GridLayout布局p3 for(int i = 0;i < btnTexts.length;i++){button[i] = new Button(btnTexts[i]); //将数组btnTexts[]的值赋给数组button[] button[i].setForeground(Color.blue); //组件button的前景色显示蓝色p3.add(button[i]);button[i].addActionListener(this);}Container cp = this.getContentPane(); //采用默认的BorderLayout布局cpcp.add(p2,BorderLayout.NORTH);cp.add(p3,BorderLayout.CENTER);}(3)方法名:actionPerformed作用:设置各个按钮的行为public void actionPerformed(ActionEvent event){boolean sign = false; //判断是否是double型数参与运算,是为true,不是为falseObject temp = event.getSource();try{for (int i = 0; i <= 9; i++) //如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后displayField.setText(displayField.getText() + Integer.toString(i));//按下'.'按钮时,判断当前文本框内字符串中含不含'.',如果已含,则不允许再插入'.'if (temp == button[14] && clickable == true){……….}if ( (temp == button[10] || temp == button[11] || temp == button[12] || temp == button[13]) && clickable == true){//'+'操作if (temp == button[10]){…………}//'-'操作if (temp == button[11]){…………}//'*'操作if (temp == button[12]){…………}//'/'操作if (temp == button[13]){…………}//'='操作if (temp == EqButton && clickable == true){…………}//按下'+/-'按钮时处理{…………}//按下'Backspace'键,利用循环将当前字符串中的最后一个字母删除if (temp == BkButton && clickable == true){…………}//按下'CE'按钮,将当前文本框内数据清除if (temp == CeButton){………}//按下'C'按钮,文本框内数据清除,同时var,answer清0if (temp == CButton){………}}//输入中如果有操作非法,比如按下两次'+',捕获异常catch (Exception e){displayField.setText("操作非法");clickable = false;}2、界面设计下图为该程序运行时的界面截图:三、详细设计以下为该程序的主要代码:import javax.swing.*;import java.awt.*;import javax.swing.event.*;import java.awt.event.*;import java.text.DecimalFormat;public class Calculator extends JFrame implements ActionListener{private static String[] btnTexts ={"0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","+/-"};Button button[] = new Button[16];Button BkButton,CeButton,CButton,EqButton;boolean clickable; //控制当前能否按键double vard, answerd; //用来保存double型数据的中间值(vard)和最后结果(answerd)short key = -1, prekey = -1; //key用来保存当前进行何种运算,prekey用来保存前次进行何种运算DecimalFormat df; //设置数据输出精度private JTextField displayField = new JTextField(" ");//计算结果显示区public Calculator(){super("Calculator"); //显示主窗口标题“Calculator”df = new DecimalFormat("0.00000000"); //设置数据输出精度(对于double型值)BkButton = new Button("Backspace");BkButton.setForeground(Color.red);CeButton = new Button("CE");CeButton.setForeground(Color.red);CButton = new Button("C");CButton.setForeground(Color.red);EqButton = new Button("=");EqButton.setForeground(Color.red); //将“Backspace”、“CE”、”C”、“=”显示为红色BkButton.addActionListener(this);CeButton.addActionListener(this);CButton.addActionListener(this);EqButton.addActionListener(this);displayField.setHorizontalAlignment(JTextField.RIGHT); //将计算结果显示在displayField的右面JPanel p1 = new JPanel(new FlowLayout()); //以FlowLayout布局p1 p1.add(BkButton);p1.add(CeButton);p1.add(CButton);p1.add(EqButton); //设置三个按钮:"Backspace","CE","C","="JPanel p2 = new JPanel(new GridLayout(2,1)); //以GridLayout布局p2 p2.add(displayField);p2.add(p1); //加入显示结果的JTextField和p1JPanel p3 = new JPanel(new GridLayout(4,4)); //以GridLayout布局p3 for(int i = 0;i < btnTexts.length;i++){button[i] = new Button(btnTexts[i]); //将数组btnTexts[]的值赋给数组button[] button[i].setForeground(Color.blue); //组件button的前景色示蓝色p3.add(button[i]);button[i].addActionListener(this);}Container cp = this.getContentPane(); //采用默认的BorderLayout布局cpcp.add(p2,BorderLayout.NORTH);cp.add(p3,BorderLayout.CENTER);}//设置各个按钮行为public void actionPerformed(ActionEvent event){boolean sign = false; //判断是否是double型数参与运算,是为true,不是为falseObject temp = event.getSource();try{for (int i = 0; i <= 9; i++) //如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后if (temp == button[i] && clickable == true)displayField.setText(displayField.getText() + Integer.toString(i));//按下'.'按钮时,判断当前文本框内字符串中含不含'.',如果已含,则不允许再插入'.'if (temp == button[14] && clickable == true){boolean isDot = false;if (displayField.getText().length() == 0)isDot = true;for (int i = 0; i < displayField.getText().length(); i++)if ('.' == displayField.getText().charAt(i)){isDot = true;break;}if (isDot == false)displayField.setText(displayField.getText() + ".");}if ( (temp == button[10] || temp == button[11] || temp == button[12] || temp == button[13]) && clickable == true){//'+'操作if (temp == button[10]){switch (prekey){case 0:answerd += Double.parseDouble(displayField.getText());break;case 1:answerd -= Double.parseDouble(displayField.getText());break;case 2:answerd *= Double.parseDouble(displayField.getText());break;case 3:if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}elseanswerd /= Double.parseDouble(displayField.getText());break;default:}displayField.setText("");prekey = key = 0;}//'-'操作if (temp == button[11]){switch (prekey){case 0:answerd += Double.parseDouble(displayField.getText());break;case 1:answerd -= Double.parseDouble(displayField.getText());break;case 2:answerd *= Double.parseDouble(displayField.getText());break;case 3:if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}elseanswerd /= Double.parseDouble(displayField.getText());break;default:answerd = Double.parseDouble(displayField.getText());}displayField.setText("");prekey = key = 1;}//'*'操作if (temp == button[12]){switch (prekey){case 0:break;case 1:answerd -= Double.parseDouble(displayField.getText());break;case 2:answerd *= Double.parseDouble(displayField.getText());break;case 3:if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}elseanswerd /= Double.parseDouble(displayField.getText());break;default:answerd = Double.parseDouble(displayField.getText());}displayField.setText("");prekey = key = 2;}//'/'操作if (temp == button[13]){switch (prekey){case 0:answerd += Double.parseDouble(displayField.getText());break;case 1:answerd -= Double.parseDouble(displayField.getText());break;case 2:answerd *= Double.parseDouble(displayField.getText());break;case 3:if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}elseanswerd /= Double.parseDouble(displayField.getText());break;default:answerd = Double.parseDouble(displayField.getText());}displayField.setText("");prekey = key = 3;}}//'='操作if (temp == EqButton && clickable == true){//如果连续按'=',则进行连续运算if (prekey == 5){if (key == 0){answerd += vard;displayField.setText(df.format(answerd));}if (key == 1){answerd -= vard;displayField.setText(df.format(answerd));}if (key == 2){answerd *= vard;displayField.setText(df.format(answerd));}if (key == 3){if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}else{answerd /= vard;displayField.setText(df.format(answerd));}}}else{vard = Double.parseDouble(displayField.getText());if (key == 0){prekey = -1;answerd += Double.parseDouble(displayField.getText());displayField.setText(df.format(answerd));}if (key == 1){prekey = -1;answerd -= Double.parseDouble(displayField.getText());displayField.setText(df.format(answerd));}if (key == 2){prekey = -1;answerd *= Double.parseDouble(displayField.getText());displayField.setText(df.format(answerd));}if (key == 3){prekey = -1;if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}else{answerd /= Double.parseDouble(displayField.getText());displayField.setText(df.format(answerd));}}prekey = 5;}//按下'+/-'按钮时处理if (temp == button[15] && clickable == true){boolean isNumber = true;String s = displayField.getText();for (int i = 0; i < s.length(); i++)if (! (s.charAt(i) >= '0' && s.charAt(i) <= '9' || s.charAt(i) == '.' || s.charAt(i) == '-')){isNumber = false;break;}if (isNumber == true){//如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉if (s.charAt(0) == '-'){displayField.setText("");for (int i = 1; i < s.length(); i++){char a = s.charAt(i);displayField.setText(displayField.getText() + a);}}//如果当前字符串第一个字符不是符号,则添加一个符号在首字母处elsedisplayField.setText('-' + s);}}//按下'Backspace'键,利用循环将当前字符串中的最后一个字母删除if (temp == BkButton && clickable == true)String s = displayField.getText();displayField.setText("");for (int i = 0; i < s.length() - 1; i++){char a = s.charAt(i);displayField.setText(displayField.getText() + a);}}//按下'CE'按钮,将当前文本框内数据清除if (temp == CeButton){displayField.setText("");clickable = true;}//按下'C'按钮,文本框内数据清除,同时var,answer清0if (temp == CButton){vard = answerd = 0;displayField.setText("");clickable = true;}}//输入中如果有操作非法,比如按下两次'+',捕获异常catch (Exception e){displayField.setText("操作非法");clickable = false;}}public static void main(String args[]){Calculator calculator = new Calculator();calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);calculator.setSize(300,200);calculator.setVisible(true);}}四、测试分析(1)程序运行情况该程序正常的响应按钮事件,能进行简单的加、减、乘、除四则运算,在输入之前须先进行清零处理,然后再输入数值进行运算。
Java项目报告总结模板(汇总5篇)
Java项目报告总结模板第1篇Java就是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如下要点:1、掌握项目开发的基本步骤2、具备极强的面向对象的分析与设计技巧3、掌握用例驱动、以架构为核心的主流开发方法没有人愿意自己一辈子就满足于掌握了一些代码实现的技巧,别人告诉你要实现什么,你就用代码堆砌来实现别人的要求!你必须学会从整个项目的角度去思考!你必须学会假如你是项目经理,你该如何思考!你必须学会假如你是架构师,你该如何思考!你必须掌握针对某个特定问题领域的分析方法!关于基础知识:你可以看看这些名词或知识点,看是否能说出个一二三四来。
JavaSE----基本语法、数据类型、操作符等:int、long、Integer、Long、if、else、for、while ----面向对象:class(类)、Object(对象)、instance(实例)、state(状态)、behavior(行为)、field 、method、new、可见性(访问控制)、attribute、property、package、import、static variable、class variable、instance variable、heap、methodarea、stack、GC(垃圾回收)、override、overload、对象转型(casting)、多态、this、supe r----异常处理:理解编译期错误和运行期错误的区别、Exception、RuntimeException、chec ked exception、unchecked exception、try、catch、finally、throw new XXXException、throws XXXException、异常处理的基本原则----数组与集合:数组的定义和使用方法、Collection、List、Set、Map、ArrayList、HashS et、HashMap、Iterator、equals、hashCode、Comparable、Comparator----常用类:String、intern、常量池、StringBuffer、、SimpleDateFormat、Regex(正则表达式)----反射机制:Class、Method、Field、invoke、newInstance、BeanUtils(apache-commons)、PropertyUtils(apache-commons)----输入输出流:InputStream、OutputStream、Reader、Writer、Adapter设计模式与原始流类、Decorator设计模式与包装流类、对象序列化和反序列化----多线程:Thread、Runnable、sleep、wait、notify、synchronized、lockServlet和JSP----HttpServlet、doGet、doPost、HttpServletRequest、HttpServletResponse、、()、()、()、S ervletContext、Filter、、tomcat、forward与redirect、http协议的无状态性、cookie、JSP Scope Object、、HTML与JavaScript----你需要能够理解常见的网页标签、理解在网页中引入JavaScript的方法、以及JavaScript 的基本语法与使用方法以上,就是你进一步学习Java所必备的基本知识。
java项目设计报告
java项目设计报告Java项目设计报告一、引言Java作为一种广泛应用的编程语言,具有跨平台、面向对象、安全性高等特点,被广泛运用于各个领域的软件开发中。
本文将针对Java项目设计进行报告,介绍项目的背景、目标、需求分析、系统设计、开发实现等内容,旨在展示Java项目设计的整体思路和具体实现。
二、项目背景在信息化时代,各行各业都离不开计算机系统的支持。
为了提高工作效率、优化业务流程,许多企事业单位都开始开发自己的信息管理系统。
本项目设计就是为了满足某企业的信息管理需求而开发的。
三、项目目标本项目旨在设计一个高效、稳定、易于维护的信息管理系统,实现对企业各种信息的管理和查询功能。
通过该系统,企业可以更好地组织和利用各类信息,提高工作效率和决策水平。
四、需求分析根据对企业的需求调研和用户反馈,我们确定了以下几个主要需求:1. 用户管理:实现用户的注册、登录和权限管理,确保系统的安全性。
2. 信息录入:提供界面供用户录入各类信息,包括人员信息、客户信息、产品信息等。
3. 信息查询:设计灵活的查询界面,支持多条件组合查询,方便用户快速定位所需信息。
4. 信息统计:根据用户需求,提供各种统计报表和图表,帮助用户直观地了解企业的运营情况。
5. 系统维护:保证系统的稳定性和可靠性,提供系统备份、日志记录等功能,方便管理员进行系统维护和故障排查。
五、系统设计基于以上需求,我们设计了以下几个模块:1. 用户管理模块:包括用户注册、登录、角色权限管理等功能。
2. 信息录入模块:提供各类信息的录入界面和数据校验功能,确保录入的信息准确完整。
3. 信息查询模块:设计灵活的查询界面,支持多条件组合查询,并提供查询结果的导出功能。
4. 信息统计模块:根据用户需求,设计各种统计报表和图表,方便用户进行数据分析。
5. 系统维护模块:提供系统备份、日志记录等功能,方便管理员进行系统维护和故障排查。
六、开发实现基于系统设计,我们使用Java语言和相关开发框架进行项目开发。
JAVA-课程设计报告
《JA V A程序设计》课程设计报告设计题目:学生信息管理系统学院名称:信息工程学院专业班级:13计本1姓名:学号:目录一需求分析。
3二概要设计。
3三详细设计。
33.1 数据库设计。
33.2 模块及窗体设计。
33.2.1 数据库模块设计。
33.2.2 用户登录识别模块。
53.2.3用户信息管理模块。
6(1)密码修改。
6(2)用户信息添加和删除。
83.2.4 学生息管理模块。
10(1)添加信息。
10(2)信息查看。
11(3)信息修改。
12(4)删除信息。
143.2.5 系统管理模块。
153.2.6 主窗体菜单设计。
15四软件测试。
15五总结。
15参考资料:.......................................................17一需求分析本系统的主要目的就是实现学生信息管理,使学生信息管理工作更加容易,从而提高工作效率,降低管理成本.系统中需要对拥护身份进行管理,采取登陆进入系统的形式.二概要设计/************************************************************************概要设计阶段主要是粗略描述整个软件的框架,并从业务的角度描述软件的模块、工作流程等。
项目的成功取决于设计的好坏,而概要设计则是整个设计的关键部分。
概要设计的主要任务是将用户的需求划分为不同的功能,然后将这些功能细分成模块,并给模块一些规则约束,以达到各个模块之间可以相互交流的目的。
概要设计关乎到系统的整体架构,因此想做好一个概要设计,不仅仅要熟悉用户的业务流程,还要具备相当丰富的设计经验。
2.1 概要设计的原则概要设计是根据系统分析的需求和工作环境的情况对整个软件的总体结构进行大致的设计。
概要设计要坚持以下几个原则。
(1)细分原则:软件系统都是由很多不同的模块组成,当设计一套软件时,要先将所有的功能分解。
解决复杂问题的方法是将其分解成几个小问题,一个个来解决。
《java课程设计》总结报告银行账户管理系统、校园导航系统
《java课程设计》总结报告银行账户管理系统、校园导航系统二零二二年一月二十日《java课程设计》总结报告一、课程设计目的与意义1. 根据课堂讲授内容,学生做相应的自主练习,消化课堂所讲解的内容。
2.通过调试典型例题或习题积累调试程序的经验。
3.通过完成辅导教材中的编程题,逐渐培养学生的编程能力,用计算机解决实际问题的能力。
二、课程设计内容与环境(一)课程设计内容1.校园导航系统:紧扣课程设计项目题目,基于图的数据结构技术的多种算法进行系统设计与实现,要求具备查找所有景点,最小路径,查找景点功能、,以满足项目需要。
2.账户管理事务系统/RSS阅读器/OJ评测系统原型:紧扣课程设计项目题目,基于GUI技术的框架组件进行系统设计与实现,要求具备银行账户功能、日志非功能要求,以满足项目需要。
(二)课程设计环境描述相关环境及要素。
【如:一台PC机,Windows10操作系统,idea2017,JDK8】三、项目实施过程四、项目分工与完成情况五、课程设计体会与收获(一)个人体会与收获本次实验加深了我对GUI中各种组建的用法,如:获取用户信息的窗口,各种按钮监听器,文本域的使用与滑动的设置。
IO流是Java程序设计的重点章节,而本次实验中大量使用的IO流的输入与输出对数据进行处理,多次调用单个用户的数据使用ObjectInputStream更加方便,但在使用过程中遇到了很多问题,如当使用ObjectInputStream重复写入数据时会报错,这是由于文件的写入过程中会写入一个文件头,重复写入时会重复写入文件头,可以使用重写该类的writeStreamHeader()方法进行解决。
陈恩召(2010119016):本次报告让我对java的io,gui和数据结构的图有了更深的认识,看书不是重点,重点是多实践有了良好的开端还要养成良好的学习习惯,平时不单单是多看书本知识,自己在看书的时候还要把书上的例子亲手敲到电脑上去实践,千万不要图省事,就照抄、复制,只有实践才知道自己是否真的会写代码。
java课程设计报告总结
Java课程设计报告总结1. 简介本文旨在总结Java课程设计报告的内容和经验,以及提供一些step-by-step的思考方法,帮助读者更好地完成类似的课程设计任务。
2. 课程设计报告的目标课程设计报告是对Java课程中所学知识的应用和实践。
通过完成一个具体的项目或任务,学生可以巩固并展示自己所学的Java编程知识和技能。
课程设计报告通常包括以下几个方面的内容:a. 项目背景介绍项目的背景和意义,以及该项目所要解决的问题或实现的目标。
b. 项目功能需求详细列出项目的各项功能需求,并给出相应的实现思路。
c. 项目架构设计设计项目的整体架构,包括模块划分、类的设计和关系等。
d. 代码实现详细描述并展示项目中的核心代码实现,包括关键算法和逻辑。
e. 测试和调试介绍项目的测试方法和结果,以及在测试过程中出现的问题和解决方案。
f. 总结与展望总结项目的实现情况和经验,提出改进和进一步完善的建议。
3. Step-by-step思考方法在完成课程设计报告的过程中,我们可以采用一些step-by-step的思考方法,以帮助我们更好地理清思路、合理安排工作和提高效率。
a. 理解需求首先,我们需要仔细阅读并理解项目的需求和要求。
可以逐点分析需求,明确每个功能点所需的输入、输出和实现方式。
b. 制定计划制定合理的项目计划,明确每个阶段的任务和时间安排。
可以按照时间、功能或模块来划分任务,确保每个阶段的工作量可控。
c. 设计架构根据需求和计划,设计项目的整体架构。
可以采用面向对象的思想,将项目划分为不同的模块和类,并设计它们之间的关系。
d. 实现代码根据架构设计,逐步实现项目的核心代码。
可以先实现基础功能,再逐步添加和完善其他功能。
注意代码的可读性和可维护性。
e. 测试和调试在代码实现后,进行充分的测试和调试工作,确保项目的稳定性和功能完备性。
可以编写测试用例并进行单元测试,及时发现和修复问题。
f. 总结和改进在项目实现结束后,对整个过程进行总结和反思。
java语言综合设计实验报告
Java语言综合设计实验报告--GUI编程设计题目:JA V A计算器班级:过072班学号:******姓名:***成绩:2009年6月23日一、程序功能简介具有日常计算的大部分功能:1,能够正确的进行加减乘除运算;2,能够进行数学计算,例如sin(),cos(),tan()等等;3,能够进行数据存储;说明:完全模仿Windows自带的计算器所写,但有些功能还需完善。
二、算法设计设计了一个类,整个界面设计用到了两个布局管理器,分别是BorderLayout和FlowLayout。
程序中用到了setBackground和setHorizontalAlignment等多个函数,形成了一个比较不错的windows的窗体外观,除此之外还用到了:JFrame类中的JPanel,JLabel,JComboBox,…用了大量类库中的函数实现了很多功能。
三、源程序代码及注释/** @author XuZhengXian*/import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.text.DecimalFormat;public class MyCalculator implements ActionListener { // 设计面板中的单位JFrame frame;JTextField textAnswer, textMemory;JLabel label;JPanel panel, panel1, panel2, panel3;JMenuBar menuBar;JMenu editMenu;JMenuItem copyItem, pasteItem;JLabel labelSpace; // 控制面板的形状JButton buttonBS, buttonCE, buttonC;JButton button[];JButton buttonMC, buttonMR, buttonMS, buttonMAdd;JButton buttonDot, buttonAddAndSub, buttonAdd, buttonSub, buttonMul,buttonDiv, buttonEqual;JButton buttonSin, buttonCos, buttonTan, buttonPI, buttonXY, buttonX2, buttonSqrt,buttonDS;DecimalFormat df; // 设置数据输出精度boolean clickable; // 控制当前能否按键double memoryd; // 使用内存中存储的数字int memoryi;boolean resultIndicate, dotFlag;double vard, answerd; // 用来保存double型数据的中间值和最后结果short key = -1, prekey = -1; // 用来保存当前进行何种运算和保存前次进行何种运算String copy;// 构造函数public MyCalculator() {clickable = true;answerd = 0;frame = new JFrame("计算器");df = new DecimalFormat("0.##############"); // 设置数据输出精度textAnswer = new JTextField(15);textAnswer.setText("");textAnswer.setEditable(false);textAnswer.setBackground(new Color(255, 255, 255));textAnswer.setHorizontalAlignment(JTextField.RIGHT);panel = new JPanel();frame.getContentPane().add(panel);panel1 = new JPanel();panel2 = new JPanel();panel.setLayout(new BorderLayout());// 设计整个面板menuBar = new JMenuBar();editMenu = new JMenu("编辑");copyItem = new JMenuItem(" 复制");copyItem.addActionListener(this);pasteItem = new JMenuItem(" 粘贴");pasteItem.addActionListener(this);editMenu.add(copyItem);editMenu.add(pasteItem);menuBar.add(editMenu);panel.add(menuBar, BorderLayout.NORTH);panel.add(textAnswer, BorderLayout.CENTER);panel.add(panel1, BorderLayout.SOUTH);panel1.setLayout(new BorderLayout());label = new JLabel("过072 许正贤 070483"); textMemory = new JTextField(5);textMemory.setEditable(false);textMemory.setBackground(new Color(217, 217, 217)); labelSpace = new JLabel(" ");buttonBS = new JButton("Backspace");buttonBS.setForeground(new Color(255, 0, 0)); buttonCE = new JButton("CE");buttonCE.setForeground(new Color(255, 0, 0)); buttonC = new JButton("C");buttonC.setForeground(new Color(255, 0, 0)); buttonBS.addActionListener(this);buttonCE.addActionListener(this);buttonC.addActionListener(this);panel1.add(panel2, BorderLayout.NORTH);panel2.setLayout(new FlowLayout(FlowLayout.RIGHT)); panel2.add(label);label.setHorizontalAlignment(JLabel.CENTER);panel2.add(textMemory);panel2.add(labelSpace);panel2.add(buttonBS);panel2.add(buttonCE);panel2.add(buttonC);panel3 = new JPanel();panel1.add(panel3, BorderLayout.CENTER);button = new JButton[10];for (int i = 0; i < button.length; i++) {button[i] = new JButton(Integer.toString(i));button[i].setForeground(new Color(0, 0, 255));}buttonMC = new JButton("MC");buttonMC.setForeground(new Color(255, 0, 0)); buttonMR = new JButton("MR");buttonMR.setForeground(new Color(255, 0, 0)); buttonMS = new JButton("MS");buttonMS.setForeground(new Color(255, 0, 0)); buttonMAdd = new JButton("M+");buttonMAdd.setForeground(new Color(255, 0, 0)); buttonDot = new JButton(".");buttonDot.setForeground(new Color(0, 0, 255)); buttonAddAndSub = new JButton("+/-"); buttonAddAndSub.setForeground(new Color(0, 0, 255)); buttonAdd = new JButton("+");buttonAdd.setForeground(new Color(255, 0, 0)); buttonSub = new JButton("-");buttonSub.setForeground(new Color(255, 0, 0)); buttonMul = new JButton("*");buttonMul.setForeground(new Color(255, 0, 0)); buttonDiv = new JButton("/");buttonDiv.setForeground(new Color(255, 0, 0)); buttonSin = new JButton("sin");buttonSin.setForeground(new Color(12, 150, 50)); buttonCos = new JButton("cos");buttonCos.setForeground(new Color(12, 150, 50)); buttonTan = new JButton("tan");buttonTan.setForeground(new Color(12, 150, 50)); buttonEqual = new JButton("=");buttonEqual.setForeground(new Color(255, 0, 0)); buttonPI = new JButton("pi");buttonPI.setForeground(new Color(12, 150, 50)); buttonX2 = new JButton("x^2");buttonX2.setForeground(new Color(12, 150, 50)); buttonSqrt = new JButton("sqrt");buttonSqrt.setForeground(new Color(12, 150, 50)); buttonDS = new JButton("1/x");buttonDS.setForeground(new Color(12, 150, 50));// 将所有行为与监听绑定panel3.setLayout(new GridLayout(4, 7));panel3.add(buttonMC);buttonMC.addActionListener(this);panel3.add(button[7]);button[7].addActionListener(this);button[8].addActionListener(this);panel3.add(button[9]);button[9].addActionListener(this);panel3.add(buttonDiv);buttonDiv.addActionListener(this);panel3.add(buttonSin);buttonSin.addActionListener(this);panel3.add(buttonPI);buttonPI.addActionListener(this);panel3.add(buttonMR);buttonMR.addActionListener(this);panel3.add(button[4]);button[4].addActionListener(this);panel3.add(button[5]);button[5].addActionListener(this);panel3.add(button[6]);button[6].addActionListener(this);panel3.add(buttonMul);buttonMul.addActionListener(this);panel3.add(buttonCos);buttonCos.addActionListener(this);panel3.add(buttonDS);buttonDS.addActionListener(this);panel3.add(buttonMS);buttonMS.addActionListener(this);panel3.add(button[1]);button[1].addActionListener(this);panel3.add(button[2]);button[2].addActionListener(this);panel3.add(button[3]);button[3].addActionListener(this);panel3.add(buttonSub);buttonSub.addActionListener(this);panel3.add(buttonTan);buttonTan.addActionListener(this);panel3.add(buttonX2);buttonX2.addActionListener(this);panel3.add(buttonMAdd);buttonMAdd.addActionListener(this);panel3.add(button[0]);button[0].addActionListener(this);panel3.add(buttonAddAndSub); buttonAddAndSub.addActionListener(this);buttonDot.addActionListener(this);panel3.add(buttonAdd);buttonAdd.addActionListener(this);panel3.add(buttonEqual);buttonEqual.addActionListener(this);panel3.add(buttonSqrt);buttonSqrt.addActionListener(this);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.pack();frame.setVisible(true);}// 设置各个按钮行为public void actionPerformed(ActionEvent event) {Object temp = event.getSource();try {// 如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后for (int i = 0; i <= 9; i++)if (temp == button[i] && clickable == true) {if(resultIndicate) {textAnswer.setText("");clickable = true;textAnswer.setText(textAnswer.getText() + Integer.toString(i));}else {textAnswer.setText(textAnswer.getText() + Integer.toString(i));}}// 按下′.′按钮时,判断当前文本框内字符串中含不含′.′,如果已含,则不允许再插入′.′if (temp == buttonDot && clickable == true) {boolean isDot = false;if (textAnswer.getText().length() == 0) {//isDot = true;isDot = false;dotFlag = true;}for(int i = 0; i < textAnswer.getText().length(); i++) if ('.' == textAnswer.getText().charAt(i)) {isDot = true;break;}if (isDot == false) {if (dotFlag)textAnswer.setText('0' + ".");elsetextAnswer.setText(textAnswer.getText() + ".");}}if ((temp == buttonAdd || temp == buttonSub || temp == buttonMul ||temp == buttonDiv) && clickable == true) {// ′+′操作if (temp == buttonAdd) {switch (prekey) {case 0:answerd +=Double.parseDouble(textAnswer.getText());break;case 1:answerd -=Double.parseDouble(textAnswer.getText());break;case 2:answerd *=Double.parseDouble(textAnswer.getText());break;case 3:if(Double.parseDouble(textAnswer.getText()) == 0) {textAnswer.setText("除数不能为零");clickable = false;}elseanswerd /=Double.parseDouble(textAnswer.getText());break;default:answerd =Double.parseDouble(textAnswer.getText());}textAnswer.setText("");prekey = key = 0;}// ′-′操作if (temp == buttonSub) {switch (prekey) {case 0:answerd +=Double.parseDouble(textAnswer.getText());break;case 1:answerd -=Double.parseDouble(textAnswer.getText());break;case 2:answerd *=Double.parseDouble(textAnswer.getText());break;case 3:if(Double.parseDouble(textAnswer.getText()) == 0) {textAnswer.setText("除数不能为零");clickable = false;}elseanswerd /=Double.parseDouble(textAnswer.getText());break;default:answerd =Double.parseDouble(textAnswer.getText());}textAnswer.setText("");prekey = key = 1;}// ′*′操作if (temp == buttonMul) {switch (prekey) {case 0:answerd +=Double.parseDouble(textAnswer.getText());break;case 1:answerd -=Double.parseDouble(textAnswer.getText());break;case 2:answerd *=Double.parseDouble(textAnswer.getText());break;case 3:if(Double.parseDouble(textAnswer.getText()) == 0) {textAnswer.setText("除数不能为零");clickable = false;}elseanswerd /=Double.parseDouble(textAnswer.getText());break;default:answerd =Double.parseDouble(textAnswer.getText());}textAnswer.setText("");prekey = key = 2;}// ′/′操作if (temp == buttonDiv) {switch (prekey) {case 0:answerd +=Double.parseDouble(textAnswer.getText());break;case 1:answerd -=Double.parseDouble(textAnswer.getText());break;case 2:answerd *=Double.parseDouble(textAnswer.getText());break;case 3:if(Double.parseDouble(textAnswer.getText()) == 0) {textAnswer.setText("除数不能为零");clickable = false;}elseanswerd /=Double.parseDouble(textAnswer.getText());break;default:answerd =Double.parseDouble(textAnswer.getText());}textAnswer.setText("");prekey = key = 3;}}// ′=′操作if (temp == buttonEqual && clickable == true) {// 如果连续按′=′,则进行连续运算if (prekey == 5) {if (key == 0) {answerd += vard;textAnswer.setText(df.format(answerd));}if (key == 1) {answerd -= vard;textAnswer.setText(df.format(answerd));}if (key == 2) {answerd *= vard;textAnswer.setText(df.format(answerd));}if (key == 3) {if(Double.parseDouble(textAnswer.getText()) == 0) {textAnswer.setText("除数不能为零");clickable = false;}else {answerd /= vard;textAnswer.setText(df.format(answerd));}}}else {vard = Double.parseDouble(textAnswer.getText());if (key == 0) {prekey = -1;answerd +=Double.parseDouble(textAnswer.getText());textAnswer.setText(df.format(answerd));}if (key == 1) {prekey = -1;answerd -=Double.parseDouble(textAnswer.getText());textAnswer.setText(df.format(answerd));}if (key == 2) {prekey = -1;answerd *=Double.parseDouble(textAnswer.getText());textAnswer.setText(df.format(answerd));}if (key == 3) {prekey = -1;if(Double.parseDouble(textAnswer.getText()) == 0) {textAnswer.setText("除数不能为零");clickable = false;}else {answerd /=Double.parseDouble(textAnswer.getText());textAnswer.setText(df.format(answerd));}}}prekey = 5;resultIndicate = true;}// 显示PIif (temp == buttonPI && clickable == true) {textAnswer.setText(Double.toString(ng.Math.PI));}// 求正弦运算if (temp == buttonSin && clickable == true) {textAnswer.setText(Double.toString(ng.Math.sin(Double.parseDouble(textAnswer.getText()) *ng.Math.PI / 180)));}// 求余弦运算if (temp == buttonCos && clickable == true) {textAnswer.setText(Double.toString(ng.Math.cos(Double.parseDouble(textAnswer.getText()) *ng.Math.PI / 180)));}// 求正切运算if (temp == buttonTan && clickable == true) {textAnswer.setText(Double.toString(ng.Math.tan(Double.parseDouble(textAnswer.getText()) *ng.Math.PI / 180)));}// 求平方运算if (temp == buttonX2 && clickable == true) {answerd = Double.parseDouble(textAnswer.getText()) *Double.parseDouble(textAnswer.getText());textAnswer.setText(Double.toString(answerd));}// 开根号运算if (temp == buttonSqrt && clickable == true) {String s = textAnswer.getText();if (s.charAt(0) == '-') {textAnswer.setText("负数不能开根号");clickable = false;}elsetextAnswer.setText(Double.toString(ng.Math.sqrt(Double.parseDouble(textAnswer.getText()))));}// 按下′+/-′按钮时处理if (temp == buttonAddAndSub && clickable == true) {boolean isNumber = true;String s = textAnswer.getText();for (int i = 0; i < s.length(); i++)if (! (s.charAt(i) >= '0' && s.charAt(i) <= '9' || s.charAt(i) == '.'|| s.charAt(i) == '-')) {isNumber = false;break;}if (isNumber == true) {// 如果当前字符串首字母有′-′号,代表现在是个负数,再按下时,则将首符号去掉if (s.charAt(0) == '-') {textAnswer.setText("");for (int i = 1; i < s.length(); i++) {char a = s.charAt(i);textAnswer.setText(textAnswer.getText() + a);}}// 如果当前字符串第一个字符不是符号,则添加一个符号在首字母处elsetextAnswer.setText('-' + s);}}// 计算器有关内存操作// ′MC′的操作,将内存清0if (temp == buttonMC && clickable == true) {memoryd = memoryi = 0;textMemory.setText("");}// ′MS′的操作,将当前文本框内容保存入内存,显示′M′if (temp == buttonMS && clickable == true) {boolean isDot = false;textMemory.setText(" M");for(int i = 0; i < textAnswer.getText().length(); i++) if ('.' == textAnswer.getText().charAt(i)) {isDot = true;break;}// 如果是double,则存入memoryd(double存储器)if (isDot == true) {memoryd =Double.parseDouble(textAnswer.getText());memoryi = 0; //保证存储器中存放最新的值}// 如果是int,则存入memoryi(int存储器)else {memoryi = Integer.parseInt(textAnswer.getText());memoryd = 0; //保证存储器中存放最新的值}}//′MR′的操作,将存储器中的信息输出if (temp == buttonMR && clickable == true) {if (memoryd != 0)textAnswer.setText(Double.toString(memoryd));if (memoryi != 0)textAnswer.setText(Integer.toString(memoryi));}// ′M+′的功能,将当前文本框里的数据和存储器中数据相加后,再存入存储器if (temp == buttonMAdd && clickable == true) {boolean isDot = false;for(int i = 0; i < textAnswer.getText().length(); i++) if ('.' == textAnswer.getText().charAt(i)) {isDot = true;break;}if (memoryi != 0) { // 存储中是一个int型数if (isDot == false) // 被加数是一个int型数memoryi +=Integer.parseInt(textAnswer.getText());else { // 被加数是一个double型数,则将int存储器中数传入double存储器与当前数相加,int存储器清零memoryd = memoryi +Double.parseDouble(textAnswer.getText());memoryi = 0;}}elsememoryd +=Double.parseDouble(textAnswer.getText());}// 按下′Backspace′键,利用循环将当前字符串中的最后一个字母删除if (temp == buttonBS && clickable == true) {String s = textAnswer.getText();textAnswer.setText("");for (int i = 0; i < s.length() - 1; i++) {char a = s.charAt(i);textAnswer.setText(textAnswer.getText() + a);}}// 按下′CE′按钮,将当前文本框内数据清除if (temp == buttonCE) {textAnswer.setText("");clickable = true;}// 按下′C′按钮,文本框内数据清除,同时var,answer清零if (temp == buttonC) {vard = answerd = 0;textAnswer.setText("");clickable = true;}// 按下′复制′菜单栏if (temp == copyItem) {copy = textAnswer.getText();}// 按下′粘贴′菜单栏if (temp == pasteItem) {textAnswer.setText(copy);}}// 输入中如果有操作非法,比如按下两次′+′,捕获异常catch (Exception e) {textAnswer.setText("操作非法");clickable = false;}}// 主函数public static void main(String args[]) { new MyCalculator();}}四、运行结果:五、重点代码分析这一部分涉及到程序功能的算法问题public void actionPerformed(ActionEvent event) {Object temp = event.getSource();try {// 如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后for (int i = 0; i <= 9; i++)if (temp == button[i] && clickable == true) {if(resultIndicate) {textAnswer.setText("");clickable = true;textAnswer.setText(textAnswer.getText() + Integer.toString(i));}else {textAnswer.setText(textAnswer.getText() + Integer.toString(i));}}// 按下′.′按钮时,判断当前文本框内字符串中含不含′.′,如果已含,则不允许再插入′.′if (temp == buttonDot && clickable == true) {boolean isDot = false;if (textAnswer.getText().length() == 0) {//isDot = true;isDot = false;dotFlag = true;}for(int i = 0; i < textAnswer.getText().length(); i++) if ('.' == textAnswer.getText().charAt(i)) {isDot = true;break;}if (isDot == false) {if (dotFlag)textAnswer.setText('0' + ".");elsetextAnswer.setText(textAnswer.getText() + ".");}}if ((temp == buttonAdd || temp == buttonSub || temp == buttonMul ||temp == buttonDiv) && clickable == true) {// ′+′操作if (temp == buttonAdd) {switch (prekey) {case 0:answerd +=Double.parseDouble(textAnswer.getText());break;case 1:answerd -=Double.parseDouble(textAnswer.getText());break;case 2:answerd *=Double.parseDouble(textAnswer.getText());break;case 3:if(Double.parseDouble(textAnswer.getText()) == 0) {textAnswer.setText("除数不能为零");clickable = false;}elseanswerd /=Double.parseDouble(textAnswer.getText());break;default:answerd =Double.parseDouble(textAnswer.getText());}textAnswer.setText("");prekey = key = 0;}// ′-′操作if (temp == buttonSub) {switch (prekey) {case 0:answerd +=Double.parseDouble(textAnswer.getText());break;case 1:answerd -=Double.parseDouble(textAnswer.getText());break;case 2:answerd *=Double.parseDouble(textAnswer.getText());break;case 3:if(Double.parseDouble(textAnswer.getText()) == 0) {textAnswer.setText("除数不能为零");clickable = false;}elseanswerd /=Double.parseDouble(textAnswer.getText());break;default:answerd =Double.parseDouble(textAnswer.getText());}textAnswer.setText("");prekey = key = 1;}// ′*′操作if (temp == buttonMul) {switch (prekey) {case 0:answerd +=Double.parseDouble(textAnswer.getText());break;case 1:answerd -=Double.parseDouble(textAnswer.getText());break;case 2:answerd *=Double.parseDouble(textAnswer.getText());break;case 3:if(Double.parseDouble(textAnswer.getText()) == 0) {textAnswer.setText("除数不能为零");clickable = false;}elseanswerd /=Double.parseDouble(textAnswer.getText());break;default:answerd =Double.parseDouble(textAnswer.getText());}textAnswer.setText("");prekey = key = 2;}// ′/′操作if (temp == buttonDiv) {switch (prekey) {case 0:answerd +=Double.parseDouble(textAnswer.getText());break;case 1:answerd -=Double.parseDouble(textAnswer.getText());break;case 2:answerd *=Double.parseDouble(textAnswer.getText());break;case 3:if(Double.parseDouble(textAnswer.getText()) == 0) {textAnswer.setText("除数不能为零");clickable = false;}elseanswerd /=Double.parseDouble(textAnswer.getText());break;default:answerd =Double.parseDouble(textAnswer.getText());}textAnswer.setText("");prekey = key = 3;}}// ′=′操作if (temp == buttonEqual && clickable == true) {// 如果连续按′=′,则进行连续运算if (prekey == 5) {if (key == 0) {answerd += vard;textAnswer.setText(df.format(answerd));}if (key == 1) {answerd -= vard;textAnswer.setText(df.format(answerd));}if (key == 2) {answerd *= vard;textAnswer.setText(df.format(answerd));}if (key == 3) {if(Double.parseDouble(textAnswer.getText()) == 0) {textAnswer.setText("除数不能为零");clickable = false;}else {answerd /= vard;textAnswer.setText(df.format(answerd));}}}else {vard = Double.parseDouble(textAnswer.getText());if (key == 0) {prekey = -1;answerd +=Double.parseDouble(textAnswer.getText());textAnswer.setText(df.format(answerd));}if (key == 1) {prekey = -1;answerd -=Double.parseDouble(textAnswer.getText());textAnswer.setText(df.format(answerd));}if (key == 2) {prekey = -1;answerd *=Double.parseDouble(textAnswer.getText());textAnswer.setText(df.format(answerd));}if (key == 3) {prekey = -1;if(Double.parseDouble(textAnswer.getText()) == 0) {textAnswer.setText("除数不能为零");clickable = false;}else {answerd /=Double.parseDouble(textAnswer.getText());textAnswer.setText(df.format(answerd));}}}prekey = 5;resultIndicate = true;}// 显示PIif (temp == buttonPI && clickable == true) {textAnswer.setText(Double.toString(ng.Math.PI));}// 求正弦运算if (temp == buttonSin && clickable == true) {textAnswer.setText(Double.toString(ng.Math.sin(Double.parseDouble(textAnswer.getText()) *ng.Math.PI / 180)));}// 求余弦运算if (temp == buttonCos && clickable == true) {textAnswer.setText(Double.toString(ng.Math.cos(Double.parseDouble(textAnswer.getText()) *ng.Math.PI / 180)));}// 求正切运算if (temp == buttonTan && clickable == true) { textAnswer.setText(Double.toString(ng.Math.tan(Double.parseDouble(textAnswer.getText()) *ng.Math.PI / 180)));}// 求平方运算if (temp == buttonX2 && clickable == true) {answerd = Double.parseDouble(textAnswer.getText()) *Double.parseDouble(textAnswer.getText());textAnswer.setText(Double.toString(answerd));}// 开根号运算if (temp == buttonSqrt && clickable == true) {String s = textAnswer.getText();if (s.charAt(0) == '-') {textAnswer.setText("负数不能开根号");clickable = false;}elsetextAnswer.setText(Double.toString(ng.Math.sqrt(Double.parseDouble(textAnswer.getText()))));}// 按下′+/-′按钮时处理if (temp == buttonAddAndSub && clickable == true) {boolean isNumber = true;String s = textAnswer.getText();for (int i = 0; i < s.length(); i++)if (! (s.charAt(i) >= '0' && s.charAt(i) <= '9' || s.charAt(i) == '.'|| s.charAt(i) == '-')) {isNumber = false;break;}if (isNumber == true) {// 如果当前字符串首字母有′-′号,代表现在是个负数,再按下时,则将首符号去掉if (s.charAt(0) == '-') {textAnswer.setText("");for (int i = 1; i < s.length(); i++) {char a = s.charAt(i);textAnswer.setText(textAnswer.getText() + a);}}// 如果当前字符串第一个字符不是符号,则添加一个符号在首字母处elsetextAnswer.setText('-' + s);}}// 计算器有关内存操作// ′MC′的操作,将内存清0if (temp == buttonMC && clickable == true) {memoryd = memoryi = 0;textMemory.setText("");}// ′MS′的操作,将当前文本框内容保存入内存,显示′M′if (temp == buttonMS && clickable == true) {boolean isDot = false;textMemory.setText(" M");for(int i = 0; i < textAnswer.getText().length(); i++) if ('.' == textAnswer.getText().charAt(i)) {isDot = true;break;}// 如果是double,则存入memoryd(double存储器)if (isDot == true) {memoryd =Double.parseDouble(textAnswer.getText());memoryi = 0; //保证存储器中存放最新的值}// 如果是int,则存入memoryi(int存储器)else {memoryi = Integer.parseInt(textAnswer.getText());memoryd = 0; //保证存储器中存放最新的值}}//′MR′的操作,将存储器中的信息输出if (temp == buttonMR && clickable == true) {if (memoryd != 0)textAnswer.setText(Double.toString(memoryd));if (memoryi != 0)textAnswer.setText(Integer.toString(memoryi));}// ′M+′的功能,将当前文本框里的数据和存储器中数据相加后,再存入存储器if (temp == buttonMAdd && clickable == true) {boolean isDot = false;for(int i = 0; i < textAnswer.getText().length(); i++) if ('.' == textAnswer.getText().charAt(i)) {isDot = true;break;}if (memoryi != 0) { // 存储中是一个int型数if (isDot == false) // 被加数是一个int型数memoryi +=Integer.parseInt(textAnswer.getText());else { // 被加数是一个double型数,则将int存储器中数传入double存储器与当前数相加,int存储器清零memoryd = memoryi +Double.parseDouble(textAnswer.getText());memoryi = 0;}}elsememoryd +=Double.parseDouble(textAnswer.getText());}// 按下′Backspace′键,利用循环将当前字符串中的最后一个字母删除if (temp == buttonBS && clickable == true) {String s = textAnswer.getText();textAnswer.setText("");for (int i = 0; i < s.length() - 1; i++) {char a = s.charAt(i);textAnswer.setText(textAnswer.getText() + a);}}// 按下′CE′按钮,将当前文本框内数据清除if (temp == buttonCE) {textAnswer.setText("");clickable = true;}// 按下′C′按钮,文本框内数据清除,同时var,answer清零if (temp == buttonC) {vard = answerd = 0;textAnswer.setText("");clickable = true;}// 按下′复制′菜单栏if (temp == copyItem) {copy = textAnswer.getText();}// 按下′粘贴′菜单栏if (temp == pasteItem) {textAnswer.setText(copy);}}// 输入中如果有操作非法,比如按下两次′+′,捕获异常catch (Exception e) {textAnswer.setText("操作非法");clickable = false;}}六、设计体会通过这门课程的学习,我了解到了java语言的强大功能,虽然我不是计算机专业的学生,但是我对编程很感兴趣,大一学习c语言的时候,我从头到尾都很认真,经常自己编一些很有意思的小程序,对于java语言,只是听说过而已。
java程序设计报告
java程序设计报告Java作为一种广泛使用的编程语言,被广泛应用于各个行业的软件开发中。
本报告将着重介绍Java程序设计的重要性以及其在现代软件开发中的应用。
1. Java的重要性Java作为一种跨平台的编程语言,具有很高的灵活性和可扩展性。
它被广泛用于开发图形用户界面(GUI)、网络和企业级应用等方面。
相比其他编程语言,Java具有以下几个重要的特点:a) 跨平台性:Java程序可以在不同操作系统上运行,无需针对每个特定的操作系统进行大量的修改和调试工作。
这为软件开发带来了巨大的便利。
b) 面向对象:Java是一种面向对象的语言,它充分利用了面向对象的封装、继承和多态等特性,使得程序的设计和开发更加灵活和易于维护。
c) 安全性:Java提供了丰富的安全性特性,如内存管理、异常处理和访问控制等,保证了程序的稳定性和安全性。
d) 全球化支持:Java提供了全球化支持,可以轻松处理不同语言和字符集的编码问题,使得开发国际化软件变得更加容易。
2. Java程序设计的应用领域Java程序设计可以应用于各个领域的软件开发中,下面将分别介绍几个主要的应用领域。
a) 图形用户界面(GUI)开发:Java提供了丰富的GUI组件库,如Swing和JavaFX等,可以用于开发各种用户友好的图形界面。
这些组件库使得开发人员能够轻松创建出漂亮和功能强大的用户界面,提升了用户体验。
b) 网络应用开发:Java的网络编程功能非常强大,可以用于开发各种网络应用,如Web应用、网络游戏和即时通讯软件等。
Java提供了Socket编程接口和HTTP协议的支持,使得开发网络应用变得更加容易。
c) 企业级应用开发:Java在企业级应用开发中被广泛使用。
Java的企业级框架如Spring和Hibernate等,提供了一系列功能强大的组件和工具,可以快速构建出稳定和可扩展的企业级应用。
d) 移动应用开发:Java也可以用于开发移动应用程序。
原创java课程设计总结报告
原创Java课程设计总结报告一、引言Java作为一种功能强大且广泛应用的编程语言,被广泛应用于软件开发领域。
在本学期的Java课程中,我们通过学习Java的语法、特性和开发工具,进行了一系列的课程设计项目。
本文将对我所完成的Java课程设计项目进行总结和反思,包括项目的背景、设计思路、实现过程和结果评价。
二、项目背景本次Java课程设计的项目题目为“学生信息管理系统”,旨在帮助学生更好地管理和查询个人的学籍信息。
该项目要求实现以下功能: - 学生信息的录入、修改和删除; - 学生信息的查询和统计; - 学生信息的导入和导出功能; - 用户界面友好,操作简便。
三、设计思路1. 数据模型设计在设计学生信息管理系统时,首先需要考虑数据模型的设计。
我使用面向对象的设计思想,创建了一个名为Student的类来表示学生信息。
该类包含了学生的姓名、学号、年龄、性别等基本属性,并提供相应的方法供其他类进行操作。
2. 用户界面设计为了实现用户友好的界面和简便的操作,我使用了Swing框架来设计学生信息管理系统的用户界面。
通过创建不同的面板和对话框,我实现了学生信息的录入、修改、删除、查询和统计功能。
同时,我还使用了合适的布局管理器来使界面更加美观和易用。
3. 数据存储与管理为了保持学生信息的持久化存储,并实现学生信息的导入和导出功能,我使用了文件操作来对学生信息进行管理。
通过将学生信息存储在文本文件中,并使用适当的格式进行存储和读取,实现了学生信息的可持久化和数据的导入、导出功能。
4. 异常处理与错误提示在学生信息管理系统的实现过程中,我充分考虑到可能出现的异常情况,并进行了相应的异常处理。
通过使用try-catch语句或抛出异常,及时捕获和处理异常,使系统能够正常运行,并及时向用户提供错误提示信息,提高了系统的健壮性。
四、实现过程1. 数据模型实现在学生信息管理系统中,我首先创建了一个Student类,用于表示学生信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JAVA程序设计——实训报告系部: 计算机系班级: 13网络技术**: *****: ***一、设计题目数据库数据操作二、目的和要求:1. 掌握JDBC 原理。
和用JAVA JDBC 技术连结数据2. 使用JDBC数据库存取技术。
3. 用java编写数据库的增加,删除,查询,修改4. 实现主要功能,界面不作要求。
三、设计过程JDBC是基于java的,用于访问关系数据库的应用程序编程接口(API),提供在java 应用程序中执行sql语句以访问和操作关系数据库的方法。
JDBC提供4种类型的驱动程序:1,JDBC-ODBC桥驱动程序特点:具有大量的ODBC驱动程序可用,缺点是不易于移植,且运行速度较慢。
2,本地库java实现驱动程序特点:能够充分利用已有的专用驱动程序,缺点是不具有跨平台特性。
3,网络协议驱动程序特点:适用于网络的分布式应用,方式灵活缺点是设计网络安全问题。
4,数据库协议驱动程序特点:应用程序直接于数据库服务器端通信,此类驱动程序全部使用java编写。
1.受环境的制约,我们选用JDBC连接数据库的方式,首先打开Eclipse设置好工作目录,并新建项目,在该项目的默认包中创建如图所示的几个类。
2.其中DBUtil.java是用来连接数据库的专用类;字母S打头的四个类分别实现对数据库的增删改查四个功能,Test.java类用于启动程序创建图形用户界面并调用别的类的方法。
DBUtil.javaimport java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;public class DBUtil{public static Connection getConn(){Connection conn = null;try{String driverName = "sun.jdbc.odbc.JdbcOdbcDriver"; // 指定驱动程序Class.forName(driverName);String dbUrl = "jdbc:odbc:school"; // 指定URL 数据源名称conn = DriverManager.getConnection(dbUrl);}catch (ClassNotFoundException e){e.printStackTrace();}catch (SQLException e){e.printStackTrace();}return conn;}public static void close(PreparedStatement pstmt){if (pstmt != null){try{pstmt.close();}catch (SQLException e){e.printStackTrace();}}}public static void close(Connection conn){if (conn != null){try{conn.close();}catch (SQLException e){e.printStackTrace();}}}public static void main(String[] args){Connection conn = DBUtil.getConn();System.out.println("ok");DBUtil.close(conn);}}该文件下载与网络,但我们要知道创建它包含3个步骤:1、加载JDBC驱动程序:在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过ng.Class类的静态方法forName(String className)实现。
try{//加载的驱动类Class.forName("sun.jdbc.odbc.JdbcOdbcDriver";") ;}catch(ClassNotFoundException e){System.out.println("找不到驱动程序类,加载驱动失败!");e.printStackTrace() ;}2、提供JDBC连接的URLString constr = "jdbc:odbc:系统数据源"; // 指定URLcon = DriverManager.getConnection(constr);系统数据源:ODBC数据源的名称student3、创建数据库的连接要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,该对象就代表一个数据库的连接。
使用DriverManager的getConnectin(String url , String username , String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和密码来获得。
try {String driverName = "sun.jdbc.odbc.JdbcOdbcDriver"; // 指定驱动程序Class.forName(driverName);String constr = "jdbc:odbc:student"; // 指定URLcon = DriverManager.getConnection(constr);}catch(SQLException se){System.out.println("数据库连接失败!");se.printStackTrace() ;}Ssel ect.javaimport ponent;import java.sql.*;import java.util.ArrayList;public class Sselect {public static Object[][] res() throws SQLException {//返回给用户界面类型装箱Statement stm = null;Connection con = null;Object[][] result=new Object[20][7];try {con = DBUtil.getConn();// 建立连接} catch (Exception e) {e.printStackTrace();}try {stm = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);//uix 创建statement 对象ResultSet rst = stm.executeQuery("select * from student"); //执行SQL 语句int xline=0;while (rst.next()) {result[xline][0]=rst.getInt(1);result[xline][1]=rst.getString(2);result[xline][2]=rst.getString(3);result[xline][3]=rst.getString(4);result[xline][4]=rst.getDate(5);result[xline][5]=rst.getString(6);result[xline][6]=rst.getInt(7);xline++;}} catch (Exception e) {System.out.println("查询出错!");} finally {con.close();return result;}}}除了连接数据的三个步骤外,要对数据库进行操作还需要以下四步:4、创建一个Statement要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3 种类型:1、执行静态SQL语句。
通常通过Statement实例实现。
2、执行动态SQL语句。
通常通过PreparedStatement实例实现。
3、执行数据库存储过程。
通常通过CallableStatement实例实现。
具体的实现方式:Statement stmt = con.createStatement() ;PreparedStatement pstmt = con.prepareStatement(sql) ;CallableStatement cstmt =con.prepareCall("{CALL demoSp(? , ?)}") ;5、执行SQL语句Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate 和execute1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句,返回一个结果集(ResultSet)对象。
2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的语句。
具体实现的代码:ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;int rows = stmt.executeUpdate("INSERT INTO ...") ;boolean flag = stmt.execute(String sql) ;6、处理结果两种情况:1、执行更新返回的是本次操作影响到的记录数。
2、执行查询返回的结果是一个ResultSet对象。
ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问。
使用结果集(ResultSet)对象的访问方法获取数据:while(rs.next()){String name = rs.getString("name") ;String pass = rs.getString(1) ; // 此方法比较高效}(列是从左到右编号的,并且从列1开始)7、关闭JDBC对象操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声明顺序相反:1、关闭记录集2、关闭声明3、关闭连接对象if(rs != null){ // 关闭记录集try{rs.close() ;}catch(SQLException e){e.printStackTrace() ;}}if(stmt != null){ // 关闭声明try{stmt.close() ;}catch(SQLException e){e.printStackTrace() ;}}if(conn != null){ // 关闭连接对象try{conn.close() ;}catch(SQLException e){e.printStackTrace() ;}}Supdate.java Sinsert.java Sd elete.java以上三个类与Sselect.java类差异非常小,我们只需要复制该类并进行修改,String sql = "select * from student";ResultSet rst = stm.executeQuery(sql);这是原Sselect.java类的一条语句为了其它三个类我们分别初始sql变量为:"update 表名set 列1=值1,列2=值2,列3=值3 where ID=值""insert into 表名(列1,列2,列3) values(值1,值2,值3);""delete from student where ID=值"Test.javaimport java.awt.*;import javax.swing.*;import javax.swing.table.DefaultTableModel;import .apache.bcel.internal.generic.NEW;import java.awt.event.*;import java.sql.SQLException;class Welcome extends JFrame{JButton select =new JButton("学生信息");JButton insert =new JButton("添加学生");JPanel p=new JPanel();JTextField snoArea=new JTextField(10);JTextField snameArea=new JTextField(10);JTextField sbirthArea=new JTextField(10);JTextField sclassArea=new JTextField(10);JLabel snoJLabel=new JLabel("学号");JLabel snameJLabel=new JLabel("姓名");JComboBox ssexJLabel=new JComboBox();JLabel sbirthJLabel=new JLabel("出生日期");JLabel sclassJLabel=new JLabel("班级");public Welcome(){setTitle("学生信息");p.add(select);p.add(snoJLabel);p.add(snoArea);p.add(snameJLabel);p.add(snameArea);p.add(sbirthJLabel);p.add(sbirthArea);p.add(sclassJLabel);p.add(sclassArea);p.add(ssexJLabel);ssexJLabel.addItem("男");ssexJLabel.addItem("女");p.add(insert);getContentPane().add(p);select.addMouseListener(new MouseAdapter(){//内部类监听按钮点击事件JTable table=new JTable();public void mouseClicked(MouseEvent e){try {Object[][] dobj=new Object[][]{{}};Object[] dcol=new Object[]{"序号","学号","姓名","性别","生日","班级","年龄"};DefaultTableModel dtable=new DefaultTableModel(Sselect.res(), dcol);JTable table=new JTable(dtable);p.add(table);dtable.fireTableDataChanged();} catch (SQLException e1) {e1.printStackTrace();}}});}}public class Test{public static void main(String args[]){Welcome l1=new Welcome();l1.setSize(550,450);l1.setVisible(true);l1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}一开始在Win10下安装SQL Serve2005DEV开发版后调试启动本地服务失败,后来在win7下成功,由于时间效率因素,我只做了学生信息的操作界面。