数据库课程设计教务管理系统_第1页
数据库课程设计教务管理系统_第2页
数据库课程设计教务管理系统_第3页
数据库课程设计教务管理系统_第4页
数据库课程设计教务管理系统_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、洛 阳 理 工 学 院课 程 设 计 报 告 课程名称 数据库课程设计 设计题目 教务管理系统 专 业 计算机科学与技术 班 级 b120505 学 号 姓 名 完成日期 2015-1-4 课 程 设 计 任 务 书设计题目: 教务管理系统 设计内容与要求:设计教务管理系统,类似于我校教务管理系统,有四类用户:教务员、学生、教师、管理员教务员可以输入学生、教师、班级、课程信息。一个班级只属于一个专业,一个学生只属于一个班级。教务员负责输入每个专业、每个班级需要学习哪些课程,指定课程的任课教师。教师可以查看学习该课程的学生名单。课程结束后,教师可以录入课程成绩。一个教师可以教授多个班的多门课程,

2、每门课由多位老师讲授。课程分两类,必修课和选修课。系统要记录每个学生学习各门必修课的成绩,还要记录学生选修了哪些选修课以及课程成绩。学生可以查看自己各门课程的成绩。学生还可以进行评教,给老师打分。管理员可以输入教室信息,并结合班级、课程、教室信息实现自动排课。要求: 1.完成本系统的需求分析,写出功能需求和数据需求描述; 2.完成数据库的概念结构设计、逻辑结构设计、物理结构设计; 3.完成本系统的部分功能模块的程序界面设计。 指导教师: 高春玲 2014 年 12 月 28 日课 程 设 计 评 语 成绩: 指导教师:_ 年 月 日目录1、 概述 21.1、本设计的目的与意义21.2、数据库开

3、发工具和应用程序开发工具22、 需求分析 22.1功能需求22.2数据需求23、 概念结构设计 23.1、e-r模型设计23.2、总体e-r图描述44、 逻辑结构设计 44.1、关系模型44.2、关系模式的优化与说明45、 物理结构设计 55.1建立数据库 55.2表与表结构 56、 应用程序设计 66.1、系统总体结构 66.2、系统界面与源代码 76.2.1、界面 76.2.2、功能描述 96.2.3、程序源代码 9七、设计总结 23八、体会与收获 24九、参考文献 24一、 概述本系统后台数据库采用microsoft sql server 数据库,该数据库系统在安全性、准确性和运行速度方

4、面有绝对的优势,并且处理数据量大,效率高;前台采用microsoft 公司的visual studio 2010作为主要开发工具,可与sql server 2008数据库无缝链接。2、 需求分析2.1、功能需求本系统的功能如下:1)学生信息查询:学生可以根据学号、姓名、专业进行查询.2)学生信息管理:主要是用于学生信息更新、插入、删除;3)学生成绩录入:用于学生成绩管理,录入学生成绩,也可以更新;2.2、数据需求本系统需要的数据如下:学生:学号、姓名、性别、年龄教师:工号、姓名、性别、年龄班级:班号、班名、人数、课程:课程号、课程名、上课时间、上课地点专业:专业号、专业名3、 概念结构设计3.

5、1、e-r模型设计(e-r图)学生和教师实体及其属性e-r图教师与课程e-r图部分实体的e-r图总体e-r图3.2、总体e-r图描述 学生与班级之间的联系是所属关系(一对多关系)班级与专业之间的联系是所属关系(一对多关系)班级与课程之间的联系是学习关系(多对多关系)学生选修一门选修课(一对多关系)学生评教老师所教课程(多对多关系)老师教授课程(多对多关系)四、逻辑结构设计4.1、关系模型 学生(学号、姓名、性别、年龄、班号、选修课程号、分数)教师(工号、姓名、性别、年龄)班级(班号、班名、人数、专业名)课程(课程号、课程名)成绩(必修课程号、班号、学号、分数)评教(学号、工号、课程号、评分)教

6、授(工号、课程号)课程表(课程号、工号、上课时间 、上课地点)(实现排课功能)用户(用户名、密码、用户类型)(存储登陆查询系统的人员信息)加粗表示外键、加下划线表示主码4.2、关系模式的优化与说明例如:教授关系的依赖关系如下:(工号、课程号)工号、课程号所以教授关系模式属于第三范式教师关系的依赖关系如下:工号工号、姓名、性别、年龄因为没有非主属性对码的部分函数依赖,也没有非主属性对码的传递函数依赖所以教师关系模式属于第三范式五、物理结构设计5.1、数据库的建立5.2、表与表结构班级(class)表的结构课程(course)表的结构学生(student)表的结构教师(teacher)表的结构评教

7、(judge)表的结构教授(teach)表的结构成绩(grade)表的结构六、应用程序设计6.1、系统总体结构1)主界面:登陆界面,通过选择用户类型,输入用户名密码,点击登录进入不同界面。2)子界面:不同用户类型的界面不相同,学生可以查询成绩,老师可以查看自己所教课程有哪些学习,教务员可以实现排课功能。他们都能够修改自己的登录密码6.2、系统界面与源代码6.2.1、界面登陆界面学生界面老师界面6.2.2、功能描述 1)登录 2)学生查询学习课程的成绩 3)老师查询学习所教课程的学生名单 4)修改登录密码 5)查看用户基本信息6.2.3、程序源代码using system;using syste

8、m.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.linq;using system.text;using system.windows.forms;namespace 教务管理系统 public struct userinform /结构体存储用户输入的信息 public static string usertype; public static string username; public static string usersecre

9、t; public static loginform lg; public partial class loginform : form /登陆界面 public loginform() initializecomponent(); userinform.lg= this; dataclasses1datacontext db; private void cancelbutton_click(object sender, eventargs e) this.close(); private void loginbutton_click(object sender, eventargs e) d

10、b = new dataclasses1datacontext(); this.bindingsource1.datasource = db.userinfo; bool b = false; if (utypecombobox.selectedindex!=-1) userinform.username = unametextbox.text; userinform.usersecret = usecrettextbox.text; userinform.usertype = utypecombobox.selecteditem.tostring(); var ss = from s in

11、db.userinfo where s.utype = userinform.usertype select s; foreach (var x in ss) if (x.uname.tolower()= userinform.username.tolower()& x.usecret = userinform.usersecret) messagebox.show(欢迎您登陆!); this.visible = false; b = true; switch (userinform.usertype) case 学生: studentform sf = new studentform();

12、sf.show(); break; case 老师: teacherform tf = new teacherform(); tf.show(); break; case 管理员: adminform af = new adminform(); af.show(); break; case 教务员: jwform jw = new jwform(); jw.show(); break; if (!b) messagebox.show(用户名不存在或密码错误); usecrettextbox.clear(); unametextbox.focus(); return; else messageb

13、ox.show(请选择用户类型); unametextbox.clear(); usecrettextbox.clear(); unametextbox.focus(); return; public partial class studentform : form /学生界面 public studentform() initializecomponent(); dataclasses1datacontext db; private void studentform_load(object sender, eventargs e) db = new dataclasses1dataconte

14、xt(); snotextbox.text = userinform.username; snotextbox1.text = userinform.username; var ss = from s in db.student where s.sno = userinform.username select s; foreach (var itm in ss) snametextbox.text = itm.sname; sagetextbox.text = itm.sage.tostring(); ssextextbox.text = itm.ssex; private void labe

15、l4_click(object sender, eventargs e) this.close(); userinform.lg.visible = true; private void label3_click(object sender, eventargs e) panel2.visible = true; private void enterbutton_click(object sender, eventargs e) db = new dataclasses1datacontext(); if (textbox1.text = ) messagebox.show(请输入原密码);

16、textbox1.clear(); textbox2.clear(); textbox3.clear(); textbox1.focus(); else if (textbox1.text = userinform.usersecret) if(textbox2.text=textbox3.text) var ss = from s in db.userinfo where s.uname = userinform.username & s.utype = userinform.usertype select s; var ui = ss.firstordefault(); if (ui !=

17、 null) ui.usecret = textbox2.text; db.submitchanges(); messagebox.show(修改成功); textbox1.clear(); textbox2.clear(); textbox3.clear(); panel2.visible = false; else messagebox.show(两次输入应相同); textbox3.clear(); textbox3.focus(); else messagebox.show(原密码输入错误,请重新输入); textbox1.clear(); textbox2.clear(); text

18、box3.clear(); textbox1.focus(); private void cancelbutton_click(object sender, eventargs e) textbox1.clear(); textbox2.clear(); textbox3.clear(); panel2.visible = false; private void studentform_formclosing(object sender, formclosingeventargs e) db = new dataclasses1datacontext(); this.bindingsource

19、1.datasource = db.userinfo; try this.bindingsource1.endedit(); db.submitchanges(); catch (exception ex) messagebox.show(ex.message, 失败); private void gradebutton_click(object sender, eventargs e) db = new dataclasses1datacontext(); if (cnametextbox.text != ) var ss = from s in db.course where s.cnam

20、e = cnametextbox.text select s; var cs = ss.firstordefault(); if (cs != null) var s1 = from s2 in db.grade where s2.gkehao = cs.cno & s2.gxuehao = userinform.username select s2; foreach (var item in s1) gradelistbox.items.add(cnametextbox.text + 的成绩为 + item.ggrade.tostring(); else gradelistbox.items

21、.add(此课程不存在) gradelistbox.items.add(请重新输入); cnametextbox.clear(); cnametextbox.focus(); private void clearbutton_click(object sender, eventargs e) gradelistbox.items.clear(); private void tabpage1_click(object sender, eventargs e) public partial class teacherform : form /老师界面 public teacherform() in

22、itializecomponent(); dataclasses1datacontext db; private void enterbutton_click(object sender, eventargs e) db = new dataclasses1datacontext(); if (textbox1.text = ) messagebox.show(请输入原密码); textbox1.clear(); textbox2.clear(); textbox3.clear(); textbox1.focus(); else if (textbox1.text = userinform.u

23、sersecret) if (textbox2.text = textbox3.text) var ss = from s in db.userinfo where s.uname = userinform.username & s.utype = userinform.usertype select s; var ui = ss.firstordefault(); if (ui != null) ui.usecret = textbox2.text; db.submitchanges(); messagebox.show(修改成功); textbox1.clear(); textbox2.c

24、lear(); textbox3.clear(); panel2.visible = false; else messagebox.show(两次输入应相同); textbox3.clear(); textbox3.focus(); else messagebox.show(原密码输入错误,请重新输入); textbox1.clear(); textbox2.clear(); textbox3.clear(); textbox1.focus(); private void label4_click_1(object sender, eventargs e) this.close(); user

25、inform.lg.visible = true; private void teacherform_load(object sender, eventargs e) db = new dataclasses1datacontext(); snotextbox.text = userinform.username; snotextbox1.text = userinform.username; var ss = from s in db.teacher where s.tno = userinform.username select s; foreach (var itm in ss) sna

26、metextbox.text = itm.tname; sagetextbox.text = itm.tage.tostring(); ssextextbox.text = itm.tsex; private void teacherform_formclosing(object sender, formclosingeventargs e) db = new dataclasses1datacontext(); this.bindingsource1.datasource = db.userinfo; try this.bindingsource1.endedit(); db.submitc

27、hanges(); catch (exception ex) messagebox.show(ex.message, 失败); private void label3_click(object sender, eventargs e) if (panel2.visible = false) panel2.visible = true; else panel2.visible = false; private void cancelbutton_click(object sender, eventargs e) textbox1.clear(); textbox2.clear(); textbo

28、x3.clear(); panel2.visible = false; private void label5_click(object sender, eventargs e) db = new dataclasses1datacontext(); var ss = from s in db.teach where s.tno = userinform.username select s; if (ss != null) selecttable st = new selecttable(); foreach (var item in ss) if (item.tcno.startswith(

29、x) var s1 = from s in db.student where s.skehao = item.tcno select new 课号 = s.skehao, 学号 = s.sno, 学生姓名 = s.sname, 性别 = s.ssex, 成绩 = s.sgrade ; st.lb.items.add(课号t学号tt姓名t性别t成绩); foreach (var im in s1) st.lb.items.add(im.课号+t+im.学号+t+im.学生姓名+t+im.性别+t+im.成绩); else var s1 = from s in db.grade where s.g

30、kehao = item.tcno select s; st.lb.items.add(课号t学号tt姓名t性别t成绩); foreach (var itm in s1) var s2 = from s in db.student where s.sno= itm.gxuehao select new 课号=itm.gkehao,学号= itm.gxuehao,学生姓名= s.sname, 性别=s.ssex,成绩= itm.ggrade ; var iem = s2.firstordefault(); st.lb.items.add(iem.课号 + t + iem.学号 + t + iem.学生姓名 + t + iem.性别 + t + iem.成绩); st.show(); else messagebox.show(该老师今年没有教授任何课程); return; private void label6_click(object sender, eventargs e) db = new dataclasses1datacontext(); var ss = from s in db.teach where s.tno = userinform.username select s; if (ss != null) gradechange gc = new grade

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论