JAVA-课程设计报告
java课程设计实验报告

java课程设计实验报告一一实验目的加深学生对课堂讲授内容的理解,从计算机语言的基本概念、程序设计的基本方法、语法规则等方面加深理解,打好程序设计、开发软件的良好基础。
在上机实验中,提高学生对Java语言各部分内容的综合使用能力,逐步掌握Java语言程序设计的规律与技巧。
在对Java程序的调试过程中,提高学生分析程序中出现的错误与排除这些错误的能力。
通过上机实践,加深学生对计算机软件运行环境,以及对操作系统与计算机语言支持系统相互关系的了解。
二、实验要求(1)问题描述准确、规范;(2)程序结构合理,调试数据准确、有代表性;(3)界面布局整齐,人机交互方便;(4)输出结果正确;(5)正确撰写实验报告。
三、设计内容11、计算器计算器要有GUI界面,用户可以输入所需计算的数值,可以进行加、减、乘、除四种最基本的运算与混合运算,可以求一个数值的平方及倒数,可以进行阶乘运算,要能运算小数,并且不会产生精度损失,在必要情况下,可以进行四舍五入的运算。
允许正负数间的运算。
要求使用Applet实现该计算器,当用浏览器运行程序时,点击网页中的按钮,则计算器弹出,浮在网页上,再次点击按钮时,计算器消失。
22、文本编辑器可以设置文本的字体、大小、颜色等基本参数,可以读取计算机中TXT文件,可以生成一个新的TXT文件。
其她功能参照windows的文本编辑器。
四四.实验步骤(1)上机实验之前,为课程设计的内容作好充分准备。
对每次上机需要完成的任务进行认真的分析,画出程序流程图,手工写出符合任务要求的程序清单,准备出调试程序使用的数据,以便提高上机实验的效率。
(2)按照实验目的与实验内容进行上机操作。
录入程序,编译调试,反复修改,直到使程序正常运行,得出正确的输出结果为止。
(3)根据实验结果,写出实验报告。
五、、源代码及运行结果1.计算器源代码importjava、awt、*;importjava、awt、event、*;importjava、lang、*;importjavax、swing、*;publicclassjisuanqiextendsWindowAdapter{//创建三个面板Panelp1=newPanel();Panelp2=newPanel();Panelp3=newPanel();TextFieldtxt;privateButton[]b=newButton[21];privateStringss[]={"7","8","9","/","清空","4","5","6","*","1/x","1","2","3","-","平方","0","、","=","+","n!","关闭"};staticdoublea,sum=1;staticStrings,str;//定义变量创建对像//创建文本框publicstaticvoidmain(Stringargs[]){(newjisuanqi())、frame();}publicvoidframe(){//设置文本框的名称Framefm=newFrame("简单计算器");for(inti=0;i<=20;i++){b[i]=newButton(ss[i]);}for(inti=0;i<=19;i++){p2、add(b[i]);//创建按钮并添加到P2}//按钮20背景色黄色b[20]、setBackground(Color、yellow);txt=newTextField("");txt、setEditable(false);//不能编辑文本框里面的内容txt、setBackground(Color、white);for(inti=0;i<=20;i++){b[i]、addActionListener(newbuttonlistener());//添加监听器}//设置关闭按钮b[20]、addActionListener(newclose());fm、addWindowListener(this);p1、setLayout(newBorderLayout());//设置布局管理器p1、add(txt,"North");//p1面板放到区域南部p2、setLayout(newGridLayout(4,5,2,2));//布局:四行五列,间隔为二p2、setBackground(Color、red);p3、setLayout(newBorderLayout());p3、add(b[20]);将三个面板分别放到不同位置fm、add(p1,"North");fm、add(p2,"Center");fm、add(p3,"South");fm、pack();fm、setVisible(true);//都就是些窗中设置添加相关组件与监听器}publicvoidwindowClosing(WindowEvente){System、exit(0);//退出系统}classbuttonlistenerimplementsActionListener{//编写监听器事件通过按键得出给果publicvoidactionPerformed(ActionEvente){Buttonbtn=(Button)e、getSource();if(btn、getLabel()=="="){jisuan();str=String、valueOf(a);txt、setText(str);//显示当前数字s="";//清零}elseif(btn、getLabel()=="+"){//设置一个方法jisuan();txt、setText("");s="+";}elseif(btn、getLabel()=="-"){jisuan();txt、setText("");s="-";}elseif(btn、getLabel()=="/"){jisuan();txt、setText("");s="/";}elseif(btn、getLabel()=="*"){jisuan();txt、setText("");s="*";}elseif(btn、getLabel()=="平方"){a=Double、parseDouble(txt、getText()); a*=a;txt、setText(""+String、valueOf(a)); }elseif(btn、getLabel()=="n!"){a=Double、parseDouble(txt、getText());sum=1;for(inti=1;i<=a;i++)sum=sum*i;txt、setText(""+String、valueOf(sum));}elseifbtn、getLabel()=="1/x"){a=Double、parseDouble(txt、getText());txt、setText(""+String、valueOf(1/a));}else{txt、setText(txt、getText()+btn、getLabel()); if(btn、getLabel()=="清空")txt、setText("");}}publicvoidjisuan(){//编写具体计算方法if(s=="+")a+=Double、parseDouble(txt、getText()); elseif(s=="-")a-=Double、parseDouble(txt、getText()); elseif(s=="*")a*=Double、parseDouble(txt、getText()); elseif(s=="/")a/=Double、parseDouble(txt、getText()); elsea=Double、parseDouble(txt、getText()); }}}classcloseimplementsActionListener {//退出publicvoidactionPerformed(ActionEvente) {System、exit(0);}}、2、计算器运行界面(11)计算器主界面(22)面板的实现11、创建三个面板分别就是显示数字的面板、按钮的面板与“关闭”的面板Panelp1=newPanel();Panelp2=newPanel();Panelp3=newPanel();22、创建一个文本框参数TextFieldtxt;33、创建一群按钮参数并给按钮赋值privateButton[]b=newButton[21];privateStringss[]={"7","8","9","/","清空","4","5","6","*","1/x","1","2","3","-","平方","0","、","=","+","n!","关闭"};44、创建文本框publicstaticvoidmain(Stringargs[]){(newjisuanqi())、frame();}55、设置文本框方法publicvoidframe(){//设置文本框的名称Framefm=newFrame("简单计算器");66、设置按钮for(inti=0;i<=20;i++){b[i]=newButton(ss[i]);}77、设将按钮添加到面板for(inti=0;i<=19;i++){p2、add(b[i]);//创建按钮并添加到P2}88、设置按钮020背景色黄色b[20]、setBackground(Color、yellow);99、创建文本框,,并规定不能编辑内容与背景为白色txt=newTextField("");txt、setEditable(false);txt、setBackground(Color、white);10、为按钮添加监听器for(inti=0;i<=20;i++){b[i]、addActionListener(newbuttonlistener());//添加监听器}11、设置“关闭”按钮可以关闭界面并设置监听器b[20]、addActionListener(newclose());fm、addWindowListener(this);12、设置布局p1、setLayout(newBorderLayout());//设置布局管理器p1、add(txt,"North");//p1面板放到区域南部p2、setLayout(newGridLayout(4,5,2,2));//布局:四行五列,间隔为二p2、setBackground(Color、red);p3、setLayout(newBorderLayout());p3、add(b[20]);13、将三个面板分别放到不同位置fm、add(p1,"North");fm、add(p2,"Center");fm、add(p3,"South");fm、pack();fm、setVisible(true);//都就是些窗中设置添加相关组件与监听器}14、退出系统publicvoidwindowClosing(WindowEvente){System、exit(0);}(33)将按钮添加到计算这个事件中11、编写监听器事件通过按键得出给果publicvoidactionPerformed(ActionEvente){//将按钮赋予这个事件中Buttonbtn=(Button)e、getSource();22、如果点击“==”这个按钮,,将出现当前数字if(btn、getLabel()=="="){jisuan();str=String、valueOf(a);txt、setText(str);//显示当前数字s="";//清零}33、如果点击“++”“--”“**”“//”分别完成一个方法并将结果显示到文本框elseif(btn、getLabel()=="+"){//设置一个方法jisuan();txt、setText("");s="+";}elseif(btn、getLabel()=="-") {jisuan();txt、setText("");s="-";}elseif(btn、getLabel()=="/") {jisuan();txt、setText("");s="/";}elseif(btn、getLabel()=="*"){jisuan();txt、setText("");s="*";}44、如果点击“平方”则当前数字与原数字形成即完成相关方法结果显示最终的数字elseif(btn、getLabel()=="平方"){a=Double、parseDouble(txt、getText());a*=a;txt、setText(""+String、valueOf(a));//显示a}55、当输入“nn!”,,就用rfor循环完成阶乘,,此方法属于cc语言基础方法,,不做相关解释elseif(btn、getLabel()=="n!"){a=Double、parseDouble(txt、getText());sum=1;//归一for(inti=1;i<=a;i++)sum=sum*i;txt、setText(""+String、valueOf(sum));//文本框中显示“sum”的数值}66、当输入“1/x”时,,显示1/a。
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课程设计报告摘要一、课程目标知识目标:1. 掌握Java基本语法和编程规范,理解面向对象编程思想;2. 学会使用Java编写简单的控制台程序,包括变量、数据类型、运算符、流程控制语句等;3. 理解类和对象的概念,掌握类的定义、属性、方法以及构造函数的使用;4. 掌握数组、字符串等基本数据结构的使用。
技能目标:1. 培养学生独立编写Java代码的能力,提高编程技巧;2. 培养学生分析问题、解决问题的能力,学会运用Java语言进行程序设计;3. 培养学生良好的编程习惯,注重代码规范和优化。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养主动学习的积极性;2. 培养学生的团队协作意识,学会与他人分享和交流编程经验;3. 培养学生面对困难勇于挑战的精神,增强自信心。
分析课程性质、学生特点和教学要求,本课程目标具体、可衡量,旨在让学生掌握Java编程基础知识,培养编程技能,同时注重培养学生的情感态度价值观,使他们在学习过程中形成积极、主动、合作的学习氛围。
通过本课程的学习,学生将具备初步的Java编程能力,为后续深入学习打下坚实基础。
二、教学内容根据课程目标,教学内容分为以下四个部分:1. Java基础语法与编程规范- 章节一:Java简介与开发环境配置- 章节二:变量、数据类型、运算符- 章节三:流程控制语句(顺序、分支、循环)- 章节四:数组与字符串2. 面向对象编程基础- 章节五:类与对象- 章节六:构造函数与封装- 章节七:继承与多态- 章节八:接口与抽象类3. 常用类与数据结构- 章节九:Java集合框架- 章节十:Java异常处理4. Java编程实践- 项目一:编写简单的控制台程序(计算器、图书管理系统等)- 项目二:面向对象编程实践(学生管理系统、购物车等)教学内容科学、系统,按照教学大纲逐步展开。
教学进度安排如下:1. Java基础语法与编程规范(2周)2. 面向对象编程基础(3周)3. 常用类与数据结构(2周)4. Java编程实践(3周)三、教学方法针对Java课程的特点和课程目标,采用以下多样化的教学方法,以激发学生的学习兴趣和主动性:1. 讲授法:对于Java基础语法、面向对象编程等理论性较强的内容,采用讲授法进行教学。
java课程设计报告

java课程设计报告Java课程设计报告。
一、引言。
Java作为一种跨平台的编程语言,具有广泛的应用领域和强大的功能,因此在计算机专业课程中占据着重要的地位。
本次课程设计旨在通过对Java语言的学习和实践,提高学生对于面向对象程序设计的理解和应用能力,同时锻炼学生的编程实践能力和团队协作能力。
二、课程设计内容。
1. 课程设计主题。
本次课程设计的主题为“学生成绩管理系统的设计与实现”。
通过该主题的设计,旨在让学生通过实际的项目开发,掌握Java语言的基本语法和面向对象的编程思想,同时对软件开发的整个流程有一个清晰的认识。
2. 课程设计目标。
(1)掌握Java语言的基本语法和面向对象的编程思想;(2)了解软件开发的整个流程,包括需求分析、设计、编码、测试和维护;(3)培养学生的团队协作能力和解决问题的能力;(4)通过实际项目的开发,提高学生的编程实践能力。
三、课程设计过程。
1. 需求分析。
首先,团队成员对学生成绩管理系统的功能需求进行了详细的分析和讨论,确定了系统的基本功能模块,包括学生信息管理、课程信息管理、成绩管理等。
通过需求分析,明确了系统的功能和性能需求,为后续的设计和编码工作奠定了基础。
2. 系统设计。
在需求分析的基础上,团队成员进行了系统的整体设计和模块设计。
通过UML建模工具,绘制了系统的用例图、类图、时序图等,明确了各个模块之间的关系和交互流程。
同时,团队成员还对数据库的设计进行了详细的讨论和设计,确定了数据库的表结构和字段。
3. 编码实现。
在系统设计完成后,团队成员按照设计文档进行了编码实现工作。
在编码的过程中,严格按照Java语言的规范进行编码,同时注重代码的可读性和可维护性。
通过团队的协作和沟通,确保了各个模块的功能实现和整体功能的完整性。
4. 测试与调试。
在编码实现完成后,团队成员进行了系统的测试与调试工作。
通过单元测试、集成测试和系统测试,发现并修复了系统中存在的各种问题和bug。
JAVA-课程设计报告

《JAVA程序设计》课程设计报告设计题目:学生信息管理系统学院名称:信息工程学院专业班级: 13计本1 姓名:学号:目录一需求分析。
3二概要设计。
3三详细设计。
3 3.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编程语言的学习,让学生掌握Java编程的基本语法、面向对象编程思想以及常用的数据结构与算法。
通过课程的学习,使学生能够独立完成简单的Java程序,培养学生的编程能力和逻辑思维能力。
具体的教学目标如下:1.知识目标:–掌握Java基本语法和编程规范;–理解面向对象编程的基本概念和方法;–熟悉常用的数据结构(如数组、链表、栈、队列等)和算法(如排序、查找等)。
2.技能目标:–能够使用Java编写简单的程序,解决实际问题;–能够运用面向对象编程思想进行程序设计;–能够运用常用的数据结构与算法解决编程问题。
3.情感态度价值观目标:–培养学生的团队合作意识和沟通能力;–培养学生的创新精神和解决问题的能力;–培养学生的自主学习能力和持续学习的兴趣。
二、教学内容根据教学目标,本课程的教学内容主要包括以下几个方面:1.Java基本语法和编程规范;2.面向对象编程思想,包括类与对象、继承与多态、封装等;3.常用的数据结构与算法,包括数组、链表、栈、队列、排序、查找等;4.Java标准库的使用,包括字符串、数学运算、输入输出等;5.简单的Java编程实例和实战项目。
教学内容的安排和进度如下:•第1-2周:Java基本语法和编程规范;•第3-4周:面向对象编程思想;•第5-6周:常用的数据结构与算法;•第7-8周:Java标准库的使用;•第9-10周:简单的Java编程实例和实战项目。
三、教学方法为了达到教学目标,本课程将采用多种教学方法,包括:1.讲授法:讲解Java基本语法、面向对象编程思想和常用的数据结构与算法;2.案例分析法:分析实际的编程案例,让学生更好地理解和运用Java编程知识;3.实验法:让学生通过动手实践,巩固所学知识和技能;4.讨论法:学生进行小组讨论,培养学生的团队合作意识和沟通能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:《Java编程思想》;2.参考书:《Java核心技术》、《Head First Java》;3.多媒体资料:教学PPT、视频教程、在线编程练习题等;4.实验设备:计算机、网络环境、编程开发环境(如Eclipse、IntelliJIDEA等)。
Java程序设计课程设计报告

课程设计报告( Java程序设计)设计题目信号灯年级专业2010 级计科一班学生姓名XXX指导老师谭军2012 年 1月一、课程设计的目的课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力。
二、课程设计内容:陈述说明程序设计的任务,强调的是程序做什么?明确规定:输入的形式与输入值的范围输出的形式程序所能达到的功能三、概要设计你的设计思路说明本程序中用到的所有数据的定义、程序的流程图以及各程序模块之间的层次(调用)关系。
四、详细设计列出关键代码的设计与分析,关键代码后必须有中文注释。
五、用户使用说明说明如何使用你编写的程序,详细列出每一步的操作步骤。
六、测试结果列出你的测试结果,包括输入和输出。
这里的测试数据应该完整和严格,最好多于需求分析中所列。
注意事项:课程设计成绩评定依据以下方面:1题目的难度系数2程序完成,调试顺利通过,可正常进行,能达到设计功能要求。
3写出《汇编语言程序设计》课程设计说明书。
课程设计说明书要求采用统一稿纸,可手写,有条件亦可上机打印,认真、清晰、不得潦草。
说明书应包括以下内容和项目:1)封面;2)课程设计的题目,本设计所实现的功能简述。
3)主要的设计思想简述。
4)主要程序的框图。
5)源程序代码(要求在关键的位置注释,从而增加程序的可读性)。
6)总结报告,主要包括以下内容:a.课程设计中所遇到的主要问题和解决方法。
b.创新和得意之处。
c.课程设计中存在的不足,需要进一步改进的设想。
d.课程设计的感想和心得体会。
7)参考文献4面试成绩课程设计最后一天安排面试。
检查源程序以及查看运行情况,对关键代码进行询问、考察。
5 学生完成课程设计的实际情况,包括是否独立完成(特别要求),认真态度、考勤 , 遵守纪律等方面。
6 本课程设计按优秀 , 良好 , 中等 , 及格和不及格五级评定成绩.进度安排依照教学计划,课程设计时间为 1 周。
java 课程设计实验报告

java 课程设计实验报告Java课程设计实验报告一、引言在本次Java课程设计实验中,我们小组选择了一个有趣的主题,即开发一个学生成绩管理系统。
通过这个实验,我们旨在提高对Java编程语言的理解和应用,同时锻炼团队合作和问题解决能力。
二、需求分析学生成绩管理系统是为了方便学校管理学生成绩而开发的软件。
根据需求分析,我们确定了以下功能:1. 学生信息管理:包括学生的基本信息(学号、姓名、性别、年龄等)和学生成绩(语文、数学、英语等科目)的录入、修改和查询功能。
2. 成绩统计分析:根据学生的成绩数据,进行各种统计分析,如平均分、最高分、最低分等。
3. 成绩排名:根据学生的总成绩进行排名,并显示排名结果。
4. 成绩报表生成:根据学生的成绩数据,生成成绩报表,方便打印和保存。
三、系统设计与实现1. 数据结构设计:我们使用面向对象的思想,设计了学生类和成绩类,学生类包含学生的基本信息,成绩类包含学生的各科成绩。
通过类的封装和继承,实现了数据的组织和管理。
2. 用户界面设计:我们采用图形用户界面(GUI)设计,使用Swing库实现了一个直观、友好的界面。
通过按钮、文本框、表格等组件,实现了用户与系统的交互。
3. 数据库设计:为了持久化数据,我们使用了MySQL数据库。
通过Java的JDBC技术,实现了与数据库的连接和操作。
四、实验结果与分析经过一段时间的开发和测试,我们成功地完成了学生成绩管理系统的开发。
系统具有良好的用户界面和功能完善的业务逻辑。
通过对实验结果的分析,我们得出以下结论:1. 系统运行稳定:经过长时间的测试,系统没有出现崩溃或卡顿的情况,具有较高的稳定性。
2. 功能完善:系统实现了所有的需求功能,并且用户界面友好、操作简单,方便用户使用。
3. 数据一致性:通过数据库的设计和操作,系统保证了数据的一致性和完整性,避免了数据冗余和错误。
五、总结与展望通过本次Java课程设计实验,我们对Java编程语言有了更深入的理解,并学会了如何运用Java开发一个实用的软件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《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)细分原则:软件系统都是由很多不同的模块组成,当设计一套软件时,要先将所有的功能分解。
解决复杂问题的方法是将其分解成几个小问题,一个个来解决。
(2)提高代码重用性:在面向对象设计中,首先考虑的就是代码的重用,一个好的设计,将来在升级换代时不需要太大的改动,节省了人力物力。
(3)从上而下层层分析:概要设计要从整体出发,逐个剖析软件的功能,从上而下,先分析系统总的功能,然后一步步细分,直到最小的功能模块。
(4)一致性原则:概要设计要求所有功能模块在定义时使用统一的规范。
(5)提高独立性,减少耦合:各个模块与模块之间尽量减少关联,否则修改一个地方就会引起其他多处的变动,不符合面向对象的原则。
一般情况下,对类封装后,只允许对类进行扩展,而不能修改,而封装的类必须具有单一职责,既理论情况下不允许两个类共同完成一个功能。
(6)模块的大小要尽量适中:不是结构算法越复杂的模块越好,模块的大小要根据实际工作目标和其他类的耦合紧密程度来决定。
经验表明,一个模块的规模不应过大,模块的总行数应控制在10~100行的范围内,最好为30~60行,这样理解和阅读都较方便。
过长的模块往往是分解不充分的表现,会增加阅读理解的难度;但小规模太多也会使模块之间联系变得复杂,增大系统在模块调用时传递信息所花费的开销。
由于概要设计是整个设计的重中之重,牵一发而动全身,所以要努力做一个好的概要设计,才能在今后软件开发过程中不再反复。
现在软件行业流行模式化驱动设计,将一些市场上比较成功的模式拿来用在自己的设计中。
2.2 将用户需求模块化根据概要设计的原则来分析一下本项目的用户需求,并最终转化成用程序语言描述的模块。
什么样的需求才是一个模块?模块应该具备如下3个特征。
(1)输入和输出:模块必须能被调用并且正确的返回调用,而且调用都是相对一个对象而言,这是模块独立性的一个体现。
(2)处理功能:模块必须可以对调用的输入数据进行灵活的处理,并为输出准备好处理结果。
(3)程序代码:用来实现模块功能的源代码。
3.3 确定系统最终模块概要设计中最重要的就是确定此项目包括哪些模块。
根据上两节讲述的设计原则和模块特征,将用户需求转化为下面的模块。
**************************************************************************/ 2.1 UML用例图1 用户登录信息管理2 用户信息管理3学生信息管理4系统管理2.2 模块设计1 数据库设计模块2 用户登录识别模块3 用户信息管理模块4 学生信息管理模块5 系统管理模块三详细设计3.1 数据库设计数据库名称:student表名:user, stud表user:存放登陆用户的用户名和密码表stud:存放学生基本信息3.2 模块及窗体设计3.2.1 数据库模块设计将数据库的连接包装在一个database类中,以便其他模块能够轻松调用,避免每次重写数据库连接代码。
代码如下:import java.sql.*;//引入包public class database {public static Connection cn; //定义一个连接对象public static Statement st;//定义一个SQL语句对象public static ResultSet rs;//定义一个数据集public static boolean joinDB() {//用来判断是否连接成功boolean joinFlag;try {joinFlag = true;Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//通过调用ng中的Class 类的forName方法来实现JDBC—ODBC桥接器cn = DriverManager.getConnection("jdbc:odbc:student","sa","");创建一个连接对象cn.setCatalog("student");//加载数据库System.out.println("数据库连接成功");st = cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONL Y);//返回一个可滚动的结果集,数据库变化时结果集跟着变化;不能用结果集更新数据库中的表return joinFlag;} catch (SQLException sqlEx) {System.out.println(sqlEx.getMessage());joinFlag = false;return joinFlag;} catch (ClassNotFoundException notfoundEX) {System.out.println(notfoundEX.getMessage());joinFlag = false;return joinFlag;}}public static boolean executeSQL(String sqlString) {boolean executeFlag;try {st.execute(sqlString);executeFlag = true;} catch (Exception e) {executeFlag = false;System.out.println("sql exception:" + e.getMessage());}return executeFlag;}public static boolean query(String sqlString) {try {rs = null;rs = st.executeQuery(sqlString);} catch (Exception Ex) {System.out.println("sql exception:" + Ex);return false;}return true;}}3.2.2 用户登录识别模块代码封装在类Land里,所用到的信息保存在表user里private void Judge(String sqlString) {if (database.joinDB()) { //如果数据库连接成功if (database.query(sqlString)) //如果SQL语句执行成功try{if(database.rs.isBeforeFirst()) {//如果指向记录集的在第一条记录的前面System.out.println("密码正确");jf.setVisible(false);//窗体不可见.close();//关闭数据库连接new Main();//主窗体}else {System.out.println("错误");new JOptionPane().showMessageDialog(null,"用户名或密码错误!","",JOptionPane.ERROR_MESSAGE);}}catch(Exception ex) {System.out.println(ex.getMessage());}}else{System.out.println("连接数据库不成功!!!");}}按钮“确定”的监听事件代码:public void actionPerformed (ActionEvent e){if(textname.getText().equals("")){new JOptionPane().showMessageDialog(null,"用户名不能为空!");}else if(textmima.getText().equals("")){new JOptionPane().showMessageDialog(null,"密码不能为空!");}else{String sql="select * from user where user_id = '" + textname.getText() + "' and password = '" + textmima.getText()+ "'";System.out.println(sql);Judge(sql);//调用成员方法,判断是否用户名和密码正确}}3.2.3 用户信息管理模块(1)密码修改用户名将自动从表user里检索出来,供用户选择以下是它的基本属性将所有用用户名读出来database.joinDB();//连接数据库String sql="select * from user";try{if(database.query(sql)){while(database.rs.next()){//依次将用户名读出String name=database.rs.getString("user_id");tf.addItem(name);}}}catch(Exception e){}确定“按钮”的监听事件代码:b1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){String name="" + tf.getSelectedItem();System.out.println(name);String sql="select * from user where user_id='"+ name +"'";System.out.println(sql);try{if(database.query(sql)){database.rs.next();String ps1=pas1.getText();String password=database.rs.getString("Password");if(ps1.equals(password)){if(pas2.getText().equals(pas3.getText())){String supdate="update user set password='"+ pas3.getText()+"' where user_id='"+ name +"'";database.executeSQL(supdate);new JOptionPane().showMessageDialog(null,"密码更改成功!");}else{new JOptionPane().showMessageDialog(null,"两次密码不同!");}}else{new JOptionPane().showMessageDialog(null,"旧密码不正确!");}}}catch(Exception el){System.out.println(el);}}});(2)用户信息添加和删除上半部分用来添加用户,下半部分用来删除用户database.joinDB();String sql="select * from user";try{if(database.query(sql)){while(database.rs.next()){//记录集若有记录则通过循环将数据依次读出String name=database.rs.getString("user_id");cbUserName.addItem(name);}}}catch(Exception e){}//为添加按钮加事件-----------------------------------------butOk.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){if(txtname.getText().equals("")){ //判断是否为空new JOptionPane().showMessageDialog(null,"用户名不能为空!");}else if(pas1.getText().equals("")){new JOptionPane().showMessageDialog(null,"密码不能为空!");}else if(pas1.getText().equals(pas2.getText())){String sql="insert into user values('"+ txtname.getText() +"','"+ pas1.getText() +"')";try{if(database.executeSQL(sql)){//若SQL执行成功new JOptionPane().showMessageDialog(null,"添加成功!");cbUserName.addItem(txtname.getText());}}catch(Exception ea){}}}});删除按钮监听事件代码butDelete.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){String name="" + cbUserName.getSelectedItem();//得到用户名String sql="select * from user where user_id='"+ name +"'";try{if(database.query(sql)){database.rs.next();String pas=pas3.getText();String password=database.rs.getString("Password");System.out.println(password);if(pas.equals(password)){//比较密码是否与记录集里对应一致String sdelete="delete from user where user_id='"+ name +"'";if(database.executeSQL(sdelete)){new JOptionPane().showMessageDialog(null,"删除成功!");pas3.setText("");cbUserName.removeAllItems();//将删除的条目从JcomboBox中删除String sql1="select * from user";if(database.query(sql1)){while(database.rs.next()){//更新JcomboBox条目String name1=database.rs.getString("user_id");cbUserName.addItem(name1);} }} }else{new JOptionPane().showMessageDialog(null,"密码不正确!");} }}catch(Exception el){System.out.println(el);} }});3.2.4 学生信息管理模块(1)添加信息该添加是按照先添加学生信息,添加学生信息中的“添加“按钮代码:butOk.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){if(jtf1.getText().equals("")){new JOptionPane().showMessageDialog(null,"学号不能为空");}else if(jtf2.getText().equals("")){new JOptionPane().showMessageDialog(null,"姓名不能为空");}else if(jtf3.getText().equals("")){new JOptionPane().showMessageDialog(null,"性别不能为空");}else {String sql="insert into stud values('"+ jtf1.getText() +"','"+ jtf2.getText() +"','"+ jtf3.getText() +"','"+ jtf4.getText()+"','"+ jtf5.getText()+"','"+ jtf6.getText()+"','"+ jtf7.getText()+"')";try{if(database.executeSQL(sql)){new JOptionPane().showMessageDialog(null,"添加成功!");}}catch(Exception ea){}}}});(2)信息查看分为查看学生基本信息和查看学生成绩信息,因为代码和窗体大致相识,进取其一讲述下面是他的属性代码为:class viewstud extends JInternalFrame{ viewstud(){super("查看学生基本信息");//窗体显示得名称Container con=getContentPane();//创建JinternalFrame的容器对象con.setLayout(new BorderLayout());//设定窗体布局JTextArea te=new JTextArea();JScrollPane croll=new JScrollPane(te); //加载垂直水平滚动条con.add(croll,BorderLayout.CENTER);database.joinDB(); //连接数据库String sql="SELECT * FROM stud";try{ if(database.query(sql)){while(database.rs.next()){te.append("学号: "+database.rs.getString(1)+" ");te.append("姓名: "+database.rs.getString(2)+" ");te.append("性别: "+database.rs.getString(3)+" ");te.append("年龄: "+database.rs.getString(4)+" ");te.append("政治面貌:"+database.rs.getString(5)+" ");te.append("系别: "+database.rs.getString(6)+" ");te.append("班级: "+database.rs.getString(7)+" ");te.append("\n");}}}catch(SQLException ex){ System.out.println(ex);}this.setClosable(true);//关闭窗口可用setVisible(true);//窗体可见setBounds(20,70,600,350);}}(3)信息修改信息修改分为学生基本信息修改,学生成绩信息修改,由于原理相似就以修改学生基本信息作为例子进行介绍显示信息按钮的监听事件代码如下:database.joinDB();butShow.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){if(jtf1.getText().equals("")){new JOptionPane().showMessageDialog(null,"请输入学号");}else {String sql="select * from grade where 学号=" + "'" +jtf1.getText() +"'";try{if(database.query(sql)){//此处用了个database.executeSQL(sql)提示resultset 关闭if(!database.rs.first()){JOptionPane.showMessageDialog(null,"没有该学生信息...");} //下面是用来显示其他文本框里的内容else { database.rs.first();jtf2.setText(database.rs.getString("VBA开发"));jtf3.setText(database.rs.getString("大学英语"));jtf4.setText(database.rs.getString("java开发"));jtf5.setText(database.rs.getString("SQLServer"));jtf6.setText(database.rs.getString("高等数学"));jtf7.setText(database.rs.getString("网站建设"));butOk.setEnabled(true);} }}catch(NullPointerException upe){System.out.println(upe.toString());}catch(SQLException sqle){System.out.println(sqle.toString());}catch(Exception ex){System.out.println(ex.toString());}}}});(4)删除信息删除学生信息下面是窗口属性删除按钮监听事件代码如下:butOk.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){if(jtf1.getText().equals("")){new JOptionPane().showMessageDialog(null,"请输入学号");}else {String sql="select * from stud where 学号=" + "'" +jtf1.getText() +"'";try{if(database.query(sql)){//此处用了个database.executeSQL(sql)提示resultset 关闭if(!database.rs.first()){JOptionPane.showMessageDialog(null,"没有该学生信息...");}else {String sqq="delete from stud where 学号='" +jtf1.getText() +"'";String qll="delete from grade where 学号='"+jtf1.getText() +"'";String slq="select * from grade where 学号='"+jtf1.getText()+"'";if(database.query(slq)){if(database.rs.first()){if(database.executeSQL(qll)){ } if(database.executeSQL(sqq)){JOptionPane.showMessageDialog(null,"删除成功");}} }} }}3.2.5 系统管理模块重新登陆监听事件代码:land.addActionListener(new ActionListener(){//重新登陆监听public void actionPerformed(ActionEvent e){System.out.println("Land");setVisible(false);new Land();}});退出菜单监听事件代码:exit.addActionListener(new ActionListener(){//退出系统监听public void actionPerformed(ActionEvent e){setVisible(false);}});3.2.6 主窗体菜单设计分为三个主菜单:系统管理、用户管理、学生信息管理系统管理分为:重新登陆和退出用户管理:密码修改、添加/删除用户学生信息管理:删除学生信息及二级菜单--添加记录、信息查看、信息修改添加记录:学生基本信息添加信息查看:基本信息查看修改信息:基本信息修改五软件测试测试数据截图/****************************************************************************** 测试的方法软件测试的方法和技术是多种多样的,网路上也提供了很多免费的工具。