Python网络socket编程案例----学生--教师在线批改作业

Python网络socket编程案例----学生–教师在线批改作业

可用作课程设计,毕业设计,文章末尾有代码和程序

标题1、使用Python语言

使用Python的socket库进行网络编程,同时结合图形界面库如Tkinter来实现交互界面。

标题2、交互方便、使用方便

设计直观的用户界面,使用户可以方便地登录、提交作业和查看成绩。界面需要清晰明了,易于操作。

标题3、图形界面设计

利用Tkinter或PyQt等Python库来创建图形用户界面。界面应当美观、易用,并能显示网络信息传递的结果。

4、项目设计

项目主要分为两个端:学生端和教师端。各端的主要功能如下:

学生端

登录:学生通过输入学号和姓名进行登录。
提交作业:学生可以上传作业(jpg图片)到教师端的列表里。
查看成绩:学生可以查看自己每一次作业的成绩。

教师端

登录:教师通过输入账号和密码进行登录。
批改作业:教师可以查看学生提交的作业并给出ABCD四个等级的评价。
发送评价:教师将评价发送给对应学生。

5、具体实现细节

1. 网络交互部分

学生端和教师端通过TCP协议进行通信:确保数据传输的可靠性。
服务器端:用于处理登录验证、接收作业、发送评价等功能。

2. 图形界面部分

Tkinter库:用于创建简单的图形界面,显示登录窗口、提交作业窗口和查看成绩窗口。
界面布局和设计:尽量简洁美观,方便用户操作。
服务端代码以及运行效果:
此外,还需要导入threading模块来处理多线程。

项目结构:
在这里插入图片描述

在这里插入图片描述
学生端代码以及运行效果:
在这里插入图片描述
运行效果如下:
在这里插入图片描述
在这里插入图片描述
选择作业照片:
在这里插入图片描述
在这里插入图片描述
作业上传成功:
在这里插入图片描述
教师端代码以及运行效果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
出现了一个bug,无法正常显示作业列表
在这里插入图片描述
解决方法是服务器端利用字典属性进行存储,并且
1、学生提交作业图片后,服务器存储作业并分配给特定的学生。
2、教师端能够查看学生提交的作业图片,并能对其进行评分。
3、教师评分后,学生端可以查看评分结果。
在这里插入图片描述
解决之后,就出现下述效果:
多学生登陆之后,提交作业之后,教师端进行登陆之后,点击学生学号,就可以查看学生的作业,选择作业,然后点击作业等级【ABCD】四个选一在这里插入图片描述
的方式 进行对作业进行评分等级,然后点击提交评分。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
评分之后,就可以看到对该位学生进行了评分,并且显示评分成功。
在这里插入图片描述
在这里插入图片描述
代码:
服务器代码:

import socket
import threading
import os

class Server:
    def __init__(self, host, port):
        self.host = host
        self.port = port
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        self.sock.bind((self.host, self.port))
        self.sock.listen(5)
        self.assignments = {
   }  # 用于存储作业数据
        self.grades = {
   }       # 用于存储学生成绩
        print("服务器启动,等待连接...")

    def handle_client(self, client_sock, addr):
        while True:
            data = client_sock.recv(1024)
            if not data:
                break
            command, *args = data.decode().split()
            if command == "LOGIN":
                student_id, name = args
                self.assignments[student_id] = []
                self.grades[student_id] = []
                response = "OK"
                client_sock.sendall(response.encode())
            elif command == "UPLOAD":
                student_id, file_size = args[0
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Asongsong_6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值