2.3.4数据库物理设计
数据库物理结构设计的主要任务是:对数据库中的数据,在物理设备上的存放结构和存取方法进行设计,索引的设计等。数据库的物理结构依赖于确定的计算机系统,并于选用的DBMS密切相关。物理设计的任务是为了有效的实现逻辑模式,确定所采取的存储策略。此阶段以逻辑设计的结果作为输入,结合具体DBMS的特点与存储设备特性进行设计,选定数据库在物理设备上的存储结构和存取方法。
2.4 输出设计
(1)输出设计的内容 输出设计的内容包括:有关输出信息使用方面的内容;输出方式;输出设备;输出介质。 (2)输出设计的方法 在系统设计阶段,设计人员应给出系统输入的说明,这个说明既是将来编程人员在软件开发中进行实际输出设计的依据,也是用户评价系统实用性的依据。因此,设计人员要选择合适的输出方式,并以清楚的方式表达出来。输出形式主要有报表信息和图形化信息。
本系统的输出为表格形式,主要包括用户信息,书籍信息和订单信息。
2.5 输入设计
输入设计的目标是保证向系统输入正确的数据。 输入设计的原则。输入设计应遵循以下原则: 最小量原则:这是指在保证满足处理要求的前提下使输人量最小。由于数据输入与计算机处理比较起来相对慢,在数据录入时,系统大多数时间都处于等待状态,系统效率将显著降低;同时,数据录入工作一般需要人的参与,大量的数据录入往往浪费很多的人力资源,增加系统的运行成本。因此,输入量越少,出错机会越少,花费时间越少,数据一致性越好。
简单性原则:输入的准备、输入过程应尽量容易,以减少错误的发生。这主要是因为输入设计在为用户提供纠错和输入校检的同时,就保证了输入过程简单易用,就保证了不会因为差错,纠错而使输入复杂化,增加用户负担。
早检验原则:对输人数据的检验尽量接近原数据发生点,使错误能及时得到改正。因此输入设计中应采用多种输入校检方法和有效性验证技术,以减少输入错误。
少转换原则:输入数据尽量用其处理所需形式记录,减少不必要的输入步骤,当步骤不能省时,应仔细验证现有步骤是否完备,以免数据转换介质时发生错误。本系统的主要输出为文本形式。
输入格式设计
输入格式的设计一般是指数据录入人员在终端屏幕上看到的凭证格式。其设计格式的原则是使录入人员能方便的输入数据,尽量避免操作失误。
本系统中主要输入方式方式为键盘输入,主要输入的内容为用户信息,书籍信息。
3、系统实施
§3、1 数据库连接
本软件使用 ODBC 连接数据库,基本思想为为数据库中每个表建立一个 RecordSet
类,
当要对表中数据进行操作时,创建相关记 录集,即可引用类中的响应函数进行添加、修改 、
删除、查询等操作。
§3、2主界面
主界面中显示顾客登录、管理员登录和顾客 注册三个按钮,顾客输入登录名和密码
后点
击顾客登录后进入顾客查询界面,管理员 输入登录名和密码后点击管理员登录后进入管理 界
面,若是新顾客,直接点击注册即可进入注 册界面,各对话框之间的连接通过 DoModal()函
数实现,若需要进行身份验证,未输入用 户名或密码则将弹出提示对话框“请输入用户名 和
密码!”,输入后系统将进入相应的数据 库表查询是否有此信息,若无对应信息则弹出对 话框
提示输入信息错误,信息正确方可进入下 一界面,如顾客登录时,系统使用以下代码完成 身
份验证功能,同时记录下用户信息以便加入订单: //生成查询用户账号和密码的 SQL 语句
mSqlStr= \mSqlStr=mSqlStr + m_no;
mSqlStr=mSqlStr + \mSqlStr=mSqlStr + m_password; mSqlStr=mSqlStr + \
if(!customer.Open(AFX_DB_USE_DEFAULT_TYPE,mSqlStr)) {
AfxMessageBox(\ 表打开失败!\
return;
}
if(!customer.IsBOF()) {
//Open all function for user m_customer_no=customer.m_cno; m_customer_name=customer.m_cname; m_customer_phone=customer.m_cphone; m_customer_add=customer.m_cadd;
AfxMessageBox(\密码正确,欢迎登录!\EndDialog(IDCANCEL); Cgkcx a; a.DoModal(); } else
{
AfxMessageBox(\密码输入错误!!\return; }
§3、3添加功能
本软件的添加功能使用 AddNew()函数,应用在顾客注册、顾客购书、管理员添加新书等
模块。
1)顾客注册:新顾客在主界面中点击注册后即可进入注册界面填写自己的各项信息,完
成后点击确定,信息添加到 customer 表中,并利用触发器自动生成顾客编号作为登录名。相
关代码如下: setcustomer c; c.Open(); c.AddNew();
UpdateData(TRUE);
if(m_name.IsEmpty()||m_phone.IsEmpty()||m_add. IsEmpty()||m_password.IsEmpty()||m_mima
.IsEmpty()) {
MessageBox(\请输入全部信息!\return; }
if(m_password!=m_mima) {
MessageBox(\密码错误,请确认!\return; }
c.m_cpass=m_password; c.m_cname=m_name; if(m_sex==0) c.m_csex=\男\
else c.m_csex=\女\c.m_cage=m_age; c.m_cphone=m_phone; c.m_cadd=m_add;
c.m_cpass=m_password; if(m_sex==0) c.m_csex=\男\
else c.m_csex=\女\c.Update(); c.Requery();