数据库系统概论(第5版)实验报告Java+Sql 课本p79表

上次是Java+MySQL,这次是Java+SQL server

   如有错误,提前感谢您来指正~

设置时候遇到的一些问题:

1.Java连接sqlserver

参考icon-default.png?t=M85Bhttps://blog.csdn.net/lq1759336950/article/details/87527914

2.找启用TCP/IP启动参考https://developers.blog.csdn.net/article/details/538974863.不给select权限参考https://blog.csdn.net/qq_38861743/article/details/897867704.语句没有返回集参考https://blog.csdn.net/lsh199196/article/details/40889469

5...........忘记了

6.再水一个 连接登录先创建个用户(我的sa用户登陆不上),因为是普通用户所以又有了第2条 

create login wang with password ='XX'
create user wang

代码部分

package StudentManagementSystem;

public class runSystem {
    public static void main(String[] args) throws Exception {
        Management m = new Management();
        m.getConnection();
        m.services();
    }
}
package StudentManagementSystem;

import java.sql.*;
import java.util.Scanner;

public class Management{
    private Connection conn;
    private Statement stmt;
    private ResultSet rs;

    /*进行操作的学生*/
    String addSno ="201215109";
    String addSname ="yuelin";
    char addSsex='男';
    int addSage=20;
    String addSdept="CS";

    /*进行操作的课程*/
    String addCno = "8";
    String addCname="Java程序设计2";
    int addCpno =2;
    int addCcredit=4;

    /*进行修改的选课记录*/
    int addGrade = 80;

    /*静态代码只加载一次*/
    static {
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public Connection getConnection(){
        String url = "jdbc:sqlserver://localhost:1433;DatabaseName=StudentSystem";
        try {
            conn = DriverManager.getConnection(url, "wang", "123");
            stmt = conn.createStatement();
            System.out.println("连接成功");
        } catch (SQLException e) {
            System.out.println("连接失败");
            e.printStackTrace();
        }
        return conn;
    }

    public void services() throws Exception {
        Scanner sc = new Scanner(System.in);
        while(true){
            System.out.println("*----------------------------------------------------*");
            System.out.println("请选择你要操作的表:\n1.Student学生表\n2.Course课程表\n3.SC选课成绩表\n4.退出");
            String tableChoice = sc.nextLine();
            switch (tableChoice){
                case "1":
                    StudentManage(sc);
                    break;
                case "2":
                    CourseManage(sc);
                    break;
                case "3":
                    SCManage(sc);
                    break;
                case "4":
                    conn.close();
                    stmt.close();
                    rs.close();
                    sc.close();
                    return;
                default:
                    System.out.println("请检查您的输入!");
            }
            System.out.println("*----------------------------------------------------*");
        }
    }


    public void StudentManage(Scanner sc){
        try {
            while (true) {
                System.out.println("*----------------------------------------------------*");
                String sql= "select * from StudentSystem..Student";
                rs=stmt.executeQuery(sql);
                System.out.println("\tSno\t    Sname\t\t\t  Ssex Sage Sdept");
                while(rs.next()){
                    String no=rs.getString("Sno");
                    String name=rs.getString("Sname");
                    String sex=rs.getString("Ssex");
                    int age=rs.getInt("Sage");
                    String dept=rs.getString("Sdept");
                    System.out.println(no+"\t"+name+sex+"\t"+age+"\t"+dept);
                }
                while (true) {
                    System.out.println("*----------------------------------------------------*");
                    System.out.println("您可以执行以下操作:\n0.查询某学生记录\n1.增加学生记录\n2.删除学生记录\n3.更改学生信息\n4.返回\n请输入您的选择:");
                    String choice=sc.nextLine();
                    switch(choice){
                        case "0":
                            queryStudent(addSno);
                            System.out.println("*----------------------------------------------------*");
                            break;
                        case "1":
                            addStudent(addSno);
                            System.out.println("*----------------------------------------------------*");
                            break;
                        case "2":
                            deleteStudent(addSno);
                            System.out.println("*----------------------------------------------------*");
                            break;
                        case "3":
                            changeStudent(addSno);
                            System.out.println("*----------------------------------------------------*");
                            break;
                        case "4":
                            return;
                        default:
                            System.out.println("请检查您的输入!");
                    }

                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private int queryStudentBySno(String Sno){
        try {
            String sqlCount= "select count(*) from Student where Sno = "+Sno;
            rs=stmt.executeQuery(sqlCount);
            int flag = 0;
            while(rs.next()){
                flag += rs.getInt(1);
            }
            if(flag==0){
                return 0;//未添加
            }else{
                return 1;
            }
        } catch (SQLException e) {
            e.printStackTrace();
            return 0;
        }
    }

    private void queryStudent(String Sno) {
        try {
            if(queryStudentBySno(Sno)>0){
                System.out.println("学号为"+Sno+"的同学信息如下");
                String sql = "select * from Student where Sno = "+Sno;
                rs=stmt.executeQuery(sql);
                while (rs.next()){
                    String no=rs.getString("Sno");
                    String name=rs.getString("Sname");
                    String sex=rs.getString("Ssex");
                    int age=rs.getInt("Sage");
                    String dept=rs.getString("Sdept");
                    System.out.println(no+"\t"+name+sex+"\t"+age+"\t"+dept);
                }
            }else{
                System.out.println("学号为"+Sno+"的同学信息还没有添加!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private void changeStudent(String Sno){
        try {
            if(queryStudentBySno(Sno)>0){
                String sql = "update Student set Ssex='女' where Sno = "+Sno;
                int rsUpdate=stmt.executeUpdate(sql);
                System.out.println("学号为"+Sno+"的学生信息已更新!");
            }else{
                System.out.println("学号为"+Sno+"的同学信息还没有添加!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private void deleteStudent(String Sno){
        try {
            if (queryStudentBySno(Sno)>0) {
                String sql = "delete Student where Sno = "+addSno;
                int rsDelete=stmt.executeUpdate(sql);
                System.out.println("学号为"+addSno+"的学生信息已删除!");
            } else {
                System.out.println("学号为"+Sno+"的同学信息不存在!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private void addStudent(String Sno){
        try {
            if (queryStudentBySno(Sno)==0) {
                String sqlInsert = "Insert into Student(Sno,Sname,Ssex,Sage,Sdept) values('"+addSno+"','"+addSname+"','"+addSsex+"',"+addSage+",'"+addSdept+"')";
                int rsInsert=stmt.executeUpdate(sqlInsert);
                System.out.println("学号为"+addSno+"的学生信息已添加!");
            } else {
                System.out.println("学号重复,拒绝添加!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }


    public void CourseManage(Scanner sc){
        try {
            while (true) {
                System.out.println("*----------------------------------------------------*");
                String sql= "select * from StudentSystem..Course";
                rs=stmt.executeQuery(sql);
                System.out.println("Cno\t    Cname\t\t\t\t\t\t\t\t  Cpno\tCcredit");
                while(rs.next()){
                    String no=rs.getString("Cno");
                    String name=rs.getString("Cname");
                    int pno=rs.getInt("Cpno");
                    int credit=rs.getInt("Ccredit");
                    System.out.println(no+"\t"+name+"\t"+pno+"\t"+credit);
                }
                while (true) {
                    System.out.println("*----------------------------------------------------*");
                    System.out.println("您可以执行以下操作:\n0.查询课程\n1.增加课程记录\n2.删除课程记录\n3.更改课程信息\n4.返回\n请输入您的选择:");
                    int choice=sc.nextInt();
                    switch(choice){
                        case 0:
                            queryCourse(addCno);
                            System.out.println("*----------------------------------------------------*");
                            break;
                        case 1:
                            addCourse(addCno);
                            System.out.println("*----------------------------------------------------*");
                            break;
                        case 2:
                            deleteCourse(addCno);
                            System.out.println("*----------------------------------------------------*");
                            break;
                        case 3:
                            changeCourse(addCno);
                            System.out.println("*----------------------------------------------------*");
                            break;
                        case 4:
                            return;
                        default:
                            System.out.println("请检查您的输入!");
                    }
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private void queryCourse(String Cno) {
        try {
            if(queryCourseByCno(Cno)>0){
                System.out.println("课程号为"+Cno+"的课程信息如下");
                String sql= "select * from StudentSystem..Course where Cno="+Cno;
                rs=stmt.executeQuery(sql);
                System.out.println("\tCno\tCname\tCpno Ccredit");
                while(rs.next()){
                    String no=rs.getString("Cno");
                    String name=rs.getString("Cname");
                    int pno=rs.getInt("Cpno");
                    int credit=rs.getInt("Ccredit");
                    System.out.println(no+"\t"+name+pno+"\t"+credit);
                }
            }else{
                System.out.println("课程号为"+Cno+"的课程不存在!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private int queryCourseByCno(String Cno) {
        try {
            String sqlCount= "select count(*) from Course where Cno = "+Cno;
            rs=stmt.executeQuery(sqlCount);
            int flag = 0;
            while(rs.next()){
                flag += rs.getInt(1);
            }
            if(flag==0){
                return 0;//未添加
            }else{
                return 1;
            }
        } catch (SQLException e) {
            e.printStackTrace();
            return 0;
        }
    }

    private void changeCourse(String Cno) {
        try {
            if(queryCourseByCno(Cno)>0){
                String sql = "update Course set Cname='Java程序设计' where Cno = "+Cno;
                int rsUpdate=stmt.executeUpdate(sql);
                System.out.println("课程号为"+Cno+"的课程信息已更新!");
            }else{
                System.out.println("课程号为"+Cno+"的课程信息还没有添加!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private void deleteCourse(String Cno) {
        try {
            if (queryCourseByCno(Cno)>0) {
                String sql = "delete Course where Cno = "+Cno;
                int rsDelete=stmt.executeUpdate(sql);
                System.out.println("课程号为"+Cno+"的课程信息已删除!");
            } else {
                System.out.println("课程号为"+Cno+"的课程信息不存在!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private void addCourse(String Cno) {
        try {
            if (queryCourseByCno(Cno)==0) {
                String sqlInsert = "Insert into Course(Cno,Cname,Cpno,Ccredit) values('"+addCno+"','"+addCname+"','"+addCpno+"','"+addCcredit+"')";
                int rsInsert=stmt.executeUpdate(sqlInsert);
                System.out.println("课程为"+addCno+"的课程信息已添加!");
            } else {
                System.out.println("课程重复,拒绝添加!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void SCManage(Scanner sc){
        try {
            while (true) {
                System.out.println("*----------------------------------------------------*");
                String sql= "select * from StudentSystem..SC";
                rs=stmt.executeQuery(sql);
                System.out.println("\tSno\t   Cno\t    Grade");
                while(rs.next()){
                    String sno=rs.getString("Sno");
                    String cno=rs.getString("Cno");
                    int grade=rs.getInt("Grade");
                    System.out.println(sno+"\t"+cno+"\t"+grade);
                }
                while (true) {
                    System.out.println("*----------------------------------------------------*");
                    System.out.println("您可以执行以下操作:\n0.查询课程\n1.增加学生选课记录\n2.删除学生选课记录\n3.更改学生选课记录\n4.返回\n请输入您的选择:");
                    int choice=sc.nextInt();
                    switch(choice){
                        case 0:
                            querySC("201215121","1",sc);
                            System.out.println("*----------------------------------------------------*");
                            break;
                        case 1:
                            addSC(addSno,addCno);
                            System.out.println("*----------------------------------------------------*");
                            break;
                        case 2:
                            deleteSC(addSno,addCno);
                            System.out.println("*----------------------------------------------------*");
                            break;
                        case 3:
                            changeSC(addSno,addCno);
                            System.out.println("*----------------------------------------------------*");
                            break;
                        case 4:
                            return;
                        default:
                            System.out.println("请检查您的输入!");
                    }
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }


    private void querySC(String Sno,String Cno,Scanner sc) {
        try {
            while (true) {
                System.out.println("请您选择您的查询模式:\n1.查询某学生选的某课的成绩\n2.查询某节课的得分情况\n3.查询某学生的得分情况\n4.返回");
                String choice = sc.nextLine();
                switch (choice) {
                    case "1":
                        /*1.学号和课程号同时有*/
                        querySCBySnoCno(Sno, Cno);
                        break;
                    case "2":
                        /*2.一门课有哪些学生选*/
                        querySCByCno(Cno);
                        break;
                    case "3":
                        /*3.一个学生选了哪些课*/
                        querySCBySno(Sno);
                        break;
                    case "4":
                        return;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void querySCBySno(String Sno) {
        try {
            String sqlCount= "select count(*) from SC where Sno="+Sno;
            rs=stmt.executeQuery(sqlCount);
            int flag = 0;
            while(rs.next()){
                flag += rs.getInt(1);
            }
            if(flag==0){
                System.out.println("不存在该记录!");
                //不存在
            }else{
                String sql = "select * from SC,Course where Sno="+Sno+"and Course.Cno=SC.Cno";
                rs = stmt.executeQuery(sql);
                System.out.println("Cno\t\tCname\tGrade");
                while(rs.next()){
                    String Cno=rs.getString("Cno");
                    String Cname=rs.getString("Cname");
                    int grade = rs.getInt("Grade");
                    System.out.println(Cno+"\t"+Cname+grade);
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private void querySCByCno(String Cno) {
        try {
            String sqlCount= "select count(*) from SC where Cno ="+Cno;
            rs=stmt.executeQuery(sqlCount);
            int flag = 0;
            while(rs.next()){
                flag += rs.getInt(1);
            }
            if(flag==0){
                System.out.println("不存在该条记录!");
                //不存在
            }else{
                String sql = "select * from SC,Student where Cno ="+Cno+" and Student.Sno=SC.Sno";
                rs = stmt.executeQuery(sql);
                System.out.println("选了课程号为"+Cno+"的成绩如下:\n\tSno\t   Sname\tGrade");
                while(rs.next()){
                    String Sno=rs.getString("Sno");
                    String Sname = rs.getString("Sname");
                    int grade = rs.getInt("Grade");
                    System.out.println(Sno+"\t "+Sname+"\t "+grade);
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private void querySCBySnoCno(String Sno, String Cno) {
        try {
            String sqlCount= "select count(*) from SC where Cno ="+Cno+"and Sno="+Sno;
            rs=stmt.executeQuery(sqlCount);
            int flag = 0;
            while(rs.next()){
                flag += rs.getInt(1);
            }
            if(flag==0){
                System.out.println("不存在该条记录!");
                //不存在
            }else{
                String sql = "select * from SC where Cno ="+Cno+"and Sno="+Sno;
                rs = stmt.executeQuery(sql);
                System.out.println("\tSno\t  Cno\t Grade");
                while(rs.next()){
                    int grade = rs.getInt("Grade");
                    System.out.println(Sno+"\t"+Cno+"\t"+grade);
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private void changeSC(String Sno,String Cno) {
        try {
            String sqlCount= "select count(*) from SC where Cno ="+Cno+"and Sno="+Sno;
            rs=stmt.executeQuery(sqlCount);
            int flag = 0;
            while(rs.next()){
                flag += rs.getInt(1);
            }
            if(flag==0){
                System.out.println("不存在该条记录!");
                //不存在
            }else{
                String sql = "update SC set Grade=85 where Sno = "+Sno+"and Cno="+Cno;
                int rsUpdate = stmt.executeUpdate(sql);
                System.out.println("学号为"+Sno+"的课程号为"+Cno+"的课程成绩已更新!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private void deleteSC(String Sno,String Cno) {
        try {
            String sqlCount= "select count(*) from SC where Cno ="+Cno+"and Sno="+Sno;
            rs=stmt.executeQuery(sqlCount);
            int flag = 0;
            while(rs.next()){
                flag += rs.getInt(1);
            }
            if(flag==0){
                System.out.println("不存在该条记录!");
                //不存在
            }else{
                String sql = "delete SC where Sno = "+Sno+"and Cno="+Cno;
                int rsUpdate = stmt.executeUpdate(sql);
                System.out.println("学号为"+Sno+"的课程号为"+Cno+"的选课记录已删除");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private void addSC(String Sno,String Cno) {
        try {
            String sqlCount= "select count(*) from SC where Cno ="+Cno+"and Sno="+Sno;
            rs=stmt.executeQuery(sqlCount);
            int flag = 0;
            while(rs.next()){
                flag += rs.getInt(1);
            }
            if(flag==1){
                System.out.println("重复添加,拒绝访问!");
                //不存在
            }else{
                String sql = "Insert into SC(Sno,Cno,Grade) values("+Sno+","+Cno+ ","+addGrade+")";
                int rsUpdate = stmt.executeUpdate(sql);
                System.out.println("学号为"+Sno+"的课程号为"+Cno+"的选课记录已添加");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值