//需求分析:写一个较为严谨的学生选课系统,实现学生可以选择多门选课课程,并将有效选课结果保存到数据库。学生需要登录后,才能选课。让学生可以在选课系统通过多种方式查询到要选的课程信息。

//选课规则:1、每个学生可以选多门课程,多次选课的总学分不能超过6学分;2、不能重复选择一门课程;3、每一门课程的选课人数都有数量限制,当某门课程的选课名额满时,则应另选课程。4、凭用户名和密码登录,通过提交某一课程号来选课

//总体设计方案:建立三个类:登录类register,选课类studentChooseCourse,数据库工具类JDBCUtil;一个SQL脚本文件用于生成数据库表结构和初始记录,以搭建数据库环境。

登录类register类,负责对用户的身份进行验证;工具类JDBCUtil用于实现连接,你可调用JDBCUtil的getConnection()方法等到链接。

选课类studentChooseCourse用于,实现选课功能。其中包括几个主要方法:

1、actionPerformed(ActionEvent)

用于监听用户“查询”和“提交”操作,并负责调用各种方法对其进行处理

2、createSearchCourse()用于产生图形用户界面

3、processBeforeCommit()用于对用户的“提交”查找进行验证,剔除无效的用户操作

4、tryCommit()负责对有效的“提交”操作,进一步处理,并将有效的操作结果时时保存到数据库,并更新数据库原有信息

//本程序用到的知识点:数据库连接JDBC;SQL建表、插入输入、动态查询;图形用户界面的产生以及处理查询结果集并较好显示;程序设计基础知识。

//代码如下:

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.*;

import javax.swing.*;

import javax.swing.table.DefaultTableModel;

import school.schoolPicture.JdbcUtil;

public class StudentChooseCourse extends JFrame

implements ActionListener {

JTextField jtfSearch = new JTextField(11);

String[] columnNames = new String[] { "课程ID",

"课程名", "学时", "学分", "学期", "性质" };

DefaultTableModel dtmSearch = new

DefaultTableModel(columnNames, 27);

JTable jtSearch = new JTable(dtmSearch);

JScrollPane jspSearch = new

JScrollPane(jtSearch);

JComboBox jcbSearch = new JComboBox();

JTextField jtfSelectedCourse = new

JTextField(10);

Connection con = null;

PreparedStatement ps = null;

ResultSet rs = null;

private static String usrName;

private static String passwrd;

//在构造方法中添加两个参数。以便在"提交"时,将学生的身份连同所选的课程,一同记录在学生选课表中。

public StudentChooseCourse(String usrName, String

passwrd) {

createSearchCourse();

this.usrName = usrName;

this.passwrd = passwrd;

}

public String getUsrName() {

return usrName;

}

public void setUsrName(String usrName) {

this.usrName = usrName;

}

public String getPasswrd() {

return passwrd;

}

public void setPasswrd(String passwrd) {

this.passwrd = passwrd;

}

//根据用户的时间,做出相应的反映

public void actionPerformed(ActionEvent e)

{

String str =

e.getActionCommand();

//清空结果显示区中的内容,如果有的话。

if ("查询".trim().equals(str))

{

int k =

1;

while (k

< 10) {

for

(int i = 1; i < 7; i++) {

jtSearch.setValueAt(null,

k - 1, i - 1);

}

k++;

}

//调用下面的这个方法,在数据库中进行查找,并将结果显示在表格中。

searchAvailableCourse();

} else if ("提交".equals(str))

{

//processBeforeCommit()对用户选课操作进行有效性检验;

//剔除无效操作:如输入无效的课程号,或已经选择了某一课程,已经选满的6学分等各种情况

boolean

effect=processBeforeCommit(); //如果课程存在,且该学生具有选择该课程的资格,即effect为true,进入正式提交程序(tryCommit())

if(effect==true)

{tryCommit();}

}

}

//对用户选课操作进行有效性检验;

public boolean processBeforeCommit(){

//清空原结果显示区中的内容,如果有的话。

int k = 1;

while (k < 10)

{

for (int i =

1; i < 7; i++) {

jtSearch.setValueAt(null,

k - 1, i - 1);

}

k++;

}

//取得用户输入的课程号

String userInput =

jtfSelectedCourse.getText().toString().trim()

.toLowerCase();

//无效操作1:在数据库中的coursexx表中查询该课程号。如果不存在该课程,给出提示。

String sql = "select cno from

coursexx where cno=? ";

boolean flagCourseExist =

false;

try {

ps =

con.prepareStatement(sql);

ps.setString(1,

userInput);

rs =

ps.executeQuery();

flagCourseExist

= rs.next();

} catch (Exception eC) {

eC.printStackTrace();

}

if (!flagCourseExist) {

JOptionPane.showMessageDialog(null,

"该课程不存在,请重新输入");

return

false;

}

//判断该学生选修课已选课程的总学分是否小于6;

//无效操作2:如果已有选课记录,并且总学分大于6学分,该学生不能在选了。

PreparedStatement ps =

null;

sql = "select sum(grade)

"

+

"from (select x.sname , x.cno,k.grade grade "

+

"from coursexx k join choicesxx x "

+

"on k.cno=x.cno and x.sname=?) result";

String grade =null;

try {

ps =

con.prepareStatement(sql);

ps.setString(1,

usrName);

rs =

ps.executeQuery();

while

(rs.next()) {

grade

= rs.getString(1);

if(grade==null){grade="0";}

}

} catch (Exception rrr) {

rrr.printStackTrace();

}

System.out.println("总学分:" +

grade);

if (Integer.parseInt(grade)

> 6) {

JOptionPane.showMessageDialog(null,

"你已经选满6学分,系统将退出");

this.setVisible(false);

return

false;

}

//无效操作3:课程该学生已经选择了某课程,则不能再选该课程了。

sql = "select * from choicesxx

where sname=? and cno=?";

boolean flag = false;

try {

ps =

con.prepareStatement(sql);

ps.setString(1,

this.getUsrName());

ps.setString(2,

userInput);

rs =

ps.executeQuery();

flag =

rs.next();

} catch (Exception eaa) {

eaa.printStackTrace();

}

if (flag) {

JOptionPane.showMessageDialog(null,

"你已经选择了该课程。请另选课程");

return

false;}

//如果以上无效操作都不存在,则返回true,意为这是一个准有效操作

return true;

}

//对有效的提交操作的进行处理

public void tryCommit() {

// userInput为用户输入的课程ID.

String userInput =

jtfSelectedCourse.getText().toString().trim()

.toLowerCase();

// if course still

available(count

// else if course not

available,show Message to student.

PreparedStatement ps;

String sql = "select

(Max-selectedCount) as RemainedCount "

+

"from Coursexx where cno=?";

try {

ps =

con.prepareStatement(sql);

//

取得学生ID或名字,将课程ID存入学生选课表choicesxx

ps.setString(1,

userInput);

rs =

ps.executeQuery();

ResultSetMetaData

meta = rs.getMetaData();

int cols =

meta.getColumnCount();

int

RemainedCount = -1;

while

(rs.next()) {

RemainedCount

= rs.getInt(1);

System.out.println("RemainedCount:"

+ RemainedCount);

}

//如果该课程还有选择的名额,提示单项选课操作成功。

if

(RemainedCount > 0) {

//

save studentId and courseId to student-course table.

//

this.getUsrName();userInput

sql

= "insert into choicesxx values(?,?)";

ps

= con.prepareStatement(sql);

ps.setString(1,

this.getUsrName());

ps.setString(2,

userInput);

ps.executeUpdate();

JOptionPane.showMessageDialog(null,

"选课成功: " + this.getUsrName()

+

" 选了" + userInput + "." + "" + " 还有 " + RemainedCount

+

" 人可以选该课程。");

//

更新课程中已选该课程的人数:即将可选该课程的人数减去1个人。

sql

= "update CourseXX set selectedCount=selectedCount+1 where

cno=?";

ps

= con.prepareStatement(sql);

ps.setString(1,

userInput);

ps.executeUpdate();

con.commit();

//如果该课程已经没有选择名额,提示重新选课

} } catch (Exception es) {

es.printStackTrace();

try {

con.rollback();

} catch

(Exception ey) {

ey.printStackTrace();

}

}

}

//对用户查询课程信息,进行处理,并显示查询结果

public void searchAvailableCourse() {

//

让程序自动选择连接的是Oracle或SqlServer.

if (JDBCUtil.getConnection() !=

null) {

System.out.println(JDBCUtil.getConnection());

con =

JDBCUtil.getConnection();

} else {

con =

JdbcUtil.getConnection();

}

//userInput取得用户输入的信息,selectedItem取得用户选择的查询方式

String userInput =

jtfSearch.getText().toString().trim().toLowerCase();

String selectedItem =

jcbSearch.getSelectedItem().toString().trim();

System.out.println("User

search:" + userInput);

System.out.println("selectedItem:"

+ selectedItem);

String sql = null;

//按用户查询方式,如按课程名,课程ID或学时的查询进行处理;并在表格中实现结果

try {

if

("课程名".equals(selectedItem)) {

sql

= "select cno,cname,hour,grade,term,isNeed from CourseXX where

cname = ?";

ps

= con.prepareStatement(sql);

ps.setString(1,

userInput);

} else if

("课程ID".equals(selectedItem)) {

sql

= "select cno,cname,hour,grade,term,isNeed from CourseXX where cno

= ?";

ps

= con.prepareStatement(sql);

ps.setString(1,

userInput);

} else if

("学时".equals(selectedItem)) {

sql

= "select cno,cname,hour,grade,term,isNeed from CourseXX where hour

= ?";

ps

= con.prepareStatement(sql);

ps.setInt(1,

Integer.parseInt(userInput));

} else if

("学分".equals(selectedItem)) {

sql

= "select cno,cname,hour,grade,term,isNeed from CourseXX where

grade = ?";

ps

= con.prepareStatement(sql);

ps.setInt(1,

Integer.parseInt(userInput));

} else if

("学期".equals(selectedItem)) {

sql

= "select cno,cname,hour,grade,term,isNeed from CourseXX where term

= ?";

ps

= con.prepareStatement(sql);

ps.setString(1,

userInput);

}

System.out.println(sql);

rs =

ps.executeQuery();

con.commit();

ResultSetMetaData

meta = rs.getMetaData();

int cols =

meta.getColumnCount();

String result

= null;

int k =

1;

boolean flag

= false;

//将查询结果以表格的形式显示出来

while

(rs.next()) {

for

(int i = 1; i <= cols; i++) {

result

= rs.getString(i);

System.out.println(result);

jtSearch.setValueAt(result,

k - 1, i - 1);

}

k++;

flag

= true;

}

//如果查询结果集为空,提示用户没有该课程

if (flag ==

false) {

JOptionPane.showMessageDialog(null,

"该课程不存在,请重新输入");

return;

}

} catch (Exception ex)

{

ex.printStackTrace();

try {

con.rollback();

} catch

(Exception er) {

er.printStackTrace();

}

}

}

//产生图形用户界面,以便用户操作

public void createSearchCourse() {

this.setLayout(new

GridLayout(3, 1));

JPanel jp1 = new

JPanel();

jp1.setLayout(new GridLayout(4,

1));

JPanel jp2 = new

JPanel();

JPanel jp3 = new

JPanel();

JPanel jp10 = new

JPanel();

JPanel jp11 = new

JPanel();

JPanel jp12 = new

JPanel();

JPanel jp13 = new

JPanel();

JLabel jlSearch = new JLabel("

学 生 选 课 系 统 ");

jp11.add(jlSearch);

jcbSearch.addItem(new

String("课程名"));

jcbSearch.addItem(new

String("课程ID"));

jcbSearch.addItem(new

String("学时"));

jcbSearch.addItem(new

String("学分"));

jcbSearch.addItem(new

String("学期"));

jp12.add(jtfSearch);

jp12.add(jcbSearch);

JButton jbOK = new

JButton("查询");

jbOK.addActionListener(this);

jbOK.setSize(90, 20);

jp13.add(jbOK);

jp1.add(jp10);

jp1.add(jp11);

jp1.add(jp12);

jp1.add(jp13);

jp2.add(jspSearch);

JLabel jlSelectedCourse = new

JLabel("请输入课程ID:");

JButton jbSelectedCourse = new

JButton("提交");

jbSelectedCourse.addActionListener(this);

jp3.add(jlSelectedCourse);

jp3.add(jtfSelectedCourse);

jp3.add(jbSelectedCourse);

this.add(jp1);

this.add(jp2);

this.add(jp3);

this.setVisible(true);

this.setSize(485, 600);

}

//当某学生有效登录后,启动程序(将学生的登录信息也传过来,以便保存选课操作时使用)

public static void main(String[] args) {

//String

usrName = "xuliang";

//String passwrd =

"123";

new

StudentChooseCourse(usrName, passwrd);

}

}

//---以下为搭建学生选课系统的SQL脚本文件。只需运行一次,就可有完整的数据库表结构和初始记录。

//-----------------------------------------------------------------------------------------

//该脚本针对SQLserver;Oracle的SQL脚本类似,只需将将数据类型如varchar改为varchar2,int改为number等

--table1: registerXU 登录表

drop table registerXu;

create table registerXu (id varchar(20),userName

varchar(20),passWord varchar(20),identify varchar(20));

insert into registerXu values('s001','xuliang','123','学生');

insert into registerXu values('s002','xuliang2','1234','学生');

insert into registerXu values('j001','jack','12345','学生');

insert into registerXu values('001','user','user','学生');

insert into registerXu values('z001','zlm','corejava','老师');

--String sql = "select * from registerXu "

--+ "where userName=? and passWord=? and identify=?";

--table 2:Coursexx课程表

drop table Coursexx;

create table Coursexx(cno varchar(20) primary key,cname

varchar(20),hour Int,

grade Int,term varchar(20),isNeed varchar(20), selectedCount Int

,Max Int);

insert into Coursexx

values('c001','CoreJava',50,5,'201007','NoNecessary',0,50);

insert into Coursexx

values('c002','XML',20,2,'201008','NoNecessary',0,40);

insert into Coursexx

values('c003','HIBERNATE',20,4,'201008','NoNecessary',0,30);

insert into Coursexx

values('c004','SQL',20,4,'201006','NoNecessary',0,5);

insert into Coursexx

values('c005','JDBC',20,2,'201008','NoNecessary',0,3);

insert into Coursexx

values('c006','AJAX',20,2,'201010','NoNecessary',0,1);

insert into Coursexx

values('c007','JSP',100,8,'201009','NoNecessary',0,1

--sql = "select cno,cname,hour,grade,term,isNeed from CourseXX

where cname =

?";

--table 3:学生表--

drop table studentxx;

create table studentxx(sid varchar(20),sname varchar(20) primary

key,sex varchar(20),birthday varchar(20),

className varchar(20), image varchar(20));

insert into studentxx

values('s001','xuliang','male','19901124','sd1003','good');

insert into studentxx

values('s002','xuliang2','male','19851124','sd0910','good');

insert into studentxx

values('j001','jack','male','19881124','sd1003','good');

insert into studentxx

values('001','user','male','19901124','sd1005','good');

insert into studentxx

values('s003','sisi','female','19880124','sd1007','good');

insert into studentxx

values('as003','crystal','female','19880124','asd1007','good');

--table 4:choices学生选课表

drop table choicesxx;

create table choicesxx(

sname varchar(20) references studentxx(sname),cno

varchar(20) references coursexx(cno));

--判断某一个学生已经选的课程的总学分是否小于6分

//----------用户登录类

---------------------------------------

//用途:验证用户是否具有登录系统的资格------------------------

package school;

import javax.swing.*;

import school.schoolPicture.JdbcUtil;

import java.sql.*;

import java.awt.*;

import java.awt.event.*;

public class Register implements ActionListener {

JFrame jf = new JFrame("学生成绩管理与选课系统");

JTextField jtfUserName = new

JTextField(10);

JPasswordField jpfPassWord = new

JPasswordField(10);

JComboBox identify = new JComboBox();

//constructor

public Register() {

CreateRegisterGUI();

}

// deal with user action, when user

check:"登录","取消"or "注册"

public void actionPerformed(ActionEvent e)

{

String str =

e.getActionCommand();

if (str.equalsIgnoreCase("登录"))

{

//当用户点击登录时,调用以下方法去数据库做匹配

processLogin();

} else if

(str.equalsIgnoreCase("取消")) {

jtfUserName.setText("");

jpfPassWord.setText("");

} else if

(str.equalsIgnoreCase("注册")) {

new

CreateLogin();

}

}

//当用户点击登录时,调用以下方法去数据库做匹配

public void processLogin() {

// create connection to the

database.

Connection con = null;

// Connection con =

JDBCUtil.getConnection();

//让程序自动连接相应的数据库,以避免连接数据库时频繁改动连接程序

if (JdbcUtil.class == null)

{

//连接达内Oracle数据库

con =

JdbcUtil.getConnection();

} else {

//连接本地SQLSERVER数据库

con =

JDBCUtil.getConnection();

}

// write sql sentence

String usrName =

jtfUserName.getText().trim();

String passwrd = new

String(jpfPassWord.getPassword()).trim();

String ident =

identify.getSelectedItem().toString().trim();

String sql = "select * from

registerXu "

+

"where userName=? and passWord=? and identify=?";

System.out.println(usrName +

":" + passwrd + ":" + ident);

// create object of

PreparedStatement

try {

PreparedStatement

ps = con.prepareStatement(sql);

// Prepare

parameter for the sql

ps.setString(1,

usrName);

ps.setString(2,

passwrd);

ps.setString(3,

ident);

// send

parameter to compiler to compile.

ResultSet rs

= ps.executeQuery();

StringBuffer

sb = new StringBuffer("");

ResultSetMetaData

meta = rs.getMetaData();

int cols =

meta.getColumnCount();

//you can use

another simple way to check whether the people has records in

database:

//define a

boolean flag=false, if has record change it

//to

true;otherwise, if flag=flase,showMessage("Input ERROR")

while

(rs.next()) {

for

(int i = 1; i < cols; i++) {

sb.append(meta.getColumnName(i));

sb.append(rs.getString(i));

}

}

if

(sb.length() < 1) {

JOptionPane.showMessageDialog(null,

"用户名或密码错误");

} else if

(sb.length() >= 1) {

if

(ident.equals("student")) {

//if

he or she is a student, and usrName-passwrd alright, then go to

学生选课系统

new

StudentChooseCourse(usrName, passwrd);

jf.setVisible(false);

//

new StudentEntered();

}

else if (ident.equals("teacher")) {

//

new TeacherEntered(usrName,passwrd);

new

TeacherEntered();

jf.setVisible(false);

}

else if (ident.equals("admin")) {

//

go to administrator pages.

}

}

} catch (Exception er) {

er.printStackTrace();

}

}

//产生图形用户界面

public void CreateRegisterGUI() {

jf.setLayout(new

GridLayout(5, 1));

JPanel jp1 = new

JPanel();

JLabel jl1 = new

JLabel("学生成绩管理系统");

jp1.add(jl1);

jf.add(jp1);

JPanel jp2 = new

JPanel();

JLabel jl2 = new

JLabel("用户名:");

jp2.add(jl2);

jp2.add(jtfUserName);

jf.add(jp2);

JPanel jp3 = new

JPanel();

// JPasswordField jpfPassWord =

new JPasswordField(10);

JLabel passWord = new

JLabel("密 码:");

jp3.add(passWord);

jp3.add(jpfPassWord);

jf.add(jp3);

JPanel jp4 = new

JPanel();

JLabel jl4 = new

JLabel("身 份:");

// identify.addItem(new

String("学生 "));

identify.addItem(new

String("student "));

// identify.addItem(new

String("老师 "));

identify.addItem(new

String("teacher "));

// identify.addItem(new

String("管理员 "));

identify.addItem(new

String("admin "));

identify.addActionListener(this);

jp4.add(jl4);

jp4.add(identify);

jf.add(jp4);

JPanel jp5 = new

JPanel();

JButton enter = new

JButton("登录");

enter.addActionListener(this);

JButton cancel = new

JButton("取消");

cancel.addActionListener(this);

JButton regist = new

JButton("注册");

regist.addActionListener(this);

jp5.add(enter);

jp5.add(cancel);

jp5.add(regist);

jf.add(jp5);

jf.setSize(400, 250);

jf.setVisible(true);

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public static void main(String[] args) {

new Register();

}

}

//--------- 选课系统多次调用到的本类JDBCUtil的getConnection方法--------------------------------

//---------通过该工具类选课系统连接到数据库。JdbcUtil类与次类似,连接的是Oracle数据库----------

import java.sql.*;

public class JDBCUtil {

public JDBCUtil() {

}

PreparedStatement ps = null;

ResultSet rs = null;

static {

String driverName =

"com.microsoft.sqlserver.jdbc.SQLServerDriver";

try {

Class.forName(driverName);

} catch (ClassNotFoundException

e) {

e.printStackTrace();

}

}

public static Connection getConnection() {

Connection connection =

null;

String url =

"jdbc:sqlserver://localhost:1433; DatabaseName=master";

String user = "sa";

String password =

"sd100301";

// String

password="Foolish004";

try {

connection =

DriverManager.getConnection(url, user, password);

connection.setAutoCommit(false);

System.out.println(connection);

} catch (SQLException e)

{

e.printStackTrace();

}

return connection;

}

public static void main(String[] args) {

new

JDBCUtil().getConnection();

}

}

java国际软件工程师_JAVA国际软件工程师--学生选课系统相关推荐

  1. java选课系统代码mysql_Java swing mysql实现的学生选课系统项目源码附带视频运行教程...

    大家好,今天给大家演示一下由Java swing实现的一款简单的学生选课系统,数据库采用的是mysql,实现了简单的选课功能,后面的课程中我们会出Java web版的学生选课系统,今天先看Java s ...

  2. 基于Java毕业设计学生选课系统源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计学生选课系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计学生选课系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  3. java学生选课系统课程设计报告_Java语言程序设计课程设计-学生选课系统

    <Java语言程序设计课程设计-学生选课系统>由会员分享,可在线阅读,更多相关<Java语言程序设计课程设计-学生选课系统(23页珍藏版)>请在人人文库网上搜索. 1.10届 ...

  4. 软件可用性测试mantis,学生选课系统-软件可用性测试实验.doc

    学生选课系统-软件可用性测试实验 实验报告 课程名称:软件测试方法和技术 学生姓名: 学号: 院系:计算机 班级:1202 组别:1 任课教师:张建东 指导老师:张建东 目录 一.实验目的: 实验组成 ...

  5. java选课系统_java实现学生选课系统

    本文为大家分享了java实现学生选课系统的具体代码,供大家参考,具体内容如下 案例要求: 学生(学号,姓名,专业,所选课程{<3}) 老师(工号,姓名,所教课程{<3}) 课程(课程号,课 ...

  6. 基于java的学生选课系统_基于Java的学生选课系统.doc

    课程设计 (Java程序设计) 题 目 基于Java的学生选课系统 基于Java的学生选课系统 摘要:课程管理系统是一个学校中不可缺少的部分.课程管理系统应该能够为用户提供充足的信息和快捷的查询手段. ...

  7. Java Swing Mysql学生选课系统

    此篇是基于Java Swing Mysql学生选课系统的第二阶段 主要功能: 课程添加.编辑.查询.删除.选课.退课.修改已选课程.以及老师.管理员.学生三种角色的权限分配 开发环境: 开发工具:Ec ...

  8. jsp servlet mysql实现的java学生选课系统源码附带高清视频指导运行教程及论文

    今天给大家演示一下一款由jsp servlet mysql实现的学生选课系统,系统分为教师和学生两个角色,教师登录后可管理学生信息.课程信息.选课信息,设置必修学分的下限和上限等功能,学生登录后可选课 ...

  9. 数据库小组作业-学生选课系统(java+java swing+mysql实现)

    最近数据库老师要求组一个小组并且完成一个题目 我们组选择的是学生选课系统,恰巧这学期刚好在学java,所以就用java swing来写界面,数据库使用mysql 注:开发中使用的idea版本为2020 ...

  10. 选课系统java源文件_学生选课系统 - WEB源码|JSP源码/Java|源代码 - 源码中国

    压缩包 : 选课系统代码+论文.rar 列表 选课系统代码+论文\test\AddClass.jsp 选课系统代码+论文\test\Addcourse.jsp 选课系统代码+论文\test\addst ...

最新文章

  1. python获取天气信息写入原有的excel文档
  2. 如何解决ado.net entity framework的使用,再别的调用项目中依然正常
  3. MPAndroidChart绘制图形表
  4. Objective-C 基础,类和对象,方法和消息,已声明的属性和存取方法,块对象,协议和范畴类,预定义类型和编码策略...
  5. 一个封锁操作被对 wsacancelblockingcall 的调用中断_备战秋招——操作系统(3)
  6. sqlite:WAL模式
  7. Matlab深度学习——安装deep learning toolbox工具箱
  8. 数学建模之层次分析法(含MATLAB代码)
  9. 一直在寻找:我亲爱的朋友。
  10. 自己的作品界面---类似360杀毒软件的界面
  11. 学好Python的优秀资源推荐
  12. 爬取NBA球员生涯数据,并在Excel中可视化显示
  13. Android简单的计步器应用实现
  14. 微信小程序微商城(九):微信授权并实现个人中心页面页面
  15. Redis五大数据结构的类型的使用
  16. Java计算商品的促销日期
  17. Flutter Container 组件
  18. 第十九节 串口通讯与终端设备
  19. 斐波拉契的第100项
  20. 重温WIN32 API ------ 窗口上绘制位图文件

热门文章

  1. ROBOGUIDE软件:FANUC机器人弧焊焊接起始点接触寻位虚拟仿真
  2. 【日常折腾】Y7000P拆机-更换触控板
  3. rs485全双工中只接一组_关于RS485接口的十八个经典问答!看你能答出几个!
  4. 机械革命Z2 键盘失灵
  5. 通信工程毕业干计算机网络,通信工程专业毕业后能做什么?
  6. 奔图3305_奔图Pantum P3305DN打印机驱动官方版
  7. mysql 生成假数据_一个好玩的假数据生成器mimesis
  8. TwinCAT 软件安装级别的简要介绍,倍福FTP
  9. Android音频术语
  10. FastDFS存储目录迁移方案