-
学生管理系统 本系统主要包括两大功能模块:学生信息和成绩信息两个系统。其中学生信息系统划分为七个模块...
2009-01-01 01:31:38在数字化的今天,我们需要一个学生管理系统,使我们的整体管理水平上一个档次,与如今这个高科技的信息社会接轨。 因此,如何有效的管理学生信息,帮助学校和老师管理和掌握这些情况,这就是学生信息管理系统需要... -
学生宿舍管理系统
2015-06-16 15:02:58学生宿舍管理系统,包括对功能模块的描述,功能模块的划分,ER图的设计 -
学生管理系统Java实现
2020-12-18 16:39:16学生管理系统 文章目录学生管理系统一、项目概述二、项目初步设计1.项目总体框架2.模块划分图及描述3.类关系图4.程序流程图三、实验准备1.安装MySQL2.学习Java结构体3.排序算法4.增、查、改、删功能的实现四、可能...学生管理系统
文章目录
一、项目概述
(1)项目目标和主要内容
<1>实现一个简单的学生信息管理的程序。
<2>要求系统能为客户提供下列各项服务:教学管理人员能够使用程序对学生基本信息、课程信息进行管理,包括数据的添加、修改、删除和浏览;能够对学生选课进行管理,包括添加学生选课信息、录入成绩;能够使用查询功能,快速查看到指定学生或指定课程的基本信息以及所指定学生的选课信息;能够对学生选课情况进行简单的统计,包括所选的总的课程数、总学分数及平均成绩。
<3>要注意添加学生基本信息、课程信息相关数据时,学号和课程号不能重复;还有在添加学生选课信息时,要求该学生和课程必须是存在的,而且不能添加重复的选课信息。提供友好的交互界面,可以方便用户进行功能选择,实现信息的管理和查询,并可清晰地显示相关信息。
(2)项目的主要功能
<1>教学管理人员可以使用程序对学生基本信息、课程信息进行管理,包括数据的添加、修改、删除和浏览;能够对学生选课进行管理,包括添加学生选课信息、录入成绩;能够使用查询功能,快速查看到指定学生或指定课程的基本信息以及所指定学生的选课信息;能够对学生选课情况进行简单的统计,包括所选的总的课程数、总学分数及平均成绩。二、项目初步设计
1.项目总体框架
2.模块划分图及描述
主要分为2个模块:
<1>对学生信息的修改,如增加,删减,信息的更新。
<2>学生信息的保存
3.类关系图
4.程序流程图
三、实验准备
1.安装MySQL
详细教程参考链接
2.学习Java结构体
Java中想用结构体的话,可以写个类来实现。
用类实现结构体并对其进行操作时,有两种方式可选:
1.把要存储的数据设为私有变量,然后另写函数对其进行读写
2.把要存储的数据设为public变量,在其他主函数类中直接访问修改。
详细代码参考链接3.排序算法
选择一种合适算法进行成绩查询和排序
十大经典排序算法4.增、查、改、删功能的实现
四、可能遇到的问题
1.文件操作
①使用FileReader类对文件操作时,若要获取整个字符串,可先用File类对象获取文件长度,定义大小刚好合适的字符数组,使用FileReader类对象的read(char[] arr)将文件存储在字符数组中,然后转化为字符串进行操作。
②使用FileWriter类的对象进行写入文件时,可根据不同情况选择从头写入还是末尾追加进行打开文件。写入文件成功后牢记关闭对象引用,防止文件丢失。2.字符串操作
①使用正则表达式,用于分割字符串。空白字符可用\s表示。则换行符"\r\n"的对应正则表达式为:regex = “\s{2}”。
②删除某一字符串str1时可用str = str.replace(str1,"")进行删除。
③从键盘读取一个字符串时可用sc.next()进行读取。五、详细代码
一共分为五类,各类的作用参考2.3
Dbutil类:package Software; import java.sql.*; public class Dbutil { public static final String DRIVER_NAME="oracle.jdbc.driver.OracleDriver"; public static final String URL="jdbc:oracle:thin:@localhost:1521:orcl"; public static final String USER = "Mysql80"; public static final String PASS = "3306"; public static Connection getCon()throws ClassNotFoundException, SQLException{ Connection con=null; Class.forName(DRIVER_NAME); con= DriverManager.getConnection(URL,USER,PASS); return con; } public static void close(Connection con, Statement stmt, ResultSet rs){ try { if(rs!=null){ rs.close(); } if(stmt!=null){ stmt.close(); } if(con!=null){ con.close(); } } catch (SQLException throwables) { throwables.printStackTrace(); } } }
Main类
package Software; public class Main { public static void main(String[] args) { StuManage a=new StuManage(); a.menu(); } }
Stu类
package Software; public class Stu { private String A; private String name; private String B; private String result; public String getA() { return A; } public void setA(String A) { this.A = A; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getB() { return B; } public void setB(String B) { this.B = B; } public String getResult() { return result; } public void setResult(String result) { this.result = result; } public Stu() { super(); } public Stu(String A, String name, String B, String result) { super(); this.A = A; this.name = name; this.B = B; this.result = result; } }
StuDao类
package Software; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class StuDao { private Connection con; private PreparedStatement stmt; private ResultSet rs; public boolean add(Stu stu){ String sql="insert into stu(stu_A,stu_name,stu_B,stu_result) values(?,?,?,?)"; try { con= Dbutil.getCon(); stmt=con.prepareStatement(sql); stmt.setString(1,stu.getA()); stmt.setString(2,stu.getName()); stmt.setString(3,stu.getB()); stmt.setString(4,stu.getResult()); } catch (SQLException throwables) { throwables.printStackTrace(); return false; } catch (ClassNotFoundException e) { e.printStackTrace(); return false; }finally { Dbutil.close(con,stmt,rs); } return true; } public List<Stu> list(){ List<Stu> list=new ArrayList<>(); String sql="select * from stu"; try{ con= Dbutil.getCon(); stmt=con.prepareStatement(sql); rs=stmt.executeQuery(); while (rs.next()) { Stu stu=new Stu(); stu.setA(rs.getString("stu_A")); stu.setName(rs.getString("stu_name")); stu.setB(rs.getString("stu_B")); stu.setResult(rs.getString("result")); list.add(stu); } } catch (SQLException throwables) { throwables.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); }finally { Dbutil.close(con,stmt,rs); } return list; } public Stu findSomeone(String A){ Stu stu=null; String sql="select * from stu where stu_no=?"; try{ con= Dbutil.getCon(); stmt=con.prepareStatement(sql); stmt.setString(1,A); rs=stmt.executeQuery(); while(rs.next()){ stu=new Stu(); stu.setA(rs.getString("stu_A"));//取结果集里面学号这一列的值赋给 stu.setName(rs.getString("stu_name")); stu.setB(rs.getString("stu_B")); stu.setResult(rs.getString("stu_result")); } } catch (SQLException throwables) { throwables.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); }finally { Dbutil.close(con,stmt,rs); } return stu; } public boolean upDate(Stu stu){ String sql="update stu set stu_name=?,phone=? wherestu_no=?"; try{ con= Dbutil.getCon(); stmt=con.prepareStatement(sql); stmt.setString(3, stu.getA()); stmt.setString(1, stu.getName()); stmt.setString(2, stu.getB()); stmt.setString(4,stu.getResult()); stmt.executeUpdate(); } catch (SQLException throwables) { throwables.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); }finally { Dbutil.close(con,stmt,rs); } return true; } public boolean del(String id){ String sql="delete from stu where stu_no=?"; try { con= Dbutil.getCon(); stmt=con.prepareStatement(sql); stmt.setString(1,id); stmt.executeLargeUpdate(); } catch (SQLException throwables) { throwables.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); }finally { Dbutil.close(con,stmt,rs); } return true; } }
StuManage类:
package Software; import java.util.List; import java.util.Scanner; public class StuManage { public void menu() { 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(); break; case 2: myUpdate(); //菜单选择2,是修改学生 break; case 3: myDel(); break; case 4: myList(); break; case 5: //菜单选择5,是退出该系统 System.out.println("您选择了退出系统,确定要退出吗?(y/n)"); Scanner scan=new Scanner(System.in); String scanExit=scan.next(); if(scanExit.equals("y")){ System.exit(-1); System.out.println("您已成功退出系统,欢迎您再次使用!"); } break; default: break; } }while (choose!=5); } private void myList() { System.out.println("************************"); System.out.println("====查询学生===="); System.out.println("该学生的信息如下:"); System.out.println("学号\t姓名\t选课信息\t成绩查询"); StuDao stuDao=new StuDao(); List<Stu>list=stuDao.list(); for(Stu stuList:list) { System.out.println(stuList.getA()); System.out.println(stuList.getName()); System.out.println(stuList.getB()); System.out.println(stuList.getResult()); } System.out.println("***************"); } private void myUpdate() { Scanner s=new Scanner(System.in); String no; System.out.println("====修改学生===="); System.out.println("请输入要修改的学生学号:"); no=s.next(); System.out.println("该学生的信息如下:"); StuDao stuDao=new StuDao(); System.out.println("学生学号:"+stuDao.findSomeone(no).getA()); System.out.println("学生姓名:"+stuDao.findSomeone(no).getName()); System.out.println("选课信息:"+stuDao.findSomeone(no).getB()); System.out.println("成绩查询:"+stuDao.findSomeone(no).getResult()); System.out.println("请输入新的学生信息:"); Scanner stuUp=new Scanner(System.in); String A,name,B,result; System.out.println("学生学号"); A=stuUp.next(); System.out.println("学生姓名:"); name=stuUp.next(); System.out.println("选课信息:"); B=stuUp.next(); System.out.println("成绩查询"); result=stuUp.next(); Stu stu=new Stu(A,name,B,result); boolean ok= stuDao.upDate(stu); if(ok){ System.out.println("保存成功"); }else { System.out.println("保存失败"); } } private void myDel() { Scanner s=new Scanner(System.in); String no; System.out.println("====删除学生===="); System.out.println("请输入要删除的学生学号:"); no=s.next(); System.out.println("该学生的信息如下:"); StuDao stuDao=new StuDao(); System.out.println("学生学号:"+stuDao.findSomeone(no).getA()); System.out.println("学生姓名:"+stuDao.findSomeone(no).getName()); System.out.println("选课信息:"+stuDao.findSomeone(no).getB()); System.out.println("成绩查询:"+stuDao.findSomeone(no).getResult()); System.out.println("是否真的删除(y/n):"); Scanner scanner3=new Scanner(System.in); String x=scanner3.next(); if (x.equals("y")) { Stu stu=new Stu(no,null,null,no); StuDao dao=new StuDao(); boolean ok=dao.del(no); if (ok) { System.out.println("删除成功!"); }else { System.out.println("删除失败!"); } } } private void myAdd() { String continute = null; do { Scanner s=new Scanner(System.in); String A,name,B,result; System.out.println("====新增学生===="); System.out.println("学号:"); A=s.next(); System.out.println("姓名:"); name=s.next(); System.out.println("选课信息:"); B=s.next(); System.out.println("成绩查询:"); result=s.next(); Stu stu=new Stu(A,name,B,result); 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")); } }
六、程序运行结果分析
1、项目的难点和关键点
项目的难点在于数据库的应用,信息的录入和保存,学习增加删减查询的功能实现
2、项目的评价:
可以对数据的修改和存储查询,但是功能待完善,还在继续完善。 -
学生管理系统c++链表实现
2016-04-10 22:22:18学生管理系统,主要划分为以下三个模块: 1) 学生:包括增加学生信息、删除学生信息、修改学生信息、查找学生信息、学生选课。 2) 课程:包括增加课程信息、删除课程信息、修改课程信息、查找课程信息。 3)拓展...
当然自己水平有限,写的不好,还有很多bug没有完善,希望大家见谅,仅仅供大家参考,希望吐槽。简单版学生管理系统,c++,链表实现,如果你是计算机系的学生真的希望你不要完全复制,做下参考自己编写出来才能有所收获,这是对你的将来负责; 学生管理系统,主要划分为以下三个模块: 1) 学生:包括增加学生信息、删除学生信息、修改学生信息、查找学生信息、学生选课。 2) 课程:包括增加课程信息、删除课程信息、修改课程信息、查找课程信息。 3)拓展功能:文件导入,文件导出。 #include<iostream> #include<fstream> #include<string> using namespace std; const int nubofCourse = 10;//学生最多可以选修的课程 typedef struct StudentMessage *sMessage;//学生结点指针类型 typedef struct Courses *sCourse;//课程结点指针类型 fstream foutint;//文件导入导出 /*课程结构体*/ struct Courses { int stdCourstcount; string cNo; string cName; string scTeacher; string stdNo[nubofCourse]; sCourse cNext; }; /*学生结构体*/ struct StudentMessage { string sNo;//学号 string sClass; string sName; char sSex; sMessage sNext; }; typedef sMessage sm;//学生头指针类型 typedef sCourse sc;//课程头指针类型 /*关于我们,关于程序*/ void aboutMe() { //首页打印设置 string input; cout << "\n\n\t\t\t*****************************\n"; cout << "\t\t\t 学生信息管理系统\n"; cout << "\t\t\t*****************************\n\n\n"; // cout<<"\n\t\t\t 欢迎来到学生信息管理系统\n\n"; cout << "--------------------------------------------------------------------------------\n"; cout << "\n\t\t\t拼搏到无能为力,\n"; cout << "\t\t\t\t 坚持到感动自己!\n"; cout << "\t 开发者:路ren甲\n\n"; cout << "\t 联系方式:QQ:1508287079 or Mail To:1508287079@qq.com\n"; cout << " \n--------------------------------------------------------------------------------\n"; //cout<<"\t______________________________________________________________________\n"; cout << "\t\t版权所有@路ren甲\n\n\n"; cout << "\t<输入任意字符进入>\n\t"; cin >> input; //让用户输入一个字符后再进行下一步 system("cls"); //清屏 } //再见页面 void goodbye() { //首页打印设置 string input; // cout<<"\n\t\t\t 欢迎来到学生信息管理系统\n\n"; cout << " \n\n\n\n\n\n\n\n--------------------------------------------------------------------------------\n"; cout << "\n\t\t可能程序还有许多不足,\n"; cout << "\t\t\t 希望大家可以提出或者修改!\n"; cout << "\t\t\t\t再见,遇见成功的自己!\n"; cout << " \n--------------------------------------------------------------------------------\n"; cout << "\t<输入任意字符关闭>\n\t"; cin >> input; //让用户输入一个字符后再进行下一步 exit(1); //清屏 } //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓课程函数↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓// sc initC() { sCourse chead; chead = new Courses; chead->cNext = NULL; return chead; } //打印课程信息 int ptfselect_SCourse(sc head, string sId) { int flags = 0; if (head->cNext == NULL) { cout << "\n\t\t\t没有选到课喔……………!_!-_-\n"; return 1; } cout << "\t\t课程编号" << "\t 课程名称" << "\t 开课老师" << endl; //课程信息 head = head->cNext; while (head != NULL) { for (int l = 0; l < nubofCourse; l++) { if (head->stdNo[l] == sId) { flags = 1; cout << "\t\t" << head->cNo << "\t\t" << head->cName << "\t\t" << head->scTeacher << "\t\n"; } } head = head->cNext; } if (flags == 0) { cout << "\n\t\t\t没有选到课喔……………!_!-_-\n"; } cout << "\t\t----------------------------------------------------\n"; return 1; } int ptfSCourse(sc cHead) { if (cHead->cNext == NULL) { cout << "没有课程信息\n"; return 0; } //全部学生信息 cout << "\n\t\t课程编号" << "\t 课程名称" << "\t 开课老师" << endl; cHead = cHead->cNext; while (cHead != NULL) { cout << "\t\t" << cHead->cNo << "\t\t" << cHead->cName << "\t\t" << cHead->scTeacher<< "\t\n"; cHead = cHead->cNext; } return 1; } void printfCourse(sc head, int i) { //一个课程信息 int j; sCourse find; j = 0; find = head->cNext; cout << "\n\t\t课程编号" << "\t\t课程名称" << "\t\t开课老师" << endl; while (find != NULL) { j++; if (j == i) { cout << "\t\t" << find->cNo << "\t\t" << find->cName << "\t\t" << find->scTeacher << "\t\n"; break; } find = find->cNext; } } void pfCourse(sc head) { cout << "\n\t\t课程编号" << "\t\t课程名称" << "\t\t开课老师" << endl; cout << "\t\t" << head->cNo << "\t\t" << head->cName << "\t\t" << head->scTeacher << "\t\n"; cout << endl; } 查找课程 int locateCourse(sc chead, string numb) { int j = 0; chead = chead->cNext; while (chead != NULL) { j++;//统计 if (numb == chead->cNo) { return j; } chead = chead->cNext; } return 0; } 添加课程 void addCourse(sc scHead) { sc cnew;//新课程 int g = 0,k=0; char flag = 'y'; while (flag == 'y') { cnew = new Courses; cnew->stdCourstcount = 0; while (g==0) { g = 1; cout << "输入课程编号(六位数字):"; cin >> cnew->cNo; if (locateCourse(scHead,cnew->cNo) != 0) { cout << "课程编号已经存在,请重新输入" << endl; g = 0; } } g = 0; cout << "输入课程名称:"; cin >> cnew->cName; cout<<"输入教师姓名:"; cin >> cnew->scTeacher; cnew->cNext = scHead->cNext; scHead->cNext = cnew; cout << "您想继续进行添加吗?输入y继续,输入n退出" << endl; cout << "输入你的选择(y/n):"; cin >> flag; } //system("cls"); cout << "已经添加课程信息成功\n" << endl; } //修改课程信息 int updatesCourse(sc chead) { string fdc; int k = 0; if (chead->cNext == NULL) { cout << "没有课程数据,请添加课程" << endl; return 0; } cout << "输入修改课程编号:"; cin >> fdc; chead = chead->cNext; while (chead != NULL) { k++;//统计 if (fdc == chead->cNo) { pfCourse(chead); cout << "课程名称:"; cin >> chead->cName; cout << "开课老师:"; cin >> chead->scTeacher; cout << "修改课程" << chead->cNo << "信息成功!"; return k; } chead = chead->cNext; } return 0; } int deletesCourse(sc cHead) { string del; char flag; int f = 0; sCourse deletestd,preform; int j = 0; if (cHead->cNext == NULL) { cout << "没有课程数据,请添加课程" << endl; return 0; } preform = cHead; deletestd = cHead->cNext;//从首节点开始扫描 cout << "输入删除课程编号:"; cin >> del;//删除课程 while (deletestd != NULL) { f = 0; j++; if (deletestd->cNo==del) { pfCourse(deletestd); cout << "是否删除该课程(y/n),输入你的选择:"; cin >> flag; if (flag == 'y') { cout << "删除课程" << deletestd->cName << "成功!"; preform->cNext = deletestd->cNext; delete deletestd; return j; } else { cout << "你已经取消删除" << deletestd->cNext->cName << endl; return 0; } } preform=preform->cNext; deletestd = deletestd->cNext; f = 1; } if (f == 1) { cout << "不存在该学生找到了"; } return 0;//不存在该学生找到了 } //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓学生函数↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓// /*初始化*/ sm init() { sMessage shead; shead = new StudentMessage; shead->sNext = NULL; return shead; } //打印学生信息 void printfSMessge(sm head, sc cHead) { sm find2; string fc; int i = 0; if (head == NULL) cout << "没有学生信息"; find2 = head->sNext; //全部学生信息 head = head->sNext; while (head != NULL) { cout << "\t\t---------------------第"<<++i<<"位--------------------------\n"; cout << "\t\t\t\t姓名:" << head->sName << "\t\n"; if (head->sSex == '1') { cout << "\t\t\t\t性别:男" << "\t\n"; } else if (head->sSex == '0') { cout << "\t\t\t\t性别:女" << "\t\n"; } cout << "\t\t\t\t学号:" << head->sNo << "\t\n"; cout << "\t\t\t\t班级:" << head->sClass << "\t\n"; cout << "\n\t\t\t选修课程:\n"; if (find2 != NULL) { fc =find2->sNo; ptfselect_SCourse(cHead, fc);//输出学生选课 } find2 = find2->sNext; head = head->sNext; } } void printfPerson(sm head, int i,sc cHead) { //一个学生信息 int j; string fc; sMessage find, find2; //if(i==0) return head; // if(i<0) return ;//位置非法。无此结节点 j = 0; find = head->sNext; find2 = head->sNext; while (find != NULL){ j++; if (j == i) { cout << "\t\t----------------------------------------------------\n"; cout << "\t\t\t\t姓名:" << find->sName << "\t\n"; if (find->sSex == '1') { cout << "\t\t\t\t性别:男" << "\t\n"; } else if (find->sSex == '0') { cout << "\t\t\t\t性别:女" << "\t\n"; } cout << "\t\t\t\t学号:" << find->sNo << "\t\n"; cout << "\t\t\t\t班级:" << find->sClass << "\t\n"; cout << "\n\t\t\t选修课程:\n"; while (find2 != NULL) { fc = find2->sNo; if(ptfselect_SCourse(cHead, fc)==1) break;//输出学生选课 } break; } find2 = find2->sNext; find = find->sNext; } } void pfPerson(sm head) { cout << "\t\t----------------------------------------------------\n"; cout << "\t\t\t\t姓名:" << head->sName << "\t\n"; if (head->sSex == '1') { cout << "\t\t\t\t性别:男" << "\t\n"; } else if (head->sSex == '0') { cout << "\t\t\t\t性别:女" << "\t\n"; } cout << "\t\t\t\t学号:" << head->sNo << "\t\n"; cout << "\t\t\t\t班级:" << head->sClass << "\t\n"; cout << "\t\t----------------------------------------------------\n"; } 查找学生 int locateStdfByNo(sm sHead, string numb) { int j = 0; if (sHead->sNext == NULL) { cout << "没有学生数据,请添加学生" << endl; return NULL; } sHead = sHead->sNext; j = 0; while (sHead != NULL) { j++;//统计 if (numb==sHead->sNo) { return j; } sHead = sHead->sNext; } return 0; } int locateByName(sm sHead, string sname,sc cHead) { int j = 0; sm head=sHead; if (sHead->sNext == NULL) { cout << "没有学生数据,请添加学生" << endl; return NULL; } sHead = sHead->sNext; while (sHead != NULL) { j++; if (sHead->sName == sname) { printfPerson(head, j, cHead); } sHead = sHead->sNext; } return 0; } //添加学生 void addStudent(sm sHead) { sMessage snew;//新学生 int f = 1,g=0; char flag = 'y'; while (flag == 'y') { snew = new StudentMessage; while (f == 1) {//判断学号和输入学号 f = 0; cout << "输入学号6位数字:"; cin >> snew->sNo; if (locateStdfByNo(sHead, snew->sNo) != 0) { cout << "学号已经存在,请重新输入"<<endl; f = 1;}//判断学号是否重复 } cout << "输入姓名:"; cin >> snew->sName; f = 1; while(f==1){ f = 0; cout << "输入性别选择<男:1><女:0>:"; cin >> snew->sSex; if (snew->sSex!='1'&& snew->sSex != '0'&&f==0) { cout << "选择操作不对,请重新输入"<<endl; f = 1; } } f = 1; cout << "输入班级:"; cin >> snew->sClass; snew->sNext = sHead->sNext; sHead->sNext = snew; pfPerson(snew); cout << "您想继续进行添加吗?输入y继续,输入n退出" << endl; cout << "输入你的选择(y/n):"; cin >> flag; } //system("cls"); cout << "已经添加学生信息成功" << endl; } //修改学生信息 int updates(sm sHead) { char flagc = 'y'; string numb; int j = 0,f=1; if (sHead->sNext == NULL) { cout << "没有学生数据,请添加学生" << endl; return 0; } cout << "输入修改学生学号:"; cin >> numb; sHead = sHead->sNext; while (sHead != NULL) { j++;//统计 if ( numb== sHead->sNo) { pfPerson(sHead); cout << "\n输入修改信息\n"; while (f == 1) { f = 0; cout << "输入性别选择<男:1><女:0>:"; cin >> sHead->sSex; if (sHead->sSex != '1' && sHead->sSex != '0') { cout << "选择操作不对,请重新输入" << endl; f = 1; } } cout << "输入姓名:"; cin >> sHead->sName; f = 1; cout << "输入班级:"; cin >> sHead->sClass; return j; } sHead = sHead->sNext; } return 0; } //删除 int deletesMessage(sm sHead) { string numb; char flag; sMessage deletestd, preform; int j = 0, i = 0; if (sHead->sNext == NULL) { cout << "没有学生数据,请添加学生" << endl; return 0; } preform = sHead; deletestd = sHead->sNext;//从首节点开始扫描 cout << "输入删除学生学号:"; cin >> numb; while (deletestd != NULL) { j++; if (deletestd->sNo==numb) { pfPerson(deletestd); cout << "是否删除该学生(y/n),输入你的选择:"; cin >> flag; if (flag == 'y') { cout << "你已经删除" << deletestd->sName << "成功!"; preform->sNext = deletestd->sNext; delete(deletestd->sNext); return j; } else { cout << "你已经取消删除" << deletestd->sNext->sName; return j; } } preform = preform->sNext; deletestd = deletestd->sNext; i = 1; } if (i == 1) cout << "没有找到该学生!-_-!\n"; return 0;//不存在该学生找到了 } //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓选择排序↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓// sMessage getminkey(sm p) { sm minp, exchange, perfrom; if (p->sNext == NULL) { return p; } minp = p; perfrom = p; p = p->sNext; while (p) { if (minp->sNo>p->sNo) { exchange = minp; minp = p; perfrom->sNext = p->sNext; minp->sNext = exchange;//minp是较小值的指针 } perfrom = p; p = p->sNext; } return minp;//返回较小值的指针 } sm selectsort(sm head, sm newHead) { sm j, i, temp; if (head->sNext == NULL || newHead == NULL) cout << "没有学生数据,请添加学生\n"; i = head; j = newHead; i = i->sNext; while (i != NULL) {//尾插法 i = getminkey(i); j->sNext = i; temp = i->sNext; i->sNext = NULL; j = i; i = temp; } head->sNext = newHead->sNext; return newHead; } //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓导出程序↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓// void savePersonFile(sm student, sc course) { ofstream *outfile[50], out; int j = 0, k = 0; //写入方式为追加 student = student->sNext; course = course->cNext; while (student != NULL) { string str = "Project16"; //string i; //ostringstream change; str.append(student->sName); //change << j; //i = change.str(); //str.append(i); str.append(".txt"); outfile[j] = new ofstream(str, ios::ate); *outfile[j] << "\t\t\t\t学生信息:" << endl; *outfile[j] << "\t\t学号:" << student->sNo << endl; *outfile[j] << "\t\t姓名:" << student->sName << endl; if (student->sSex = '1'){ *outfile[j] << "\t\t性别:" << "男" << endl; } else { *outfile[j] << "\t\t性别:" << "女" << endl; } *outfile[j] << "\t\t班级:" << student->sClass << endl; *outfile[j] << "\t\t\t\t选修课程:" << endl; while (course != NULL) { for (int l = 0; l < nubofCourse; l++) { if (course->stdNo[l] == student->sNo) { k = 1; *outfile[j] << "\t\t课程名称:" << course->cName << endl; *outfile[j] << "\t\t课程编号:" << course->cNo << endl; *outfile[j] << "\t\t开课老师:" << course->scTeacher << endl; } } course = course->cNext; } if (k == 0) *outfile[j] << "\t\t\t没有选修课程:" << endl; student = student->sNext; (*outfile[j]).close(); j++; } } void saveCourseToLocal(sc head) { ofstream outfile; outfile.open("course.txt"); sc p; p = head->cNext; while (p != NULL) { outfile << p->stdCourstcount << " "; outfile << p->cNo << " "; outfile << p->cName << " "; outfile << p->scTeacher << "\n"; if(p->stdCourstcount>0){ for (int i = 0; i < p->stdCourstcount; i++) { outfile << p->stdNo[i] << "\n"; } } p = p->cNext; } } void readCourseFromLacal(sc head) { fstream fin("course.txt"); if (fin) { sc p; p = head; sc q; int stdCourstcount; string scTeacher, cNo, cName,std; while (fin >>stdCourstcount >> cNo >> cName >> scTeacher) { q = new Courses; if (stdCourstcount > 0) { for (int i = 0; i < stdCourstcount; i++) { fin >>std; q->stdNo[i] = std; } } q->stdCourstcount = stdCourstcount; q->cNo = cNo; q->cName = cName; q->scTeacher = scTeacher; q->cNext = p->cNext; p->cNext = q; } fin.close(); } else { cerr << "打开文件失败!" << endl; } } void saveStudentToLocal(sm head) { ofstream outfile; outfile.open("student.txt"); sm p; p = head->sNext; while (p != NULL) { outfile << p->sNo << " "; outfile << p->sName << " "; outfile << p->sSex << " "; outfile << p->sClass << "\n"; p = p->sNext; } outfile.close(); } void readStudentFromLacal(sm head) { fstream fin("student.txt"); if (fin) { sm p; p = head; sm q; int rowNum = 0; string sTel; char sSex; string sClass,sNo,sName; while (fin >> sNo >> sName >> sSex >> sClass) { q = new StudentMessage; q->sNo = sNo; q->sName = sName; q->sSex = sSex; q->sClass = sClass; q->sNext = p->sNext; p->sNext = q; } fin.close(); } else { cerr << "打开文件失败!" << endl; } } //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓学生选课相关函数↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓// void stdSelectCourse(sc course, string select, string sNo) { //select是课程编号,sNo选课学生学号 int k=0,j = 0; int f = locateCourse(course, select); course = course->cNext; while (course != NULL) { j++; if (j == f) { for (int i = 0; i < course->stdCourstcount; i++) { course->stdNo[course->stdCourstcount] = sNo; cout << "你已经选择了"<<course->cName<<"课程" << endl; k = 1; break; } if(k!=1){ course->stdNo[course->stdCourstcount++] = sNo; cout << "\n\t\t\t"<<course->stdNo[course->stdCourstcount - 1] << "恭喜你选课选课成功!"; } break; } course = course->cNext; } } //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓main函数↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓// void main() { int i; char s1,c; sm sort, newHead; string sname; string numb; StudentMessage std; int flag = 1, cflag = 1; sm head = init(); newHead = init(); sc chead = initC(); aboutMe(); // 导入学生信息 readStudentFromLacal(head); readCourseFromLacal(chead); while (flag == 1) { cout << "\n\n\t\t\t*****************************\n"; cout << "\t\t\t 欢迎来到学生信息管理系统\n"; cout << "\t\t\t*****************************\n"; cout << " -------------------------------------------------------------------------------\n"; cout << "\t\t 选择功能:\n\t\t\t\t1.添加学生\n\t\t\t\t2.查找学生\n\t\t\t\t3.修改学生\n" << "\t\t\t\t4.删除学生\n\t\t\t\t5.学生排序\n\t\t\t\t6.课程管理\n\t\t\t\t7.学生选课\n\t\t\t\t8.学生列表\n\t\t\t\t9.导出学生\n\t\t\t\t0.退出学生管理系统"; cout << " \n\n-------------------------------------------------------------------------------\n"; cout << "\t\t\t请输入你的选择后按Enter键进入:"; cin >> s1; // system("cls"); switch (s1) { case '9': system("cls"); savePersonFile(head, chead); saveCourseToLocal(chead); saveStudentToLocal(head); cout << "\n\n\n----------------------------------导出学生信息----------------------------------\n"; cout << "\n*******************************导出文件成功************************************"; cout << "\n!!!!!!!!!!!!!!!已经存储Project16!!!!!!!!!!!!!!!!"; break; case '8': system("cls"); printfSMessge(head, chead); break; case '0': system("cls"); flag = 0; break; case '1': system("cls"); cout << "\n\n\n-----------------------------------增加学生-------------------------------------\n"; addStudent(head); break; case '2': system("cls"); cout << "\n\n\n----------------------------------查找学生信息----------------------------------\n"; cout << "1.按学号查询\n2.按姓名查询\n请输入你的选择:"; cin >> s1; switch (s1) { case '1': cout << "输入学生学号(6位数字):"; cin >> numb; i = locateStdfByNo(head, numb); if (head->sNext == NULL) { cout << "没有学生数据,请添加学生" << endl; } if (0 != i) printfPerson(head, i, chead); else { cout << "没有找到\n"; } break; case '2': cout << "输入学生姓名:"; cin >> sname; if (head->sNext == NULL) { cout << "没有学生数据,请添加学生" << endl; } i = locateByName(head,sname,chead); if (0 != i) printfPerson(head, i, chead); else { cout << "没有找到\n"; } break; } break; case '3': system("cls"); cout << "\n\n\n----------------------------------更新学生信息----------------------------------\n"; i = updates(head); if (0 != i) printfPerson(head, i, chead); else { cout << "没有找到该学生!-_-!\n"; } break; case '4':system("cls"); cout << "\n\n\n----------------------------------删除学生-------------------------------------\n"; i = deletesMessage(head); break; case '5': system("cls"); cout << "\n\n\n----------------------------------学生排序信息----------------------------------\n"; sort = selectsort(head, newHead); if (sort) printfSMessge(head, chead); //printfSMessge(head, chead); break; case '6': system("cls"); cflag = 1; while (cflag == 1){ cout << "\n\n\n------------------------------课程管理系统-------------------------------------\n"; cout << "\n\t\t输入你选择的功能:\n\t\t\t\t1.添加课程信息\n\t\t\t\t2.查找课程\n\t\t\t\t3.修改课程信息\n\t\t\t\t4.删除课程\n\t\t\t\t5.显示课程\n\t\t\t\t0.退出图书管理\n"; cout << "\n------------------------------课程管理系统-------------------------------------\n\n请输入你的选择:"; cin >> c; switch (c) { case '1': system("cls"); cout << "\n\n\n----------------------------------增加课程-------------------------------------\n"; addCourse(chead); ptfSCourse(chead); break; case '2': system("cls"); cout << "\n\n\n----------------------------------查找课程信息----------------------------------\n"; cout << "输入课程编号:"; cin >> numb; if (chead->cNext == NULL) { cout << "没有课程数据,请添加课程" << endl;} else i = locateCourse(chead, numb); if (i != 0) printfCourse(chead, i); else { cout << "没有找到课程\n"; }break; case '3': system("cls"); cout << "\n\n\n----------------------------------更新课程信息----------------------------------\n"; i = updatesCourse(chead); if (i != 0) printfCourse(chead, i); else { cout << "没有找到该课程课程\n"; } break; case '4': system("cls"); cout << "\n\n\n----------------------------------删除课程--------------------------------------\n"; deletesCourse(chead); break; case '5': system("cls"); cout << "\n\n\n----------------------------------显示课程--------------------------------------\n"; ptfSCourse(chead); break; case '0': system("cls"); cflag = 0; break; default: break; } } break; case '7': system("cls"); cout << "\n\n\n-----------------------------------学生选课-------------------------------------\n"; bool f = true; if(ptfSCourse(chead)!=0){ string stdNo, select; while (f) { if (head->sNext == NULL) { cout << "没有学生信息,选课成功"; f = false; } cout << "请输入你的(学生)的学号:"; cin >> stdNo; f = false; i = locateStdfByNo(head, stdNo); if (0 == i) { cout << "不存在该学生,请重新输入\n"; f = true; } } f = true; while(f){ f = false; cout << "请输入你要选的课程编号:"; cin >> select; if (locateCourse(chead, select) == 0) { cout << "不存在该课程,请重新输入\n"; f = true; ptfSCourse(chead); } } stdSelectCourse(chead,select, stdNo); } break; } cflag = 1; } system("cls"); goodbye(); }
-
HNUST Java 数据库系统课程设计:学生管理系统
2021-01-27 23:27:21目录实验要求叙述系统需求分析系统功能分析系统功能模块设计(划分)与其它系统的关系数据流程图数据库设计数据库需求分析数据库概念结构设计数据库逻辑结构设计数据库的建立各功能模块的设计与实现功能说明用户界面...实验要求叙述
系统需求分析
学校每年都有新生入学、老生毕业,还有其他各种人事变动。如何有效地管理这些学生
的信息,帮助学校和老师掌握学生的情况,这就是学生信息管理系统需要完成的功能。系统功能分析
本系统主要的功能是收集学生的个人信息,以便向教师提供每个学生在校的情况。系统
的主要功能有:
学生个人信息输入,包括:姓名、性别、院系、生日、籍贯、生源所在地等。
学生流动情况的输入,包括:转系、休学、复学、退学、毕业。
奖惩情况的输入。
学生个人情况查询和修改,包括流动情况和奖罚情况。系统功能模块设计(划分)
根据系统功能要求可以将系统分解成几个模
块来分别设计应用程序界面,如图 1 所示。
与其它系统的关系
学生信息管理系统是校园信息管理系统的一
个组成部分。它为其它系统,如班级信息管理系统、
教学管理系统、成绩单系统、宿舍分配系统等,提供学生的基本情况。同时需要其他系统提
供的班级设置和院系设置等情况。这些系统可以使用同一个数据库,直接相互调用所需的数
据。数据流程图
学生信息管理系统的数据流程如图 2 所示。
数据库设计
数据库需求分析
根据上一节的数据流程图,可以列出以下记录学生信息所需的数据项和数据结构:
学生:学号、姓名、性别、生日、籍贯、所在院系、所在班级。
处罚记录:记录号、级别、处罚对象、记录时间、详细描述、是否生效。
奖励记录:记录号、级别、奖励对象、记录时间、详细描述。
学籍变更记录:记录号、变更情况、记录对象、记录时间、详细描述。
所需的外部数据支持:
班级:班级编号、班级名称、所属院系。
院系:代码、名称。数据库概念结构设计
图 3 是本系统所需数据的 E-R 模型图。
数据库逻辑结构设计
根据系统 E-R 图,需要设计 4 个数据表来存放学生的信息。为了系统的完整,系统中
包括了应用程序设计中所需的 2 个外部数据表。为了优化数据表结构,部分字段采用代码形
式,因此需要附加 3 个代码表。这 9 个数据表的结构如表 1 到表 9 所示。
数据库的建立
初始数据的输入
数据表创建成功后,数据库中还没有实际的数据。为了保证外部键能使用,数据需要提
前输入,如院系编号、班级编号、学籍变更代码和奖惩级别等等。
学籍变更代码和奖惩级别的主关键字 CODE 从 0 开始用阿拉伯数字依次编号,便于程
序设计时,采用单选按钮来选择。
本系统中所用到的学籍变更和奖惩级别代码如表 10 至表 12 所示(请设计者完成这些数
据表的逻辑结构)
各功能模块的设计与实现
功能说明
1、学生个人信息输入
2、学籍变更情况的输入
3、奖励情况的输入
4、处罚情况的输入
5、学生个人情况查询和修改用户界面设计
完成数据库创建和功能说明以后,我们可以进行下一步工作,即设计用户界面。由于本
系统管理内容比较简单,且为校园管理信息系统的一部分,因此使用一个窗体不同的标签页
来完成系统要求的 5 项功能。
我们把学生信息管理系统的窗体分成____个主要部分,如图____所示。
1、应用程序主窗体的创建
2、学生个人信息输入界面
3、学籍变更情况输入界面
4、奖励情况输入界面
5、处罚情况输入界面
6、学生个人情况查询和修改界面各功能模块的实现
1、学生个人信息输入
2、学籍变更情况输入
3、奖励情况输入
4、处罚情况输入
5、学生个人情况查询和修改界面演示及讲解(GUI界面设计)
我设计的界面包括登陆界面,注册界面以及学生信息管理(增删查改)界面。
注册界面
此界面通过dialog实例化一个JDialog窗口,将窗口关闭设置为JFrame.HIDE_ON_CLOSE(点击关闭按钮关闭当前窗口)dialog = new JDialog(frame,"注 册",true); dialog.getContentPane().setLayout(null);
dialog.setSize(600,500); //窗口尺寸 dialog.setLocation(620,250); //打开窗口的位置 dialog.setVisible(true); //设置为可见 dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); //关闭当前窗口
通过输入自我创建的账号密码以及教师代码(为防止外校人员进入管理系统而设置的只有本校教师所知道的固定的代码),如果输入的账号与数据库中的账号没有重复,则创建成功,若有重复,则创建失败。
登陆界面
此界面通过frame实例化一个JFrame窗口,将窗口关闭设置为JFrame.EXIT_ON_CLOSE(点击关闭按钮关闭全部窗口)frame = new JFrame(); frame.setResizable(false); frame.setTitle("\u5B66\u751F\u7BA1\u7406\u7CFB\u7EDF"); //学生管理系统的窗口名 frame.setBounds(200, 25, 1500, 1000); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭所有窗口 frame.getContentPane().setLayout(null);
通过输入账号和密码,匹配数据库,若账号不存在,则会输出账号不存在,若账号密码正确则会进入学生管理系统界面。
学生管理系统界面
此界面通过f实例化一个JFrame窗口,然后通过jtbp实例化一个JTabbedPane标签,jp1实例化一个JPanel面板。举一个代码例子如下:
JTabbedPane:表示选项卡面板,可以包含多个组件,但一次只显示一个组件,用户可在组件之间方便地切换。
JPanel:表示一个普通面板,是最灵活、最常用的中间容器。JTabbedPane jtbp = new JTabbedPane(); jtbp.setFont(new Font("华文仿宋", Font.PLAIN, 25)); //设置tab的字体样式及大小 JPanel jp1=new JPanel(); jp1.setLayout(null); jtbp.addTab("学生个人信息", jp1); //将jp1面板添加到jtbp中,并将标签名字设置为“学生个人信息” f.setContentPane(jtbp); //将jtbp添加到定义的JFame窗口中
再此页面进行增删查改的操作。
组件(按钮,文本框,下拉框,文本等)
以 以下界面 为例子。
JLabel (标签组件)
文本:
JLabel lblNewLabel = new JLabel("查询字段"); //显示的单行文本为:查询字段 lblNewLabel.setFont(new Font("华文隶书", Font.PLAIN, 24)); //设置文本的样式及文本大小 lblNewLabel.setBounds(58, 243, 78, 41); //显示的位置 jp1.add(lblNewLabel); //添加至jp1中
图片(背景):
JLabel lblNewLabel_40 = new JLabel("New label"); lblNewLabel_40.setIcon(new ImageIcon("C:\\eclipse_sourse\\DatabaseCourseDesign\\image\\\u6E56\u5357\u79D1\u6280\u5927\u5B665.jpg")); //图片路径 lblNewLabel_40.setBounds(0, 0, 938, 651); jp1.add(lblNewLabel_40);
JButton(按钮)
JButton btnNewButton = new JButton("查询"); //在按钮上显示的文本为:查询 btnNewButton.setFont(new Font("华文隶书", Font.PLAIN, 25)); //设置文本的样式及文本大小 btnNewButton.setBounds(570, 105, 113, 36); //显示的位置 jp1.add(btnNewButton); //添加至jp1中
按钮监听事件:
btnNewButton.addActionListener(e->{ //监听内容 });
TextField(文本框)
TextField textField = new TextField(); textField.setFont(new Font("华文宋体", Font.PLAIN, 25)); //输入的文本的样式及大小 textField.setBounds(319, 105, 213, 36); //显示的位置 jp1.add(textField); //添加至jp1中
获取文本框中的文本内容:
String a = textField.getText();
JComboBox(下拉框)
JComboBox comboBox = new JComboBox(); comboBox.setFont(new Font("华文隶书", Font.PLAIN, 25)); //下拉框选项文本的样式及大小 comboBox.setModel(new DefaultComboBoxModel(new String[] {"学号", "姓名", "学院", "班级"})); //设置下拉框选项 comboBox.setBounds(171, 105, 87, 36); //显示的位置 jp1.add(comboBox_5); //添加至jp1中
获取下拉框中的内容:
String c = (String) comboBox.getSelectedItem();
JPasswordField(密码文本框)
private JPasswordField passwordField; passwordField = new JPasswordField(); passwordField.setFont(new Font("华文仿宋", Font.PLAIN, 25)); passwordField.setBounds(1011, 350, 255, 37); frame.getContentPane().add(passwordField);
获取文本框中内容:
String b=new String(passwordField.getPassword());
相关操作(增删改查)
增加
btnNewButton为“确认”按钮。确认按钮监听事件
btnNewButton.addActionListener(e->{ //学生信息表插入数据 String a = textField.getText(); //学号,获取学号对应文本框的内容 String b = textField_1.getText(); //名字 String c = (String) comboBox_4.getSelectedItem(); //性别,获取下拉框内容 String d = textField_2.getText(); //班级编码 String f = textField_3.getText(); //院级编码 String g = textField_4.getText(); //生日 String h = textField_5.getText(); //籍贯 try { Insert.student_insert(a,b,c,d,f,g,h); //调用包中的Insert类(需要为静态函数) JOptionPane.showMessageDialog(null,"输入成功!"); //输出输入成功 } catch (Exception e1) { e1.printStackTrace(); } });
Insert.student_insert(a,b,c,d,f,g,h); //调用包中的增加函数
JOptionPane.showMessageDialog(null,“输入成功!”); //输出输入成功
java连接数据库的增加操作
public static void student_insert(String a,String b,String c,String d,String f,String g,String h) throws Exception{ //学生信息数据插入数据库 Connection conn=null; Class.forName("com.mysql.cj.jdbc.Driver"); try { conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/student/*数据库名*/?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8 ","root/*账户*/","root/*密码*/"); }catch (SQLException e){ e.printStackTrace(); } String sql = "insert into student_information/*表名*/ (STUDENTID,NAME,SEX,CLASS,DEPARTMENT,BIRTHDAY,NATIVE_PLACE/*列名*/) values ('"+a+"','"+b+"','"+c+"','"+d+"','"+f+"','"+g+"','"+h+"')"; //增加语句 Statement stmt = conn.createStatement(); stmt.executeUpdate(sql); stmt.close(); conn.close(); }
查询
btnNewButton_4为“查询”按钮。查询按钮监听事件btnNewButton_4.addActionListener(e->{ //查询 String a = textField_23.getText(); //获取文本框内容 if(textField_23.getText().trim().equals("")) //如果文本框内容为空 { try { Select.student_select_0(); //调用包中的Select查询类 } catch (Exception e1) { e1.printStackTrace(); } } else if((String) comboBox_5.getSelectedItem() == "学号") { //获取下拉框内容为“学号” try { Select.student_select(a); } catch (Exception e1) { e1.printStackTrace(); } } else if((String) comboBox_5.getSelectedItem() == "姓名") { //获取下拉框内容为“姓名” try { Select.student_select_1(a); } catch (Exception e1) { e1.printStackTrace(); } } else if((String) comboBox_5.getSelectedItem() == "班级") { //获取下拉框内容为“班级” try { Select.student_select_3(a); } catch (Exception e1) { e1.printStackTrace(); } } else { //学院 try { Select.student_select_2(a); } catch (Exception e1) { e1.printStackTrace(); } } });
Select.student_select_0();
java连接数据库的查询操作
public static void student_select_0() throws Exception{ //学号查询信息 JFrame f=new JFrame(); Connection conn=null;/*获取数据库连接,JDBC省略*/ Class.forName("com.mysql.cj.jdbc.Driver"); try { conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/student/*数据库名*/?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8 ","root/*账户*/","root/*密码*/"); }catch (SQLException e){ e.printStackTrace(); } PreparedStatement preparedStatement=conn.prepareStatement("select *from student_information");//sql语句编译预处理 ResultSet res=preparedStatement.executeQuery();//获取ResultSet结果集 res.last();//游标移动到查询到的数据库数据记录的最后一条 int row=res.getRow();//获取记录的总条数 res.beforeFirst();//游标回到第一个记录前的位置 String arr[]= {"学号","姓名","性别","专业","学院","生日","籍贯"};//定义表格的列名称 String comm[][] = new String[row][7];//row行,7列 res.next();//游标回到第一个记录的位置 for(int i=0;i<row;i++) { comm[i][0]=res.getString("STUDENTID"); //从数据库中获取STUDENTID comm[i][1]=res.getString("NAME"); comm[i][2]=res.getString("SEX"); comm[i][3]=res.getString("CLASS"); comm[i][4]=res.getString("DEPARTMENT"); comm[i][5]=res.getString("BIRTHDAY"); comm[i][6]=res.getString("NATIVE_PLACE"); res.next(); } JTable jTable=new JTable(comm,arr); jTable.setPreferredScrollableViewportSize(new Dimension(800,200));//设置可滚动视图的大小 JScrollPane jScrollPane=new JScrollPane(jTable); f.add(jScrollPane,BorderLayout.CENTER);//将滚动条放到窗体 f .setBounds(200, 25, 961, 745); f .setTitle("学生管理系统"); f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); Toolkit tk = Toolkit.getDefaultToolkit(); //更改任务栏图标 Image img = tk.getImage("image/湖南科技大学图标.png"); //所需要的图标路径 f.setIconImage(img); f.setVisible(true);//设置窗体可见 f.validate();//设置组件可见 f.pack();//自动调整组建大小使每个组键都能显示 conn.close(); }
数据库中student_information表中内容:
查询结果:
删除
btnNewButton_6_1为“确认”按钮。确认按钮监听事件btnNewButton_6_1.addActionListener(e->{ //删除 String a = textField_23_1_1.getText(); //学号 int n=0; if(textField_23_1_1.getText().trim().equals("")) //如果从textField_23_1_1获取的内容为空 JOptionPane.showMessageDialog(null,"请输入学号!"); //输出"请输入学号!" else { try { n=Select.student_select_6(a); //调用包中Select查询类 } catch (Exception e2) { e2.printStackTrace(); } if(n==0) { JOptionPane.showMessageDialog(null,"没有该学号!"); } else if(n ==1) { try { Delect.student_delect(a); //调用包中Delect删除类 JOptionPane.showMessageDialog(null,"删除成功!"); } catch (Exception e1) { e1.printStackTrace(); } } } });
Delect.student_delect(a); //调用包中Delect删除类
java连接数据库的删除操作
public static void student_delect(String a) throws Exception{ //删除 Connection conn=null; Class.forName("com.mysql.cj.jdbc.Driver"); try { conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/student/*数据库名*/?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8 ","root/*账户*/","root/*密码*/"); }catch (SQLException e){ e.printStackTrace(); } String sql = "delete from student_information where STUDENTID="+a+""; //删除语句 Statement stmt = conn.createStatement(); stmt.executeUpdate(sql); stmt.close(); conn.close(); }
更改
btnNewButton_6为“确认”按钮。确认按钮监听事件
btnNewButton_6.addActionListener(e->{ //修改数据 int n=0; String a = textField_23_1.getText(); //学号 String b = textField_24.getText(); //姓名 String c = (String) comboBox_4_1.getSelectedItem(); //性别 String d = textField_2_1.getText(); //班级编码 String f = textField_4_1.getText(); //生日 String g = textField_5_1.getText(); //籍贯 String h = textField_3_1.getText(); //院系编码 if(textField_23_1.getText().trim().equals("")) JOptionPane.showMessageDialog(null,"请输入学号!"); else { try { n=Select.student_select_6(a); } catch (Exception e2) { e2.printStackTrace(); } if(n==0) { JOptionPane.showMessageDialog(null,"没有该学号!"); } else if(n==1){ try { if(textField_24.getText().trim().equals("")||textField_2_1.getText().trim().equals("")||textField_4_1.getText().trim().equals("")||textField_5_1.getText().trim().equals("")||textField_3_1.getText().trim().equals("")) JOptionPane.showMessageDialog(null,"有未输入信息!"); else { Update.student_Update(a,b,c,d,f,g,h); //调用包中Update修改类 JOptionPane.showMessageDialog(null,"修改成功!"); } } catch (Exception e1) { e1.printStackTrace(); } } } });
Update.student_Update(a,b,c,d,f,g,h); //调用包中Update修改类
java连接数据库的修改操作
public static void student_Update(String a,String b,String c,String d,String f,String g,String h) throws Exception{ //信息修改 Connection conn=null; Class.forName("com.mysql.cj.jdbc.Driver"); try { conn = DriverManager.getConnection(""jdbc:mysql://127.0.0.1:3306/student/*数据库名*/?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8 ","root/*账户*/","root/*密码*/"); }catch (SQLException e){ e.printStackTrace(); } String sql = "update student_information set NAME='"+b+"',SEX='"+c+"',CLASS='"+d+"',DEPARTMENT='"+h+"',BIRTHDAY='"+f+"', NATIVE_PLACE='"+g+"' where STUDENTID="+a+""; Statement stmt = conn.createStatement(); stmt.executeUpdate(sql); stmt.close(); conn.close(); }
监听事件
按钮监听事件
btnNewButton.addActionListener(e->{ });
回车监听事件
//登录界面监听“密码”键盘输入文本框 passwordField.addKeyListener(new KeyAdapter() { public void keyTyped(KeyEvent e) { if((char)e.getKeyChar()==KeyEvent.VK_ENTER) { //键盘输入为回车键 } } }
其余代码操作
更改任务栏图标
Toolkit tk = Toolkit.getDefaultToolkit(); //更改任务栏图标 Image img = tk.getImage("image/大学图标.png"); //所需要的图标路径 frame.setIconImage(img); //frame为所设置的窗口
所需要更改的部分为getImage中你的图片路径,而我是在中Project创建了一个image文件夹,将图片放至在此文件夹中。
按钮透明化
btnNewButton.setContentAreaFilled(false); //除去默认的背景填充,“登录”按钮
-
上海交通大学出版社python教材答案学生信息管理系统_学生信息管理系统任务书...
2020-12-15 09:25:37学院专业学生姓名学号指导教师职称合作导师职称一、论文题目:学生信息管理系统二、论文的研究内容和任务要求研究内容:1.了解学生的各种信息,然后确定学生...3.对学生信息管理系统的各个模块进行划分,确定各模块...学
院
专业
学生姓名
学号
指导教师
职称
合作导师
职称
一、论文题目:学生信息管理系统
二、论文的研究内容和任务要求
研究内容:
1.
了解学生的各种信息,
然后确定学生信息管理系统要实现的功能,
并对这些功能
能否实现进行详细的分析。
2.
对要完成的学生信息管理系统进行信息采集和分析。
对学生的成绩、
档案、
课程、
交费等信息采集、数据管理、数据库的设计等各项信息进行详细分析。
3.
对学生信息管理系统的各个模块进行划分,确定各模块所要实现的功能。
4.
对学生信息管理系统模块进行描述,确定各个模块之间的关系。
5.
使用选择的数据库工具和开发工具建立系统数据库,完成系统数据库的开发
任务要求:
1.
实现系统设置的功能,即系统登录用户权限的管理和添加以及数据的备份。
2.
实现班级的管理功能,即对班级基本信息的增加、删除和查询。
3.
实现学生档案的管理功能,即对档案基本信息的增加、删除和查询。
4.
实现课程的管理功能,即对课程基本信息的增加、删除和查询。
5.
实现学生成绩的管理功能,
即对成绩基本信息的增加、删除和查询,再对学生考
试违规信息的管理。
6.
实现学生交费的管理功能,即对学生交费基本信息的增加、删除和查询。
7.
实现打印统计信息功能,即对学生的各种信息进行打印,并可导出保存信息。
-
C语言学生成绩管理系统.zip
2020-05-27 00:21:37C语言程序设计结课实验:学生管理系统。本系统通过多模块化设计进行开发,包含三个.c文件(main.c、function.c和extra.c)、一个function.h文件和一个student.txt文件。实现的功能有:对学生的学号自动分配,对学生... -
学生成绩管理系统+论文毕业设计
2021-01-08 20:30:21目的:通过调研目前教学管理系统中的成绩管理子系统,了解成绩管理子系统的业务流程;通过分析比较,结合用户对成绩管理子系统的改进意见与实现情况,运用面向对象思想方法,设计和实现一个满足功能和性能,并有所... -
学生信息管理系统java课程设计(源代码)_员工管理系统java课程设计
2020-11-03 16:18:29JAVA JAVA 程序设计 课程设计报告 同组姓名 课 题: 学生信息管理系统 姓 学 名 号 指导教师设计时间 指导教师 设计时间 评阅意见 目 录 一系统描述 2 1需要实现的功能 3 2设计目的 3 二分析与设计 3 1功能模块划分 3... -
java构建学生管理系统(一)
2018-01-23 09:57:00用java搭建学生管理系统,重要还是对数据库的操作,诸如增删改查等。 1.基本的功能: 老师完成对学生信息的查看和修改,完成对班级的信息的概览。 学生可以看自己的成绩和对自己信息的修改。 学生和老师有完好的... -
基于SSH的中学学生学籍信息管理系统
2021-02-23 00:14:52根据需求分析章节中所描述,不同的爵士舞有着不同的权限和需求,学籍信息管理系统可以划分为用户登录模块、学科管理模块、班级管理模块、教师管理模块、学籍信息管理模块、课表管理模块、课表管理模块、身体素质管理... -
学生信息管理系统java课程设计.pdf
2020-10-30 01:10:38JAVA程序设计 课程设计报告 课 题: 学生信息管理系统 姓 名 学 号 同组姓名 专业班级 指导教师 设计时间 评阅意见 评定成绩 指 目 录 一系统描述2 1需要实现的功能 3 2设计目的 3 二分析与设计3 1功能模块划分 3 2... -
学生信息管理系统java课程设计含源代码.docx
2020-09-29 15:24:09JAVA程序设计课程设计报 学生信息管理系统 名: 口 号: 同组姓名: 专业班级: 1功能模块划分2数据库结构描述3系统详细设计文档4 1 功能模块划分 2 数据库结构描述 3 系统详细设计文档 4 各个模块的实现方法描述 5 测试... -
java swing学生基本信息管理系统
2021-02-04 13:12:15java swing学生基本信息管理系统 功能模块划分 数据库 数据库采用mysql数据库,表结构如下: 页面展示 登录页面 管理员权限: 管理员页面,分贝可以看到学生信息、成绩信息、课程信息,切换账号即退出该账号 ... -
学生信息管理系统C#,B/S版
2015-07-12 16:00:53三种用户,管理员,学生教师,系统从功能上划分可分为以下几大模块:功能模块管理,组权限管理,学生信息管理,课程信息管理,学生成绩管理,授课信息管理,学生信息查询,学生成绩统计等几大模块。以下将对各子模块进行说明... -
学生学籍管理信息系统
2009-05-28 14:51:27本系统是基于C/S模式的采用vb实现的学生管理信息系统(Students Management Information System),以后简称SMIS。数据库服务器由access实现。操作系统:WINDOWS xp;数据库服务器端软件Microsoft Access2000 + SQL... -
C程序设计学生选修课管理系统.docx
2020-10-08 15:23:2114 14 项目名称 项目名称 学院 班级 学生选修课管理系统 建筑工程学院 统本工管1102 黄滔 组内成 TOC \o "1-5" \h \z 员 3 程序功能模块划 分 3 数据设 计 4 主函数代 码 5 程序执行后的部分效果图 小组成员分工 18 ... -
c语言学生成绩管理系统
2013-03-14 22:27:45一、题目: 学生成绩管理系统 二、目的与要求 1. 目的: (1)基本掌握面向过程程序设计的基本思路和方法; (2)达到熟练掌握C语言的基本知识和技能; (3)能够利用所学的基本知识和技能,解决简单的程序设计问题... -
学生信息管理系统java课程设计报告含源代码.docx
2020-11-16 18:04:07课程设计报告 课 题 : 学生信息管理系统 姓 名 学 号 同组姓名 专业班级 指导教师 设计时间 评阅意见 评定成绩 指 页脚 目 录 一系统描述 2 1需要实现的功能 3 2设计目的 3 二分析与设计 3 1功能模块划分 ... -
jsp高校学生考勤管理系统设计与实现(源代码+论文).zip
2020-07-19 15:55:06本高校学生考勤管理系统用JSP+SQL Server 2000开发,开发过程中运用了页面模块化、信息发布的动态生成、静态页面显示等技术开发。 根据系统用户的需求,将本系统按功能划分成三大功能模块:请假系统、考勤系统、后台... -
最新学生信息管理系统java课程设计(含源代码).pdf
2020-10-30 01:13:57课程设计报告 课 题: 学生信息管理系 姓 名 学 号 同组姓名 专业班级 指导教师 设计时间 评阅意见 评定成绩 指 精品文档 精品文档 目 录 一系统描述2 1需要实现的功能 3 2设计目的 3 二分析与设计3 1功能模块划分 ... -
《学生信息管理系统java课程设计含源代码》.doc
2020-01-17 13:15:04课 题: 学生信息管理系统 姓 名 学 号 同组姓名 专业班级 指导教师 设计时间 ? ? ? 评阅意见 ? ? ? ? ? 评定成绩 指导老师签名 年 月 日 ? ? ? ? 目 录 TOC \o "1-2" \h \z \u 一系统描述 2 1需要实现的功能 3 2... -
软件工程课程设计--学生信息管理系统开发设计
2016-06-11 18:52:47本文介绍了学生信息管理系统的整个开发过程。将整体划分为可行性分析、需求分析、总体设计、详细设计等几个阶段,并对各个阶段做了详细的说明。在开发方法上本系统利用了软件工程化的思想和方法,总体上采用传统方法... -
使用JAVA实现的通过方法实现学生与专业关联之学生管理系统
2020-01-10 15:02:471、划分功能模块,根据题目要求设置不同的类,在类中实现相应功能的管理。 2、类的标识要清楚易懂,代码结构要层次分明,代码编辑思路要清晰、整洁。 3、要求Java代码书写、命名符合规范,属性所属数据类型要准确... -
学生成绩管理系统 visualstudio开发工具
2009-03-24 10:26:33学生成绩管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强.数 据安全性好的库。而对于后者则要求应用程序功能完备,易... -
华南理工大VC 实验报告:学生信息管理系统 附文档.rar
2019-07-10 18:56:11华南理工大软件学院2016级VC 实验报告:学生信息管理系统 附文档,这套系统的功能分为两部分,学生部分和教务管理员部分。包括系统功能模块划分;类体系设计,即主要数据和函数功能描述;界面设计等。 1)学生功能... -
学生成绩信息管理系统 ASP.NET (论文+源码)
2010-06-29 17:38:05目的:通过调研目前教学管理系统中的成绩管理子系统,了解成绩管理子系统的业务流程;通过分析比较,结合用户对成绩管理子系统的改进意见与实现情况,运用面向对象思想方法,设计和实现一个满足功能和性能,并有所... -
《学生信息管理系统java课程设计(含源代码)》.doc
2020-01-17 13:15:03课 题: 学生信息管理系统 姓 名 学 号 同组姓名 专业班级 指导教师 设计时间 ? ? ? 评阅意见 ? ? ? ? ? 评定成绩 指导老师签名 年 月 日 ? ? ? ? 目 录 TOC \o "1-2" \h \z \u 一系统描述 2 1需要实现的功能 3 2...
-
java 链表 深拷贝_链表深拷贝
-
vc制作atl com shellextension实现对当前文件中源代码行数的统计.zip
-
导出excel.XLS表格数据到MS SQLSERVER数据库中.zip
-
一天学完MySQL数据库
-
【ssm项目源码】在线医院挂号系统.zip
-
零基础一小时极简以太坊智能合约开发环境搭建并开发部署
-
Galera 高可用 MySQL 集群(PXC v5.6 + Ngin
-
MySQL 主从复制 Replication 详解(Linux 和 W
-
【Python-随到随学】 FLask第一周
-
牛牛量化策略交易
-
java 锁的类型_Java中的锁分类
-
压缩成zip文件和解压缩zip文件的VB程序.rar
-
黑客与画家
-
2020年中国MCN行业发展研究白皮书.pdf
-
实时文件监控上机者是否在一个指定的目录下创建或删除一个文件.zip
-
Amoeba 实现 MySQL 高可用、负载均衡和读写分离
-
java 链表长度_Java实现单向链表
-
Docker从入门到精通
-
【ssm项目源码】学生宿舍管理系统.zip
-
java 重载函数_Java中函数的重载和重写