JAVA | 学生选课系统
这里使用JAVA语言编写的简易的学生选课系统,展现的都是这个系统核心代码。
其中有不足欢迎批评和指正!
链接数据库的代码
package connection;
//连接数据库student
import java.sql.Connection;
import java.sql.DriverManager;
//import java.sql.Statement;
import java.sql.SQLException;
public class xu{
private static Connection conn = null;
static {
try {
// 注册驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// 获得一个数据库连接
conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=student","sa","123456");
}catch(ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConnection() {
return conn;
}
}
选课的操作代码
package connection;
import java.sql.*;
import java.util.*;
public class test1{
private static String ID; // 此处的ID设为全局变量,在下面某些方法里会用到
private static Scanner console = new Scanner(System.in);
private static String managerPass = "123456";
private static Connection conn = xu.getConnection();
public static void main(String [] args) throws SQLException {
System.out.println("Welcome to the student selection system!\n\n"
+"if you are maneger please choose 6、7、8、9、10\n"
+"if you are student Please choose 1、2、3、4、5、10\n");
ShowMenu();
}
public static void ShowMenu() throws SQLException {
System.out.println("-----------option-------------\n");
System.out.println("1--Student login"); // 学生登录
System.out.println("2--Change password"); // 学生修改密码
System.out.println("3--Choose course"); // 学生选课
System.out.println("4--Get course list"); // 学生查看自己的课程表
System.out.println("5--Student rigistration"); // 学生注册账号
System.out.println("6--Create student"); // 管理员创建学生
System.out.println("7--Create course"); // 管理员创建课表
System.out.println("8--Get student list"); // 管理员查看学生表
System.out.println("9--Get course list1"); // 管理员查看选课表里的课程
System.out.println("10--exit\n"); // 退出
Test();
}
public static void Test() throws SQLException {
System.out.println("manager choose 1 ,student choose 0");
int choose1 = console.nextInt(); //int 用nextInt()
if(choose1 == 1) {
System.out.println("Please input your password :");
String password = console.next(); //String 用next()
if(password.equals(managerPass)) {
System.out.println("Welcome manager!\n");
ManagerMenu1();
}
else {
System.out.println("Your password is worry!"); }
}
else if(choose1 == 0) {
System.out.println("Welcome Student!");
StudentMenu1();
}
}
/*管理员操作菜单*/
public static void ManagerMenu1() throws SQLException {
System.out.println("----------Manager----------\n");
System.out.println("Please choose option");
int choose2 = console.nextInt();
switch(choose2) {
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
System.out.println("This is student`s option,try again!");
ManagerMenu1();
break;
case 6 : CreateStu();break;
case 7 : CreateCourse();break;
case 8 : GetStudentList();break;
case 9 : GetCourseList1();break;
case 10 : System.exit(0);break;
default : System.out.println("Please input an right number , try again!"); ManagerMenu1();
}
}
/*学生操作菜单*/
public static void StudentMenu1() throws SQLException {
System.out.println("----------Student----------\n");
System.out.println("Please input option");
int choose3 = console.nextInt();
switch(choose3) {
case 1 : StuLogin();break;
case 2 : ChangePass();break;
//在进行Choose course,Get course list之前都要求学生进行StuLogin操作
case 3 :
case 4 : System.out.println("you must login before you can do it!\n");StuLogin();break;
case 5 : StuRigistration();break;
case 6 :
case 7 :
case 8 :
case 9 : System.out.println("This is manager`s option,try again!");StudentMenu1();break;
case 10 : System.exit(0);break;
default : System.out.println("Please input an right number,try again!");StudentMenu1();
}
}
/*管理员创建课程*/
public static void CreateCourse() throws SQLException{
try {
/* 通过connection数据库链接对象 创建一个statement对象数据库操作对象,stat对象再获取一个执行sql的语句。
* stat对象就是java程序与Database的一个连接通道*/
Statement stat = conn.createStatement();
String sql1 = "insert into course(couID,couName,couTeacher)values(1,'软件工程','黄伟国')";
String sql2 = "insert into course(couID,couName,couTeacher)values(2,'数据库','韦美雁')";
String sql3 = "insert into course(couID,couName,couTeacher)values(3,'算法设计','黎明')";
String sql4 = "insert into course(couID,couName,couTeacher)values(4,'大学英语','章琴')";
String sql5 = "insert into course(couID,couName,couTeacher)values(5,'Java','唐雅媛')";
int a = stat.executeUpdate(sql1);
int b = stat.executeUpdate(sql2);
int c = stat.executeUpdate(sql3);
int d = stat.executeUpdate(sql4);
int e = stat.executeUpdate(sql5);
int sum = a + b + c + d + e;
System.out.println("成功添加"+ sum + "行课程数据");
ManagerMenu1();
} catch (SQLException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
System.out.println("Course already exists");
ManagerMenu1();
}
}
/*管理员创建学生*/
public static void CreateStu() throws SQLException {
try {
Statement stat = conn.createStatement();
String sql1 = "insert into student(stuID,stuName) Values(20160501,'徐明正')";
// 这里对学生信息的输入也必须一个一个输入,这是系统的缺陷,问题待解决
int a = stat.executeUpdate(sql1);
System.out.println("成功添加"+ a + "行学生数据");
ManagerMenu1();
}catch(SQLException e) {
// TODO Auto-generated catch block
System.out.println("The student already exists");
ManagerMenu1();
}
}
/*学生登录*/
public static void StuLogin() throws SQLException {
System.out.println("Please input your stuID"); // 输入账号
ID = console.next();
System.out.println("Please input your Password"); // 输入密码
String stuPassword = console.next();
String stuID = null;
String Password = null;
Statement stat ;
ResultSet rs ;
try {
stat = conn.createStatement();
String sql1 = "select * from login "; /* 从login表中查询其所有属性值,则stuID 和 Password都有了。
rs是结果集。查询出的记录是一个列表,初始时指针指向的是第一条记录之前的。*/
boolean flag;
rs = stat.executeQuery(sql1);
while(flag = rs.next()) { // rs.next(); //返回值为true or false
stuID = rs.getString("stuID");
Password = rs.getString("Password");
if( ID.equals(stuID) && stuPassword.equals(Password)) // 注意这里,跳出循环的条件很重要
break;
// 如果在数据库里没有找到与用户输入的stuID和Password相匹配的stuID和Password,flag则变为false
}
if(!flag){ // 当flag 为 false 时
System.out.println("The ID or Password is worry!Please input your ID and Password again\n");
StuLogin();
}
else {
System.out.println("***"+ID+"***"+stuID +"***"+stuPassword+"***"+Password+"***");
System.out.println("Login Successful!\n");
System.out.println("------------------Please choose option------------------\n"
// +"If you want to Change Password ,Please choose 2\n"
+"If you want to Choose Course,Please choose 3\n"+"If you want to Get Course List,Please choose 4\n"
+"If you want to exit ,Please choose 8\n");
int choose4 = console.nextInt();
switch(choose4) {
// case 2 : ChangePass();break;
case 3 : ChooseCourse();break;
case 4 : GetCourseList();break;
case 10 : System.exit(0);break;
default : System.out.println("You input an invalid number!");
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*在这里说明一下 方法execute 、executeQuery、executeUpdate三者的区别
* 方法executeQuery 用于单个结果集的语句,如select。他会把查询的结果放入ResultSet类对象中供使用。
* 方法executeUpdate 用于执行insert、update或delete语句<返回值为整数>以及SQL DDL(数据定义语言),如create table 和 drop table <返回值为零>。
* 方法execute 用于执行返回多个结果集、多个更新计数或二者组合的语句。*/
/*学生修改密码*/
public static void ChangePass() throws SQLException {
// System.out.println(ID);
/*此处的ID应该必须要重新输入,否则当选择对数据库中某个ID更新的Password进行修改时,没有对应的ID*/
System.out.println("Please input your ID");
String ID = console.next();
System.out.println("Please input your new Password");
String NewPassword = console.next();
Statement stat ;
try {
stat = conn.createStatement(); // 两种写法都可以
// stat = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql ="UPDATE login SET Password =" + "" + NewPassword + " where stuID ="+ ID;
//注意,此处的NewPassword 和 ID 没有要用''括起来
// String sql1 ="UPDATE login SET Password = 111 where stuID = 20156022";
int a = stat.executeUpdate(sql);
System.out.println(a);
if(a != 0) {
System.out.println("成功修改"+a+"行记录");
System.out.println("Your new Password is "+ NewPassword);
StudentMenu1();
}
else System.out.println("\n"+"Changing the Password is failed!");
}catch(SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*学生选课*/
public static void ChooseCourse() throws SQLException {
System.out.println(ID);
String couID = null;
String couName = null;
String couTeacher = null;
Statement stat;
ResultSet rs;
try {
stat = conn.createStatement();
String sql = "select * from course";
rs = stat.executeQuery(sql);
System.out.println("--------可选课程的信息-------");
while(rs.next()) {
couID = rs.getString("couID");
couName = rs.getString("couName");
couTeacher = rs.getString("couTeacher");
System.out.println(couID + " " + couName + " " + couTeacher);
}
System.out.println("\n Please choose your course \n");
stat= conn.createStatement();
// 此处stuID固定位学生登录时所用的ID,这样可以保证登录自己的账号却能选别的账号的课程
System.out.println("input CourseID");
int ID1 = console.nextInt();
int ID2 = console.nextInt();
int ID3 = console.nextInt();
// 这样写 ,学生选课的数目必须固定为3门,问题待解决
String sql1 = "insert into stuCourse(stuID,couID1,couID2,couID3)VALUES(" + ID + ","+ ID1 + "," + ID2 + "," +ID3 +")";
int i = stat.executeUpdate(sql1);
if(i != 0) {
System.out.println("成功选入课程");
GetCourseList();
}
else System.out.println("选课错误");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*学生获取已选课程列表*/
public static void GetCourseList() throws SQLException {
System.out.println("\nHere is your course that you have choose\n");
Statement stat = null;
ResultSet rs = null;
try {
stat = conn.createStatement();
String sql = "select * from stuCourse ";
rs = stat.executeQuery(sql);
String stuID = null;
String couID1 = null;
String couID2 = null;
String couID3 = null;
String couID4 = null;
while(rs.next()) {
stuID = rs.getString("stuID");
couID1 = rs.getString("couID1");
couID2 = rs.getString("couID2");
couID3 = rs.getString("couID3");
couID4 = rs.getString("couID4");
if(stuID.equals(ID))
System.out.println(stuID + " " + couID1 + " " + couID2 + " " + couID3 + " " + couID4 + "\n");
}
}catch(SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*学生注册*/
public static void StuRigistration() throws SQLException{
System.out.println("Please input your ID ");
String ID = console.next();
System.out.println("Please input your Password");
String Password = console.next();
try {
Statement stat = conn.createStatement();
String sql1 = "insert into login(stuID,Password)Values(" + ID + ", " + Password + ")";
//这里密码只能输入数字,问题待解决
int a = stat .executeUpdate(sql1);
System.out.println("成功注册"+ a +"个账号");
StudentMenu1();
}catch(SQLException e) {
// TODO Auto-generated catch block
System.out.println("ID already exists");
}
}
/* 管理员查看学生表 */
public static void GetStudentList() {
System.out.println("\n Here is student` information \n");
Statement stat = null;
ResultSet rs = null;
try {
stat = conn.createStatement();
String sql = "select * from student ";
rs = stat.executeQuery(sql);
String stuID = null;
String stuName = null;
while(rs.next()) {
stuID = rs.getString("stuID");
stuName= rs.getString("stuName");
System.out.println(stuID + " " + stuName + "\n");
ManagerMenu1();
}
}catch(SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/* 管理员查看选课表里的课程*/
public static void GetCourseList1() {
System.out.println("\n Here is course`information \n");
Statement stat = null;
ResultSet rs = null;
try {
stat = conn.createStatement();
String sql = "select * from course ";
rs = stat.executeQuery(sql);
String couID = null;
String couName = null;
String couTeacher = null;
while(rs.next()) {
couID = rs.getString("couID");
couName = rs.getString("couName");
couTeacher = rs.getString("couTeacher");
System.out.println(couID + " " + couName + " " + couTeacher + "\n");
ManagerMenu1();
}
}catch(SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
JAVA | 学生选课系统的更多相关文章
- java web知识点复习,重新编写学生选课系统的先关操作。
为了复习之前学习的相关的html,javaweb等知识.自己有重新编写了一遍学生选课系统. 下面主要展示登录界面的代码,以及各个大的主页面的相关jsp. <%@ page language=&q ...
- 学生选课系统v1.0
最近两天写了下老师课上留的作业:学生选课系统.感觉自己写的特别麻烦,思路特别不清晰,平常自己总会偷懒,一些太麻烦细节的功能就不去实现了,用简单的功能来替代,直到自己这回写完这个系统(但自己写的比较lo ...
- 学生选课系统 c语言
/********************************* *主题:学生选修课程系统设计 * *设计要求: *1.添加功能:程序能够任意添加课程和学生记录,可提供选择界面供用户选择所需要添加 ...
- python开发项目:学生选课系统
程序要求:1.创建北京.上海两所学校(分析:通过学校类实例化两个学校实例) 2.创建Linux.python.go三个课程,Linux\go在北京开,Linux在上海开(创建Linux.python. ...
- python基础-10 程序目录结构 学生选课系统面向对象练习
一 程序目录结构 1 bin文件夹 二进制文件.代码程序 2 conf 配置文件 3 帮助文档 4 头文件库文件等 二 学生选课系统部分代码 未完待续 1 包内的__init__.py文件 在包 ...
- 学生选课系统(Java语言期末前测试)
测试具体要求: 2.系统要求与功能设计 2.1 页面要求 (1)能够在Tomcat服务器中正确部署,并通过浏览器查看: (2)网站页面整体风格统一: (3)首页(登录页)要求实现不同用户登录后,进 ...
- 从零开始学Python06作业思路:学生选课系统
一,作业要求 选课系统: 管理员: 创建老师:姓名.性别.年龄.资产 创建课程:课程名称.上课时间.课时费.关联老师 学生:用户名.密码.性别.年龄.选课列表[].上课记录{课程1:[di,a,]} ...
- python实现学生选课系统 面向对象的应用:
一.要求: 选课系统 管理员: 创建老师:姓名.性别.年龄.资产 创建课程:课程名称.上课时间.课时费.关联老师 使用pickle保存在文件 学生: 学生:用户名.密码.性别.年龄.选课列表[].上课 ...
- 简单的学生选课系统——基于Servlet+Ajax
以前挖的坑,早晚要往里掉.基础太薄弱,要恶补.在此程序前,我还对Servlet没有一个清晰的概念:一周时间写好此程序之后,对Servlet的理解清晰许多. 这周一直在恶补Spring,今天正好完成了S ...
随机推荐
- win10下clodeblocks编译C语言乱码
打开settings->compile,在other compiler options添加下面两行代码: -fexec-charset=GBK-finput-charset=UTF-8
- android 5.0 下载编译
CM的CM-12.0版本(对应Android5.0.2): $ repo init -u https://github.com/CyanogenMod/android.git -b cm-12.0 注 ...
- 设计模式之模板方法模式(Template)
一.介绍 模板方法模式是编程中经常用到的模式.它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现.这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤. 二.场景举例 当一 ...
- Python模块 Socket
一个简单的python socket编程 一.套接字 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并 ...
- VueJs - 世界地图(根据返回国家value值的大小来展示颜色的深浅分布)
一.实现功能 1.画出世界各国的世界地图 2.根据返回name->国家全称.value->数量,渲染对比世界各国成功的国家,予以值域范围的高亮 3.滑入国家地图,出现tooltip框,提示 ...
- vue+node+mongoose踩过的坑
1.当你在cmd中输入npm run dev的时候,出现这种错误 很有可能是目前的端口被占用了,可以把所有可能用到这个端口号的应用关闭或者你直接改一个新的端口号 修改端口的方法:新打开一个cmd,然后 ...
- require,import区别?
遵循的模块化规范不一样 模块化规范:即为 JavaScript 提供一种模块编写.模块依赖和模块运行的方案.谁让最初的 JavaScript 是那么的裸奔呢——全局变量就是它的模块化规范. requi ...
- 【luogu P3410 拍照】 题解
题目链接:https://www.luogu.org/problemnew/show/P3410 这个题就是求一个最大权闭合图 在一个图中,一些点构成一个集合,且集合中的出边指向的终点也在这个集合中, ...
- Android学习笔记_46_fragment的简单应用
Fragments 诞生初衷 http://www.cnblogs.com/TerryBlog/archive/2012/02/17/2355753.html 自从Android 3.0中引入frag ...
- 用$(this)选择其下带有class的子元素
$(this).find('.son').removeClass("disn")