📄 readm.cpp
字号:
// ReadM.cpp : implementation file
//
#include "stdafx.h"
#include "LibMgr.h"
#include "ReadM.h"
#include "LibMgrDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern RLink Head;
extern linkNo;
/////////////////////////////////////////////////////////////////////////////
// CReadM dialog
CReadM::CReadM(CWnd* pParent /*=NULL*/)
: CDialog(CReadM::IDD, pParent)
{
//{{AFX_DATA_INIT(CReadM)
m_num = _T("");
m_name = _T("");
m_unit = _T("");
//}}AFX_DATA_INIT
}
void CReadM::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CReadM)
DDX_Control(pDX, IDC_COMBO1, m_id);
DDX_Control(pDX, IDC_RLIST, m_rlist);
DDX_Text(pDX, IDC_EDIT1, m_num);
DDX_Text(pDX, IDC_EDIT2, m_name);
DDX_Text(pDX, IDC_EDIT3, m_unit);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CReadM, CDialog)
//{{AFX_MSG_MAP(CReadM)
ON_BN_CLICKED(IDC_READER, OnReader)
ON_BN_CLICKED(IDC_SHOW, OnShow)
ON_BN_CLICKED(IDC_QUE, OnQue)
ON_NOTIFY(NM_CLICK, IDC_RLIST, OnClickRlist)
ON_BN_CLICKED(IDC_MODIFY, OnModify)
ON_BN_CLICKED(IDC_DEL, OnDel)
ON_BN_CLICKED(IDC_DELALL, OnDelall)
ON_BN_CLICKED(IDC_SAVE, OnSave)
ON_BN_CLICKED(IDC_READIN, OnReadin)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CReadM message handlers
BOOL CReadM::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_rlist.SetExtendedStyle(LVS_EX_FULLROWSELECT);
CRect rt;
m_rlist.GetClientRect(&rt);
m_rlist.InsertColumn(0,"借书证号",LVCFMT_LEFT,rt.right/5,0);
m_rlist.InsertColumn(1,"姓名",LVCFMT_LEFT,rt.right/5,0);
m_rlist.InsertColumn(2,"单位",LVCFMT_LEFT,rt.right/5,0);
m_rlist.InsertColumn(3,"身份",LVCFMT_LEFT,rt.right/5,0);
m_rlist.InsertColumn(4,"已借册数",LVCFMT_LEFT,rt.right/5,0);
// linkNo=0;
// reader.InitList();
m_id.SetCurSel(-1);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CReadM::OnReader()
{
// TODO: Add your control notification handler code here
//Head=reader.GetHead();
UpdateData(TRUE);
Num=m_num;
Name=m_name;
Unit=m_unit;
Id=m_id.GetCurSel();
if(Num=="") MessageBox("请输入借书证号!");
else if(reader.Find(Head,Num)!=NULL) MessageBox("该借书证号已存在!");
else if(Name=="") MessageBox("请输入姓名!");
else if(Unit=="") MessageBox("请输入单位!");
else if(Id==-1) MessageBox("请输入身份!");
else
{
reader.Insert(Head,Num,Name,Unit,Id,linkNo);
if(reader.Inok)
{
linkNo = linkNo+1;
}
OnShow();
}
}
void CReadM::OnShow()
{
// TODO: Add your control notification handler code here
//Head=reader.GetHead();
RLink p;
p=Head->Next;
int i=0;
CString ID,SUM;
m_rlist.DeleteAllItems();
while(p!=NULL)
{
switch(p->id)//将id值转换为字符串
{
case 0 : ID="本科生"; break;
case 1 : ID="研究生"; break;
case 2 : ID="教师"; break;
}
switch(p->sum)
{
case 0 : SUM="0"; break;
case 1 : SUM="1"; break;
case 2 : SUM="2"; break;
case 3 : SUM="3"; break;
case 4 : SUM="4"; break;
case 5 : SUM="5"; break;
case 6 : SUM="6"; break;
case 7 : SUM="7"; break;
case 8 : SUM="8"; break;
case 9 : SUM="9"; break;
case 10 : SUM="10"; break;
}
m_rlist.InsertItem(i,p->Num);
m_rlist.SetItemText(i,1,p->Name);
m_rlist.SetItemText(i,2,p->Unit);
m_rlist.SetItemText(i,3,ID);
m_rlist.SetItemText(i,4,SUM);
p=p->Next;
i=i+1;
}
SetDlgItemText(IDC_EDIT1,"");//将各编辑框清空,以便下次输入
SetDlgItemText(IDC_EDIT2,"");
SetDlgItemText(IDC_EDIT3,"");
m_id.SetCurSel(-1);
}
void CReadM::OnQue()
{
// TODO: Add your control notification handler code here
CString num,ID,SUM;
UpdateData(TRUE);
num=m_num;
RLink temp;
// Head=reader.GetHead();
temp=reader.Find(Head,num);
if(temp!=NULL)
{
m_rlist.DeleteAllItems();
switch(temp->id)//将id值转换为字符串
{
case 0 : ID="本科生"; break;
case 1 : ID="研究生"; break;
case 2 : ID="教师"; break;
}
switch(temp->sum)
{
case 0 : SUM="0"; break;
case 1 : SUM="1"; break;
case 2 : SUM="2"; break;
case 3 : SUM="3"; break;
case 4 : SUM="4"; break;
case 5 : SUM="5"; break;
case 6 : SUM="6"; break;
case 7 : SUM="7"; break;
case 8 : SUM="8"; break;
case 9 : SUM="9"; break;
case 10 : SUM="10"; break;
}
m_rlist.InsertItem(0,temp->Num);
m_rlist.SetItemText(0,1,temp->Name);
m_rlist.SetItemText(0,2,temp->Unit);
m_rlist.SetItemText(0,3,ID);
m_rlist.SetItemText(0,4,SUM);
SetDlgItemText(IDC_EDIT1,temp->Num);
SetDlgItemText(IDC_EDIT2,temp->Name);
SetDlgItemText(IDC_EDIT3,temp->Unit);
m_id.SetCurSel(temp->id);
}
else
{
MessageBox("无法找到该读者!");
SetDlgItemText(IDC_EDIT1,"");//将各编辑框清空,以便下次输入
SetDlgItemText(IDC_EDIT2,"");
SetDlgItemText(IDC_EDIT3,"");
m_id.SetCurSel(-1);
}
}
void CReadM::OnClickRlist(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
RLink p;
int i=m_rlist.GetSelectionMark();
m_num=m_rlist.GetItemText(i,0);
m_name=m_rlist.GetItemText(i,1);
m_unit=m_rlist.GetItemText(i,2);
p=reader.GetList(Head,i);
m_id.SetCurSel(p->id);
UpdateData(FALSE);
*pResult = 0;
}
void CReadM::OnModify()
{
// TODO: Add your control notification handler code here
int pos,temp;
RLink p;
pos=m_rlist.GetSelectionMark();
temp=linkNo;
linkNo=pos;
p=reader.GetList(Head,pos);
p->Num="";
OnReader();
reader.Delete(Head,pos+1);
OnShow();
linkNo=temp;
}
void CReadM::OnDel()
{
// TODO: Add your control notification handler code here
int i=m_rlist.GetSelectionMark();
reader.Delete(Head,i);
if(reader.Delok)
{
linkNo=linkNo-1;
}
OnShow();
}
void CReadM::OnDelall()
{
// TODO: Add your control notification handler code here
for(int i=0;i<linkNo;i++)
{
reader.Delete(Head,0);
}
//Head->Next=NULL;
//linkNo=0;
OnShow();
}
void CReadM::OnSave()
{
// TODO: Add your control notification handler code here
CString Filter;
Filter = "文本文件(*.txt)|*.txt||";
CFileDialog FileDlg (FALSE, ".txt", NULL, OFN_OVERWRITEPROMPT, Filter);
if(FileDlg.DoModal()==IDOK)
{
CString filename=FileDlg.GetPathName();
RText.Open(filename,CFile::modeCreate | CFile::modeWrite);
RLink pr;
CString content,ID,SUM;
// Head=reader.GetHead();
pr=Head->Next;
while(pr!=NULL)
{
switch(pr->id)//将id值转换为字符串
{
case 0 : ID="本科生"; break;
case 1 : ID="研究生"; break;
case 2 : ID="教师"; break;
}
switch(pr->sum)
{
case 0 : SUM="0"; break;
case 1 : SUM="1"; break;
case 2 : SUM="2"; break;
case 3 : SUM="3"; break;
case 4 : SUM="4"; break;
case 5 : SUM="5"; break;
case 6 : SUM="6"; break;
case 7 : SUM="7"; break;
case 8 : SUM="8"; break;
case 9 : SUM="9"; break;
case 10 : SUM="10"; break;
}
content=pr->Num+","+pr->Name+","+pr->Unit+","+ID+","+SUM+";"+"\n";
RText.WriteString(content);
pr=pr->Next;
}
RText.Close();
}
}
void CReadM::OnReadin()
{
// TODO: Add your control notification handler code here
CString Filter;
int pos,n;
int i,j;
int k=0;
Filter = "文本文件(*.txt)|*.txt||";
CFileDialog FileDlg (TRUE, NULL, NULL, OFN_HIDEREADONLY, Filter);
if (FileDlg.DoModal () == IDOK)
{
reader.InitList();
Head=reader.GetHead();
RLink pr;
pr=Head->Next;
linkNo=0;
CString filename=FileDlg.GetPathName();
RText.Open(filename,CFile::modeReadWrite);
CString num,name,unit,ID,SUM,content;
while(RText.ReadString(content))
{
pos=content.Find(","); //以逗号作为分隔符
num=content.Mid(0,pos);
n=pos;
pos=content.Find(",",pos+1);
name=content.Mid(n+1,pos-n-1);
n=pos;
pos=content.Find(",",pos+1);
unit=content.Mid(n+1,pos-n-1);
n=pos;
pos=content.Find(",",pos+1);
ID=content.Mid(n+1,pos-n-1);
n=pos;
pos=content.Find(";",pos+1);
SUM=content.Mid(n+1,pos-n-1);
n=pos;
if(ID=="本科生") i=0;
else if(ID=="研究生") i=1;
else if(ID=="教师") i=2;
else i=-1;
reader.Insert(Head,num,name,unit,i,linkNo);
pr=reader.GetList(Head,k);
if(SUM=="0") j=0;
else if(SUM=="1") j=1;
else if(SUM=="2") j=2;
else if(SUM=="3") j=3;
else if(SUM=="4") j=4;
else if(SUM=="5") j=5;
else if(SUM=="6") j=6;
else if(SUM=="7") j=7;
else if(SUM=="8") j=8;
else if(SUM=="9") j=9;
else if(SUM=="10") j=10;
pr->sum=j;
k++;
linkNo=linkNo+1;
}
RText.Close();
OnShow();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -