数据库课程设计报告修改稿第二组.docx

上传人:b****5 文档编号:28610828 上传时间:2023-07-19 格式:DOCX 页数:18 大小:1.58MB
下载 相关 举报
数据库课程设计报告修改稿第二组.docx_第1页
第1页 / 共18页
数据库课程设计报告修改稿第二组.docx_第2页
第2页 / 共18页
数据库课程设计报告修改稿第二组.docx_第3页
第3页 / 共18页
数据库课程设计报告修改稿第二组.docx_第4页
第4页 / 共18页
数据库课程设计报告修改稿第二组.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

数据库课程设计报告修改稿第二组.docx

《数据库课程设计报告修改稿第二组.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告修改稿第二组.docx(18页珍藏版)》请在冰豆网上搜索。

数据库课程设计报告修改稿第二组.docx

数据库课程设计报告修改稿第二组

哈密广播电视大学计算机信息管理专业

 

数据库应用课程设计报告

 

学生通讯录管理系统

学号1165001450580

姓名温轩

指导教师涂皆成

设计完成日期2012年5月30日

 

一、系统需求及功能说明

现要求设计一个“学生通讯录管理系统”,用于管理一个班级、专业系或学校的学生基本信息及其通讯录信息。

每个进入系统的用户必须经过登录才能访问,为安全起见,系统不设游客这种权限,必须拥有用户名(学生用学号作为用户名)和密码才能进入。

在系统中只有两种权限,即系统管理员和一般学生用户。

一般的学生用户只能查询其他同学的通讯信息,不能对其他同学的记录信息进行修改和删除,也可以修改自己的登录信息(主要是密码)和自己的通讯信息;而系统管理员拥有几乎所有的操作权力,即可以插入、修改、查询所有学生的信息和删除其他学生的记录等功能,但不能删除自己的登录信息。

学生或管理员登录时采用无差别登录,然后在数据库中设置权限,在操作时先从数据库中读取用户的权限,然后根据权限赋予相应的操作权力。

二、数据库设计说明

对于比较复杂的系统,其数据库由比较多的表所组成,每个表可能会涉及到比较多的数据项,而各个表之间又可能存在较复杂的关系。

我们所设计的“学生通讯录管理系统”是比较简单的演示系统,只有两个表,一个是用户的“密码表”,另一个是“学生通讯信息表”,两个表之间通过学号进行关联。

二、1登录密码表

“密码表”中保存有用户的登录名、密码和权限。

我们用admin”表管理员权限,用“Student”表示一般学生装的权限。

学生的用户名固定为学号,其初始密码与用户名相同,正确登录后,学生装可修改其默认的密码。

管理员用户是特殊设立的用户,可以是学生班长,也可以是学生装之一外的管理员,如教员、辅导员或班主任老师等担当。

二、2学生通讯信息表

“学生通讯信息表”中记录了学生的基本信息及其通讯信息,包括的数据项有学号、姓名、性别、出生日期、所学专业、联系电话、QQ号和Email等。

下面我们进入数据库设计中的概念设计、逻辑设计阶段和实现阶段。

1、概念设计

 

(图1)

 

 

(图2)

附(图1、图2)学生通讯管理系统E-R图

 

2、逻辑设计

根据ER图转换成基本表的思想,即每个实体转换成基本表,多对多的联系转换成基本表,而1对多的联系根据实际需要可以转换或不转换为基本表,按照附(图1、图2)所示的ER图,该系统的基本表应为2个,分别为:

密码表(用户名、密码、权限)

学生通讯信息表(学号、姓名、性别、出生日期、所学专业、联系电话、QQ号、Email)

3、建立数据库和基本表

在SQL中建立空的数据库“学生通讯管理系统”,然后建立如上所述的基本表,各个基本表的设计视图如附(图3、图4)所示。

 

(图3)密码表设计视图

(图4)学生表设计视图

三、系统的功能模块设计

1、用户登录

所有用户必须经过登录验证才能进入系统。

前面讲到,学生的用户名固定为学号,其初始密码与用户名(学号)相同,正确登录后,可修改其默认密码。

管理员用户是建表时特殊设计的用户,由设计人员告诉其用户名和密码。

2、用户密码修改

正确登录后的用户可以修改自己的登录密码,为安全起见,需要用户给出正确的原始密码,并确认新密码才能修改成功。

管理员用户可以修改所有用户的登录密码信息。

3、用户信息查询

正确登录后的管理员或学生用户可根据学号、姓名、和所在专业对学生有通讯信息表

进行查询,通过结果窗口得到查询的结果信息。

4、插入用户记录

管理员用户可插入学生基本信息,每个学生至少要有学号和姓名等基本信息,每插入一个学生基本信息记录,需要由系统同时在用户登录表中插入一条登录信息,并给定初始的登录用户名、密码和权限。

学生记录中的其信息可由学生自己登录系统后进行添加或修改。

5、5、删除用户记录

对于少数由于特殊原因退学,转学或开除的学生记录,可由管理员将其记录进行删除,同时也要删除其登录用的登录记录。

6、修改用户记录

学生用户可以修改本人的基本通讯信息,而管理员用户可以修改所有学生的基本信息数据,修改完成后存入数据表。

(图5)系统模块功能图

四、构建用户登录模块

在正式进入管理系统之前,需要一个登录验证模块,用户通过在编辑框中输入用户名和密码,按“登录”按钮,经程序验证(数据库的登录密码表中有这样的用户名和密码)后,进入系统的主模块,完成相应的功能。

1、构建登录对话框界面

在前面建立的“学生通讯录管理系统”工程中,系统已经生成了一个对话框,这个对话框是程序运行时首先启动的,我们改造它来作为用户登录对话框。

用于提示用户输入“用户名”和“密码”,再加上两个编辑框和两个按钮控件,调整其大小,如图6所示。

(图6用户登录对话框)

2、设计主窗口模块

从方便实的角度来考虑,我们将主窗口设计成如图7所示的对话框。

(图7“学生通讯录管理系统”主窗体)

按钮的ID属性分别设置为:

“修改密码”按钮的ID为:

IDC_editpassword

“修改学生记录”按钮的ID为:

IDC_editrecord

“插入学生记录”按钮的ID为:

IDC_insertrecord

“查询学生记录”按钮的ID为:

IDC_pueryrecord

“删除学生记录”按钮的ID为:

IDC_deleerecord

“重新登录”按钮的ID为:

IDC_cancel

五、实现系统各功能模块

1、修改密码模块

建立修改密码窗口,如图8所示

(图8修改密码窗体)

1)、对窗体本身的属性进行修改,将窗体的ID设置为”IDD-EditPassword”,标题设置为“修改用户密码”。

2)、对三个文本输入框的ID属性进行设置。

将原密码文本框ID属性设置为”IDC-oldpassword”,新密码文本框ID属性设置为”IDC-newpassword1”,新密码确认文本框ID属性设置为”IDC-newpassword2”。

3)、“确定”按钮的ID设置为,”IDC-editpassok”,“退出”按钮的ID设置为”IDC-editpassexit”。

#include“editpasswordDlg.h”

CeditpasswordDlg*EditpassDlg;

EditpassDlg=newCeditpasswordDlg;

if(EditpassDlg->GetSafeHwnd()==0)

EditpassDlg->Creat(IDD_EditPassword);

#include”passwordSet.h”;

externCmaindlg*MainDlg;//主窗体

externCStringusername,userpower;//用户名和密码

externCDatabasem_database;//数据库对象

CpasswordSetupwset;

CStringstr;

if(upwset.IsOpen())upwset.Close();

UpdateDATA(true);//将用户的输入反映到变量中

Str.Format(“select*from密码表where用户名=’%s’and

密码=’%s’”,username,m_oldpassword);//构造查询语句

Upwset.Open(AFX_DB_USE_DEFAULT_TYPE,str);//建立记录集

if(upwset.IsBOF()){//记录集为空

MessageBox(“用户密码不正确!

或用户名与密码不相对应,请重输!

”);

}

else{//准准备备修改密码

If(strcmp(m_newpasswordl,m_newpassword2)!

=0{

MessageBox(“用户输入的两次密码不一致!

请重新输入!

”);

}

else{//修改

Ste.Format(“update密码表set密码=’%s’

Where用户名=’%s’,m_newpassword1,username);

Try{

m_database.ExecuteSQL(str);//更新密码

}

Catch(CDBExceptionel){

AfxMessageBox(“数据库操作失败!

”);

}

Catch(CMemoryExceptione2){

AfxMessageBox(“内存出错!

”);

}

MessageBox(“密码修改成功!

”);

}

}

If(upwset.IsOpen())

{upwset.Close();}//关闭记录集

m_oldpassword=””;//清空文本框内容

m_newpassword1=””;

m_newpassword2=””;

UpdateData(false);//将变量值返回到编辑框,即编辑框清空!

MainDlg_>ShowWindow(SW_SHOW);//返回主窗口

Showwindow(SO_HIDE);//隐藏自身

2、重新登录模块

单击“重新登录”按钮,退出当前窗体,返回登录窗体。

ShowWindow(SW_HIDE);//隐藏自身

CMyDlgmdl;//定义主对话框类变量

mdl.DoModal();//以有模式方式打开对话框

3、插入学生记录模块

在工作区窗口的资源视图下,插入一个新的对话框。

对话框的相关属性设置为:

ID:

IDD_INSERT_DIALOG

标题:

插入和修改记录

在其中添加控件,得到如图8所示窗体

(图8插入和修改学生记录窗体)

对应文本输入框或下拉框的ID号分别为:

学号:

IDC_SNO_EDIT

姓号:

IDC_SNAME_EDIT

姓别:

IDC_SEX_COMBO

出生年、月、日:

IDC_YY_EDIT,IDC_MM_EDIT,IDX_DD_EDIT

所在专业系:

IDC_DEPT_EDIT

联系电话:

IDC_PHONE_EDIT

Email:

IDC_EMAIL_EDIT

QQ号:

IDC_QQ_EDIT

其余控件ID取默认值。

#inslude“InsertDlg.h”

CInsertDlg*InsDlg;

InsDlg=newCInsertDlg;

If(InDlg->GetSareHwnd()==0)

InsDlg->Create(IDD_INSERT_DIALOG);

4、删除和修改学生记录模块

为方便管理员删除和修改学生记录,用列表的方式将学生用户的有关信息显示出来。

管理员首先选中要删除或修改的记录,然后单击对应的删除或修改按钮,再进行相应的操作。

添加如下代码:

M_list.InsertColumn(0,”学号”);

M_list.InsertColumn(1,”姓名”);

M_list.InsertColumn(2,”性别”);

M_list.InsertColumn(3,”出生日期”);

M_list.InsertColumn(4,”所在专业系”);

CRectr;

M_list.GetWindowRect(&r);

Intwid=r,Width();//取得Listcontrol控件宽度;

For(inti=0;i<5;i++){

M_list.SetColumn.Width(I,wid/5);//每个属性分配五分之一的宽度;

}

M_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

//设置ListControl控件属性,使其具有类似Excel的网格样式;如图9所示

(图9“删除或修改学生记录”对话框)

5、查询学生记录模块

可以根据学生的姓名、所在专业系和出生年份中的一个或多个项目进行查询,通过复选按钮进行选择,将查询的结果显示在ListControl中。

1)、设计其窗体查询窗体

我们设计查询窗体如图10所示,并建立对话框类(CQueryDlg)。

(图10设计查询窗体)

要使用新建立的类,将其头文件加入到文件中,并设立指向此窗体的全局变量,然后对指针变量进行初始化。

2)、初始化列表控件,在类向导中,选择对象ID为CqueryDlg,在其消息对话框中选择WM_INITDIALOG,双击它,建立初始化函数;在其中插入如下所示代码:

m_querylist.DeleteAllItems();

m_querylist.InsertColumn(0,”学号”);

m_querylist.InsertColumn(1,”姓名”);

m_querylist.InsertColumn(2,”性别”);

m_querylist.InsertColumn(3,”出生日期”);

m_querylist.InsertColumn(4,”所在专业”);

m_querylist.InsertColumn(5,”联系电话”);

m_querylist.InsertColumn(6,”Email”);

m_querylist.InsertColumn(7,”QQ号”);

CRectr;

M_quetylist.GetWindowRect(&r);

Intwid=r.Width();//取得Listcontrol控件宽度;

For(inti=0;i<8;i++){

M_querylist.SteColumnWidth(I,wid8);

}

M_querylist.SetExtendedStyle(LVS_EX_FULLROWSELECT

LVS_EX_GRIDLINES);

3)、主窗口转到查询窗体,在主窗体中单击“查询学生记录”时,转入刚建立的查询窗体,建立对应的函数,添加如下所示代码:

Cstringspl:

Spl=″select*from学生通讯信息表″;

QuyDlg->OnRfreshData(spl)

QuyDlg->ShowWindow(SW_SHOW)

Showwindow(SW_HIDE)

ViodCqueryDlg:

:

OnRefreshData(Cstringspl)

|

Cstringstr,temp;

m_querylist.DeleteAllItens()

CstudentInfom_stuinfoset;

If(m_stuinfoset.IsOpen()){m_suinfosetClose();}

m_stuinfoset.m_pDatabase=&m_database

m_stuinfoset,Open(AFX_DB_USE_DEFAULT_TYPE,spl);

inti=0;

while(!

m_stuinfoset,l\IsEOF()){

while(m_stuinfoset,IsDeteted()){

m_stuinfoset,MoveNext();

}

str=m_stinfoset.m_columnl;

str.TrimLeft();str.TrimRight();

m_querylist.InsertItem(I,str);//学号

str=m_stuinfoset.m_column2;

str.TrimRight();

m_queryist.SrtItemText(I,l,str);//姓名

str=m_stuinfoset.m_column3;

str.TrimLeft();str.TrimRight();

m_queryist.SrtItemText(I,2,str);//性别

str=m_stuinfoset.m_column4;

str.TrimLeft();str.TrimRight();

m_queryist.SrtItemText(I,3,str);//出生日期

str=m_stuinfoset.m_column5;//所在专业系

str.TrimLeft();str.TrimRight();

m_queryist.SrtItemText(I,4,str);

str=m_stuinfoset.m_column6;//联系电话

str.TrimLeft();str.TrimRight();

m_queryist.SrtItemText(I,5,str);

str=m_stuinfoset.m_Email;//Email

str.TrimLeft();str.TrimRight();

m_queryist.SrtItemText(I,6,str);

str=m_stuinfoset.m_QQ;//QQ

str.TrimLeft();str.TrimRight();

m_queryist.SrtItemText(I,7,str);

m_stuinfoset.MoveNext();

4)、完成查询操作,双击查询窗体中的“查询”命令按钮,建立函数,在其中加入以下语句完成查询操作。

Cstringsql;

Cstringtemp1,temp;

Updatedata(true);

Sql.Format(“select*from学生通讯通讯信息表where学号isnotNULL”);

If(m_checkname.GetCheck()){

Temp.Format(“and姓名=’%s’”,m_qname);

Sql=sql+temp;

}

If(m_checkdate.GetCheck()){

Sql=sql+”and所在专业like‘%”+m_qdept+”%’”;

If(m_checkdate.GetCheck()){

Temp.Format(“%d”,m_year);temp.TrimLeft();temp.TrimRight();

Temp1.Format(“%d”,m_year2);temp.TrimLeft();temp.TrimRight();

Sql=sql+”and出生日期between’”+temp+”-01-01’and’”+temmp1+”-01-01’”;

}

This->OnRefreshData(aql);//数据刷新

5)、从查询窗体返回主窗体,双击查询窗体中的“返回”命令按钮,建立函数,在其中加入以下语句可。

MainDlg->ShowWindow(SW_SHOW);//返回主窗体

Showwindow(SW_HIDE);//隐藏自身

至此,通讯录管理系统的设计工作全部完成,通过测试后,可以投入使用。

六、总结(感想与收获)

刚开始做课程设计时,总认为用sql做系统简单,不用做说明准备,另外,我的选题来自己熟悉高校,以为很快就能很好的完成,其实不然。

在设计中,碰到了许多问题,例如,登录成绩时怎样方便教务员操作,成绩查询时如何实现等问题,对这些问题都反复修改了许多次,直到基本满意为止。

另外,我的设计尽量通过向导完成,但向导的局限性太大,无法实现一些复杂的功能,因此在其中一些部分只能通过宏和模块来实现。

系统也存在一些小问题,例如,录入成绩时到了最后无法自然提示,删除数据时提示也是系统本身提供,不是很适合使用者等。

通过此次课程设计,能够真正做出一个小系统,将所学的知识应用到实际中去,心中特别高兴,尽管上课时我们也有做实验,但比较单一,缺少联系性,不能从整体上和实际需要上去考虑为题,有被牵着走的感觉。

通过设计还锻炼了我们自己思考、深入学习和解决为题的能力。

七、致谢

感谢同组同学的共同讨论和帮助,感谢指导老师的建议和精心指导。

八、参考资料

1刘世峰,数据库基本与应用,北京:

中央广播电视大学出版社,2003

2刘世峰,徐孝凯,SQLSERVER上机操作指导,北京:

中央广播电视大学出版社2003

3耿文兰,SQLServer2000数据库管理与开发,北京:

电子工业出版社,2003

4启明工作室,VisualC+++SQLServer数据库应用系统开发与实例,北京:

人民邮电出版社,2004-

5王育坚,VisualC++面向对象编程教程,北京:

清华大学出版社,2003

6刘刀桂,孟繁晶,VisualC++实践与提高——数据库篇,北京:

中国铁道出版社,2001

7廖望,等,SQLServer2000案例教程,北京:

冶金工业出版社,2004-

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 生产经营管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1