字段名称 READER_ID NAME BOOK_ID BOOK_NAME
WHYS AMOUNT FINE_DATE OK_DATE 字段类型 字段大小 文本 文本 文本 文本 文本 数字 日期 文本
30 30 30 30
索引 有(无重复)
必须填写 是 是 是 是 是 是 是 是
20
30
8.图书分类信息数据表
图书分类信息数据表的主要功能是对图书进行分类。 它包括:‘分类编号’和‘类名’ 字段名称
CLASS_ID
CLASS_NAME
四.数据库的实现
字段类型 字段大小 文本 文本
30 30
索引 有(无重复)
必须填写 是 是
当图书信息被添加、修改以及删除后,在保存的同时,数据库将会自动更新。系统调用‘void shuixin()’,重画网格。代码如下:
if(m_rsDataSet.IsBOF()) {
m_MSFGrid.SetCols(7);
m_MSFGrid.SetRows (m_rsDataSet.GetRecordCount()+1); m_MSFGrid.SetColWidth(-1,2360); //定义网格的表头 m_MSFGrid.SetRow(0); m_MSFGrid.SetCol(1);
m_MSFGrid.SetText(\图书编号\
m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(2); m_MSFGrid.SetText(\图书名称\
m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(3); m_MSFGrid.SetText(\作者\
m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(4); m_MSFGrid.SetText(\出版社\
m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(5); m_MSFGrid.SetText(\单价\
m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(6); m_MSFGrid.SetText(\库存量\ return;
}
m_rsDataSet.MoveFirst();//画网格 while (!m_rsDataSet.IsEOF()) {
m_rsDataSet.MoveNext();
m_rsDataSet.GetRecordCount(); }
m_MSFGrid.SetCols(7);
m_MSFGrid.SetRows (m_rsDataSet.GetRecordCount()+1); m_MSFGrid.SetColWidth(-1,2360); //定义网格的表头 m_MSFGrid.SetRow(0); m_MSFGrid.SetCol(1);
m_MSFGrid.SetText(\图书编号\
m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(2); m_MSFGrid.SetText(\图书名称\
m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(3); m_MSFGrid.SetText(\作者\
m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(4); m_MSFGrid.SetText(\出版社\
m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(5); m_MSFGrid.SetText(\单价\
m_MSFGrid.SetRow(0);m_MSFGrid.SetCol(6); m_MSFGrid.SetText(\库存量\ m_rsDataSet.MoveFirst(); //重新画网格 int iRow=1;
while(!m_rsDataSet.IsEOF()) {
CString str,str1,str2; str.Format(\
str1.Format(\ str2.Format(\
m_MSFGrid.SetRow(iRow);m_MSFGrid.SetCol(0); m_MSFGrid.SetText(str);
m_MSFGrid.SetRow(iRow);m_MSFGrid.SetCol(1); m_MSFGrid.SetText(m_rsDataSet.m_BOOK_ID); m_MSFGrid.SetRow(iRow);m_MSFGrid.SetCol(2); m_MSFGrid.SetText(m_rsDataSet.m_BOOK_NAME); m_MSFGrid.SetRow(iRow);m_MSFGrid.SetCol(3); m_MSFGrid.SetText(m_rsDataSet.m_AUTHOR); m_MSFGrid.SetRow(iRow);m_MSFGrid.SetCol(4); m_MSFGrid.SetText(m_rsDataSet.m_PRESS); m_MSFGrid.SetRow(iRow);m_MSFGrid.SetCol(5);
m_MSFGrid.SetText(str2);
m_MSFGrid.SetRow(iRow);m_MSFGrid.SetCol(6); m_MSFGrid.SetText(str1); iRow++;
m_rsDataSet.MoveNext(); }
m_MSFGrid.SetRow(1); m_MSFGrid.SetCol(1);
m_rsDataSet.MoveFirst();
读者资料的添加、修改、保存部分实现代码如下:
UpdateData(TRUE);
if (m_strReaderID.IsEmpty()|| m_strReaderName.IsEmpty()) {
AfxMessageBox(\请输入相应数据!\ return; }
if (m_bAdd) {
m_rsDataSet.Close(); int n=0;
CString strSQL;
strSQL = \ strSQL = strSQL + m_strReaderName; strSQL = strSQL + \ strSQL = strSQL + m_strIDCard; strSQL = strSQL + \
m_rsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); if(m_rsDataSet.GetRecordCount()!=0)
{
m_rsDataSet.MoveFirst();
MessageBox(\此读者已存在!\提示\ n=1; } else {
if (n==0) {
m_rsDataSet.AddNew();
m_rsDataSet.m_READER_ID= m_strReaderID; m_rsDataSet.m_NAME = m_strReaderName; m_rsDataSet.m_IDCARD = m_strIDCard;
m_rsDataSet.m_FLAG_BORROW= m_strFlagBorrow; m_rsDataSet.Update();
m_rsDataSet.Requery();
MessageBox(\新记录添加成功!\ } } else {
m_rsDataSet.Edit();
m_rsDataSet.m_READER_ID= m_strReaderID; m_rsDataSet.m_NAME = m_strReaderName; m_rsDataSet.m_IDCARD = m_strIDCard;
m_rsDataSet.m_FLAG_BORROW= m_strFlagBorrow; m_rsDataSet.Update(); m_rsDataSet.Requery();
MessageBox(\信息修改成功!\ }
m_bAdd = FALSE; m_bEdit = FALSE; SetButtonState(); SetTextState();
m_rsDataSet.Close(); m_rsDataSet.Open(); shuaxin(); 一、“员工管理”模块设计: void CPasswordDlg::OnOK() {
UpdateData();
CString strSQL,str;
CLibrarySet m_rsDataSet;
strSQL.Format(\ m_rsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL); m_rsDataSet.GetFieldValue(\ if(!m_rsDataSet.IsEOF()) {
if(m_strOPW!=str) {
AfxMessageBox(\原密码不正确!请重新输入!\ m_strOPW=\ m_strPW1=\ m_strPW2=\
UpdateData(FALSE); return; }
if(m_strPW1!=m_strPW2) {
AfxMessageBox(\新密码不一致!请重新输入!\ m_strPW1=\ m_strPW2=\
UpdateData(FALSE); return; }
m_rsDataSet.Edit();
m_rsDataSet.m_PASSWORD=m_strPW1; m_rsDataSet.Update(); m_rsDataSet.Requery(); m_rsDataSet.Close();
AfxMessageBox(\密码修改成功!\ }
CDialog::OnOK(); } 二、“数据备份”和“数据恢复”模块设计: (1)“数据备份”模块部分实现代码如下:
CFileDialog filedlg(0, // 1-文件打开, 0-文件另存为 \ NULL, OFN_OVERWRITEPROMPT | OFN_NOREADONLYRETURN , \ NULL); if(filedlg.DoModal()==IDOK) { fileName = filedlg.GetPathName(); CLibrarySet m_rsClerkSet; m_rsClerkSet.Open(); CFile file; file.Open(fileName,CFile::modeCreate|CFile::modeWrite); CArchive ar(&file,CArchive::store); int n1; n10; while(!m_rsClerkSet.IsEOF()) { m_rsClerkSet.MoveNext(); n1=m_rsClerkSet.GetRecordCount(); } if(n1>0) m_rsClerkSet.MoveFirst(); ar<