`
aimer311
  • 浏览: 96489 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

C语言学习系统的数据库设计(原创)

阅读更多

create database teaching  /*创建数据库*/


create table single_select /*单项选择题*/
(  single_select_id int identity(1,1) not null, /*序号,主键*/
   single_select_content varchar(500) not null, /*题目内容*/
   answer_A varchar(100) not null,              /*选项*/
   answer_B varchar(100) not null,
   answer_C varchar(100) not null,
   answer_D varchar(100) not null,
   standard_answer varchar(8) not null,          /*标准答案*/
)

create table mutiple_select /*多项选择题*/
(   mutiple_select_id int identity(1001,1) not null,/*主键*/
    mutiple_select_content varchar(500) not null,
    answer_A varchar(100) not null,   
    answer_B varchar(100) not null,
    answer_C varchar(100) not null,   
    answer_D varchar(100) not null,
    answer_E varchar(100),   
    answer_F varchar(100),
    answer_G varchar(100),   
    answer_H varchar(100),
    standard_answer varchar(16) not null,
)

create table estimation   /*判断题*/
(
    estimation_id int identity(2001,1) not null,/*主键*/
    estimation_content varchar(500) not null,
    standard_answer varchar(10) not null,
)

create table fill_blank    /*填空题*/
(   fill_blank_id int identity(3001,1) not null,/*主键*/
    fill_blank_content varchar(500) not null,
    blank_1_standard_answer varchar(20),
    blank_2_standard_answer varchar(20),
    blank_3_standard_answer varchar(20),
    blank_4_standard_answer varchar(20),
    blank_5_standard_answer varchar(20),
)

create table simple_interlocution  /*简答题*/
(   simple_interlocution_id int identity(4001,1) not null,/*主键*/
    simple_interlocution_content varchar(500) not null,
    standard_answer varchar(1000) not null,
)

create table student_exercise      /*学生个人作业信息(学生查看)*/
(   exercise_id int not null,        /*外键*/
    exercise_content_id int not null,
    student_id varchar(20) not null,/*修改过*/
    class_name varchar(20) not null,
    exercise_receive_mark int not null,
    student_answer varchar(500) not null,
    standard_answer varchar(500) not null,
)

create table student_exam          /*学生个人考试信息(学生查看)*/
(   exam_id int not null, /*外键*/
    exam_content_id int not null,
    student_id varchar(20) not null, /*修改过*/
    class_name varchar(20) not null,
    exam_receive_mark int not null,
    student_answer varchar(500) not null,
    standard_answer varchar(500) not null,
)  

create table exercise_content_info /*学生总的作业信息(老师查看)*/
(   exercise_id int not null,       /*外键*/
    student_id varchar(20) not null,    /*外键*/
    class_name varchar(20) not null,
    exercise_total_mark int not null, /*该次作业的成绩*/
    exercise_date datetime,
)

create table exam_content_info    /*学生总的考试信息(老师查看)*/
(   exam_id int not null,         /*外键*/
    student_id varchar(20) not null,   /*外键*/
    class_name varchar(20) not null,
    exam_total_mark int not null, /*该次考试的成绩*/
    exam_date datetime,
)
    
create table exercise_content    /*学生作业题目*/
(   exercise_id int not null,      /*主键*/
    exercise_content_id int not null,
    exercise_content varchar(500) not null,
    standard_answer varchar(500),  /*修改过*/
    exercise_content_mark int not null,
    class_name varchar(20) not null,/*作业所属的班级,每个班级的作业是不一样的*/
    state_1 int not null,  /*不能连续布置作业,必须等学生做完一组作业,再布置下一组*/
    state_2 int not null,/*改作业是否需要老师批改,0表示不用批改*/
    state_3 int not null,/*该作业是否修改过了,0表示还没修改,1表示已经修改*/
)

create table exam_content        /*学生考试题目*/
(   exam_id int not null,        /*主键*/
    exam_content_id int not null,
    exam_content varchar(500) not null,
    standard_answer varchar(500), /*修改过*/
    exam_content_mark int not null,
    class_name varchar(20) not null,/*改试卷所属的班级,每个班级的试卷是不同的*/
    state_1 int not null,/*0表示学生还没有做过该试卷,1表示已经有做过 了*/
    state_2 int not null,/*该试卷是否已经修改,0表示还没修改,1表示已修改*/
)

create table question
(   question_id int identity(1,1) not null,  /*问题自动编号*/
    question_chapter int not null, /*章*/
    question_section int not null, /*节*/
    student_id varchar(20), /*学号*/
    ask_question_date datetime, /*提问时间*/
    /*answer_question_date datetime,解答时间*/
    question_content varchar(500) not null, /*问题内容*/
    question_answer varchar(500),   /*问题答案*/
    /*answer_id int int,*/
)   

create table chapter_section   /*章节对照表*/
(   question_chapter int not null,
    question_chapter_content varchar(100) not null,
    question_section int not null,
    question_section_content varchar(100) not null,
)

create table student_login     /*学生登陆表*/
(   student_id varchar(20) not null,
    student_password varchar(20) not null,
)

create table teacher_login   /*教师登陆表*/
(   teacher_id varchar(20) not null,
    teacher_password varchar(20) not null,
)  

create table student_info        /*学生基本情况表*/
(   xymch varchar(20) not null,/*学院*/
    class_id int identity(1,1) not null,/*班级编号*/
    class_name varchar(20) not null,/*班级名称,学生所属班级*/
    student_id varchar(20) not null,
    student_name varchar(20) not null,
    sex varchar(2) not null,
    tel varchar(20) not null,
    mail varchar(50),
)  

create table event        /*学生点名情况表*/
(   event_date char(30),
    event_type tinyint,
    event_id int identity(1,1) not null,
    student_id varchar(20) not null,
    class_name varchar(20) not null,
)

/*主键设置*/
ALTER TABLE single_select ADD CONSTRAINT single_select_id_pk PRIMARY KEY(single_select_id);
ALTER TABLE mutiple_select ADD CONSTRAINT mutiple_select_id_pk PRIMARY KEY(mutiple_select_id);
ALTER TABLE estimation ADD CONSTRAINT estimation_id_pk PRIMARY KEY(estimation_id);
ALTER TABLE fill_blank ADD CONSTRAINT fill_blank_id_pk PRIMARY KEY(fill_blank_id);
ALTER TABLE simple_interlocution ADD CONSTRAINT simple_interlocution_id_pk PRIMARY KEY(simple_interlocution_id);

/*ALTER TABLE exercise_content ADD CONSTRAINT exercise_id_pk PRIMARY KEY(exercise_id);
//ALTER TABLE exam_content ADD CONSTRAINT exam_id_pk PRIMARY KEY(exam_id);*/
ALTER TABLE student_info ADD CONSTRAINT student_id_pk PRIMARY KEY(student_id);

/*外键设置*/
/*ALTER TABLE exercise_content_info ADD CONSTRAINT exercise_id_fk FOREIGN KEY(exercise_id) REFERENCES exercise_content;
//ALTER TABLE exam_content_info ADD CONSTRAINT exam_id_fk FOREIGN KEY(exam_id) REFERENCES exam_content;*/
ALTER TABLE exercise_content_info ADD CONSTRAINT student_id_fk1 FOREIGN KEY(student_id) REFERENCES student_info;
ALTER TABLE exam_content_info ADD CONSTRAINT student_id_fk2 FOREIGN KEY(student_id) REFERENCES student_info;

/*ALTER TABLE student_exercise ADD CONSTRAINT exercise_id_fk1 FOREIGN KEY(exercise_id) REFERENCES exercise_content;
//ALTER TABLE student_exam ADD CONSTRAINT exam_id_fk1 FOREIGN KEY(exam_id) REFERENCES exam_content;*/
ALTER TABLE student_login ADD CONSTRAINT student_id_fk FOREIGN KEY(student_id) REFERENCES student_info;
ALTER TABLE event ADD CONSTRAINT student_id_fk3 FOREIGN KEY(student_id) REFERENCES student_info;

/*数据插入*/

insert into teacher_login values('a','a');


/*触发器
If exists(select * from sysobjects where name='on_count_total' and xtype='TR')
drop trigger on_count_total;

create trigger on_count_total on student_exercise
after insert
as
  declare @stu_id varchar(20)
  declare @exer_id int
  declare @sco int
begin
  set @stu_id=(select student_id from inserted)
  set @exer_id=(select exercise_id from inserted)
  set @sco=(select count(exercise_receive_mark) from student_exercise where exercise_id=@exer_id and student_id=@stu_id)
  update exercise_content_info set exercise_total_mark=@sco where student_id=@stu_id and exercise_id=@exer_id
end
*/

If exists(select * from sysobjects where name='on_count_total1' and xtype='TR')
drop trigger on_count_total1;

create trigger on_count_total1 on student_exercise
after update
as
  declare @stu_id varchar(20)
  declare @exer_id int
  declare @sco int
begin
  set @stu_id=(select student_id from updated)
  set @exer_id=(select exercise_id from updated)
  set @sco=(select count(exercise_receive_mark) from student_exercise where exercise_id=@exer_id and student_id=@stu_id)
  update exercise_content_info set exercise_total_mark=@sco where student_id=@stu_id and exercise_id=@exer_id
end

/*保证每次作业的总分都为100,没道题的分数是一样的*/
If exists(select * from sysobjects where name='insert_exercise_content' and xtype='TR')
drop trigger insert_exercise_content; 

create trigger insert_exercise_content on exercise_content
after insert
as
  declare @count1 int
  declare @count2 int
  declare @score int
  declare @class_name varchar(20)
begin
  set @class_name=(select class_name from inserted)
  set @count1=(select count(distinct exercise_id) from exercise_content where class_name=@class_name)
  set @count2=(select count(exercise_id) from exercise_content where exercise_id=@count1 and class_name=@class_name)
  set @score=100/@count2
  update exercise_content set exercise_content_mark=@score where exercise_id=@count1
end  


If exists(select * from sysobjects where name='delete_exercise_content' and xtype='TR')
drop trigger delete_exercise_content; 

create trigger delete_exercise_content on exercise_content
after delete
as
  declare @count1 int
  declare @count2 int
  declare @score int
  declare @class_name varchar(20)
begin
  set @class_name=(select class_name from deleted)
  set @count1=(select count(distinct exercise_id) from exercise_content where class_name=@class_name)
  set @count2=(select count(exercise_id) from exercise_content where exercise_id=@count1 and class_name=@class_name)
  set @score=100/@count2
  update exercise_content set exercise_content_mark=@score where exercise_id=@count1
end


/*student_info的信息与student_login表的对应*/
If exists(select * from sysobjects where name='insert_student_info' and xtype='TR')
drop trigger insert_student_info;

create trigger insert_student_info on student_info
after insert
as
 declare @student_id char(20)
begin
 set @student_id=(select student_id from inserted)
 insert into student_login values(@student_id,@student_id)
end


If exists(select * from sysobjects where name='delete_student_info' and xtype='TR')
drop trigger delete_student_info;

create trigger delete_student_info on student_info
after delete
as
 declare @student_id char(20)
begin
 set @student_id=(select student_id from deleted)
 delete from student_login where student_id=@student_id
end

/*exam_content_info中的exam_total_mark总是等于student_exam中相对应的exam_receive_mark的和*/
If exists(select * from sysobjects where name='insert_student_exam' and xtype='TR')
drop trigger insert_student_exam;

create trigger insert_student_exam on student_exam
after insert
as
  declare @exam_id int
  declare @student_id varchar(20)
  declare @exam_total_mark float
begin
  set @exam_id =(select exam_id from inserted)
  set @student_id =(select student_id from inserted)
  set @exam_total_mark =(select sum(exam_receive_mark) from student_exam where exam_id=@exam_id and student_id=@student_id)
  update exam_content_info set exam_total_mark=@exam_total_mark where exam_id=@exam_id and student_id=@student_id
end

/*exercise_content_info中的exercise_total_mark总是等于student_exercise中相对应的exercise_receive_mark的和*/
If exists(select * from sysobjects where name='insert_student_exercise' and xtype='TR')
drop trigger insert_student_exercise;

create trigger insert_student_exercise on student_exercise
after insert
as
  declare @exercise_id int
  declare @student_id varchar(20)
  declare @exercise_total_mark float
begin
  set @exercise_id =(select exercise_id from inserted)
  set @student_id =(select student_id from inserted)
  set @exercise_total_mark =(select sum(exercise_receive_mark) from student_exercise where exercise_id=@exercise_id and student_id=@student_id)
  update exercise_content_info set exercise_total_mark=@exercise_total_mark where exercise_id=@exercise_id and student_id=@student_id
end

分享到:
评论

相关推荐

    学校教材订购系统,C语言版,内容详细,原创作品

    本系统不仅包含完整的程序源代码,还有数据流程图、数据字典和课程设计总结,为学习者提供了全面的开发案例,帮助理解和掌握C语言编程以及软件工程实践。 首先,C语言是一种强大的、低级的编程语言,适用于系统编程...

    c语言图书管理系统源码.zip

    这提醒我们尊重原创,仅将代码用作个人学习和理解C语言程序设计及图书管理系统的途径。 【标签解读】 “毕业设计”标签表示这是学术性质的工作,通常包含对特定问题的深入研究和解决方案。“C语言”标签强调了项目...

    大一原创C语言学生信息管理系统1.0项目源代码压缩包

    在这个项目中,C语言被用来设计和实现学生的数据库管理,这包括数据结构的选择和算法的设计。例如,学生信息可能被存储在一个结构体数组中,结构体包含姓名、学号、性别、年龄等字段,而数组则提供了快速访问和管理...

    双鱼林原创----学生成绩信息管理系统(c语言课程设计).zip

    《双鱼林原创----学生成绩信息管理系统》是一款基于C语言开发的课程设计项目,旨在帮助学生、教师或教育机构管理学生成绩数据。这款系统提供了基础的数据录入、查询、统计和分析功能,是学习C语言编程和理解信息系统...

    C语言设计课题大全.

    3. **系统概要设计**:这一阶段涉及到程序模块划分、模块间的层次结构和调用关系的确定,以及数据结构和数据库结构的初步设计,为详细设计提供蓝图。 4. **系统详细设计**:包括C语言数据类型的定义、模块算法的...

    国人原创良心自制图书管理系统C语言版.zip

    C语言是Dennis Ritchie在1972年为UNIX操作系统设计的,它以其简洁的语法和底层控制能力著称。C语言程序可以直接操作内存,提供了丰富的数据类型和控制结构,包括整型、浮点型、字符型、数组、指针等,以及if语句、...

    c语言简单成绩管理系统

    总的来说,"C语言简单成绩管理系统"是一个很好的学习项目,它涵盖了C语言的基础知识,如数据结构、文件操作、控制结构和函数设计。通过实践这个项目,可以加深对C语言的理解,并提升编程能力。同时,这也是一个可以...

    c语言做的一个任务管理器.rar

    描述中提到“计算机专业毕业设计之C语言案例源码分享”,这暗示这个项目是针对计算机科学或工程专业的学生设计的,目的是检验和展示他们在学习期间对C语言的掌握程度,以及对操作系统和任务管理概念的理解。毕业设计...

    w3school c语言教程 20141228

    《W3School C语言教程 20141228》是一份关于C语言学习的教程资料,由W3CSchool整理并在2014年12月28日发布。C语言是一种广泛应用的高级编程语言,起源于1972年,由丹尼斯·里奇在贝尔实验室为开发UNIX操作系统而设计...

    基于C语言实现原创VB控制4X4控制系统(含源代码+使用说明+毕业设计).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、...

    w3school c语言教程 飞龙整理 20140930

    C语言是一种强大的、通用的高级编程语言,起源于1972年,由贝尔实验室的丹尼斯·里奇为开发UNIX操作系统而设计。它以B语言为基础,具有简洁、高效和可移植性强的特点。C语言最初的实现是在DEC PDP-11计算机上,后来...

    教材管理系统代码

    对于想学习教材管理系统开发的人来说,这个资源提供了从数据库设计到前后端实现的全套代码,是实践和学习的好材料。不过,需要注意的是,直接使用他人的代码可能存在版权问题,应当尊重原作者的权益,如需商用最好...

    基于C语言实现本站原创VB控制继电器实验(含源代码+使用说明+毕业设计).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、...

    vb原创图书管理系统(源代码+论文).zip

    【标题】"vb原创图书管理系统(源代码+论文)"是一个基于Visual Basic开发的图书管理软件,其中包含了完整的源代码和相关的技术论文。这个系统可能是为了帮助图书馆或个人进行书籍的入库、出库、借阅、归还等日常管理...

    基于C语言实现原创VB控制4X4控制系统(含源代码+使用说明).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、...

Global site tag (gtag.js) - Google Analytics