diff --git a/app-dm/src/pages/ListPages/Training/Operation2.jsx b/app-dm/src/pages/ListPages/Training/Operation2.jsx
index e974465..9f4eb17 100644
--- a/app-dm/src/pages/ListPages/Training/Operation2.jsx
+++ b/app-dm/src/pages/ListPages/Training/Operation2.jsx
@@ -15,6 +15,7 @@ function Operation2() {
const score=localStorage.getItem('score')
const { operateID } = useParams();
const [isTrue,setisTrue]=useState(false)
+ const [TrainScore,serTrainScore]=(null)
const TrainData=JSON.parse(localStorage.getItem('TrainData'))
@@ -90,8 +91,22 @@ function Operation2() {
// 下拉菜单
const [isSubjectDropdownOpen, setIsSubjectDropdownOpen] = useState(false);
+
+ const submitTrain=async()=>{
+ try{
+ const submitTrainSrc=await axios.post('/api/student/EntryTrainScore',{
+ score,
+ TrainScore,
+ operateID,
+ student_ID
+ })
+ }catch{
+ alert('submitTrainSrc出错')
+ }
+ }
const tijiao = ()=>{
+ submitTrain()
setCountdown(0)
localStorage.removeItem('time')
localStorage.removeItem('choice_answers');
@@ -117,8 +132,10 @@ function Operation2() {
const result=detectionSrc.data['result']
if(result==='NO'){
alert('连接失败')
+ TrainScore(0)
}else{
alert('连接成功')
+ TrainScore(50)
}
}catch{
alert('detection出错')
diff --git a/app-dm/src/setupProxy.js b/app-dm/src/setupProxy.js
index 9a95cdf..8a77b83 100644
--- a/app-dm/src/setupProxy.js
+++ b/app-dm/src/setupProxy.js
@@ -4,7 +4,7 @@ module.exports = function(app) {
app.use(
'/api', // 如果请求路径匹配'/api',则进行代理
createProxyMiddleware({
- target: 'http://36.138.114.105:31055/', // 目标后端服务地址
+ target: 'http://127.0.0.1:5000', // 目标后端服务地址
changeOrigin: true,
})
);
diff --git a/python/app.py b/python/app.py
index 0fee7da..26ee5a9 100644
--- a/python/app.py
+++ b/python/app.py
@@ -6,7 +6,7 @@ import paramiko
from teacher_func import *
from student_func import *
-from k8s_func import *
+# from k8s_func import *
from flask import Flask, render_template, request, jsonify, send_from_directory, session
from flask_cors import CORS
@@ -135,7 +135,6 @@ def fetch_result():
-
@app.route('/api/student/score_entry', methods=['POST'])
def score_entry():
data = request.json
@@ -176,6 +175,14 @@ def FindTrain1Src():
result=FindTrain1SrcFunc(ID,testID)
return jsonify({'Src':result})
+@app.route('/api/student/EntryTrainScore',methods=['POST'])
+def EntryTrainScore():
+ score=request.json['score']
+ TrainScore=request.json['trainScore']
+ operateID=request.json['operateID']
+ student_ID=request.json['student_ID']
+ AddTrainScoreFunc(score,TrainScore,student_ID,operateID)
+ return jsonify({'result': '成功'})
# 以下为教师功能—————————————————————————————————————————————————————————————————————
@@ -294,6 +301,8 @@ def GetTrain():
data=getTrainFunc(teacherID)
return jsonify({'data':data})
+
+
@app.route('/api/teacher/FindSrc',methods=["POST"])
def FindSrc():
testID=request.json['key']
@@ -329,34 +338,44 @@ def appendQuestion():
appendQuestionFunc(subject,chapter,inputValue,A,B,C,D,correct,judgeValue)
return '添加成功'
+@app.route('/api/teacher/getTrainData',methods=["POST"])
+def getTrainData():
+ testID=request.json['testID']
+ print(testID)
+ if testID:
+ data = getTrainDataFunc(testID)
+ return jsonify({'data': data})
+ else:
+ pass
-@app.route("/api/teacher/list_pods",methods=['POST']) # 列出pod
-def teacher_list_pods():
- return list_pods()
-@app.route("/api/teacher/list_services") # 列出服务
-def teacher_list_services():
- return list_services()
+
+# @app.route("/api/teacher/list_pods",methods=['POST']) # 列出pod
+# def teacher_list_pods():
+# return list_pods()
+# @app.route("/api/teacher/list_services") # 列出服务
+# def teacher_list_services():
+# return list_services()
# @app.route("/api/teacher/create_pod") # 创建服务 1为项目实训, 0为安装实训
# def teacher_create_pod():
# create_pod(1, "test2")
-@app.route("/api/teacher/DelPods",methods=['POST']) # 删除服务
-def teacher_delete_pod():
- name=request.json['name']
- studentID=name[1:9]
- testID=name[10:]
- delDMFunc(studentID,testID)
- return delete_pod(name=name)
+# @app.route("/api/teacher/DelPods",methods=['POST']) # 删除服务
+# def teacher_delete_pod():
+# name=request.json['name']
+# studentID=name[1:9]
+# testID=name[10:]
+# delDMFunc(studentID,testID)
+# return delete_pod(name=name)
-@app.route("/api/student/check_pod",methods=['POST']) # 检测数据库是否安装成功 若成功,返回OK 否则返回NO
-def teacher_check_pod():
- name=request.json["student_ID"]
- testID=request.json["operateID"]
- name= 'n' + str(name) + '-' + str(testID)
- result = check_dm(name)
- return jsonify(result)
+# @app.route("/api/student/check_pod",methods=['POST']) # 检测数据库是否安装成功 若成功,返回OK 否则返回NO
+# def teacher_check_pod():
+# name=request.json["student_ID"]
+# testID=request.json["operateID"]
+# name= 'n' + str(name) + '-' + str(testID)
+# result = check_dm(name)
+# return jsonify(result)
@app.route('/')
@app.route('/
')
diff --git a/python/k8s_func.py b/python/k8s_func.py
deleted file mode 100644
index c9f76e7..0000000
--- a/python/k8s_func.py
+++ /dev/null
@@ -1,94 +0,0 @@
-import json
-import traceback
-
-import yaml
-from kubernetes import client, config
-from flask import jsonify
-import dmPython
-
-# Load in-cluster config
-
-config.load_incluster_config()
-v1 = client.CoreV1Api()
-namespace = open("/var/run/secrets/kubernetes.io/serviceaccount/namespace").read()
-IP = "36.138.114.105"
-
-
-def list_pods():
- ret = v1.list_namespaced_pod(namespace, watch=False)
- return ({
- "list": [{
- "name": item.metadata.name,
- "ip": item.status.pod_ip
- } for item in ret.items]
- })
-
-
-def list_services():
- ret = v1.list_namespaced_service(namespace)
- return {
- "list": [{
- "ip": item.spec.cluster_ip,
- "name": item.metadata.name,
- "ports": [port.to_dict() for port in item.spec.ports]
- } for item in ret.items]
- }
-
-
-def create_pod(type, name):
- # 读取 pod yaml 文件
- with open(f"assets/type{type}-pod.yaml") as f:
- pod_manifest = yaml.safe_load(f)
- pod_manifest["metadata"]["name"] = name
- pod_manifest["metadata"]["labels"]["app"] = name
- # 创建 Pod
- resp = v1.create_namespaced_pod(
- body=pod_manifest,
- namespace=namespace
- )
- # print(f"pod '{resp.metadata.name}' 创建成功")
- # 创建 Service
- with open(f"assets/type{type}-service.yaml") as f:
- service_pod = yaml.safe_load(f)
- service_pod["metadata"]["name"] = name + "-service"
- service_pod["spec"]["selector"]["app"] = name
-
- resp = v1.create_namespaced_service(
- body=service_pod,
- namespace=namespace
- )
- # print(f"服务 '{resp.metadata.name}' 创建成功")
- if type == 1:
- # 创建成功,再次查询,拿到端口
- service = v1.read_namespaced_service(name=name + "-service", namespace=namespace)
- # print(service)
- # print("访问地址:" + IP + ":" + str(service.spec.ports[0].node_port))
- else:
- service = v1.read_namespaced_service(name=name + "-service", namespace=namespace)
- # print(service)
- # print("访问地址:" + IP + ":" + str(service.spec.ports[0].node_port))
- return "cjcg"
-
-
-# create_pod(0,'20240101-zt-9-0')
-
-def delete_pod(name):
- v1.delete_namespaced_pod(name=name, namespace=namespace)
- print('deleting pod ' + name)
- v1.delete_namespaced_service(name=name + "-service", namespace=namespace)
- return "删除成功"
-
-
-def check_dm(name):
- try:
- service = v1.read_namespaced_service(name=name + "-service", namespace=namespace)
- print(service.spec.cluster_ip)
- db = dmPython.connect(user='SYSDBA', password='SYSDBA', host=service.spec.cluster_ip)
- cursor = db.cursor()
- records = cursor.execute("SELECT * FROM V$VERSION").fetchall()
- for record in records:
- print(record)
- return "OK"
- except:
- traceback.print_exc()
- return "NO"
diff --git a/python/student_func.py b/python/student_func.py
index 99dd3dc..668c835 100644
--- a/python/student_func.py
+++ b/python/student_func.py
@@ -342,6 +342,12 @@ def FindTrain1SrcFunc(ID,testID):
# FindTrain1SrcFunc('20240101','54')
+def AddTrainScoreFunc(ID,testID,score,trainResult):
+ cursor=db.cursor()
+ cursor.execute("UPDATE TRAINSCORE SET TF='true', RESULT=(?), TRAINRESULT=(?) WHERE STUDENT_ID=(?) AND TEST_ID=(?)",(score,trainResult,ID,testID))
+ db.commit()
+ cursor.close()
+ return '添加成功'
diff --git a/python/teacher_func.py b/python/teacher_func.py
index 51a99e0..a23000a 100644
--- a/python/teacher_func.py
+++ b/python/teacher_func.py
@@ -4,7 +4,7 @@ from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
import base64
import datetime
-import k8s_func
+# import k8s_func
db = dmPython.connect(user='SYSDBA', password='dameng!!', host="36.138.114.105", port="32522")
@@ -455,3 +455,11 @@ def appendQuestionFunc(subject,chapter,inputValue,A,B,C,D,correct,judgeValue):
print('插入成功')
return 'INSERT'
+def getTrainDataFunc(testID):
+ cursor = db.cursor()
+ cursor.execute(f'SELECT * FROM TRAINSCORE WHERE TEST_ID=? ',(testID,))
+ data = cursor.fetchall()
+ cursor.close()
+ return data
+
+
From 69ebafcceb0c646953c19abd391d45eeb46d1e7d Mon Sep 17 00:00:00 2001
From: 30404 <3040471803@qq.com>
Date: Wed, 10 Jul 2024 13:32:18 +0800
Subject: [PATCH 2/3] 123
---
.../TeacherPages/Trainmanage/Trainmanage.css | 14 ++++
.../TeacherPages/Trainmanage/Trainmanage.jsx | 83 +++++++++----------
python/app.py | 8 +-
python/teacher_func.py | 12 ++-
4 files changed, 67 insertions(+), 50 deletions(-)
diff --git a/app-dm/src/TeacherPages/Trainmanage/Trainmanage.css b/app-dm/src/TeacherPages/Trainmanage/Trainmanage.css
index 6ac8b0d..9c690f5 100644
--- a/app-dm/src/TeacherPages/Trainmanage/Trainmanage.css
+++ b/app-dm/src/TeacherPages/Trainmanage/Trainmanage.css
@@ -112,4 +112,18 @@
margin-top: 40px;
font-size: 14px;
margin-left: 52px;
+}
+.TrainBox{
+ width: 1000px;
+ height: 500px;
+ background-color: aqua;
+}
+.TrainBox table{
+ margin-top: 200px;
+ margin-left: 400px;
+ width: 500px;
+ text-align: center;
+ border: 1px solid black;
+}
+.TrainBox th{
}
\ No newline at end of file
diff --git a/app-dm/src/TeacherPages/Trainmanage/Trainmanage.jsx b/app-dm/src/TeacherPages/Trainmanage/Trainmanage.jsx
index d9afb0c..4e741a1 100644
--- a/app-dm/src/TeacherPages/Trainmanage/Trainmanage.jsx
+++ b/app-dm/src/TeacherPages/Trainmanage/Trainmanage.jsx
@@ -6,8 +6,9 @@ import React, { useEffect, useState } from 'react';
function TrainManage(){
const teacher_ID=localStorage.getItem('islogin')
+ const [isTrue,setisTrue]=useState(false)
const [Data,setData]=useState([])
- const [showModal, setShowModal] = useState(false);
+ const [showModal, setShowModal] = useState(true);
const [selectedTrain, setSelectedTrain] = useState(null);
const [testID,settestID]=useState()
const [TrainData,setTrainData]=useState()
@@ -39,16 +40,19 @@ function TrainManage(){
}
useEffect(()=>{
- getTrainData()
+ if(isTrue){
+ getTrainData()
+ }else{
+ setisTrue(true)
+ }
},[testID])
+ const Click=(testID,train)=>{
+ settestID(testID)
+ setSelectedTrain(train)
+ }
- const handleTrainClick = (train) => {
- setSelectedTrain(train);
- setShowModal(true);
- };
-
return(
已结束的实训
@@ -56,7 +60,7 @@ function TrainManage(){
{Data&&
{Object.keys(Data).map((key)=>(
- - handleTrainClick(key)}>
+
- Click(Data[key][10],eval(Data[key][11]))}>
实训ID:{Data[key][10]}
实训名称:{eval(Data[key][11])}
关闭时间:{Data[key][6]}
@@ -66,42 +70,33 @@ function TrainManage(){
管理实训
发布实训
}
-
-
- {/* 弹窗组件 */}
- {showModal && (
-
-
-
setShowModal(false)}>×
-
实训信息
-
-
-
- 实训ID |
- 实训名称 |
- 学号 |
- 基础成绩 |
- 实训成绩 |
- 总成绩 |
-
-
-
- {selectedTrain && selectedTrain.students.map((student, index) => (
-
- {selectedTrain[10]} |
- {eval(selectedTrain[11])} |
- {student.studentID} |
- {student.baseScore} |
- {student.trainScore} |
- {student.totalScore} |
-
- ))}
-
-
-
-
- )}
-
+
+
+
+
+ 姓名 |
+ ID |
+ 基础成绩 |
+ 实训成绩 |
+ 总成绩 |
+
+
+
+ {Object.keys(TrainData).map((key)=>(
+
+ {key} |
+ {TrainData[key][0]} |
+ {TrainData[key][4]} |
+ {TrainData[key][5]} |
+ {parseInt(TrainData[key][4])+parseInt(TrainData[key][5])} |
+
+ ))}
+
+
+
+
)
}
diff --git a/python/app.py b/python/app.py
index 26ee5a9..0f93cdc 100644
--- a/python/app.py
+++ b/python/app.py
@@ -342,11 +342,9 @@ def appendQuestion():
def getTrainData():
testID=request.json['testID']
print(testID)
- if testID:
- data = getTrainDataFunc(testID)
- return jsonify({'data': data})
- else:
- pass
+ data = getTrainDataFunc(testID)
+ return jsonify({'data': data})
+
diff --git a/python/teacher_func.py b/python/teacher_func.py
index a23000a..e65db63 100644
--- a/python/teacher_func.py
+++ b/python/teacher_func.py
@@ -456,10 +456,20 @@ def appendQuestionFunc(subject,chapter,inputValue,A,B,C,D,correct,judgeValue):
return 'INSERT'
def getTrainDataFunc(testID):
+ dic={}
cursor = db.cursor()
cursor.execute(f'SELECT * FROM TRAINSCORE WHERE TEST_ID=? ',(testID,))
data = cursor.fetchall()
+ for i in data:
+ cursor.execute(f'SELECT NAME FROM STUDENT WHERE ID=? ', (i[0],))
+ name=cursor.fetchall()[0][0]
+ dic[name]=i
+
+
+ print(dic)
cursor.close()
- return data
+ return dic
+
+# getTrainDataFunc('71')
From 71932bbb296413cb681943595eae3dd090b248a1 Mon Sep 17 00:00:00 2001
From: 30404 <3040471803@qq.com>
Date: Wed, 10 Jul 2024 13:35:56 +0800
Subject: [PATCH 3/3] 123
---
app-dm/src/TeacherPages/Trainmanage/Trainmanage.jsx | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/app-dm/src/TeacherPages/Trainmanage/Trainmanage.jsx b/app-dm/src/TeacherPages/Trainmanage/Trainmanage.jsx
index 4e741a1..02e0e93 100644
--- a/app-dm/src/TeacherPages/Trainmanage/Trainmanage.jsx
+++ b/app-dm/src/TeacherPages/Trainmanage/Trainmanage.jsx
@@ -93,10 +93,8 @@ function TrainManage(){
))}
-
-