综合项目
Posted j1402204273
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了综合项目相关的知识,希望对你有一定的参考价值。
1 绪论
1.1 项目概述
此项目内容为 学生基本信息管理系统,要求创建一个系统能够实现对学生基本信息的管理,主要实现功能就是能够对学生的学号姓名手机号等个人信息执行增加、删除、查询、修改等操作。
1.2 项目意义
本小节主要阐述项目意义。需要组内同学查阅资料---共同撰写完成。(格式:小四、中文宋体、英文:Times NewRoman、行间距固定值:20磅;首行缩进2字符---注意以后正文同样要求)。
2 开发工具和相关技术简介
本项目是学生基本信息管理系统。开发环境:mysql;开发语言:Java语言;开发技术:JDBC等。本章将对开发工具和相关技术进行简单介绍。
2.1 Eclipse简介(或者MyEclipse或者IEDA简介)
Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。
2.2 Java语言介绍
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
2.3 MySQL简介
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。
MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
2.4 JDBC技术简介
Java数据库连接技术,由一组java语言编写的类与接口组成,可以为多种关系型数据库提供统一访问。
可以使用java语言操作数据库。JDBC是Java和数据库之间的一个桥梁,是一个规范而不是一个实现,能够执行SQL语句。它由一组用Java语言编写的类和接口组成。各种不同类型的数据库都有相应的实现,
3 系统需求分析
3.1 系统可行性分析
技术可行性:本项目采用的软件是Eclipse,语言为Java语言,使用了JDBC及数据库技术,并无版本兼容等问题,技术上可行。
操作可行性:本次程序运用了简单的用户键盘录入操作,简单易懂,操作上可行。
3.2 系统需求分析
学生信息管理系统:
- 首先先存储学生信息,选择添加。
- 其次可以对数据库中已有的学生信息进行修改、删除、查找等功能。
- 最后,执行了需要进行的操作后,便可以退出程序。
学生基本信息管理系统流程图
3.3 组内成员分工
表3-1 组内成员分工情况表
序号 |
姓名 |
组内角色 |
小组分工 |
备注 |
1 |
金杨霖 |
管理者 |
分布任务,编译代码,进度监察 |
无 |
2 |
李中宝 |
开发者 |
编译代码,数据库技术 |
无 |
3 |
臧浩楠 |
开发者 |
收集资料,编译代码 |
无 |
4 |
魏伟 |
开发者 |
编译代码,程序调试 |
无 |
3.4 进度安排
进度安排如表3-2所示。
表3-2 进度安排表
阶段 |
持续时间 |
阶段描述 |
输出 |
构思阶段 |
2h |
需求分析 |
需求说明,功能模块图 |
设计阶段 |
4h |
系统设计 |
设计说明-可以画流程图;数据库设计 |
实现阶段 |
8h |
编写代码 |
项目工程源代码 |
3h |
系统测试 |
进行黑盒测试(功能测试)-测试说明 |
|
运行阶段 |
4h |
部署、运行 |
系统使用说明、运维报告-答辩 |
4 系统设计
4.1 系统设计
本系统使用控制台进行系统的操作,由用户输入控制台提示的序号选择操作。
共有五个选择:
- 增加学生信息
- 修改学生信息
- 删除学生信息
- 查询学生信息
- 退出系统
代码实现:
- DBUtils.java:
package edu.jmi;
import java.sql.Connection;
import java.sql.DriverManager;
public class DBUtils {
final static String DRIVER="com.mysql.jdbc.Driver";
final static String URL="jdbc:mysql://localhost:3306/student?characterEncoding=utf8";
final static String USER="root";
final static String PASSWORD="jin2000";
public static Connection getConnection() {
try {
Class.forName(DRIVER);
Connection connection=DriverManager.getConnection(URL,USER,PASSWORD);
return connection;
}catch(Exception e) {
e.printStackTrace();
return null;
}
}
public static void closeConnection(Connection con) {
try {
con.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
- Main.java
package edu.jmi;
import java.util.List;
import java.util.Scanner;
public class Main {
public void menu() {
//1.打印菜单
//2.输入菜单
//3.switch菜单选择
int choose;
do {
System.out.println("******************************");
System.out.println("=======欢迎进入学生信息管理系统=======");
System.out.println("1.新增学生");
System.out.println("2.修改学生");
System.out.println("3.删除学生");
System.out.println("4.查询学生");
System.out.println("5.退出该系统");
System.out.println("请选择(1-5):");
Scanner scanner=new Scanner(System.in);
choose=scanner.nextInt();
System.out.println("******************************");
switch (choose) {
case 1:
myAdd(); //菜单选择1,是新增学生
break;
case 2:
myUpdate(); //菜单选择2,是修改学生
break;
case 3:
myDel(); //菜单选择3,是删除学生
break;
case 4:
myList(); //菜单选择4,是查询学生
break;
case 5://菜单选择5,是退出该系统
System.out.println("您选择了退出系统,确定要退出吗?(y/n)");
Scanner scan=new Scanner(System.in);
String scanExit=scan.next();
if(scanExit.equals("y")){
System.out.println("您已成功退出系统,欢迎您再次使用!");
System.exit(0);
}
break;
default:
break;
}
} while (choose!=5);
}
//新增学生信息
public void myAdd() {
Scanner s=new Scanner(System.in);
String continute;
do {
String id,name,phone;
System.out.println("====新增学生====");
System.out.println("学号:");
id=s.next();
System.out.println("姓名:");
name=s.next();
System.out.println("手机号:");
phone=s.next();
Student stu=new Student(id,name,phone);
StuDao dao=new StuDao();
boolean ok=dao.add(stu);
if (ok) {
System.out.println("保存成功!");
}else {
System.out.println("保存失败!");
}
System.out.println("是否继续添加(y/n):");
Scanner scanner2=new Scanner(System.in);
continute=scanner2.next();
} while (continute.equals("y"));
}
//删除学生信息
public void myDel(){
Scanner s=new Scanner(System.in);
String id;
System.out.println("====删除学生====");
System.out.println("请输入要删除的学生学号:");
id=s.next();
System.out.println("该学生的信息如下:");
StuDao dao=new StuDao();
System.out.println("学生学号:"+dao.FindById(id).getId());
System.out.println("学生姓名:"+dao.FindById(id).getName());
System.out.println("学生手机号:"+dao.FindById(id).getPhone());
System.out.println("是否真的删除(y/n):");
Scanner scanner3=new Scanner(System.in);
String x=scanner3.next();
if (x.equals("y")) {
Student stu=new Student(id,null,null);
boolean ok=dao.delete(id);
if (ok) {
System.out.println("删除成功!");
}else {
System.out.println("删除失败!");
}
}
}
//修改学生信息
public void myUpdate(){
Scanner s=new Scanner(System.in);
String id;
System.out.println("====修改学生====");
System.out.println("请输入要修改的学生学号:");
id=s.next();
System.out.println("该学生的信息如下:");
StuDao dao=new StuDao();
System.out.println("学生学号:"+dao.FindById(id).getId());
System.out.println("学生姓名:"+dao.FindById(id).getName());
System.out.println("学生手机号:"+dao.FindById(id).getPhone());
System.out.println("请输入新的学生信息:");
Scanner StudentUp=new Scanner(System.in);
String name,phone;
System.out.println("学生姓名:");
name=StudentUp.next();
System.out.println("学生手机号:");
phone=StudentUp.next();
Student stu=new Student(id,name,phone);
//StuDao dao=new StuDao();
boolean ok=dao.update(stu, id);
if (ok) {
System.out.println("保存成功!");
}else {
System.out.println("保存失败!");
}
}
//查询学生信息
public void myList(){
System.out.println("************************");
System.out.println("====查询学生====");
System.out.println("该学生的信息如下:");
System.out.println("学号 姓名 手机号");
StuDao dao=new StuDao();
List<Student> list=dao.list();
for (Student stuList:list) { //循环打印出查询结果
System.out.println(stuList.getId()+" "+stuList.getName()+" "+stuList.getPhone());
}
System.out.println("**");
}
public static void main(String[] args) {
Main m=new Main();
m.menu();
}
}
- Student.java
package edu.jmi;
public class Student {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id=id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name=name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
private String name;
private String phone;
//无参构造方法
public Student() {
super();
}
//有参构造方法
public Student(String id, String name,String phone) {
super();
this.id = id;
this.name = name;
this.phone = phone;
}
}
- StuDao.java
package edu.jmi;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class StuDao {
Connection con=null;
//添加学生信息
public boolean add(Student stu) {
String sql = "insert into student(id,name,phone) values(?,?,?)";
System.out.println(stu.getName() + "-" + stu.getId() + "-" + stu.getPhone());
try {
con = DBUtils.getConnection();
PreparedStatement pstmt = null;
pstmt = con.prepareStatement(sql);
pstmt.setString(1, stu.getId());
pstmt.setString(2, stu.getName());
pstmt.setString(3, stu.getPhone());
pstmt.execute();
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
//查看学生列表(1所有)
public List<Student> list() {
List<Student> list=new ArrayList<Student>();//是线性列表,ArrayList是
try {
con=DBUtils.getConnection();
String sql="select * from student";
PreparedStatement pst=con.prepareStatement(sql);
ResultSet rs=pst.executeQuery();
while(rs.next()){//?
Student stu=new Student();
stu.setId(rs.getString("id"));
stu.setName(rs.getString("name"));
stu.setPhone(rs.getString("phone"));
list.add(stu);
}
} catch (Exception e) {
e.printStackTrace();
} finally{
DBUtils.closeConnection(con);
}
return list;
}
public Student FindById(String id) {
try{
con=DBUtils.getConnection();
String sql="select * from student where id=?";
PreparedStatement pst=con.prepareStatement(sql);
pst.setString(1,id);
ResultSet rs=pst.executeQuery();
if(rs.next()){
Student stu=new Student();
stu.setId(rs.getString("id"));
stu.setName(rs.getString("name"));
stu.setPhone(rs.getString("phone"));
return stu;
}else{
return null;
}
}catch(Exception e){
e.printStackTrace();
return null;
}finally{
DBUtils.closeConnection(con);
}
}
public boolean update(Student stu ,String id) {
try{
con=DBUtils.getConnection();
String sql="update student set name=?,phone=? where id=?";
PreparedStatement pst=con.prepareStatement(sql);
pst.setString(1,stu.getName());
pst.setString(2,stu.getPhone());
pst.setString(3,id);
pst.execute();
return true;
}catch(Exception e){
e.printStackTrace();
return false;
}finally{
DBUtils.closeConnection(con);
}
}
//删除学生信息
public boolean delete(String id) {
try {
con=DBUtils.getConnection();
String sql="delete from student where id=?";
PreparedStatement pst=con.prepareStatement(sql);
pst.setString(1,id);
pst.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
return false;
} finally{
DBUtils.closeConnection(con);
}
return true;
}
public static void main (String args[]) {
StuDao dao=new StuDao();
Student stu=dao.FindById("2");
System.out.print(stu.getName()+","+stu.getPhone());
Student student=new Student();
student.setId("2");
student.setName("xioaxueidi");
student.setPhone("17766091168");
//dao.add(student);*/
//boolean b=dao.update(student, "2");
//boolean b=dao.delete("1");
//System.out.print(b);
}
}
4.2 数据库设计
根据系统需求分析设计了一张表
学生基本信息表
序号 |
字段名 |
数据类型 |
约束 |
是否为空 |
说明 |
1 |
Id |
varchar(10) |
主键 |
否 |
学号 |
2 |
Name |
varchar(10) |
|
是 |
姓名 |
3 |
phone |
varchar(11) |
|
否 |
手机号 |
5 系统实现
- 清空数据库,开始程序
2.增加学生信息,数据库同步更新
3. 修改信息,数据库同步
4.查询学生信息
5.删除学生信息,数据库同步
6.退出程序
6 结论和心得
学生1姓名:金杨霖
心得:虽然实训时间不长,但总体上收获挺大的。过程中问题很多,并不一帆风顺,但是也都一点点的解决了。这次实训让我的Java实践水平得到锻炼,也令我有了初步的管理分工的能力,这是一次很好的锻炼机会。
学生2姓名:李中宝
心得:这次课程设计让我学到了很多东西,而且我更加深刻地了解到了Java语言的魅力,算法是各种设计的基础,但是Java的核心是面向对象,面向对象姐可以解决生活中很多的问题。在实训课期间一定要运用好Java的每个知识点进行代码设计,还要要主动向老师请教、与同学交流,查看帮助文档。在设计程序的同时要学习一些新的知识来更好的编写代码,让他更加完善更加简便。
学生3姓名:臧浩楠
心得:透过这次实训,我收获了很多,一方面学习到了许多以前没学过的专业知识与知识的应用,另一方面还提高了自我动手做项目的潜力。本次实训,是对我潜力的进一步锻炼,也是一种考验。从中获得的诸多收获,也是很可贵的,是十分有好处的。
在实训中我学到了许多新的知识。是一个让我把书本.上的理论知识运用于实践中的好机会,原先,学的时候感叹学的资料太难懂,此刻想来,有些其实并不难,关键在于理解。
学生4姓名:魏伟
心得:此次实训我有诸多感想,我第一-次了解到工程师是怎样用JAVA开发项目的,同时也发现了自己存在的一-些问题。在敲代码的过程中总会出现大大小小的错误,很多时候都是由于自己不够仔细导致的,比如中英文符号打错,单词多字或者少字。每一次找出错误并解决错误的过程都给我提供了经验,防止下次再犯同样的错误。同时此次实训让我熟练了许多快捷键,通过这些快捷键可以提高我的编写效率十分有用。
以上是关于综合项目的主要内容,如果未能解决你的问题,请参考以下文章