java国际软件工程师_JAVA国际软件工程师--学生选课系统
//需求分析:写一个较为严谨的学生选课系统,实现学生可以选择多门选课课程,并将有效选课结果保存到数据库。学生需要登录后,才能选课。让学生可以在选课系统通过多种方式查询到要选的课程信息。
//选课规则: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国际软件工程师--学生选课系统相关推荐
- java选课系统代码mysql_Java swing mysql实现的学生选课系统项目源码附带视频运行教程...
大家好,今天给大家演示一下由Java swing实现的一款简单的学生选课系统,数据库采用的是mysql,实现了简单的选课功能,后面的课程中我们会出Java web版的学生选课系统,今天先看Java s ...
- 基于Java毕业设计学生选课系统源码+系统+mysql+lw文档+部署软件
基于Java毕业设计学生选课系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计学生选课系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S架构 开发语言: ...
- java学生选课系统课程设计报告_Java语言程序设计课程设计-学生选课系统
<Java语言程序设计课程设计-学生选课系统>由会员分享,可在线阅读,更多相关<Java语言程序设计课程设计-学生选课系统(23页珍藏版)>请在人人文库网上搜索. 1.10届 ...
- 软件可用性测试mantis,学生选课系统-软件可用性测试实验.doc
学生选课系统-软件可用性测试实验 实验报告 课程名称:软件测试方法和技术 学生姓名: 学号: 院系:计算机 班级:1202 组别:1 任课教师:张建东 指导老师:张建东 目录 一.实验目的: 实验组成 ...
- java选课系统_java实现学生选课系统
本文为大家分享了java实现学生选课系统的具体代码,供大家参考,具体内容如下 案例要求: 学生(学号,姓名,专业,所选课程{<3}) 老师(工号,姓名,所教课程{<3}) 课程(课程号,课 ...
- 基于java的学生选课系统_基于Java的学生选课系统.doc
课程设计 (Java程序设计) 题 目 基于Java的学生选课系统 基于Java的学生选课系统 摘要:课程管理系统是一个学校中不可缺少的部分.课程管理系统应该能够为用户提供充足的信息和快捷的查询手段. ...
- Java Swing Mysql学生选课系统
此篇是基于Java Swing Mysql学生选课系统的第二阶段 主要功能: 课程添加.编辑.查询.删除.选课.退课.修改已选课程.以及老师.管理员.学生三种角色的权限分配 开发环境: 开发工具:Ec ...
- jsp servlet mysql实现的java学生选课系统源码附带高清视频指导运行教程及论文
今天给大家演示一下一款由jsp servlet mysql实现的学生选课系统,系统分为教师和学生两个角色,教师登录后可管理学生信息.课程信息.选课信息,设置必修学分的下限和上限等功能,学生登录后可选课 ...
- 数据库小组作业-学生选课系统(java+java swing+mysql实现)
最近数据库老师要求组一个小组并且完成一个题目 我们组选择的是学生选课系统,恰巧这学期刚好在学java,所以就用java swing来写界面,数据库使用mysql 注:开发中使用的idea版本为2020 ...
- 选课系统java源文件_学生选课系统 - WEB源码|JSP源码/Java|源代码 - 源码中国
压缩包 : 选课系统代码+论文.rar 列表 选课系统代码+论文\test\AddClass.jsp 选课系统代码+论文\test\Addcourse.jsp 选课系统代码+论文\test\addst ...
最新文章
- python获取天气信息写入原有的excel文档
- 如何解决ado.net entity framework的使用,再别的调用项目中依然正常
- MPAndroidChart绘制图形表
- Objective-C 基础,类和对象,方法和消息,已声明的属性和存取方法,块对象,协议和范畴类,预定义类型和编码策略...
- 一个封锁操作被对 wsacancelblockingcall 的调用中断_备战秋招——操作系统(3)
- sqlite:WAL模式
- Matlab深度学习——安装deep learning toolbox工具箱
- 数学建模之层次分析法(含MATLAB代码)
- 一直在寻找:我亲爱的朋友。
- 自己的作品界面---类似360杀毒软件的界面
- 学好Python的优秀资源推荐
- 爬取NBA球员生涯数据,并在Excel中可视化显示
- Android简单的计步器应用实现
- 微信小程序微商城(九):微信授权并实现个人中心页面页面
- Redis五大数据结构的类型的使用
- Java计算商品的促销日期
- Flutter Container 组件
- 第十九节 串口通讯与终端设备
- 斐波拉契的第100项
- 重温WIN32 API ------ 窗口上绘制位图文件