学生成绩信息管理系统
<学生成绩管理系统设计>
- 选题背景
在日常生活中,学生成绩信息的管理是每个老师都不可或缺的,总分的统计,平均分的计算等,这些教学任务附带的工作往往给教师带来很大的负担,为了减轻教师上课负担,方便学生和老师的课堂教学,对当前学生成绩信息相关内容设计专门的软件进行管理,减轻教师管理学生成绩的工作量,在日常教学中具有积极的实践意义。
- 系统说明
- 开发工具及环境
本系统在windows是pc机上使用QT+VS的模式进行相关的系统功能设计,使用一种轻量级的数据库sqllite进行数据的存储。
- 开发的环境
软件:VS2019 ,QT5,SQlite Expert personal
硬件:pc机一台
- 功能规划:
编写学生成绩管理系统:有100个以上学生,每个学生至少有2门以上课程成绩(尽可能实现可以增减课程数),能够统计平均成绩,不及格、及格、优、良、中所占比例。实现界面必须图形界面,功能用菜单或按钮形式,输入界面用对话框形式,数据保存在文件或数据库。角色分管理员、老师与学生。
- 系统设计
- 模块划分
登录模块:设计登陆界面,验证登录用户,可以根据密码或者用户名的错误输出做出提示。
成绩管理模块:实现对学生成绩的增删改查功能,可以实现模糊查询成绩信息。
成绩分析模块:实现对成绩优,良,中,及格,不及格比例的统计,求各科的平均分和个人总的平均分。
用户管理:实现对登录用户信息的增,删,改,查功能。
- 系统流程图
- 数据库设计
用户表信息表:
成绩表信息表:
- 系统实现
Sqlclass.cpp代码:
#include "mysqlclass.h"
SqliteDBAOperator::SqliteDBAOperator()
{
QSqlDatabase database;
if (QSqlDatabase::contains("qt_sql_default_connection"))
{
database = QSqlDatabase::database("qt_sql_default_connection");
}
else
{
db = QSqlDatabase::addDatabase("QSQLITE");
QString dbname = QString("C:\\Users\\Administrator\\Desktop\\wang.db");
db.setDatabaseName(dbname);
}
}
SqliteDBAOperator::~SqliteDBAOperator()
{
db.close();
}
bool SqliteDBAOperator::OpenDb(void)
{
//打开数据库
if (db.open() == false) {
qDebug() << "连接数据库失败!";
return false;
}
else
{
qDebug() << "连接数据库成功!";
return true;
}
}
//判断表是否存在
bool SqliteDBAOperator::IsTaBexists(QString& Tabname)
{
QSqlDatabase db = QSqlDatabase::database();
if (db.tables().contains(Tabname))
{
return true;
}
return false;
}
void SqliteDBAOperator::addNewcolumn(QString& columnNameAndproperty)
{
}
//查询数据
QString SqliteDBAOperator::queryTable(QString& str)
{
QSqlQuery sql_query;
QString select_sql = str;
if (!sql_query.exec(select_sql))
{
qDebug() << sql_query.lastError();
return "错误的结果!";
}
else
{
while (sql_query.next())
{
QString pass = sql_query.value(0).toString();
qDebug() << "查询结果为:" << pass;
return pass;
}
}
}
//插入记录
void SqliteDBAOperator::singleinsertdata(QString str1)
{
QSqlQuery query;
if (!query.exec(str1))
{
qDebug() << query.lastError();
}
else
{
qDebug() << "数据插入成功!";
}
}
//数据删除函数
void SqliteDBAOperator::deletedata(QString str)
{
QSqlQuery query;
if (!query.exec(str))
{
qDebug() << query.lastError();
}
else
{
qDebug() << "数据删除成功!";
}
}
void SqliteDBAOperator::closeDb(void)
{
db.close();
qDebug() << "数据库关闭!";
}
QString pingfen(float x) //计算所属评分等级
{
QString a;
if (x >= 60 && x < 70)
{
a = "及格";
}
else if (x >= 70 && x < 80)
{
a = "中等";
}
else if (x >= 80 && x < 90)
{
a = "良好";
}
else if (x >= 90 && x <= 100)
{
a = "优秀";
}
else
{
a = "不及格";
}
return a;
}
界面按钮函数实现代码:
#include "QtWidgetsApplication.h"
#include "mysqlclass.h"
#include <QMessageBox>
#include "QtSql/QsqlQueryModel"
#include "QDebug"
#include "QModelIndex"
QString globaldata; //声明一个全局变量用于窗体间传值
int globaldata2=1;
//用消息盒子提示
SqliteDBAOperator sqldatabase = SqliteDBAOperator();
void mainwindow::tableclick() //主界面tableview选中函数
{
if (globaldata2 ==2)
{
int curRow = ui.tableView->currentIndex().row();//选中行行号
QAbstractItemModel* modessl = ui.tableView->model();
QModelIndex indextemp = modessl->index(curRow, 0);
QString datatemp = modessl->data(indextemp).toString();
ui.lineEdit_user->setText(datatemp);
indextemp = modessl->index(curRow, 1);
datatemp = modessl->data(indextemp).toString();
ui.lineEdit_pass->setText(datatemp);
indextemp = modessl->index(curRow, 2);
datatemp = modessl->data(indextemp).toString();
if (datatemp == "s")
{
ui.radioButton_2->setChecked(true);
}
else if(datatemp=="m")
{
ui.radioButton_3->setChecked(true);
}
else
{
ui.radioButton->setChecked(true);
}
}
else
{
int curRow = ui.tableView->currentIndex().row();//选中行行号
QAbstractItemModel* modessl = ui.tableView->model();
QModelIndex indextemp = modessl->index(curRow, 0);
QString datatemp = modessl->data(indextemp).toString();
ui.lineEdit->setText(datatemp);
indextemp = modessl->index(curRow, 1);
datatemp = modessl->data(indextemp).toString();
ui.lineEdit_2->setText(datatemp);
indextemp = modessl->index(curRow, 2);
datatemp = modessl->data(indextemp).toString();
ui.lineEdit_3->setText(datatemp);
indextemp = modessl->index(curRow, 3);
datatemp = modessl->data(indextemp).toString();
ui.lineEdit_4->setText(datatemp);
indextemp = modessl->index(curRow, 4);
datatemp = modessl->data(indextemp).toString();
ui.lineEdit_5->setText(datatemp);
}
}
QtWidgetsApplication::QtWidgetsApplication(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
}
void QtWidgetsApplication::close()
{
// QApplication::exit();
}
void QtWidgetsApplication::pushbuttonlog() //登录确定按钮
{
bool a = sqldatabase.OpenDb();
if (a)//如果数据库连接成功
{
QString name = ui.lineEdit->text();
QString pass = ui.lineEdit_2->text();
QString sqlcount = QString("SELECT count(password) FROM userinfo where username='%1'").arg(name);
if (sqldatabase.queryTable(sqlcount)!="0")
{
QString sqlquery = QString("select password from userinfo where username='%1'").arg(name);
QString test = sqldatabase.queryTable(sqlquery);
globaldata = sqldatabase.queryTable(QString("select flag from userinfo where username='%1'").arg(name));
sqldatabase.closeDb();
if (pass == test)
{
ui.label->setText(QString("登陆成功"));
mainsign = new mainwindow;
mainsign->show();
this->close();
}
else
{
ui.label->setText(QString("密码错误!"));
}
}
else
{
ui.label->setText(QString("账户名错误!"));
}
}
else
{
ui.label->setText(QString("登陆失败!"));
}
}
void mainwindow::pushbutton1() //主界面插入操作函数
{
{
bool a = sqldatabase.OpenDb();
if (a)//如果数据库连接成功
{
QString name = ui.lineEdit->text();
QString number = ui.lineEdit_2->text();
int course1 = ui.lineEdit_3->text().toInt();
int course2 = ui.lineEdit_4->text().toInt();
int course3 = ui.lineEdit_5->text().toInt();
float average = (course1 + course2 + course3) / 3.0;
ui.lineEdit_6->setText(QString("%1分(%2)").arg(QString::number(average, 'f', 2)).arg(pingfen(average)));
QString sql_insert = QString("INSERT INTO student (name,number,c1,c2,c3,average,dengji) VALUES('%1', '%2',"
" %3, %4, %5, %6, '%7')").arg(name).arg(number).arg(course1).arg(course2).arg(course3).arg(average).arg(pingfen(average));
int ret = QMessageBox::warning(this, "提示", "更新插入一条数据?", QMessageBox::Yes, QMessageBox::No);
if (ret == QMessageBox::Yes)
{
sqldatabase.singleinsertdata(sql_insert);
// this->close();
}
sqldatabase.closeDb();
//更新表数据
clear();
fresh();
}
else {
qDebug() << "数据库连接成功!";
}
}
}
void mainwindow::pushbutton2() //主界面删除操作函数
{
int curRow = ui.tableView->currentIndex().row();//选中行行号
QAbstractItemModel* modessl = ui.tableView->model();
QModelIndex indextemp = modessl->index(curRow, 1);
//这个是一个单元格的值。tostring()----ok
QString datatemp = modessl->data(indextemp).toString();
int ret = QMessageBox::warning(this, "提示",QString("删除用户%1的成绩信息?").arg(datatemp), QMessageBox::Yes, QMessageBox::No);
if (ret == QMessageBox::Yes)
{
sqldatabase.OpenDb();
QString sql_delete = QString("DELETE FROM student WHERE number = %1").arg(datatemp);
sqldatabase.deletedata(sql_delete);
sqldatabase.closeDb();
clear();
fresh();
}
}
void mainwindow::pushbutton3() //主界面修改操作函数
{
int curRow = ui.tableView->currentIndex().row();//选中行行号
QAbstractItemModel* modessl = ui.tableView->model();
QModelIndex indextemp = modessl->index(curRow, 1);
//这个是一个单元格的值。tostring()----ok
QString datatemp = modessl->data(indextemp).toString();
int ret = QMessageBox::warning(this, "提示", QString("修改用户%1的成绩信息?").arg(datatemp), QMessageBox::Yes, QMessageBox::No);
if (ret == QMessageBox::Yes)
{
sqldatabase.OpenDb();
QString sql_delete = QString("DELETE FROM student WHERE number = %1").arg(datatemp);
sqldatabase.deletedata(sql_delete);
QString name = ui.lineEdit->text();
QString number = ui.lineEdit_2->text();
int course1 = ui.lineEdit_3->text().toInt();
int course2 = ui.lineEdit_4->text().toInt();
int course3 = ui.lineEdit_5->text().toInt();
float average = (course1 + course2 + course3) / 3.0;
ui.lineEdit_6->setText(QString("%1分(%2)").arg(QString::number(average, 'f', 2)).arg(pingfen(average)));
QString sql_insert = QString("INSERT INTO student (name,number,c1,c2,c3,average,dengji) VALUES('%1', '%2',"
" %3, %4, %5, %6, '%7')").arg(name).arg(number).arg(course1).arg(course2).arg(course3).arg(average).arg(pingfen(average));
sqldatabase.singleinsertdata(sql_insert);
// this->close();
//更新表数据
sqldatabase.closeDb();
clear();
fresh();
}
}
void mainwindow::pushbutton4() //查询函数
{
QString name = ui.lineEdit->text().trimmed();
QString number = ui.lineEdit_2->text().trimmed();
QString course1 = ui.lineEdit_3->text().trimmed();
QString course2 = ui.lineEdit_4->text().trimmed();
QString course3 = ui.lineEdit_5->text().trimmed();
QString average = ui.lineEdit_6->text().trimmed();
QString sql_inquery=QString("select * from student where name like '%1%' and number like '%2%'and c1 like '%3%' and c2 like '%4%' and c3 like '%5%' and average like "
" '%6%'").arg(name).arg(number).arg(course1).arg(course2).arg(course3).arg(average) ;
sqldatabase.OpenDb();
static QSqlQueryModel* model = new QSqlQueryModel(ui.tableView);
model->setQuery(sql_inquery);
ui.tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
ui.tableView->setModel(model);
sqldatabase.closeDb();
connect(ui.tableView, SIGNAL(clicked(QModelIndex)), this, SLOT(show_list()));
}
void mainwindow::pushbutton5() //优良率计算函数
{
sqldatabase.OpenDb();
float all= sqldatabase.queryTable(QString("select count(*) from student")).toFloat();
float one= sqldatabase.queryTable(QString("select count(*) from student where dengji='优秀'")).toFloat();
float two = sqldatabase.queryTable(QString("select count(*) from student where dengji='良好'")).toFloat();
float three = sqldatabase.queryTable(QString("select count(*) from student where dengji='中等'")).toFloat();
float four = sqldatabase.queryTable(QString("select count(*) from student where dengji='及格'")).toFloat();
float five= sqldatabase.queryTable(QString("select count(*) from student where dengji='不及格'")).toFloat();
ui.label_you->setText(QString("%1").arg(QString::number(one/all, 'f', 2)));
ui.label_liang->setText(QString("%1").arg(QString::number(two / all, 'f', 2)));
ui.label_zhong->setText(QString("%1").arg(QString::number(three / all, 'f', 2)));
ui.label_jige->setText(QString("%1").arg(QString::number(four/ all, 'f', 2)));
ui.label_bujige->setText(QString("%1").arg(QString::number(five / all, 'f', 2)));
sqldatabase.closeDb();
}
void mainwindow::pushbutton6() // 平均成绩计算
{
sqldatabase.OpenDb();
float one = sqldatabase.queryTable(QString("select avg(c1) from student")).toFloat();
float two = sqldatabase.queryTable(QString("select avg(c2) from student")).toFloat();
float three = sqldatabase.queryTable(QString("select avg(c3) from student")).toFloat();
float all = one + two + three;
ui.label_c1->setText(QString("%1").arg(QString::number(one, 'f', 2)));
ui.label_c2->setText(QString("%1").arg(QString::number(two, 'f', 2)));
ui.label_c3->setText(QString("%1").arg(QString::number(three, 'f', 2)));
ui.label_allaverage->setText(QString("%1").arg(QString::number(all, 'f', 2)));
}
void mainwindow::pushbutton7() // 用户管理模式切换
{
if (globaldata2 == 1) //进入用户管理模式
{
globaldata2 = 2;
fresh2();
ui.pushButton_manage->setText("成绩查看");
}
else
{
globaldata2 = 1; //进入成绩管理模式
fresh();
ui.pushButton_manage->setText("用户管理");
}
}
void mainwindow::pushbutton8() //增加成员
{
QString username = ui.lineEdit_user->text();
QString pass = ui.lineEdit_pass->text();
QString flag;
if (ui.radioButton->isChecked())
{
flag = "t";
}
else if(ui.radioButton_2->isChecked())
{
flag = "s";
}
else
{
flag = "m";
}
QString sql_insert = QString(" INSERT INTO userinfo (username,password,flag) VALUES('%1', '%2','%3')").arg(username).arg(pass).arg(flag);
if (sqldatabase.OpenDb())
{
QString sqlcount = QString("SELECT count(password) FROM userinfo where username='%1'").arg(username);
if (sqldatabase.queryTable(sqlcount).toInt() == 0)
{
sqldatabase.singleinsertdata(sql_insert);
fresh2();
}
else
{
qDebug() << "用户已存在";
}
}
sqldatabase.closeDb();
}
void mainwindow::pushbutton9() //删除成员
{
QString username = ui.lineEdit_user->text();
QString pass = ui.lineEdit_pass->text();
QString flag;
if (ui.radioButton->isChecked())
{
flag = "t";
}
else if (ui.radioButton_2->isChecked())
{
flag = "s";
}
else
{
flag = "m";
}
int ret = QMessageBox::warning(this, "提示", QString("删除用户%1的成绩信息?").arg(username), QMessageBox::Yes, QMessageBox::No);
if (ret == QMessageBox::Yes)
{
sqldatabase.OpenDb();
QString sql_delete = QString("DELETE FROM userinfo WHERE username = '%1'").arg(username);
sqldatabase.deletedata(sql_delete);
sqldatabase.closeDb();
}
fresh2();
}
void mainwindow::pushbutton10() //修改成员
{
QString username = ui.lineEdit_user->text();
QString pass = ui.lineEdit_pass->text();
QString flag;
if (ui.radioButton->isChecked())
{
flag = "t";
}
else if (ui.radioButton_2->isChecked())
{
flag = "s";
}
else
{
flag = "m";
}
sqldatabase.OpenDb();
QString sql_delete = QString("DELETE FROM userinfo WHERE username = '%1'").arg(username);
QString sql_insert= QString(" INSERT INTO userinfo (username,password,flag) VALUES('%1', '%2','%3')").arg(username).arg(pass).arg(flag);
sqldatabase.deletedata(sql_delete);
sqldatabase.singleinsertdata(sql_insert);
sqldatabase.closeDb();
fresh2();
}
void mainwindow::pushbutton11() //查询成员
{
QString username = ui.lineEdit_user->text();
QString sql_inquery = QString("select * from userinfo where username like '%1%' ").arg(username);
sqldatabase.OpenDb();
static QSqlQueryModel* model = new QSqlQueryModel(ui.tableView);
model->setQuery(sql_inquery);
ui.tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
ui.tableView->setModel(model);
sqldatabase.closeDb();
connect(ui.tableView, SIGNAL(clicked(QModelIndex)), this, SLOT(show_list()));
}
void mainwindow::fresh() //刷新函数
{
if (!sqldatabase.OpenDb())
{
qDebug() << "mistake1212"; //错误处理
}
static QSqlQueryModel* model = new QSqlQueryModel(ui.tableView);
model->setQuery(QString("select * from student"));
ui.tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
ui.tableView->setModel(model);
sqldatabase.closeDb();
connect(ui.tableView, SIGNAL(clicked(QModelIndex)), this, SLOT(show_list()));
}
void mainwindow::fresh2() //刷新函数2
{
if (!sqldatabase.OpenDb())
{
qDebug() << "mistake1212"; //错误处理
}
static QSqlQueryModel* model = new QSqlQueryModel(ui.tableView);
model->setQuery(QString("select * from userinfo"));
ui.tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
ui.tableView->setModel(model);
sqldatabase.closeDb();
connect(ui.tableView, SIGNAL(clicked(QModelIndex)), this, SLOT(show_list()));
}
运行结果:
登录界面测试:
主界面测试:
成绩管理:
查询成绩:
增加成绩:
修改成绩:
删除信息:
用户管理类似在此不做演示。
测试结果显示,虽然可能还不够完善,但是基本实现了系统要求中的各个功能,能进行成绩和用户信息的基本管理。
用户管理类似在此不做演示。
测试结果显示,虽然可能还不够完善,但是基本实现了系统要求中的各个功能,能进行成绩和用户信息的基本管理。
- 课程小结
过此次课程设计,使我更加扎实的掌握了有关c++程序设计方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了qt的识别和测试;熟悉了c++;了解了新的编程框架和方法。我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。
学生信息成绩管理系统下载链接
学生成绩信息管理系统相关推荐
- 基于JavaWeb学生成绩信息管理系统(附源码资料)-毕业设计
1. 适用人群 本课程主要是针对计算机专业相关正在做毕业设计.或者是需要实战项目的Java开发学习者. 2. 你将收获 提供:项目源码.项目文档.数据库脚本.软件工具等所有资料(在平台的课程附件中进行 ...
- C语言编写学生成绩信息管理系统
用C语言设计简单的学生成绩信息管理系统 介绍 代码 结构体数组的定义 home_page() 函数 add_infor() 函数 browse_infor() 函数 find_infor() 函数 m ...
- 【基于SSM+MySQL+Jsp的高校学生成绩信息管理系统的设计与实现 ---(效果+源代码+数据库+获取 ~ ~】
快速阅读目录 写在前面: (一)效果展示 (1)数据库表一览 (2)部分运行截图 (二)代码展示 (三)说明 写在前面: tips:这是一个基于SSM+MySQL+Jsp等技术的高校学生成绩信息管理系 ...
- 任务2 学生成绩信息管理系统
系列文章 任务2 学生成绩信息管理系统 某班级学生C语言第一次正考的成绩存于数据文件score.txt中,记录了学生学号.姓名和考试成绩,bk.txt文件中记录了补考学生的学号.姓名和补考成绩,编写程 ...
- C#程序代码连接SQL Server数据库实现学生成绩信息管理系统(重置版)
目录 一.创建数据库表和配置SQL数据库连接信息 1.创建数据库表 2.配置数据库连接信息 二.配置程序代码 1.StudentAccount类 2.Student类 3.TeacherAccount ...
- 基于python+tkinter的学生成绩信息管理系统
基于python+tkinter的学生成绩信息管理系统 系统设计 2.开发工具 开发语言:python3.6.8 开发工具:JetBrains PyCharm 2019.1.2 x64 使用三方模块: ...
- 基于jsp+mysql+mybatis+Spring boot简单学生成绩信息管理系统
1.项目开发背景和意义 随着科学技术的快速发展和不断提高,尤其是计算机科学技术的日渐普及,其功能的强大以及运行速度已经被人们深刻地了解.近几年来高校的办学模式多元化和学校规模的扩大,为了实现对学生信息 ...
- C语言学生成绩信息管理系统课程设计报告
C语言课程设计报告 一 .设计目的 学生成绩管理系统 主要功能: (1)能按学期.按班级完成对学生成绩的录入. 修改,删除 (2)能按班级统计学生的成绩,求学生的总分及 平均分,并能根据学生的平均成绩 ...
- JAVA大作业 | 学生成绩信息管理系统
> * *JAVA大作业 | 学生成绩管理系统(含有用户界面)*** ----- ps :多个包写在一起---– package test; import java.awt.*; import ...
- C++文件读写的学生成绩信息管理系统
编译环境:Windows VS2019 由于程序内部实现原因,由程序操作的文件的第一行,不可以被占用.必须空出来. 且文件最后一行不可以有多余的空行. 建议不要直接操作txt文件. #include ...
最新文章
- 存储安全 系统的最后一道防线
- 2018提高组训练Day2
- 淘宝双十一用5个“潜规则”冲击1500亿
- git 工具_Github开源工具分享之自托管GIT服务工具Gogs
- 如何将文件二进制传输至aix服务器,有什么办法把文件从WINDOWS系统中传到AIX中?...
- v4l2 框架下如何设置分辨率_【微学习】低压计量电表如何设置?(下)
- 程序员的进阶课-架构师之路(13)-B-树
- Linux 5.10将解决2038年问题
- linux mysql ssh通道_通过SSH通道来访问MySQL
- NullPointerException空指针异常的理解
- 以下c语言程序片段用于估测cpu的cache参数,优酷【C/C++类】:笔试题目1(最全)...
- unity-Profiler调试Android
- Java 文件上传与下载
- MATLAB GUI中的handles
- 笔记本Win10系统关于启动禁用触控板设置
- 编一个程序,将两个字符串连接起来,不要用strcat函数
- Selenium结合HttpWatch进行Web自动化测试(实时获取页面性能)
- 互联网时代,“羊毛出在狗身上,由猪买单”,打败你的不再是你的对手,而是........
- 关于技嘉雷电扩展卡SSDT驱动教程
- Android中的Glide
热门文章
- PostgreSQL 创建数据库
- python 中的拷贝、浅拷贝与深拷贝
- 农历日期用html怎么显示,怎么显示阴历(农历)日期的js代码?
- wordpress插件-wordpress常用插件大全
- C语言有负号的除法以及求余运算规则
- Java保留2位小数 JS保留2位小数 Java截取2位小数 Math.round((1.0/3)*100)/100.0
- python算方差_python 算方差
- 番外7. 在 Python OpenCV 寻找目标区域以及边缘扩展的解决方案
- 世界各国与中国时差查询
- Python字符串:isspace、istitle、isupper、islower