版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 本科生课程设计本科生课程设计 课程名称数据库原理及应用课程设计 课程编号 学号 学生姓名 所在专业计算机科学与技术 所在班级 指导教师 成绩 教师签字 目目 录录 一、设计总说明.iv 1.1 概况.iv 1.2 系统开发目的.iv 1.3 开发内容.iv 1.4 开发要求.iv 1.5 开发环境及工具.v 二、需求分析.v 2.1 系统背景分析.v 2.2 需求介绍.v 三、概念结构设计.v 3.1 系统功能模块设计图.vi 3.2 系统 e-r 图 .vi 四、逻辑结构设计.vii 五、物理结构设计.vii 5.1 数据库创建.viii 六、系统实现.xii 6.1 登陆界面.xii 6
2、.2 管理员主界面.xiii 六、 优缺点及自我评价.xvii 八、参考文献 .xviii 九、代码(附录).xxi 一、设计总说明一、设计总说明 1.1 概况概况 名称:学生成绩管理系统 用途:学校等机构 功能:实现对学生信息、成绩的管理 1.2 系统开发目的系统开发目的 1)掌握利用 c# 开发工具进行可视化程序设计的基本过程。 2) 理解 c#应用程序的事件驱动机制,掌握利用 c#开发工具编写程序代码的方法,能 熟练利用 c#语法规则进行算法设计和代码编写。 3)掌握利用 ado.net 对象进行数据库应用程序设计的基本方法。 4)掌握 sql 数据库数据表设计以及 sql 语句的书写和
3、 c#中的调用方法。 通过掌握以上的知识同时提高自己的实践动手能力。 1.3 开发内容开发内容 通过调查分析得到学生成绩管理系统的系统需求,从而设计出系统的概念模型、逻 辑模型、物理模型,通过 sql2005 和 vs2010 的操作平台完成和实现相应的要求,再而 进行不断的调试和测试完善系统的漏洞。 1.4 开发要求开发要求 学生各种信息的输入,包括学生的基本信息、成绩信息、课程信息等。 学生各种信息的修改; 实现基本信息、成绩信息、课程信息的删除; 按照一定的条件,查询、统计符合条件的学生信息;能够实现多种查询方式,并且 可以进行简单的学生信息统计; 实现基本信息、成绩信息、课程信息的导入
4、导出等等; 1.5 开发环境及工具开发环境及工具 系统前台开发软件:microsoft 公司的 visual studio 2008 系统后台管理软件:sql server management studio 2005 系统开发语言:c# 二、需求分析二、需求分析 2.1 系统背景分析系统背景分析 随着电脑的普及,信息量的增大,现在几乎每个学校乃至每个教育机构也顺应时代 的发展,纷纷抛弃繁琐的人工管理学生的成绩以及学生的信息的方式,而是采用各种 管理软件进行管理。采用软件系统进行管理具有处理数据速度更快、信息量更多、更 加准确、更加简便等特点。所以学生成绩管理系统成为学校和其他教育机构不可或缺
5、 的管理软件。 2.2 需求介绍需求介绍 通过调查分析以及结合案例,系统应该达到以下的要求: (1)系统用户应包括两个层次:管理员和学生,管理员进行所有的操作,而学生 只能够进行查询个人成绩信息、查询个人信息和修改密码。 (2)能够实现学生基本信息的录入、修改、删除。 (3)能够实现课程信息的录入、修改、删除。 (4)能够实现成绩信息的录入、修改、删除。 (5)具有丰富的查询功能,能对学生信息、课程信息、成绩信息等进行查询 (6)系统运行稳定,安全可靠。 (7)用户界面设计美观、友好,使用操作便捷。 三、概念结构设计三、概念结构设计 3.1 系统功能模块设计图系统功能模块设计图 3.2 系统系
6、统 e-r 图图 根据对数据项与数据结构的分析,设计出能够满足系统需求的各种实体,及它们之间 的关系,为后面的逻辑结构设计打下基础。系统 e-r 图可以将各个实体之间的关系显 示出来,将各个实体间的属性依赖表示明白。 学生成绩管理学生成绩管理 系统系统 管理员管理员 学生学生 用用 户户 管管 理理 学学 生生 信信 息息 管管 理理 课课 程程 信信 息息 管管 理理 成成 绩绩 信信 息息 管管 理理 成成 绩绩 查查 询询 统统 计计 学学 生生 信信 息息 查查 询询 个个 人人 成成 绩绩 查查 询询 个个 人人 信信 息息 查查 询询 密密 码码 修修 改改 四、逻辑结构设计四、逻
7、辑结构设计 逻辑结构设计的任务就是把概念模型设计阶段设计好的基本 e-r 图转换为与选 用的具体机器上的 dbms 产品所支持的数据库模型相符合的逻辑结构,现在选用关系 模型,e-r 图转换如下: 用户用户(用户名,用户密码,权限) 学生信息学生信息(学号,姓名,性别,生日,民族,政治面貌,身份证,电话,班级,所在 系,家庭地址) 用户 产生 姓 名 学 号 民 族 出 生 年 月 性 别 地 址 权 限 密 码 用 户 名 课程 教 师 课 程 名 课 程 号 考核 学生 选课 身 份 证 政 治 面 貌 电 话班 级 院 系 成绩 成 绩 学 号 课 程 号 课程信息课程信息(课程号,课程
8、名,教师) 成绩信息成绩信息(学号,课程名,成绩) 五、物理结构设计五、物理结构设计 数据库物理设计阶段的任务是根据具体计算机系统的特点,给给定的数据库系统 确定合理的存储结构和存取方法。我通过创建索引、存储过程、触发器、建立事务等 来实现物理结构的优化。 5.1 数据库创建数据库创建 用户表:用户表: 学生表:学生表: 课程表:课程表: 成绩表: 1 1)创建各种约束条件,来保证数据库的完整性操作,下面是添加外键参照的语句创建各种约束条件,来保证数据库的完整性操作,下面是添加外键参照的语句 -外键参照,防止数据的非法操作 alter table sc add constraint sc_sn
9、o foreign key (sno) references student(sno), constraint sc_sname foreign key (cno) references course(cno) 2 2)创建索引,加快查询的速度创建索引,加快查询的速度 create unique index student_sno on sudent(sno); create unique index course_course on student(cno); 3 3)创建触发器,通过触发器来实现相关的自动工作创建触发器,通过触发器来实现相关的自动工作 -创建触发器,自动生成用户,生成默认密
10、码和用户类型- create trigger insert_user on student for insert as begin declare username char (20) select username=inserted.sname from inserted insert into userinfo values(username,888,1) end -创建级联删除,删除学生信息,自定删除他的用户信息 create trigger delete_student on student for delete as begin delete userinfo from userin
11、fo,deleted where userinfo.username=deleted.sname end drop trigger pp drop trigger delete_student1 -创建级联删除,删除学生信息,自定删除他的成绩信息 create trigger delete_student1 on student for delete as begin delete sc from sc,deleted where sc.sno=deleted.sno end go -创建级联修改,修改学生学号和课程号时自动修改sc表中的学号和课 程号 create trigger stude
12、nt_sc_update on student for update as if update(sno) begin update sc set sno=(select sno from inserted) from sc,deleted where sc.sno=deleted.sno end go create trigger course_sc_update on course for update as if update(cno) begin update sc set sno=(select cno from inserted) from sc,deleted where sc.c
13、no=deleted.cno end go - 4)创建视图,通过视图进行查找,提高数据库的安全性创建视图,通过视图进行查找,提高数据库的安全性 -创建视图 create view student_sno_query(sno,sname,cname,teacher,grade,gpa) as select student.sno,student.sname,cname,teacher,grade,(grade-50.0)/10 from sc,student,course where sc.sno=student.sno and sc.cno=course.cno order by grade
14、 desc 5)使用事务,提高数据的准确性,在实现增删查改时,如果产生异常将会回滚使用事务,提高数据的准确性,在实现增删查改时,如果产生异常将会回滚 sqltransaction trans = con.begintransaction(); try trans.commit(); catch (exception) trans.rollback(); finally trans.dispose(); 在c#编写的过程中,把上面的代码嵌入进去就可以完成事务的检测。 六、系统实现六、系统实现 6.1 登陆界面登陆界面 本窗口为登录窗口,对用户身份和权限进行判断,如果输入匹配登录成功后进入主 界面
15、,如果无法匹配会提示用户名或密码或权限输入错误,并且可以重置重新输入。 6.2 管理员主界面管理员主界面 主界面上的菜单栏显示了用户可以进行的操作。点击后分别可以进入以下 界面 6.2.1 用户管理用户管理 用户管理窗口可以进行用户信息的增加、删除、查询和修改 .2 学生信息管理:学生信息管理: 学生信息管理窗口可以对学生的信息进行增加、删除、查询、修改以及学 生信息的导入与导出 导入:导入: .3 课程信息管理:课程信息管理: 课程信息管理对课程进行增加、删除、查询、修改、导入和导出 6.2.4 成绩管理:成绩管理: 成绩管理对成绩的增加、删除、修改、查询和导
16、入导出 .5 成绩查询统计:成绩查询统计: 可以根据学号、姓名进行查询学生的成绩等信息,然后进行简单的统计 6.2.6 学生信息查询:学生信息查询: 可以根据学号、姓名进行查询学生信息的查询 6.3 学生用户主界面学生用户主界面 此界面的功能同管理员界面的功能大同小异,只是执行的只有查询功能和密码修改 功能。下面是密码修改界面: 七、优缺点及自我评价七、优缺点及自我评价 经过好几个星期的学习,我完成了基于 c#.net 的学生成绩管理系统的课程设 计。从开始的系统分析,到系统功能的逐一具体化和实现。最后整体完成了一个可 以将就使用的学生成绩管理系统。在这段学习过程中,从开始的一
17、无所知,到逐渐 的掌握 vs2010 的使用,进而实现对页面的设计、数据库的连接等知识的掌握。通 过自己上网查资料和咨询有经验的同学,提高了自己的独立实践能力。我不但从这 次课程设计中学到了技能上的能力,而且我也更加坚信自己的能力,只要敢于去尝 试,付出了,就一定会有收获。下面对本次课程设计的优缺点进行总结。 优点:使用了数据库的触发器简化了用户添加的步骤、产生级联删除等;使用 事务以及视图,提高了系统的完整性和安全性。系统采用父子窗体,整体使用比较 的方便,界面较为美观。 缺点:时间比较紧,没有考虑太多的细节的方面,比如:身份证输入验证限制 等等。对学生成绩的统计只是实现了简单的统计,没有加
18、入排名等功能。 八、参考文献八、参考文献 1.精通 c#与.net 4.0 2.数据库系统概论第四版-王珊编 视频教程-winform 基础 苏坤-传智播客 4.c_#.4.0 权威指南.姜晓东.扫描版 九、九、 (附录)部分主要代码(附录)部分主要代码 9.1 连接数据库连接数据库 适配文件 连接语句: string constr = configurationmanager.connectionstringsconstr.connectionstring; sqlconnection con = new sqlconnection(constr);/连接数据库 9.2 登录界面代码 usi
19、ng system; using system.collections.generic; using system.componentmodel; using system.data; using system.drawing; using system.linq; using system.text; using system.windows.forms; using 学生成绩管理系统.basiclass; using system.data.sqlclient; using system.configuration; namespace 学生成绩管理系统 public partial cl
20、ass frm_login : form public frm_login() initializecomponent(); private void button1_click(object sender, eventargs e) loginpass();/调用登录验证的函数 public void loginpass()/登录验证的函数 if (txt_username.text.trim() = | string.isnullorempty(txt_username.text) messagebox.show(用户名不能为空!, 登录提示); txt_username.focus();
21、 else if (txt_userpass.text.trim() = | string.isnullorempty(txt_userpass.text) messagebox.show(密码不能为空!, 登陆提示); txt_userpass.focus(); else if (cbo_type.text.trim() = | string.isnullorempty(cbo_type.text) messagebox.show(请选择登录类型!, 登陆提示); else userinfo u = null; /此前创建userinfo.cs string constr = configu
22、rationmanager.connectionstringsconstr.connectionstring; sqlconnection con = new sqlconnection(constr); try /使用try finally来释放资源 con.open();/打开数据库 int userrole = cbo_type.selectedindex; string sql = string.format(select * from userinfo where username=0 and userpass=1 and userrole=2, txt_username.text,
23、 txt_userpass.text, userrole);/string.format()用于格式化字符串 sqlcommand cmd = new sqlcommand(sql, con);/获取命令执行对象 sqldatareader dr = cmd.executereader();/获取数据读取对象 if (dr.read() u = new userinfo(); /创建一个新的对象 u.userid = convert.toint32(druserid); u.username = drusername.tostring(); u.userpass = druserpass.to
24、string(); u.userrole = druserrole.tostring(); dr.close(); if (u != null) logininfo.loginuserinfo = u;/保存登录用户信息 this.visible = false; frm_main fm = new frm_main(); frm_main1 fm1 = new frm_main1(); if (logininfo.loginuserinfo.userrole = 0) fm.show(); /显示管理员主窗体 else fm1.show(); /显示学生主窗体 else messagebox
25、.show(用户名或密码错误!, 登录提示); catch (exception) messagebox.show(请注意app.config数据库连接字符串!或查找 try中的错误, 登录提示); finally con.close(); private void btn_login_click_keydown(object sender, keyeventargs e)/使用键盘事件 if (e.keycode = keys.enter) if (txt_username.text != else sendkeys.send(tab); private void btn_reset_cli
26、ck_click(object sender, eventargs e)/重置 txt_username.text = ; txt_userpass.text = ; txt_username.focus(); 9.39.3 管理员主界面管理员主界面 using system; using system.collections.generic; using system.componentmodel; using system.data; using system.drawing; using system.linq; using system.text; using system.windo
27、ws.forms; using 学生成绩管理系统.basiclass; using 学生成绩管理系统.student; using 学生成绩管理系统.course; using 学生成绩管理系统.sc; using 学生成绩管理系统.student_search; namespace 学生成绩管理系统 public partial class frm_main : form public frm_main() initializecomponent(); private void timer1_tick(object sender, eventargs e) tslb_time.text =
28、datetime.now.tostring(yyyy年mm月?dd日? hh时骸?mm分?:ss秒?); private void frm_main_load(object sender, eventargs e) tslb_name.text = 登录信息欢迎您 + logininfo.loginuserinfo.username + !当前时间: ; tslb_time.text = datetime.now.tostring(yyyy年mm月dd日hh时mm分:ss秒); private void frm_main_formclosing(object sender, formclosi
29、ngeventargs e) dialogresult dr = messagebox.show(确认关闭系统, 警告, messageboxbuttons.yesno, messageboxicon.warning); if (dr = dialogresult.yes) this.dispose(); application.exit(); else e.cancel = true; frm_userinfo yh = new frm_userinfo(); private void tsmi_user_click(object sender, eventargs e) yh.mdipar
30、ent = this;/设置父窗体 if (yh.visible) yh.focus(); return; else yh = new frm_userinfo(); yh.mdiparent = this; yh.show(); return; frm_student xs = new frm_student(); private void tsmi_student_click(object sender, eventargs e) xs.mdiparent = this;/设置父窗体 if (xs.visible) xs.focus(); return; else xs = new frm_student(); xs.mdiparent = this; xs.show(); return; frm_course kc = new frm_course(); /显示学生息管理窗口 private void tsmi_course_click(object sender, eventargs e) kc.mdiparent = this;/设置父窗体 if (kc.visi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三年级语文上册《一次成功的实验》教案
- 中国休闲零食电商行业市场全景调研及投资规划建议报告
- 小班语言公开课《圆》活动教案
- 大学生自我介绍范文集合七篇
- 银行客服工作总结(15篇)
- 建筑实习报告模板合集七篇
- 乒乓球比赛作文300字汇编十篇
- 消防安全在我心中演讲稿5篇
- 后备干部培训心得体会800字
- 辞职报告范文汇编15篇
- 孵化器的运营和服务模式
- 2024年大学试题(管理类)-公共部门决策的理论与方法笔试历年真题荟萃含答案
- 在美术课堂中融入心理健康教育
- 2024年上海外服招聘笔试参考题库附带答案详解
- 中国AED布局与投放专家共识护理课件
- 无菌注射剂生产线清洁验证方案
- 2024年健康照护师理论试题
- 2023年线路维护主管年度总结及下一年展望
- 2023年意识形态工作责任清单及风险点台账
- 《经典动画赏析》课件
- 大学英语四级阅读理解精读100篇
评论
0/150
提交评论