Skip to content

Commit

Permalink
增加CCF计算领域高质量科技期刊分级目录;修复CCF推荐期刊中不同领域存在重复的期刊;重新修复CCF推荐国际学术期刊目录中的谬误,标注改名…
Browse files Browse the repository at this point in the history
…和已停刊。
  • Loading branch information
hitfyd committed Aug 30, 2022
1 parent fe6f4c7 commit a3f97ba
Show file tree
Hide file tree
Showing 9 changed files with 35,218 additions and 35,257 deletions.
57 changes: 10 additions & 47 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,70 +10,33 @@

针对上述需求,为了科研人员更方便直观的获取国际学术期刊影响力评价,因此在2020年中科院分区表升级版的基础之上,补充展示了期刊影响因子和国际期刊预警等级。

## 可执行版本

提供两种可执行版本:

1. ShowJCR.7z,解压到任意目录下执行ShowJCR.exe;
2. ShowJCR.exe,使用[Enigma Virtual Box ](http://www.enigmaprotector.com/)对所有依赖执行封包,单一程序即可独立执行。

## 数据来源

中科院分区表升级版数据来源于[advanced.fenqubiao.com](http://advanced.fenqubiao.com),信息包括期刊是否为Review、是否为Open Access、Web of Science收录类型(分为SCI、SCIE、SSCI、ESCI等)、是否为Top期刊、大类分区信息、(一至多个)小类分区信息。

JCR期刊影响因子更新到2021版(2022年6月28日发布),并保留2020年的影响因子。

国际期刊预警等级来源于[《国际预警期刊名单》](https://earlywarning.fenqubiao.com/),处理时删去了期刊的大类学科分区信息。
国际期刊预警等级来源于[《国际预警期刊名单》(2020、2021年)](https://earlywarning.fenqubiao.com/),处理时删去了期刊的大类学科分区信息。

中国计算机学会(CCF)[推荐国际学术会议和期刊目录](https://www.ccf.org.cn/Academic_Evaluation/By_category/)[推荐中文科技期刊目录](https://www.ccf.org.cn/ccftjgjxskwml/)
中国计算机学会(CCF)[推荐国际学术会议和期刊目录(2019年)](https://www.ccf.org.cn/Academic_Evaluation/By_category/)[推荐中文科技期刊目录(2019年)](https://www.ccf.org.cn/ccftjgjxskwml/)[计算领域高质量科技期刊分级目录(2022年)](https://www.ccf.org.cn/ccftjgjxskwml/)

### SQLite3数据库生成步骤

国际期刊信息的原始数据随附在源代码中。

SQLite3创建"jcr.db"并进入到SQLite命令行:

```sqlite
chcp 65001 #切换Windows命令行编码为UTF-8
sqlite3 jcr.db
```

在v2021-1.2及其之前版本,在SQLite命令行中,将原始数据导入到"jcr.db":

```sqlite
.separator ',' #设置','为数据分隔符,否则导入csv数据时sqlite无法区分列
.import FQBJCR2020-UTF8.csv fqb #必须最先导入
.import JCR2019.csv jcr
.import Warning.csv warning
.import CCF2019-UTF8.csv ccf
.import CCFChinese2019-UTF8.csv ccfchinese
.import JCR2019extend-UTF8.csv jcrextend
```
使用[DB Browser for SQLite](https://sqlitebrowser.org/)创建jcr.db,csv原始数据的导入顺序为FQBJCR2021、CCF2019、CCFChinese2019、CCFT2022、JCR2021、JCR2020。

在v2021-1.3版本,原始数据进行合并,将FQBJCR2020和Warning信息合并一个表,CCF信息合并到一个表,JCR2019信息合并到一个表。修改后的导入逻辑为:

```sqlite
.separator ',' #设置','为数据分隔符,否则导入csv数据时sqlite无法区分列
.import FQBJCR2020+Warning-UTF8.csv fqb #必须最先导入
.import JCR2019-UTF8.csv jcr
.import CCF2019-UTF8.csv ccf
```

在v2022-1.0版本,导入逻辑类似于v2021-1.3版本(也可以使用[DB Browser for SQLite](https://sqlitebrowser.org/)工具手动导入):
## 运行依赖

```sqlite
.separator ',' #设置','为数据分隔符,否则导入csv数据时sqlite无法区分列
.import FQBJCR2021+Warning-UTF8.csv fqb #必须最先导入
.import JCR2020-UTF8.csv jcr
.import CCF2019-UTF8.csv ccf
```
1. **jcr.db**,期刊信息数据库;
2. Qt相关依赖(使用windeployqt自动生成后可以裁剪)。

在v2022-1.1版本,使用[DB Browser for SQLite](https://sqlitebrowser.org/)工具对数据集进行修改。
## 可执行版本

## 运行依赖
提供两种可执行版本:

1. **jcr.db**,期刊信息数据库
3. Qt相关依赖(使用windeployqt自动生成后可以裁剪)
1. ShowJCR.7z,解压到任意目录下执行ShowJCR.exe
2. ShowJCR.exe,使用[Enigma Virtual Box ](http://www.enigmaprotector.com/)对所有依赖执行封包,单一程序即可独立执行

## 使用说明

Expand Down
17 changes: 7 additions & 10 deletions sqlitedb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,21 +57,18 @@ QList<Pair> SqliteDB::getJournalInfo(const QString &journalName, bool allowSelec
if (!query.exec(select)){
qWarning() << "Error: Failed to select " << table << __FUNCTION__ << database.lastError();
}
if (query.first()){
//CCF推荐期刊中不同领域存在重复的期刊
while (query.next()){
QStringList fieldNames = tableFields[tableNames.indexOf(table)];
foreach(const QString &fieldName, fieldNames){
QString value = query.value(fieldName).toString();
if(value.isEmpty() || value.isNull())
continue;
Pair pair(fieldName, query.value(fieldName).toString());
//排除字段名称重复的数据
if(!journalInfoFieldNames.contains(pair.first)){
// //如果该字段是主键,则将主键数据放在最前面,用于后续判断是否需要二次查询
// if(pair.first == defaultPrimaryKeyValue)
// journalInfo.insert(0, pair);
// else
journalInfo << pair;
journalInfoFieldNames << pair.first;
//排除字段名称重复的数据,主要是避免defaultPrimaryKeyValue(Jouranl字段)重复出现
if(!journalInfoFieldNames.contains(fieldName) || fieldName != defaultPrimaryKeyValue){
Pair pair(fieldName, query.value(fieldName).toString());
journalInfo << pair;
journalInfoFieldNames << fieldName;
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion sqlitedb.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class SqliteDB : public QObject
QStringList tableNames; // 存储数据库中所有表的名字
QList<QStringList> tableFields; // 存储表对应的字段名称,存储顺序和tableNames一一对应
QList<Pair> tablePrimaryKeys; // 存储表(Key)及其对应的主键字段名称(T),注意一个表可能不止一个主键
QList<QStringList> allKeyNames; //存储表及其主键列中的所有值,存储顺序和tablePrimaryKeys一一对应,可以组合成当前数据库中包含的所有有效期刊名称,用于输入联想和判断输入期刊名称是否正确
QList<QStringList> allKeyNames; //存储表及其主键列中的所有值,存储顺序和tablePrimaryKeys一一对应,用于判断输入期刊所应查询的tablePrimaryKeys
QStringList allJournalNamesList; //组合成当前数据库中包含的所有有效期刊名称,用于输入联想和判断输入期刊名称是否正确

void selectTableNames(); // 查询数据库获取所有表名称,存储在tableNames中
Expand Down
Loading

0 comments on commit a3f97ba

Please sign in to comment.