数据库课程设计完成-华电_第1页
数据库课程设计完成-华电_第2页
数据库课程设计完成-华电_第3页
数据库课程设计完成-华电_第4页
数据库课程设计完成-华电_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

课程设计(综合实验)报告(2012--2013年度第二学期)名称:数据库课程设计题目:通讯录系统院系:计算机班级:学号:学生姓名:指导教师:廖尔崇老师设计周数:1成绩:日期:2013年06月27日需求分析1.1需求描述随着学校的发展,人际关系变得越来越重要,为了保持良好的人际关系,必须经常与亲戚、朋友、同学、同事和其他一些人保持联系,因此,为了能够快速查找到联系人的信息,节省查找时间,可以创建一个通讯录管理系统,在该系统中为了防止信息被他人窃取,可以通过密码进行验证,只有通过密码验证才能进入系统。系统要求实用性强、使用方便、效率高和安全可靠等特点。经分析我们认为学生学籍管理系统的具体要求为:1.能管理每一个栏目中通讯信息,可以进行查找删除2.通过使用计算机能方便的维护(包括插入、删除、修改)各信息表3.能方便的实现基于多个表的连接查询4.系统具有操作方便、简捷等特点1.2功能分析该程序要实现以下基本功能:用户管理:管理系统操作人员,设置操作人员口令和权限。在满足不同系统用户的操作需求基础上,提高系统的安全性。基础数据管理:维护通讯录每个联系人相关的基础数据信息。主要包括以下几个功能:增加联系人及其信息、删除联系人及其信息、按条件查找联系人及其信息、以及更改联系人的信息数据库管理:对现有的数据库进行管理,包括数据备份和恢复,以方便用户对数据库的管理和维护工作,提高系统的数据安全性。1.3开发及运行环境开发通讯录系统开发平台及运行环境如下:系统开发平台:MicrosoftVisualStudio2010系统开发语言:C#数据库管理软件:SQLServer2008R2运行平台:WindowsXP运行环境:Microsoft.NETFrameworkSDK4.01.4数据分析一个普通的通讯录一般而言使用者需要的信息有一下这些:姓名、性别、民族、与用户的关系、生日、手机、备用手机、qq、邮箱、个人简历、以及当前所在单位。为了方便管理需要添加编号这样的主键属性,同时出于安全性的考虑,除了管理员权限的用户都仅能看到自己所创建的信息,所以在联系人信息中应再加上创建者的属性,该属性应作为用户信息表的外键,在用户表中充当主键不能重复。其中姓名性别以及和用户的关系是不可缺少的属性应定为非空。系统设计用户登录用户登录通讯录系统主页面登录界面查询查询显示通讯录系统主界面插入修改删除分组信息数据库信息主界面分组信息主界面分组信息主界面重命名增加删除修改分组信息主界面整体e-r图邮箱电话号码姓名邮箱电话号码姓名生日生日住址n1QQ号住址n1QQ号拥有电话联系人拥有电话联系人性别性别密码密码2.2逻辑结构设计将通讯录管理系统E-R图转换为关系模型为:用户(用户名,密码,权限)联系人(编号,姓名,性别,民族,关系,生日,手机,QQ,电子邮件,用户名)此关系模型已经达到3NF2.3物理结构设计用户表User结构字段含义类型长度约束条件Uname用户名nchar30主键Upassword密码nchar20NotNULL联系表结构字段含义类型长度约束条件Ino编号nchar10主键Uname姓名nchar20NotNULLUsex性别nchar2'男'or'女'Uphone1手机nchar11Uphone电话nchar11UqqQQnchar15Uemail电子邮件nchar50Ubirth生日datetime8数据库物理结构设计3.1SQLServer的表设计/*-----------admin表---------------*/

createtableadmin

(Anamechar(30)primarykey,uniquenotnull,

Apasswordchar(20)notnull,

)/*-----------users表---------------*/

createtableusers

(Unamechar(30primarykey,uniquenotnull,

Upasswordchar(30)notnull,

)/*-----------Records表---------------*/

createtableRecords

(Unamenchar(30)uniquenotnullUsexnchae(30)UbirthdatetimeUaddnchar(100)Uphonenchar(30)Uemailnchar(100)Uqqchar(15)primarykey(Uname)

)3.2数据初始化录入数据库数据/*-----插入用户------------------------------*/insertintoadmin(Aname,upassword)values('3','3')selectAname,Upasswordfromadmin/*-----插入成员------------------------------*/insertintoUsere(Uname,Upassword)values('1SanPi','1')selectUname,UpasswordfromUsere其余信息同上语言定义/*-----插入联系方式--------------------------*/insertintoRecords(Uphone)values('电话')insertintoRecords(Uemail)values('EMail')insertintoRecords(Uqq)values('QQ')insertintoRecords(Uadd)values('家庭住址')insertintoRecords(Ubirth)values('出生日期')3.3关系图系统界面设计(代码见附录)登陆界面:管理员操作界面:用户注册界面:用户信息界面:5、心得体会这次的课程设计可以说是为毕业设计做的一个预演,真的做起来困难重重,深刻体会到做一个软件,里面需要的很多知识我们没有接触过,去图书馆找书的时候发现,我们学的仅仅是皮毛,还有很多东西需要我们去发掘,就算是借一本书看完它,我们还是会发现还有很多知识没有吃透,这需要我们不断的实践,不断地自学习,不断地发现问题去思考问题。从需求分析阶段不断地搜索资料,想充分了解自己所做的课题在客户或者公司中的需求,由于之前所涉及的相关知识较少,画数据流图等等软件设计流程做起来很生疏,翻阅课本,和数据库课老师上课的讲解,总算整了一个像样点的需求分析,但是也不知道是不是正确,根据数据流图,不断修改需求,由于这个课程设计没有连接外部设备,比如打印机,网络等,所以做的都是在实践阶段,根据设计的大概模式展开一步步的模块构造。经过不断地测试,不断地改进,其中还是发下了不少问题,第一次做这些工作,没有任何经验,甚至无从下手,还是很谢谢老师和同学的帮忙,从中也学到了一些代码的写法,为什么要这样写,通过和同学的讨论,找到一些书本上没有的方法,如何数据绑定等等,怎样从数据库中将数据提取出来放到一个文本框或者标签内,这些东西是组成界面的东西,虽然小,但是可以体现整个软件的水平,其实并不需要建多少数据库的表,写多少复杂的存储过程,是不是用了数据库函数,触发器等等,但是至少要弄明白这些东西如果操作,清晰思路才能将功能分清晰。经过一段时间的学习与实践,个人通讯录管理系统基本上开发好了。该系统具备了:添加、修改、删除、浏览、查询信息,实现了根据用户需求查看通讯录等功能。作为一个个人通讯管理系统,本系统所提供的功能的确太少了一些,仅仅只实现了一些基本的功能,有很多地方还有待扩展和改良。人如果没有自信,没有目标,没有信心就不可能把事情做好,当其他人都在迷茫的时候,自己一定要坚信目标,大学毕业出去即是面临找工作,从学习这个专业,到以后做这方面的工作都需要不断地去学习去实践,这次实践可以给我们敲一个警钟,我们面临毕业,面临择业,需要这些实践经验,在困难面前要勇于尝试,这是这次课程设计给我的最大感想。附录:登陆界面:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Configuration;usingSystem.Data.SqlClient;namespaceAddressList{publicpartialclassLogin:Form{publicLogin(){InitializeComponent();}booladmin=false,role=false,b_accept=false;publicstaticstringuserName;stringstrConnect=ConfigurationSettings.AppSettings["ConnectString"].ToString();SqlConnectionmyConnection;SqlCommandmyCommand;SqlDataReadermyDataRead;privatevoidLogin_Load(objectsender,EventArgse){AcceptButton=button1;this.Text="登?陆?";}privatevoidbutton3_Click(objectsender,EventArgse){this.Close();}publicvoidChangRole(){if(radioButton1.Checked){admin=true;role=false;if(radioButton2.Checked){role=true;admin=false;}}privatevoidbutton1_Click(objectsender,EventArgse){ChangRole();if(admin==true){myConnection=newSqlConnection(strConnect);myConnection.Open();myCommand=newSqlCommand("select*fromAdmin",myConnection);myDataRead=myCommand.ExecuteReader();while(myDataRead.Read()){if(myDataRead.GetValue(0).ToString().Trim()==textBox1.Text.Trim()&&myDataRead.GetValue(1).ToString().Trim()==textBox2.Text.Trim()){b_accept=true;}}if(b_accept==true){this.Hide();newAdminForm().ShowDialog();this.Close();textBox1.Text="";textBox2.Text="";}if(b_accept==false){MessageBox.Show("密ü码?错洙?误ó,请?重?新?登?陆?");textBox1.Text="";textBox2.Text="";}b_accept=false;myConnection.Close();myDataRead.Close()}if(role==true){userName=textBox1.Text.Trim();myConnection=newSqlConnection(strConnect);myConnection.Open();myCommand=newSqlCommand("select*fromUsers",myConnection);myDataRead=myCommand.ExecuteReader();while(myDataRead.Read()){if(myDataRead.GetValue(0).ToString().Trim()==textBox1.Text.Trim()&&myDataRead.GetValue(1).ToString().Trim()==textBox2.Text.Trim()){b_accept=true;}}if(b_accept==true){textBox1.Text="";textBox2.Text="";}if(b_accept==false){MessageBox.Show("密ü码?错洙?误ó,请?重?新?登?陆?");textBox1.Text="";textBox2.Text="";}b_accept=false;myConnection.Close();myDataRead.Close();}if(admin==false&&role==false){MessageBox.Show("请?选?择?登?录?模£式?!");}}privatevoidbutton2_Click(objectsender,EventArgse){newregisterForm().ShowDialog();}privatevoidtextBox1_TextChanged(objectsender,EventArgse){}privatevoidlabel1_Click(objectsender,EventArgse){}privatevoidradioButton2_CheckedChanged(objectsender,EventArgse){}}}管理员操作界面:{publicpartialclassAdminForm:Form{publicAdminForm(){InitializeComponent();}SqlConnectionmyConnect;SqlCommandmyCommand;SqlDataAdaptermyDataAdapter;SqlCommandBuildermyCommandBuilder;DataSetmyDataSet;DataViewmyDataView;stringstrConnect=ConfigurationSettings.AppSettings["ConnectString"].ToString();if(管ü理え?员±权ā?限TToolStripMenuItem.Checked==true){textBox1.Text="";label3.Text="管ü理え?员±表括?;dataGridView1.Visible=true;button1.Visible=true;button2.Visible=true;button3.Visible=true;myConnect=newSqlConnection(strConnect);myCommand=newSqlCommand();myDataSet=newDataSet();myCommand.Connection=myConnect;myCommand.CommandText="select*fromAdmin";myDataAdapter=newSqlDataAdapter(myCommand);myCommandBuilder=newSqlCommandBuilder(myDataAdapter);myDataAdapter.DeleteCommand=myCommandBuilder.GetDeleteCommand();myDataAdapter.InsertCommand=myCommandBuilder.GetInsertCommand();myDataAdapter.UpdateCommand=myCommandBuilder.GetUpdateCommand();myDataAdapter.Fill(myDataSet);myDataView=newDataView();myDataView.Table=myDataSet.Tables[0];dataGridView1.DataSource=myDataView;}}catch(Exceptionex){MessageBox.Show(ex.Message);}}if(用?户§信?息¢ToolStripMenuItem.Checked==true){textBox1.Text="";label3.Text="用?户§信?息¢表括?;dataGridView1.Visible=true;button1.Visible=true;button2.Visible=true;button3.Visible=true;myConnect=newSqlConnection(strConnect);myCommand=newSqlCommand();myDataSet=newDataSet();myCommand.Connection=myConnect;myCommand.CommandText="select*fromRecords";myDataAdapter=newSqlDataAdapter(myCommand);myCommandBuilder=newSqlCommandBuilder(myDataAdapter);myDataAdapter.DeleteCommand=myCommandBuilder.GetDeleteCommand();myDataAdapter.InsertCommand=myCommandBuilder.GetInsertCommand();myDataAdapter.UpdateCommand=myCommandBuilder.GetUpdateCommand();myDataAdapter.Fill(myDataSet);myDataView=newDataView();myDataView.Table=myDataSet.Tables[0];dataGridView1.DataSource=myDataView;}}privatevoidbutton4_Click(objectsender,EventArgse){myDataView.RowFilter="用?户§名?like'"+textBox1.Text.Trim()+"'";}privatevoidbutton1_Click(objectsender,EventArgse){try{myDataAdapter.Update(myDataSet);}privatevoidbutton2_Click(objectsender,EventArgse){try{DataGridViewRowcurrentRow=dataGridView1.CurrentRow;myDataView.Delete(currentRow.Index);myDataAdapter.Update(myDataSet);}privatevoidbutton3_Click(objectsender,EventArgse){try{myDataAdapter.Update(myDataSet);}privatevoid备?份ToolStripMenuItem_Click(objectsender,EventArgse){try{if(用?户§信?息¢ToolStripMenuItem.Checked==true){stringstrToCopy="DataSource=.\\sqlexpress;InitialCatalog="+";IntegratedSecurity=True";SqlConnectionmyConnect3=newSqlConnection(strConnect);myConnect3.Open();SqlCommandmyCommand3=newSqlCommand();myCommand3.Connection=myConnect3;myCommand3.CommandText="createdatabase";myCommand3.ExecuteNonQuery();myCommand3.CommandText="use"+"createtable"+"(用?户§名?nchar(20)primarykeynotnull,姓?名?nchar(30),性?别纄nchar(10),出?生Θ?日?期údatetime,家ò庭?住?址·nchar(100),电?话°nchar(30),手?机únchar(20),Emailnchar(100),QQnchar(15))";myCommand3.ExecuteNonQuery();myConnect3.Close();SqlConnectionmyConnect1=newSqlConnection(strConnect);SqlConnectionmyConnect2=newSqlConnection(strToCopy);SqlDataReadermyDataRead;myConnect1.Open();myConnect2.Open();SqlCommandmyCommand1=newSqlCommand();SqlCommandmyCommand2=newSqlCommand();myCommand1.Connection=myConnect1;myCommand1.CommandText="select*fromRecords";myDataRead=myCommand1.ExecuteReader();myCommand2.Connection=myConnect2;myCommand2.CommandText="insertinto"+"values(@s1,@s2,@s3,@s4,@s7,@s8,@s9,@s10,@s11)";myCommand2.Parameters.Add("@s1",SqlDbType.NChar);myCommand2.Parameters.Add("@s2",SqlDbType.NChar);myCommand2.Parameters.Add("@s3",SqlDbType.NChar);myCommand2.Parameters.Add("@s4",SqlDbType.DateTime);myCommand2.Parameters.Add("@s7",SqlDbType.NChar);myCommand2.Parameters.Add("@s8",SqlDbType.NChar);myCommand2.Parameters.Add("@s9",SqlDbType.NChar);myCommand2.Parameters.Add("@s10",SqlDbType.NChar);myCommand2.Parameters.Add("@s11",SqlDbType.NChar);while(myDataRead.Read()){myCommand2.Parameters[0].Value=myDataRead.GetValue(0);myCommand2.Parameters[1].Value=myDataRead.GetValue(1);myCommand2.Parameters[2].Value=myDataRead.GetValue(2);myCommand2.Parameters[3].Value=myDataRead.GetValue(3);myCommand2.Parameters[4].Value=myDataRead.GetValue(4);myCommand2.Parameters[5].Value=myDataRead.GetValue(5);myCommand2.Parameters[6].Value=myDataRead.GetValue(6);myCommand2.Parameters[7].Value=myDataRead.GetValue(7);myCommand2.Parameters[8].Value=myDataRead.GetValue(8);myCommand2.Parameters[9].Value=myDataRead.GetValue(9);myCommand2.Parameters[10].Value=myDataRead.GetValue(10);myCommand2.Parameters[11].Value=myDataRead.GetValue(11);myCommand2.ExecuteNonQuery();}MessageBox.Show("数簓据Y备?份成é功|!?");}elseMessageBox.Show("此?功|能ü暂Y只?对?用?户§信?息¢表括?提?供?");}privatevoidtextBox1_TextChanged(objectsender,EventArgse){}privatevoiddataGridView1_CellContentClick(objectsender,DataGridViewCellEventArgse){}privatevoidlabel3_Click(objectsender,EventArgse)用户注册界面:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Configuration;usingSystem.Data.SqlClient;namespaceAddressList{publicpartialclassregisterForm:Form{publicregisterForm(){InitializeComponent();}stringstrConnect=ConfigurationSettings.AppSettings["ConnectString"].ToString();boolb_accept=false;privatevoidregisterForm_Load(objectsender,EventArgse){AcceptButton=button1;this.Text="注痢?册á";}privatevoidbutton1_Click(objectsender,EventArgse){SqlConnectionmyConnect=newSqlConnection(strConnect);SqlCommandmyCommand=newSqlCommand();myConnect=newSqlConnection(strConnect);myCommand=newSqlCommand();myCommand.Connection=myConnect;myCommand.CommandText="select*fromUsers";myConnect.Open();SqlDataReadermyReader=myCommand.ExecuteReader();while(myReader.Read()){if(textBox1.Text==""||textBox2.Text==""){textBox1.Text="";textBox2.Text="";MessageBox.Show("输?入?有瓺误ó!");if(textBox1.Text.Trim()==myReader.GetValue(0).ToString().Trim()){MessageBox.Show("此?用?户§已?存?在ú!");textBox1.Text="";textBox2.Text="";break;}b_accept=true;}myReader.Close();if(b_accept==true){if(textBox1.Text!=""&&textBox2.Text!=""){myCommand.CommandText="SP_UsersAndRecordTransaction";myCommand.CommandType=CommandType.StoredProcedure;myCommand.Parameters.Add("@UserName",SqlDbType.NChar).Value=textBox1.Text.Trim();myCommand.Parameters.Add("@PassWord",SqlDbType.NChar).Value=textBox2.Text.Trim();myCommand.ExecuteNonQuery();MessageBox.Show("已?注痢?册á成é功|!\n用?户§名?为a:"+textBox1.Text.Trim()+"\n密ü码?为a:"+textBox2.Text.Trim());this.Close();}b_accept=false;}myConnect.Close();}privatevoidbutton2_Click(objectsender,EventArgse){this.Close();}privatevoidlabel3_Click(objectsender,EventArgse){}}}用户信息界面:{publicpartialclassUserInformation:Form{publicUserInformation(){InitializeComponent();}stringstrConnect=ConfigurationSettings.AppSettings["ConnectString"].ToString();myConnect.Open();SqlCommandmyCommand=newSqlCommand();myCommand.Connection=myConnect;myCommand.CommandText="select*fromRecords";SqlDataAdaptermyDataAdapter=newSqlDataAdapter(myCommand);DataSetmyDataSet=newDataSet();myDataAdapter.Fill(myDataSet);SqlDataReadermyDataReader=myCommand.ExecuteReader();while(myDataReader.Read()){if(myDataReader.GetValue(0).ToString().Trim()==Login.userName){textBox1.Text=myDataReader.GetValue(1).ToString().Trim();textBox2.Text=myDataReader.GetValue(2).ToString().Trim();if(myDataReader.GetValue(3).ToString()!=""){DateTimedatetime=(DateTime)myDataReader.GetValue(3);textBox3.Text=datetime.Year.ToString().Trim();textBox4.Text=datetime.Month.ToString().Trim();textBox5.Text=datetime.Day.ToString().Trim();}else{textBox3.Text="";textBox4.Text="";te

温馨提示

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

评论

0/150

提交评论