數(shù)據(jù)庫課程設(shè)計完成-華電_第1頁
數(shù)據(jù)庫課程設(shè)計完成-華電_第2頁
數(shù)據(jù)庫課程設(shè)計完成-華電_第3頁
數(shù)據(jù)庫課程設(shè)計完成-華電_第4頁
數(shù)據(jù)庫課程設(shè)計完成-華電_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

課程設(shè)計(綜合實驗)報告(2012--2013年度第二學(xué)期)名稱:數(shù)據(jù)庫課程設(shè)計題目:通訊錄系統(tǒng)院系:計算機班級:學(xué)號:學(xué)生姓名:指導(dǎo)教師:廖爾崇老師設(shè)計周數(shù):1成績:日期:2013年06月27日需求分析1.1需求描述隨著學(xué)校的發(fā)展,人際關(guān)系變得越來越重要,為了保持良好的人際關(guān)系,必須經(jīng)常與親戚、朋友、同學(xué)、同事和其他一些人保持聯(lián)系,因此,為了能夠快速查找到聯(lián)系人的信息,節(jié)省查找時間,可以創(chuàng)建一個通訊錄管理系統(tǒng),在該系統(tǒng)中為了防止信息被他人竊取,可以通過密碼進行驗證,只有通過密碼驗證才能進入系統(tǒng)。系統(tǒng)要求實用性強、使用方便、效率高和安全可靠等特點。經(jīng)分析我們認為學(xué)生學(xué)籍管理系統(tǒng)的具體要求為:1.能管理每一個欄目中通訊信息,可以進行查找刪除2.通過使用計算機能方便的維護(包括插入、刪除、修改)各信息表3.能方便的實現(xiàn)基于多個表的連接查詢4.系統(tǒng)具有操作方便、簡捷等特點1.2功能分析該程序要實現(xiàn)以下基本功能:用戶管理:管理系統(tǒng)操作人員,設(shè)置操作人員口令和權(quán)限。在滿足不同系統(tǒng)用戶的操作需求基礎(chǔ)上,提高系統(tǒng)的安全性?;A(chǔ)數(shù)據(jù)管理:維護通訊錄每個聯(lián)系人相關(guān)的基礎(chǔ)數(shù)據(jù)信息。主要包括以下幾個功能:增加聯(lián)系人及其信息、刪除聯(lián)系人及其信息、按條件查找聯(lián)系人及其信息、以及更改聯(lián)系人的信息數(shù)據(jù)庫管理:對現(xiàn)有的數(shù)據(jù)庫進行管理,包括數(shù)據(jù)備份和恢復(fù),以方便用戶對數(shù)據(jù)庫的管理和維護工作,提高系統(tǒng)的數(shù)據(jù)安全性。1.3開發(fā)及運行環(huán)境開發(fā)通訊錄系統(tǒng)開發(fā)平臺及運行環(huán)境如下:系統(tǒng)開發(fā)平臺:MicrosoftVisualStudio2010系統(tǒng)開發(fā)語言:C#數(shù)據(jù)庫管理軟件:SQLServer2008R2運行平臺:WindowsXP運行環(huán)境:Microsoft.NETFrameworkSDK4.01.4數(shù)據(jù)分析一個普通的通訊錄一般而言使用者需要的信息有一下這些:姓名、性別、民族、與用戶的關(guān)系、生日、手機、備用手機、qq、郵箱、個人簡歷、以及當前所在單位。為了方便管理需要添加編號這樣的主鍵屬性,同時出于安全性的考慮,除了管理員權(quán)限的用戶都僅能看到自己所創(chuàng)建的信息,所以在聯(lián)系人信息中應(yīng)再加上創(chuàng)建者的屬性,該屬性應(yīng)作為用戶信息表的外鍵,在用戶表中充當主鍵不能重復(fù)。其中姓名性別以及和用戶的關(guān)系是不可缺少的屬性應(yīng)定為非空。系統(tǒng)設(shè)計用戶登錄用戶登錄通訊錄系統(tǒng)主頁面登錄界面查詢查詢顯示通訊錄系統(tǒng)主界面插入修改刪除分組信息數(shù)據(jù)庫信息主界面分組信息主界面分組信息主界面重命名增加刪除修改分組信息主界面整體e-r圖郵箱電話號碼姓名郵箱電話號碼姓名生日生日住址n1QQ號住址n1QQ號擁有電話聯(lián)系人擁有電話聯(lián)系人性別性別密碼密碼2.2邏輯結(jié)構(gòu)設(shè)計將通訊錄管理系統(tǒng)E-R圖轉(zhuǎn)換為關(guān)系模型為:用戶(用戶名,密碼,權(quán)限)聯(lián)系人(編號,姓名,性別,民族,關(guān)系,生日,手機,QQ,電子郵件,用戶名)此關(guān)系模型已經(jīng)達到3NF2.3物理結(jié)構(gòu)設(shè)計用戶表User結(jié)構(gòu)字段含義類型長度約束條件Uname用戶名nchar30主鍵Upassword密碼nchar20NotNULL聯(lián)系表結(jié)構(gòu)字段含義類型長度約束條件Ino編號nchar10主鍵Uname姓名nchar20NotNULLUsex性別nchar2'男'or'女'Uphone1手機nchar11Uphone電話nchar11UqqQQnchar15Uemail電子郵件nchar50Ubirth生日datetime8數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計3.1SQLServer的表設(shè)計/*-----------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數(shù)據(jù)初始化錄入數(shù)據(jù)庫數(shù)據(jù)/*-----插入用戶------------------------------*/insertintoadmin(Aname,upassword)values('3','3')selectAname,Upasswordfromadmin/*-----插入成員------------------------------*/insertintoUsere(Uname,Upassword)values('1SanPi','1')selectUname,UpasswordfromUsere其余信息同上語言定義/*-----插入聯(lián)系方式--------------------------*/insertintoRecords(Uphone)values('電話')insertintoRecords(Uemail)values('EMail')insertintoRecords(Uqq)values('QQ')insertintoRecords(Uadd)values('家庭住址')insertintoRecords(Ubirth)values('出生日期')3.3關(guān)系圖系統(tǒng)界面設(shè)計(代碼見附錄)登陸界面:管理員操作界面:用戶注冊界面:用戶信息界面:5、心得體會這次的課程設(shè)計可以說是為畢業(yè)設(shè)計做的一個預(yù)演,真的做起來困難重重,深刻體會到做一個軟件,里面需要的很多知識我們沒有接觸過,去圖書館找書的時候發(fā)現(xiàn),我們學(xué)的僅僅是皮毛,還有很多東西需要我們?nèi)グl(fā)掘,就算是借一本書看完它,我們還是會發(fā)現(xiàn)還有很多知識沒有吃透,這需要我們不斷的實踐,不斷地自學(xué)習(xí),不斷地發(fā)現(xiàn)問題去思考問題。從需求分析階段不斷地搜索資料,想充分了解自己所做的課題在客戶或者公司中的需求,由于之前所涉及的相關(guān)知識較少,畫數(shù)據(jù)流圖等等軟件設(shè)計流程做起來很生疏,翻閱課本,和數(shù)據(jù)庫課老師上課的講解,總算整了一個像樣點的需求分析,但是也不知道是不是正確,根據(jù)數(shù)據(jù)流圖,不斷修改需求,由于這個課程設(shè)計沒有連接外部設(shè)備,比如打印機,網(wǎng)絡(luò)等,所以做的都是在實踐階段,根據(jù)設(shè)計的大概模式展開一步步的模塊構(gòu)造。經(jīng)過不斷地測試,不斷地改進,其中還是發(fā)下了不少問題,第一次做這些工作,沒有任何經(jīng)驗,甚至無從下手,還是很謝謝老師和同學(xué)的幫忙,從中也學(xué)到了一些代碼的寫法,為什么要這樣寫,通過和同學(xué)的討論,找到一些書本上沒有的方法,如何數(shù)據(jù)綁定等等,怎樣從數(shù)據(jù)庫中將數(shù)據(jù)提取出來放到一個文本框或者標簽內(nèi),這些東西是組成界面的東西,雖然小,但是可以體現(xiàn)整個軟件的水平,其實并不需要建多少數(shù)據(jù)庫的表,寫多少復(fù)雜的存儲過程,是不是用了數(shù)據(jù)庫函數(shù),觸發(fā)器等等,但是至少要弄明白這些東西如果操作,清晰思路才能將功能分清晰。經(jīng)過一段時間的學(xué)習(xí)與實踐,個人通訊錄管理系統(tǒng)基本上開發(fā)好了。該系統(tǒng)具備了:添加、修改、刪除、瀏覽、查詢信息,實現(xiàn)了根據(jù)用戶需求查看通訊錄等功能。作為一個個人通訊管理系統(tǒng),本系統(tǒng)所提供的功能的確太少了一些,僅僅只實現(xiàn)了一些基本的功能,有很多地方還有待擴展和改良。人如果沒有自信,沒有目標,沒有信心就不可能把事情做好,當其他人都在迷茫的時候,自己一定要堅信目標,大學(xué)畢業(yè)出去即是面臨找工作,從學(xué)習(xí)這個專業(yè),到以后做這方面的工作都需要不斷地去學(xué)習(xí)去實踐,這次實踐可以給我們敲一個警鐘,我們面臨畢業(yè),面臨擇業(yè),需要這些實踐經(jīng)驗,在困難面前要勇于嘗試,這是這次課程設(shè)計給我的最大感想。附錄:登陸界面: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(管ü理え?員±權(quán)ā?限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("數(shù)簓據(jù)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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論