资源描述
摘要
班级考试管理系统为学校所属各部门提供班级,学生以及试卷信息的收集、存储、处理、提取和数据交换的能力,论文论述了班级考试管理信息系统开发思路、策略和方法。
论文针对班级设计开发了一个基于C/S结构的学校信息管理系统的一个子系统——班级考试管理系统, 本系统采用SQL SERVER 2000来设计数据库,使用Visual C ++6.0作为开发工具 。通过计算机和网络技术实现班级信息的全过程追踪和动态管理,从而简化了老师的管理过程,优化了试卷的管理。论文首先分析介绍了系统开发的背景、运用中遇到的问题以及本文的构成;其次,以班级考试管理系统中信息管理子系统、实体管理子系统、试卷管理子系统和备份修改子系统四个子系统为重点进行了需求分析、系统设计和实现;最后,对已进行的研究和开发工作进行了总结和展望。
关键词: 考试管理系统,VC++,C/S结构
43
ABSTRACT
Class examination management system for the school departments offer classes, students and the collection of test information, storage, processing, and data exchange capacity, this paper discusses the class examination management information system development, strategy and method.
The paper class design based on C/S structure of school management information system of a subsystem probiotic yogurts -- class examination management system, this system uses SQL SERVER 2000 to design database, use Visual C + + 6.0 as a development tool. Through computer and network technology to track the entire process of the class information and dynamic management, which simplifies the process of teacher management to optimize the management of papers . Firstly, this paper describes the background and application system development and problems in the paper, Secondly, with class examination management system of information management subsystem, the entity management subsystem, the management subsystem of papers and backup modified subsystem four subsystems for key requirement analysis, system design and realization, Finally , the research and development is summarized and prospected.
Keywords: Examination management system, VC++, C/S structure
目录
摘要 I
ABSTRACT II
目录 III
第1章 引言 1
1.1 开发背景 1
1.2 选题意义 1
13 研究内容 2
第2章 系统的相关技术介绍 3
2.1 MFC简介 3
2.2 SQL SERVER 2000简介 4
2.3 ODBC 简介 5
2.4 CRECORDSET类和CRECORDVIEW类简介 6
2.5 POWERDESIGNER11简介 7
2.4 本章小结 7
第3章 系统的分析与设计 8
3.1 需求分析 8
3.2 系统设计 8
3.2.1 概要设计 8
3.2.2 系统总体流程图 9
3.2.3 系统模块设计 10
3.2.4 菜单设计 11
3.3 本章小结 11
第4章 数据库设计 12
4.1 数据库的需求分析 12
4.2 数据库表设计 13
4.3 数据库建表语句 16
4.4 本章小结 19
第5章 系统实现 20
5.1 登录模块实现 20
5.2 基本信息模块实现 20
5.2.1 管理员信息 20
5.2.2 系部信息 24
5.2.3 班级信息 25
5.2.4 学生信息 26
5.2.5 教师信息 27
5.2.6 章节信息 28
5.3 题库管理模块实现 29
5.3.1 判断题信息 29
5.3.2 填空题信息 29
5.3.3 单选题信息 30
5.3.4 多选题信息 30
5.4 试卷管理模块实现 31
5.4.1 定制试卷 31
5.4.2 试卷管理 34
5.5 备份修改模块实现 37
5.3.1 修改密码 37
5.3.2 备份数据库 39
5.6 本章小结 40
第6章 结束语 41
致 谢 42
参 考 文 献 43
第1章 引言
1.1 开发背景
在各学校开始逐步引入计算机的今天,试卷作为考察教学成果的重要手段之一,一直没有得到较好的改善,试卷的编辑、整理工作占了很大的工作量[1]。传统的手工出卷过程,存在不少弊端:
u 出现不必要的重复劳动,造成人力资源及时间上的浪费;
u 缺乏科学的衡量、评价及统一试卷难易度、试卷质量的有效手段;
u 存在自教自考,考前漏题的情况;
u 试卷容易出现错漏缺现象,引起不必要的麻烦。
在以往的教学中,老师出试卷大多由手工出卷,这样生成的试卷往往会有知识点分布太集中、难易程度不当、分值分布不均等一些缺点;这样,既增加了老师的负担,也没有达到很好考查学生学习的真实水平,造成教学上的失误。基于以上的原因,有很多从事软件开发的人员,在试卷自动生成方面做了很大的研究。本系统希望利用计算机强大的数据处理功能,由计算机逐步代替传统的人工出卷,并且规范出卷程序,使出卷工作更加科学化、现代化,使教育工作更上一层楼。
1.2 选题意义
考试管理系统,此课题目的是在我们以往学习数据库的基础上,灵活运用数据库开发软件VC++和结构化查询语言SQL2000,开发出能供教学使用的一套出试卷系统,以方便教学。应用所学的有关数据库的知识,更深入地学习VC++和SQL2000,将所学的书面知道和实际应用结合起来,以达到学以致用的目的。在各学校开始逐步引入计算机的今天,试卷作为考察教学成果的重要手段之一,通用试卷自动生成系统升化了传统的手工出卷,解决了很多 问题,例如:避免了不必要的重复劳动;节约了人力资源及时间; 使用科学的衡量、评价及统一试卷难易度、试卷质量的有效手段;大幅度降低了试卷出现错漏缺的机率; 减少不必要的麻烦[2]。
1.3 开发内容
班级考试管理系统主要涉及的信息数据包括系统管理员信息,系部信息,班级信息,学生信息,教师信息,试卷信息和各种题库等数据,涉及的操作主要包括各种信息数据的管理,为考试定制的试卷,试卷管理等管理操作,教师密码修改,备份数据库等 。
经考查与分析,典型的考试管理系统主要应具有以下功能:
u 基本信息管理:包括对系统管理员信息,系部信息,班级信息,学生信息,教师信息,章节信息的录入,修改和删除等功能。
u 试卷管理:包括对已创建的试卷数据的删除,定制考试试卷,选择考试试卷等功能。
u 题库管理:包括对判断题,填空题,单项选择题,多项选择题等题库的管理功能。
u 备份修改:包括教师密码修改,数据库备份等功能。
第2章 系统的相关技术介绍
2.1 MFC介绍
MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。Microsoft Visual C++提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑[3]。
MFC实现了对应用程序概念的封装,把类、类的继承、动态约束、类的关系和相互作用等封装起来。这样封装的结果对程序员来说,是一套开发模板(或者说模式)。针对不同的应用和目的,程序员采用不同的模板。例如,SDI应用程序的模板,MDI应用程序的模板,规则DLL应用程序的模板,扩展DLL应用程序的模板,OLE/ACTIVEX应用程序的模板,等等。这些模板都采用了以文档-视为中心的思想,每一个模板都包含一组特定的类。典型的MDI应用程序的构成将在下一节具体讨论。为了支持对应用程序概念的封装,MFC内部必须作大量的工作。例如,为了实现消息映射机制,MFC编程框架必须要保证首先得到消息,然后按既定的方法进行处理。又如,为了实现对DLL编程的支持和多线程编程的支持,MFC内部使用了特别的处理方法,使用模块状态、线程状态等来管理一些重要信息。虽然,这些内部处理对程序员来说是透明的,但是,懂得和理解MFC内部机制有助于写出功能灵活而强大的程序。
MFC借助C++的优势为Windows开发开辟了一片新天地,同时也借助Applica- tion Wizzard使开发者摆脱离了那些每次都必写基本代码,借助ClassWizard和消息映射使开发者摆脱了定义消息处理时那种混乱和冗长的代码段。更令人兴奋的是利用C++的封装功能使开发者摆脱Windows中各种句柄的困扰,只需要面对C++中的对象,这样一来使开发更接近开发语言而远离系统。
正因为MFC是建立在C++的基础上,所以我强调C/C++语言基础对开发的重要性。利用C++的封装性开发者可以更容易理解和操作各种窗口对象;利用C++的派生性开发者可以减少开发自定义窗口的时间和创造出可重用的代码;利用虚拟性可以在必要时更好的控制窗口的活动。而且C++本身所具备的超越C语言的特性都可以使开发者编写出更易用,更灵活的代码。
在MFC中对消息的处理利用了消息映射的方法,该方法的基础是宏定义实现,通过宏定义将消息分派到不同的成员函数进行处理。因此对于开发系统具有一定的优势。
总之,MFC封装了Win32 API,OLE API,ODBC API等底层函数的功能,并提供更高一层的接口,简化了Windows编程。同时,MFC支持对底层API的直接调用。MFC提供了一个Windows应用程序开发模式,对程序的控制主要是由MFC框架完成的,而且MFC也完成了大部分的功能,预定义或实现了许多事件和消息处理,等等。框架或者由其本身处理事件,不依赖程序员的代码;或者调用程序员的代码来处理应用程序特定的事件。MFC是C++类库,程序员就是通过使用、继承和扩展适当的类来实现特定的目的。例如,继承时,应用程序特定的事件由程序员的派生类来处理,不感兴趣的由基类处理。实现这种功能的基础是C++对继承的支持,对虚拟函数的支持,以及MFC实现的消息映射机制[4]。
2.2 SQL SERVER 2000介绍
SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:Oracle、 Sybase、 Microsoft SQL Server、 Access、 Ingres等等。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比如"Select"、 "Insert"、 "Update"、 "Delete"、 "Create"和 "Drop"常常被用于完成绝大多数数据库的操作。
但是,不像其它的语言,如C、Pascal等,SQL没有循环结构(比如if-then-else、do-while)以及函数定义等等的功能。而且SQL只有一个数据类型的固定设置,换句话说,你不能在使用其它编程语言的时候创建你自己的数据类型。
SQL功能强大,但是概括起来,它可以分成以下几组:
u DML(Data Manipulation Language,数据操作语言):用于检索或者修改数据;
u DDL(Data Definition Language,数据定义语言): 用于定义数据的结构,比如 创建、修改或者删除数据库对象;
u DCL(Data Control Language,数据控制语言):用于定义数据库用户的权限。
DML组可以细分为以下的几个语句:
u SELECT:用于检索数据。
u INSERT:用于增加数据到数据库。
u UPDATE:用于从数据库中修改现存的数据 。
u DELETE:用于从数据库中删除数据。
2.3ODBC介绍
ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用 SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access , MYSQL还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。一个完整的ODBC由下列几个部件组成: 应用程序(Application)。ODBC管理器(Administrator)。该程序位于Windows 95控制面板(Control Panel)的32位ODBC内,其主要任务是管理安装的ODBC驱动程序和管理数据源。驱动程序管理器(Driver Manager)。驱动程序管理器包含在ODBC32.DLL中,对用户是透明的。其任务是管理ODBC驱动程序,是ODBC中最重要的部件。
数据源。数据源包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象。应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起 与相应数据库的连接。在ODBC中,ODBC API不能直接访问数据库,必须通过驱动程序管理器与数据库交换信息。驱动程序管理器负责将应用程序对ODBC API的调用传递给正确的驱动程序,而驱动程序在执行完相应的操作后,将结果通过驱动程序管理器返回给应用程序。在访问ODBC数据源时需要ODBC驱动程序的支持。用Visual C++ 6.0安装程序可以安装SQL Server、Access、 Paradox、 dBase、 FoxPro、 Excel、Oracle 和Microsoft Text等驱动程序.在缺省情况下,VC6.0只会安装SQL Server、 Access、 FoxPro和dBase的驱动程序.如果用户需要安装别的驱动程序,则需要重新运行VC 6.0的安装程序并选择所需的驱动程序。ODBC 使用层次的方法来管理数据库,在数据库通信结构的每一层,对可能出现依赖数据库产品自身特性的地方,ODBC 都引入一个公共接口以解决潜在的不一致性,从而很好地解决了基于数据库系统应用程序的相对独立性,这也是ODBC 一经推出就获得巨大成功的重要原因之一。
2.4CRecordSet类和CRecordView类
CRecordset对象代表从一个数据源选择的一组记录的集合,被称作“记录集”。CRecordset对象可以以两种形式使用:动态集和快照。动态集 是与其它用户的数据更新保持同步的动态数据集。快照是数据的静态视图。每一种形式都代表打开记录集时固定的一组记录,但是当滚动到动态集中的一个记录时, 动态集将反映后来由其它用户或由应用程序中其它记录集对此记录所做的改变。
要使用任何一种记录集,通常需要从CRecordset派生一个应用程序指定的记录集类。记录集从一个数据源中选择记录,然后用户就可以:
u 在这些记录中滚动。
u 更新记录并指定一种加锁模式。
u 过滤记录集,以获得那些从数据源中选择出来的可利用的记录。
u 排序记录集。
u 参数化该记录集以定制它的具有要直到运行时才知道的信息的选项。
CRecordView对象是在控件中显示数据库记录的视。这种视是一种直接连接到一个CRecordset对象上的格式视。此视是从一个对话框模板 资源创建的,并将CRecordSet对象的字段显示在对话框模板的控件中。CRecordView对象利用对话框数据交换(DDX)和记录字段交换 (RFX)机制,使格式上的控件和记录集的字段之间的数据移动自动化。CRecordView还提供了完成移动到第一个,下一个,上一个或最后一个记录的 缺省实现,和一个用于更新视上面的当前记录的接口。
2.4 PowerDesigner11
数据流图,E-R图设计:PowerDesigner11。PowerDesigner是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,它几乎包括了数据库模型设计的全过程。利用PowerDesigner可以制作数据流程图、概念数据模型、物理数据模型,可以生成多种客户端开发工具的应用程序,还可为数据仓库制作结构模型,也能对团队设计模型进行控制。PowerDesigner不仅加速了开发的过程,也向最终用户提供了管理和访问项目的信息的一个有效的结构,它是一个功能强大而使用简单工具集,提供了一个复杂的交互环境,支持开发生命周期的所有阶段,从处理流程建模到对象和组件的生成。PowerDesigner产生的模型和应用可以不断地增长,适应并随着你的组织的变化而变化。
2.5本章小结
本章主要介绍了本系统开发过程中所使用的开发工具平台VC++6.0的框架整和应用程序MFC (Microsoft Foundation Class Library),数据库开发的语言SQL(Structured Query Language,结构查询语言),ODBC技术和CRecordSet 类和CRecordView类的介绍,以及PowerDesigner11的介绍。
第3章 系统的分析与设计
3.1 需求分析
高校教务管理工作中一项非常重要的工作就是考试管理工作,每学期各专业考试,从组织出卷到试卷的印制及试卷的管理等工作非常繁琐且工作量很大,这种组织管理方式不仅工作任务繁重而且试卷的标准化程度、难易程度、题量大小等各方面难以控制,难以形成有效的试题库,不利于充分发挥历年来的优秀试题及试卷的作用,给试题和试卷的管理带来很多问题和困难。鉴于这种情况,利用计算机进行试卷的自动生成并逐步积累形成有效的试题库,对试题和试卷的管理将变的高效而便捷,对提高工作效率,使试卷管理逐步走向正规化自动化将起到十分重要的作用[5]。
通过对班级考试过程的分析和研究,要求考试管理系统实现 以下功能和目标:
u 实现基本信息管理。
u 实现题库管理。
u 实现试卷的定制和试卷管理。
u 实现密码修改和数据库备份。
3.2 系统设计
3.2.1 概要设计
概要设计的任务,是在需求分析的基础上,考虑经济、技术和运行环境等各方面条件,确定系统的总体结构和系统各组成部分的技术方案,合理选择计算机和通信的软硬件设备,提出系统的实施计划。概要设计内容主要包括软件系统总体结构设计、系统流程设计等等。
3.2.2 系统总体流程图
考试管理系统的管理员数据流图如图3-1所示。
图3-1管理员流程图
考试管理系统的教师数据流图如图3-2所示。
图3-2教师流程图
3.2.3 系统模块设计
考试管理系统结构如下图3-3所示。
图3-3考试管理系统结构图
系统模块的详细功能介绍
考试管理系统划分为四个单独的子模块:
u 信息管理子模块:包括对系统管理员登录信息、系部信息、班级信息
、学生信息、教师信息的增加、修改和删除等功能。
u 试题管理子模块:包括对填空题、判断题、单项选择题、多项选择题等题库的管理功能。
u 试卷管理子模块:包括对已创建的试卷数据的删除、定制考试试卷、选择考试试卷等功能。
u 备份修改子模块:包括教师对密码的修改、管理员备份数据库等功能。
3.2.4 菜单设计
使用CBitmap为菜单生成位图[6],菜单效果如下图3-4所示。
图3-4 菜单效果图
3.3 本章小结
本章是考试管理系统中比较重要的一个模块,主要讲的是对系统的分析与
设计。先是对考试管理系统的需求分析,其次是对系统的各类设计,包括系统概要设计、系统总体设计和系统的功能模块设计。详细的功能模块主要包括登录信息、系部信息、班级信息、学生信息、教师信息、填空题、判断题、单项选择题、多项选择题的管理功能,和已创建的试卷数据的删除、定制考试试卷、选择考试试卷,以及教师对密码的修改、管理员备份数据库。
第4章 数据库设计
4.1 数据库的需求分析
大多数管理系统都需要后台数据库的支持,应用程序开发过程中很关键的技术就是数据库的设计与编程,包括数据库的设计、数据源的配置与连接、数据源的操作、数据的获取、SQL查询语言的使用等。利用数据库可以管理对数据库操作,例如:修改、添加、删除等[7]。
考试管理系统的概念数据模型图如下图4-1所示。
图4-1 概念数据模型图
考试管理系统的E-R图物理模型如下图4-2所示,
图4-2 考试管理系统E-R图物理模型
4.2 数据库表设计
根据考试管理系统涉及的信息数据和系统功能模块结构,考试管理系统数据库包括管理员数据表,系部信息数据表,班级信息数据表,学生信息数据表,阅卷老师数据表,判断题数据表,填空题数据表,单选题数据表,多选题数据表,章节数据表,试卷信息数据表和试卷试题数据表,共12个表。
管理员数据表:管理员数据表命名为SysUser。如表3-1所示。
表3-1管理员数据表 SysUser
字段名
名称
数据类型及长度
是否可空
useid
用户名
Char(10)
Primary key
password
密码
Char(6)
Not null
系部信息数据表:系部信息数据表命名为Department。如表3-2所示。
表3-2 系部信息表 Department
字段名
名称
数据类型及长度
是否可空
id
系部编号
int(自动编号)
Primary key
name
系部名称
Char(20)
Not null
班级信息数据表:班级信息数据表命名为Classes。如表3-3所示。
表3-3 班级信息表 Classes
字段名
名称
数据类型及长度
是否可空
id
班级编号
int(自动编号)
Primary key
name
班级名称
Char(20)
Not null
departmentid
系部编号
Char(10)
Not null
学生信息数据表:学生信息数据表命名为:Students。如表3-4所示。
表3-4 学生信息表 Students
字段名
名称
数据类型及长度
是否可空
id
学生编号
int(自动编号)
Primary key
name
学生姓名
Char(15)
Not null
Classid
班级编号
Char(10)
Not null
examid
考号
Int
Not null
Time
考试时间
Datetime
Not null
Room
考试教室
Char(10)
Not null
阅卷教师数据表:阅卷教师数据表命名为:Teachers。如表3-5所示。
表3-5 教师信息表 Teachers
字段名
名称
数据类型及长度
是否可空
Id
教师编号
int(自动编号)
Primary key
Name
教师姓名
Char(15)
Not null
Password
登录密码
Char(6)
Not null
phone
手机号码
Char(11)
Not null
Sum
阅卷总数
int
Not null
判断题数据表:判断题数据表命名为:Judge。如表3-6所示。
表3-6 判断题信息表 Judge
字段名
名称
数据类型及长度
是否可空
Id
判断题编号
int(自动编号)
Primary key
Chapterid
章节编号
Char(1)
Not null
Content
试题内容
Char(100)
Not null
Answer
试题答案
Bit
Not null
Score
试题分数
Int
Not null
填空题数据表:填空题数据表命名为:Space。如表3-7所示。
表3-7 填空题信息表 Space
字段名
名称
数据类型及长度
是否可空
Id
填空题编号
int(自动编号)
Primary key
Chapterid
章节编号
Char(1)
Not null
Content
试题内容
Char(100)
Not null
Answer1
第一空答案
Char(50)
Not null
Answer2
第二空答案
Char(50)
Not null
Score
试题分数
Int
Not null
试卷试题数据表:试卷试题数据表命名为PapersData。如表3-8所示。
表3-8 试卷试题信息表 PapersData
代码
名称
数据类型及长度
是否可空
Id
试卷试题编号
int(自动编号)
Primary key
Paperid
试卷编号
Float
Not null
Testid
试题编号
Float
Not null
Type
试卷类型
Char(10)
Not null
Score
试题分数
Int
Not null
单选题数据表结构:单选题数据表结构命名为:Single。如表3-9所示。
表3-9 单选题信息表 Single
字段名
名称
数据类型及长度
是否可空
Id
单选题编号
int(自动编号)
Primary key
Chapterid
章节编号
Char(10)
Not null
Content
试题内容
Char(100)
Not null
Option1
选项1
Char(50)
Not null
Option2
选项2
Char(50)
Not null
Option3
选项3
Char(50)
Not null
Option4
选项4
Char(50)
Not null
Answer
参考答案
Int
Not null
Score
试题分数
Int
Not null
多选题数据表:多选题数据表命名为:More。如表3-10所示。
表3-10 多选题信息表 More
字段名
名称
数据类型及长度
是否可空
Id
多选题编号
int(自动编号)
Primary key
Chapterid
章节编号
Char(10)
Not null
Content
试题内容
Char(100)
Not null
Option1
选项1
Char(50)
Not null
Option2
选项2
Char(50)
Not null
Option3
选项3
Char(50)
Not null
Option4
选项4
Char(50)
Not null
Answer
参考答案
Char(4)
Not null
Score
试题分数
Int
Not null
章节数据表结构:章节数据表结构命名为:Chapter。如表3-11所示。
表3-11章节信息表 Chapter
字段名
名称
数据类型及长度
是否可空
Id
章节编号
int(自动编号)
Primary key
Name
章节名称
Char(50)
Not null
试卷信数据表:试卷信息数据表命名为Papers。如表3-12所示。
表3-12试卷信息表 Papers
代码
名称
数据类型及长度
是否可空
Id
试卷编号
int(自动编号)
Primary key
Name
试卷名称
Char(50)
Not null
Used
是否用于考试
Bit
Not null
4.3 数据库建表语句
create table SysUser(
userid int not null,
password varchar(80) not null,
constraint pk_SysUser primary key(Userid)
);
create table Department(
id int not null,
name varchar(20) not null,
constraint pk_Department primary key(id)
);
create table Classes(
id int not null,
name varchar(20) not null,
departmentid int not null,
constraint pk_Classes primary key(id)
);
create table Students(
id int not null,
name varchar(15) not null,
classid int not null,
examid int not null,
score int not null,
time date not null,
room varchar(10) not null,
absence bit not null,
constraint pk_Students primary key(id)
);
create table Teachers(
id int not null,
name varchar(15) not null,
password varchar(6) not null,
phone varchar(11) not null,
sum int not null,
constraint pk_Teachers primary key(id)
);
create table Judge(
id int not null,
chaptered int not null,
content varchar(100) not null,
answer bit not null,
score int not null,
constraint pk_Judge primary key(id)
);
create table Space(
id int not null,
chaptered int not null,
content varchar(100) not null,
answer1 varchar(50) not null,
answer2 varchar(50) not null,
score int not null,
constraint pk_Space primary key(id)
);
create table Single(
id int not null,
chaptered int not null,
content varchar(100) not null,
option1 varchar(50) not null,
option2 varchar(50) not null,
option3 varchar(50) not null,
option4 varchar(50) not null,
answer int not null,
score int not null,
constraint pk_Single primary key(id)
);
create table More(
id int not null,
chaptered int not null,
option1 varchar(50) not null,
option2 varchar(50) not null,
option3 varchar(50) not null,
option4 varchar(50) not null,
answer varchar(4) not null,
score int not null,
constraint pk_More primary key(id)
);
create table Chapter(
id int not null,
name varchar(50) not null,
constraint pk_Chapter primary key(id)
);
crea
展开阅读全文