基于Python实现的选课系统

基于Python实现的选课系统 1,选课系统数据库设计 1,1从ER图到表结构 实体集 课程信息 course ( course_id

本文包含相关资料包-----> 点击直达获取<-------

基于Python实现的选课系统

1.选课系统数据库设计

1.1从ER图到表结构

实体集

  • 课程信息 course ( course_id , title, credits, dept_name)
  • 开课信息 section ( course_id , section_id , start, end, classroom_no, limit, day, lesson)
  • 账户信息 account ( ID , password, role)
  • 学生信息 student( student_id ,student_name, student_major, student_dept_name, student_total_credit)
  • 教师信息 instructor ( instructor_id , instructor_name, instructor_class, dept_name)
  • 考试信息 exam ( course_id , section_id , exam_classroom_no, exam_day, type, start_time, end_time, open_note_flag)
  • 教室信息 classroom ( classroom_no ,capacity)

关系集

  • 教师 & 开课 :教授 teaches ( instructor_id , course_id , section_id )
  • 学生 & 开课 :选课 takes ( course_id , section_id , student_id , grade)
  • 学生 & 开课:申请 application ( course_id , section_id , student_id , status, application_reason, if_drop)

1.2表结构分析

  • course: 用于存储和管理课程信息的数据库表,主键是课程编号course_id。 sqlite CREATE TABLE "course" ( "course_id" TEXT(255) NOT NULL, "title" TEXT(255) NOT NULL, "credits" integer(10) NOT NULL, "dept_name" TEXT(255), PRIMARY KEY ("course_id") );

  • section: 用于存储和管理本学期实际上开设的课程信息,是一个弱实体集。开课涉及到上课时间,如星期五 3-4这样的时间。为了保证原子性, 系统拆分成了三部分:day表示是一周的第几天,start表示这门课的开始节次,end表示这门课的结束节次。lesson作为导出属性而存在。section 作为弱实体集,它的主键由course_id和section_id联合组成。本数据库表引用了两个外键,一个是course的主键,一个是classroom的主键。针对这两个外键,数据库库表都设置了级联删除以及级联更新。 sqlite CREATE TABLE "section" ( "course_id" TEXT(255) NOT NULL, "section_id" INTEGER(10) NOT NULL, "classroom_no" TEXT(255), "limit" INTEGER(10) NOT NULL, "day" INTEGER(10) NOT NULL, "start" integer(10) NOT NULL, "end" integer(10) NOT NULL, PRIMARY KEY ("course_id", "section_id"), FOREIGN KEY ("course_id") REFERENCES "course" ("course_id") ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY ("classroom_no") REFERENCES "classroom" ("classroom_no") ON DELETE CASCADE ON UPDATE CASCADE );

  • account: 用于存储管理账户信息的数据库表,含有用户名,密码和角色。主键是用户名ID。 sqlite CREATE TABLE "account" ( "ID" text(255) NOT NULL, "password" text(255) NOT NULL, "role" integer(10) NOT NULL, PRIMARY KEY ("ID") );
  • student: 用于存储和管理学生的相关信息。信息主要包括学号,姓名,专业,院系和总学分。主键是学号student_id。总学分的默认值是0。 sqlite CREATE TABLE "student" ( "student_id" TEXT(255) NOT NULL, "student_name" TEXT(255) NOT NULL, "student_major" TEXT(255) NOT NULL, "student_dept_name" TEXT(255) NOT NULL, "student_total_credit" INTEGER(10) DEFAULT 0, PRIMARY KEY ("student_id") );
  • instructor: 用于存储和管理教师的相关信息。信息主要包括教师编号,教师姓名,所属院系和职称。主键是教师编号。 sqlite CREATE TABLE "instructor" ( "instructor_id" TEXT(255) NOT NULL, "instructor_name" TEXT(255), "instructor_class" TEXT(255), "dept_name" TEXT(255), PRIMARY KEY ("instructor_id") );
  • exam: 用于存储和管理课程考核的相关信息。含有属性课程编号,开课编号,考试类型(论文或者考试)等。其中教室,考试的开始时间以及是否开卷是在考核类型为考试时才有涵义。考核作为一个弱实体集,它的主键由课程编号和开课编号联合组成,与开课一一对应。本表引用了三个外键,分别是表section的联合主键和表classroom的主键。删除和更新都是级联执行。 sqlite CREATE TABLE "exam" ( "course_id" TEXT(255) NOT NULL, "section_id" TEXT(255) NOT NULL, "exam_classroom_no" TEXT(255), "exam_day" integer(5) NOT NULL, "type" integer(5) NOT NULL, "start_time" TEXT(255), "end_time" TEXT(255) NOT NULL, "open_note_flag" integer(5), PRIMARY KEY ("course_id", "section_id"), FOREIGN KEY ("course_id", "section_id") REFERENCES "section" ("course_id", "section_id") ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY ("exam_classroom_no") REFERENCES "classroom" ("classroom_no") ON DELETE CASCADE ON UPDATE CASCADE );
  • classroom: 教室信息。含有教室的编号以及容量。主键是教室编号。

  • teaches: 教师教授课程关系集对应的数据库表。主键是course_id,section_id和instructor_id。相关外键的删除和更新都是级联的。 sqlite CREATE TABLE "teaches" ( "instructor_id" TEXT(255) NOT NULL, "course_id" TEXT(255) NOT NULL, "section_id" INTEGER(10) NOT NULL, PRIMARY KEY ("instructor_id", "course_id", "section_id"), FOREIGN KEY ("course_id", "section_id") REFERENCES "section" ("course_id", "section_id") ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY ("instructor_id") REFERENCES "instructor" ("instructor_id") ON DELETE CASCADE ON UPDATE CASCADE );

  • takes: 学生选课关系集对应的数据库表。主键是course_id,section_id和student_id。相关外键的删除和更新都是级联的。 sqlite CREATE TABLE "takes" ( "course_id" text(255) NOT NULL, "section_id" INTEGER(10) NOT NULL, "student_id" text(255) NOT NULL, "grade" TEXT(10), PRIMARY KEY ("course_id", "section_id", "student_id"), FOREIGN KEY ("course_id", "section_id") REFERENCES "section" ("course_id", "section_id") ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY ("student_id") REFERENCES "student" ("student_id") ON DELETE CASCADE ON UPDATE CASCADE );
  • application: 学生选课申请对应的数据库表。主键是course_id,section_id和student_id。相关外键的删除和更新都是级联的。特别的含有属性if_drop用来标志学生是否申请成功了改课程之后又退掉了。相关外键的删除和更新都是级联的。 sqlite CREATE TABLE "application" ( "course_id" text(255) NOT NULL, "section_id" integer(5) NOT NULL, "student_id" text(255) NOT NULL, "status" integer(5) NOT NULL DEFAULT 0, "application_reason" text(255), "if_drop" integer(5) DEFAULT 0, PRIMARY KEY ("course_id", "section_id", "student_id"), FOREIGN KEY ("student_id") REFERENCES "student" ("student_id") ON DELETE CASCADE ON UPDATE NO ACTION, FOREIGN KEY ("course_id", "section_id") REFERENCES "section" ("course_id", "section_id") ON DELETE CASCADE ON UPDATE NO ACTION );

1.3函数依赖与范式分析

  • 所有关系的属性的域都是原子的,不包含任何组合属性,所以上述关系模式都属于第一范式。

  • 没有任何非主属性部分依赖于键,所以也符合第二范式。

  • 没有任何非主属性传递依赖于键,所以符合第三范式。

  • 没有任何属性传递依赖于键,所以符合BC范式。

综上,我们设计的关系模式属于BC范式。

2.功能点实现——数据库操作逻辑

2.1选课

选退课功能开放后,学生才可以进行选课。学生选课,数据库需要先检查该课程的选课人数是否已经达到选课上限,并且检查选择的课程是否与已选课程具有时空冲突(包括上课和考试的时空冲突)。如果没超过上限并且没有冲突,则该学生可以选上该门课程。

2.2退课

选退课功能开放后,学生才可以进行退课。学生退课,如果学生已经选择这门课程,直接去掉选课表中的一行数据。注意,如果用户是通过选课申请选上该门课程,需要标记选课申请记录的退课标志使得该生不能再申请该门课程。

2.3选课申请

选退课功能开放后,学生才可以填写课程申请。当选课人数达到上限时,学生才能进行选课申请。当教室容量不允许多的人上课时或者该学生已经申请成功过这门课程但是退掉了的时候,系统会直接决绝掉他的选课申请。

2.4分数导入

登分系统开放后,任课老师需要将学生的成绩导入系统中。在分数登录的界面中,系统提供了分数的样例文件。教师课进行下载并填入相应条目。对于每条课程成绩,系统会先检查成绩中学生是否选过这门课程。没有选择过这门课程,系统会给出提示并拒绝导入这门成绩,但错误之前的成绩都会成功导入。如果成绩重复导入以后导入的为准。

2.5课程申请处理

学生进行选课申请,任课老师可以选择同意或者拒绝。如果同意,则会在takes数据库表中加入记录,并更新申请记录。如果拒绝,则只会更新选课申请记录未已拒绝。

2.6学生导入

导入学生时,系统会先检查学生的编号是否在student表中已经存在,即是否导入已经存在的学生信息。如果编号不存在,并且其他信息完整,则支持本次导入。

2.7老师导入

导入老师时,系统依旧只是检查相应的编号时否在instructor表中已经存在。如果不存在且其他信息填写完整,则可以导入。

2.8课程信息导入

导入课程时,统依旧只是检查相应的编号时否在course表中已经存在。如果不存在且其他信息填写完整规范,则可以导入。

2.9开课信息导入

开课信息的导入需要检查的信息繁多。首先需要在section表中检查该开课是否已经存在,同时需要检查course是否存在和老师是否存在。如果课程没有被重复开设,并且相应的course和老师都存在,则检查课程在老师和教室上是否存在时空冲突。如果有冲突,禁止导入并给出提示。

2.10考试信息导入

考试信息的导入是建立在课程已经开始的情况下,如果课程还没由开设当然需要拒绝导入。除此以外,需要检查对于同一门开课是否已经导入过考试信息。重复导入不被允许,系统提供过修改的接口。此外,系统还要检查考试是否具有时空冲突。对于考核方式为论文的考核,我们认为不存在任何的冲突。而对于考试,就需要仔细检查。

3.选课系统后端架构——Django Sqlite Python3

Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。

3.1选课系统后端API说明

说明:所有调用的成功状态由返回的 HTTP 状态码表示, 200 代表调用成功,返回的内容为各 API 自己的返回值, 400 代表调用失败,返回以下格式的 JSON:

json { "code": -1, "message": "" } OR json { "code": 1, "message": "" }

以下为通用message:

message 含义 可能出现该message的 API
server error 服务器内部错误 全部
unauthorized 当前用户没有权限执行该操作或session已过期 需要特定用户权限的 API

对于 GET 请求,参数放在 URL 中;对于 POST 请求,参数 放在 body 中。

所有 API 的参数若非特殊说明均为必选参数。

4.登录

POST /selectCourse/login/

4.1参数列表

名称 类型 描述
user_id string 学号或者工号
password string 密码

4.2返回值

json { "user_name": "黄佳妮", "role": 1 }

4.3message

message 含义
wrong userid 用户名不存在
wrong password 密码错误
login successfully 登陆成功

5.登出

/selectCourse/logout/

5.1参数列表

不需要参数

5.2返回值

无返回值

5.3message

message 含义
logout successfully 登出成功

6.选课

POST /selectCourse/select/

6.1参数列表

名称 类型 描述
user_id string 学号
course_id string 学校课程唯一代码
section_id string 课程类别唯一代码

6.2返回值

6.3message

message 含义
wrong course id 课程代码错误
wrong section id 课程类别代码错误
select successfully 选课成功
course with no vacancy 课程无余量
already selected 已经选过该课程
section time conflict 课程时间冲突|
exam time conflict 考试时间冲突|

7.退课

POST /selectCourse/drop/

7.1参数列表

名称 类型 描述
user_id string 学号
course_id string 学校课程唯一代码
section_id string 课程类别唯一代码

7.2返回值

7.3message

message 含义
drop error: haven\"t taken yet 未选修该课程
drop successfully 退课成功

8.查询已选课列表

POST /selectCourse/checkCourseTable

8.1参数列表

名称 类型 描述
user_id string 用户 ID(留空则默认获取当前已登录用户的信息)
current_page_num int 用户 ID(留空则默认获取当前已登录用户的信息)

8.2返回值

json { "total_num" : 1, "sections" : { "title": "大气环境科学", "course_id": "ATMO00000003", "section_id":1, "dept_name":"航空航天系", "instructor_name":"curry", "credits":2, "classroom_no":"Z2202", "day":2, "start": 3, "end": 4 } }

8.3message

message 含义
show course table 显示课程信息

9.查询所有课程信息(学生和root权限)

POST /selectCourse/checkAllCourses

9.1参数列表

名称 类型 描述
user_id string 用户 ID(留空则默认获取当前已登录用户的信息)
current_page_num int 当前页数

9.2返回值

json { "total_num" : 1, "ret_num": 15, "sections" : { "title": "大气环境科学", "course_id": "ATMO00000003", "section_id":1, "dept_name":"航空航天系", "credits":2, "classroom_no":"Z2202", "day":2, "start": 3, "end": 4 } }

9.3message

10.显示学生/教师基本信息

POST /selectCourse/checkPersonalInfo

10.1参数列表

名称 类型 描述
user_id string 用户 ID

10.2返回值

对于学生

```json {
"student_id": "17302010063", "student_name": "黄佳妮", "student_major": "软件工程", "student_dept_name":"软件学院", "student_total_creidt":95, "student_gpa":4.0, "student_grade":[ { "course_id": "MATH1000001", "section_id": 1, "grade": "A" }

]

} ```

对于教师

```json {
"instructor_id": "SOFT00000001", "instructor_name": "王小明", "instructor_class": "副教授", "dept_name":"软件学院"

} ```

10.3message

message 含义
show personal info 显示用户信息

11.搜索课程

GET /selectCourse/search

11.1参数列表

名称 类型 描述
user_id string 用户 ID
course_id string 根据course_id和section_id进行搜索
section_id int 根据course_id和section_id进行搜索
title string 根据课程名称进行搜索
instructor_name string 根据教师名字进行搜索
dept_name string 根据开课院系进行搜索

11.2返回值

json { "total_num" : 1, "sections" : { "title": "大气环境科学", "course_id": "ATMO00000003", "section_id":1, "dept_name":"航空航天系", "credits":2, "classroom_no":"Z2202", "day":2, "start": 3, "end": 4 } }

11.3message

message 含义
search succeessfully 搜索成功
no search result 无搜索结果

12.提交选课申请

POST /selectCourse/submitApplication

12.1参数列表

名称 类型 描述
user_id string
course_id string
section_id int
application_reason string 申请理由

12.2返回值

12.3message

message 含义

| can"t apply course which is already applied | 不能申请已申请课程| | can"t apply selected course| 不能申请已选课程 | | can"t apply dropped course| 不能申请已退的申请通过课程 | | apply successfully| 提交成功 | | can"t apply course with vacancy| 不能申请有余量课程 | | exceed the classroom capacity| 不能申请人数已超过教室容量的课程 |

13.处理选课申请

POST /selectCourse/handleApplication

13.1参数列表

名称 类型 描述
user_id string
course_id string
section_id int
status int 处理状态

13.2返回值

13.3message

message 含义
handle successfully 处理成功

14.查看选课申请

学生和老师都可查看其对应的选课申请

POST /selectCourse/handleApplication

14.1参数列表

名称 类型 描述
user_id string

14.2返回值

json { "total_num" : 1, "applications" : { "course_id": "ATMO00000003", "section_id": 1, "student_id":"17302010063", "status":1, "application_reason":"I love this course", "if_drop":1 } }

14.3message

message 含义
check application info 显示选课申请信息

15.查看所教授课程(教师权限)

POST /selectCourse/checkTaughtCourses/

15.1参数列表

名称 类型 描述
user_id string

15.2返回值

json { "total_num" : 1, "sections" : [ { "title": "大气环境科学", "course_id": "ATMO00000003", "section_id":1, "dept_name":"航空航天系", "credits":2, "classroom_no":"Z2202", "day":2, "start": 3, "end": 4 } ] }

15.3message

message 含义
show course table 显示课程信息

16.查看该课程花名册(教师权限)

POST /selectCourse/checkCourseNameList/

16.1参数列表

名称 类型 描述
user_id string

16.2返回值

json { "total_num" : 1, "sections" : [ { "title": "大气环境科学", "student_id": "17302010063", "student_name":"黄佳妮", "student_major":"航空航天系", "student_dept_name":"航空航天学院", "grade":"A" } ] }

16.3message

message 含义
show course table 显示课程信息

17.查看课程考试列表(学生权限)

POST /selectCourse/checkExamTable/

17.1参数列表

名称 类型 描述
user_id string

17.2返回值

json { "total_num" : 1, "sections" : [ { "title": "大气环境科学", "student_id": "17302010063", "student_name":"黄佳妮", "student_major":"航空航天系", "student_dept_name":"航空航天学院", "grade":"A" } ] }

17.3message

message 含义
show course table 显示课程信息

自动导入模块

下载模版文件(老师)

GET /selectCourse/downloadFile

参数列表

名称 类型 描述
file_type int STUDENT_FILE = 1
COURSE_FILE = 2
SCORE_FILE = 3
SECTION_FILE = 4
INSTRUCTOR_FILE = 5

管理员增删改查统一接口说明

增 Insert

手动导入课程信息

POST /selectCourse/insertCourse/

参数列表
名称 类型
course_id string
title string
credits int
dept_name string
返回值

None

message
message 含义
insert error: already exist 课程已存在
| handle successfully | ok|

手动导入开课信息

POST /selectCourse/insertSection/

参数列表
名称 类型
course_id string
section_id string
time string
classroom_no int
lesson int
limit int
day int
返回值

None

message
message 含义
insert error: already exist 开课已存在
| handle successfully | ok|

手动导入学生信息

POST /selectCourse/insertStudent/

参数列表
名称 类型
student_id string
student_name string
student_major string
student_dept_name string
student_total_credit string
返回值

None

message
message 含义
insert error: already exist 学生已存在
| handle successfully | ok|

手动导入教师信息

POST /selectCourse/insertInstructor/

参数列表
名称 类型
instructor_id string
instructor_name string
instructor_class string
dept_name string
返回值

None

message
message 含义
insert error: already exist 课程已存在
| handle successfully | ok|

手动导入教室信息

POST /selectCourse/insertClassroom/

参数列表
名称 类型
classroom_no string
capacity int
返回值

None

message
message 含义
insert error: already exist 课程已存在
| handle successfully | ok|

手动导入账户信息

POST /selectCourse/insertAccount/

参数列表
名称 类型
user_id string
password string
role int
返回值

None

message
message 含义
insert error: already exist 课程已存在
| handle successfully | ok|

手动导入考试信息

POST /selectCourse/insertExam/

参数列表
名称 类型
course_id string
title string
credits int
dept_name string
返回值

None

message
message 含义
insert error: already exist 考试已存在
| handle successfully | ok|

删除课程信息

POST /selectCourse/deleteCourse/

参数列表
名称 类型
course_id string
返回值

None

message
message 含义
delete nonexist course 课程已存在
| handle successfully | ok|

删除开课信息

POST /selectCourse/deleteSection/

参数列表
名称 类型
course_id string
section_id string
返回值

None

message
message 含义
delete nonexist section 课程已存在
| handle successfully | ok|

删除学生信息

POST /selectCourse/deleteStudent/

参数列表
名称 类型
student_id string
返回值

None

message
message 含义
delete nonexist student 课程已存在
| handle successfully | ok|

删除教师信息

POST /selectCourse/deleteInstructor/

参数列表
名称 类型
instructor_id string
返回值

None

message
message 含义
delete nonexist instructor 课程已存在
| handle successfully | ok|

删除教室信息

POST /selectCourse/deleteClassroom/

参数列表
名称 类型
classroom_no string
返回值

None

message
message 含义
delete nonexist classroom 课程已存在
| handle successfully | ok|

删除账户信息

POST /selectCourse/deleteAccount/

参数列表
名称 类型
user_id string
返回值

None

message
message 含义
delete nonexist account 课程已存在
| handle successfully | ok|

删除考试信息

POST /selectCourse/deleteExam/

参数列表
名称 类型
course_id string
section_id int
返回值

None

message
message 含义
delete nonexist exam 课程不存在
| handle successfully | ok|

修改课程信息

POST /selectCourse/updateCourse/

参数列表
名称 类型
course_id string
title string
credits int
dept_name string
返回值

None

message
message 含义
insert error: already exist 课程已存在
| handle successfully | ok|

修改开课信息

POST /selectCourse/updateSection/

参数列表
名称 类型
course_id string
section_id string
time string
classroom_no int
lesson int
limit int
day int
返回值

None

message
message 含义
insert error: already exist 开课已存在
| handle successfully | ok|

修改学生信息

POST /selectCourse/updateStudent/

参数列表
名称 类型
student_id string
student_name string
student_major string
student_dept_name string
student_total_credit string
返回值

None

message
message 含义
insert error: already exist 学生已存在
| handle successfully | ok|

修改教师信息

POST /selectCourse/updateInstructor/

参数列表
名称 类型
instructor_id string
instructor_name string
instructor_class string
dept_name string
返回值

None

message
message 含义
insert error: already exist 课程已存在
| handle successfully | ok|

修改教室信息

POST /selectCourse/updateClassroom/

参数列表
名称 类型
classroom_no string
capacity int
返回值

None

message
message 含义
insert error: already exist 课程已存在
| handle successfully | ok|

修改账户信息

POST /selectCourse/updateAccount/

参数列表
名称 类型
user_id string
password string
role int
返回值

None

message
message 含义
insert error: already exist 课程已存在
| handle successfully | ok|

修改考试信息

POST /selectCourse/updateExam/

参数列表
名称 类型
course_id string
section_id string
classroom_no int
day int
type int
start_time string
end_time string
open_note_flag int
返回值

None

message
message 含义
update error: nonexist 课程不存在
| handle successfully | ok|

查看课程信息

POST /selectCourse/checkCourses/

参数列表
名称 类型 描述
current_page_num int 当前页数
返回值

json { "total_num" : 1, "ret_num": 15, "courses" : [ { "title": "大气环境科学", "course_id": "ATMO00000003", "dept_name":"航空航天系", "credits":2 } ] }

message

查看开课信息

POST /selectCourse/checkSections/

参数列表
名称 类型 描述
current_page_num int 当前页数
返回值

json { "total_num" : 1, "ret_num": 15, "sections" : { "course_id": "ATMO00000003", "section_id":1, "credits":2, "classroom_no":"Z2202", "day":2, "start": 3, "end": 4 } }

message

查看学生信息

POST /selectCourse/checkStudents/

参数列表
名称 类型 描述
current_page_num int 当前页数
返回值

json { "total_num" : 1, "ret_num": 15, "students" : { "student_id": "17302010063", "student_name": "黄佳妮", "student_major": "软件工程", "student_dept_name":"软件学院", "student_total_creidt":95 } }

message

查看教师信息

POST /selectCourse/checkInstructors/

参数列表
名称 类型 描述
current_page_num int 当前页数
返回值

json { "total_num" : 1, "ret_num": 15, "instructors" : { "instructor_id": "SOFT00000001", "instructor_name": "王小明", "instructor_class": "副教授", "dept_name":"软件学院" } }

message

查看教室信息

POST /selectCourse/checkClassrooms/

参数列表
名称 类型 描述
current_page_num int 当前页数
返回值

json { "total_num" : 1, "ret_num": 15, "classrooms" : { "classroom_no":"Z2202", "capacity":90 } }

message

查看账户信息

POST /selectCourse/checkAccounts/

参数列表
名称 类型 描述
current_page_num int 当前页数
返回值

json { "total_num" : 1, "ret_num": 15, "accounts" : [{ "id":"www", "password":"www", "role":1 } ] }

message

查看考试信息

POST /selectCourse/checkExams/

参数列表
名称 类型 描述
current_page_num int 当前页数
返回值

json { "total_num" : 1, "ret_num": 15, "exams" : [{ "course_id": "ATMO130004", "section_id":1, "classroom_no":"Z2204", "day":5, "type":1, "start_time":"13:00", "end_time":"15:00", "open_note_flag":1 } ] }

message

参考文献

  • 基于B/S结构的职业中学选课系统的设计与实现(中国海洋大学·宫婕)
  • 课程及成绩管理系统的设计与实现(厦门大学·赵超)
  • 高校网上选课系统的设计与实现(河北科技大学·马乾乾)
  • 基于J2EE的高校学生选课管理系统的设计与实现(电子科技大学·刘雯)
  • 基于ASP.NET+SQL的公共选修课网上系统(电子科技大学·唐志文)
  • 少年宫课外学习选课系统软件的设计与实现(电子科技大学·黄涛)
  • K-means算法在选课系统中的应用研究(长春师范大学·张国维)
  • 高负载选课系统的设计与优化(昆明理工大学·王金余)
  • 少年宫课外学习选课系统软件的设计与实现(电子科技大学·黄涛)
  • 基于B/S结构的网络选课系统设计与实现(黑龙江大学·陈天凯)
  • 新疆财经大学选课系统的设计与实现(电子科技大学·阿孜古丽)
  • 基于WEB的高校教学选课系统的设计与实现(山东大学·孙启良)
  • 基于.NET的高校选课管理系统设计与开发(中国海洋大学·郭峰)
  • 基于.NET的高校选课管理系统设计与开发(中国海洋大学·郭峰)
  • 少年宫课外学习选课系统软件的设计与实现(电子科技大学·黄涛)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕业设计驿站 ,原文地址:https://bishedaima.com/yuanma/35632.html

相关推荐

发表回复

登录后才能评论