CStringTemp1=str.Mid(0,m1);
CStringTemp2=str.Mid(m1+1,m2-m1-1);
CStringTemp3=str.Mid(m2+1,m3-m2-1);
CStringTemp4=str.Mid(m3+1,m4-m3-1);
CStringTemp5=str.Mid(m4+1,str.GetLength()-m4-1);
m_list.InsertItem(i,Temp1);
m_list.SetItemText(i,1,Temp2);
m_list.SetItemText(i,2,Temp3);
m_list.SetItemText(i,3,Temp4);
m_list.SetItemText(i,4,Temp5);
i++;
}
}
else
TRACE("Can'topenfile%s,error=%u\n",pszFileName,fileException.m_cause);
UpdateData(true);
if((m_pname.IsEmpty())||(m_lostth.IsEmpty())||(m_phone.IsEmpty())||(m_qq.IsEmpty())||(m_des2.IsEmpty()))
AfxMessageBox("信息不完整,请输入完整信息!
");
else
{
CStringTemp=m_pname+''+m_lostth+''+m_phone+''+m_qq+''+m_des2;
char*pszFileName="LostPropertydata.txt";
CStdioFilemyFile;
CFileExceptionfileException;
if(myFile.Open(pszFileName,CFile:
:
typeText|CFile:
:
modeNoTruncate|CFile:
:
modeCreate|CFile:
:
modeReadWrite),&fileException)
{
CStringstrBuf;
intRow=0;
while(myFile.ReadString(strBuf)){
if(strBuf==Temp){
AfxMessageBox("已存在相同信息,不需要添加!
");
return;
}
++Row;//Row存储的是txt的行数
}
myFile.SeekToEnd();
myFile.WriteString("\n");
myFile.WriteString(Temp);
myFile.Close();
m_lostlist.InsertItem(Row,m_pname);
m_lostlist.SetItemText(Row,1,m_lostth);
m_lostlist.SetItemText(Row,2,m_phone);
m_lostlist.SetItemText(Row,3,m_qq);
m_lostlist.SetItemText(Row,4,m_des2);//将添加上去的条目显示在listcontrol上
}
else
TRACE("Can'topenfile%s,error=%u\n",pszFileName,fileException.m_cause);
m_pname.Empty();
m_lostth.Empty();
m_phone.Empty();
m_qq.Empty();
m_des2.Empty();
UpdateData(false);
}
5.数据测试与分析
自己选取数据进行测试,大体上没问题。
程序有点简单,可以扩展。
目前程序已知的缺陷有:
1.文件存储数据,有时会自动把指针指向文件尾,导致出现空行。
2.有部分数据无法删除。
6.帮助文档
6.1使用说明
双击下图中的LostPropertyPelper.exe文件(注:
XPCorona.ssk和SkinPlusPlusDLL.dll文件必须在同一目录中,其为皮肤文件和皮肤的动态链接库),便出现图7-2-1的对话框。
图6-1使用说明图
6.2界面
1.点击程序图标后显示主界面如下图:
图6-2-1主界面
2.点击游客入口中的“点击进入”显示如下界面:
图6-2-2新建工程界面
3.在游客界面可以进行失物上报,招领信息查询,给管理员留言,刊登失物信息。
图6-2-3运行中截图
4.在密码修改板块中可以进行密码修改:
图6-2-4修改密码
5.管理员密码登陆后:
图6-2-5管理员窗口
6.接收拾物信息,及对所有信息进行修改删除操作。
7.文件存储:
图6-2-6详细内容图
7.收获与体会
数据结构的课程设计,今天终于验收了。
虽然不是很完备,但是总体还是一个比较能体现数据结构知识点能力的程序了,。
看着自己的成果,真的很高兴,很有成就感.
其实做课设,自己懂的东西确实不多,但是只要肯于研究学习,我们还是能学到很多东西的。
通过做课设,我们学会许多课外的扩展知识,让我们的学识增长了。
我相信只要努力了,就会有收获的。
8.参考文献
清华大学出版社:
数据结构(c语言版)
9.附源代码
CDialogEx:
:
OnInitDialog();
m_list.ModifyStyle(0L,LVS_REPORT);//招领栏,表单控件的各种属性
m_list.ModifyStyle(0L,LVS_SINGLESEL);
m_list.ModifyStyle(0L,LVS_SHOWSELALWAYS);
m_list.ModifyStyle(0L,LVS_NOSORTHEADER);
m_list.SetExtendedStyle(LVS_EX_GRIDLINES);
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_list.InsertColumn(0,_T("招领物品类型"));
m_list.InsertColumn(1,_T("拾物时间"));//初始化招领栏的内容标题
m_list.InsertColumn(2,_T("物品数量"));
m_list.InsertColumn(3,_T("拾物地点"));
m_list.InsertColumn(4,_T("物品描述"));
m_list.SetColumnWidth(0,100);//初始化招领栏标题的长度
m_list.SetColumnWidth(1,80);
m_list.SetColumnWidth(2,80);
m_list.SetColumnWidth(3,80);
m_list.SetColumnWidth(4,250);
char*pszFileName="ClaimingData.txt";
CStdioFilemyFile;
CFileExceptionfileException;
if(myFile.Open(pszFileName,CFile:
:
typeText|CFile:
:
modeReadWrite),&fileException)
{
CStringstrBuf;
intRow=0;
while(myFile.ReadString(strBuf))
++Row;
myFile.SeekToBegin();//函数SeekToBegin将文件指针指向文件开始处
inti=0;
while(i{
CStringstr;
myFile.ReadString(str);
intm1=0,m2=0,m3=0,m4=0;
for(intj=0;jfor(intj=m1+1;jfor(intj=m2+1;jfor(intj=m3+1;jCStringTemp1=str.Mid(0,m1);
CStringTemp2=str.Mid(m1+1,m2-m1-1);
CStringTemp3=str.Mid(m2+1,m3-m2-1);
CStringTemp4=str.Mid(m3+1,m4-m3-1);
CStringTemp5=str.Mid(m4+1,str.GetLength()-m4-1);
m_list.InsertItem(i,Temp1);
m_list.SetItemText(i,1,Temp2);
m_list.SetItemText(i,2,Temp3);
m_list.SetItemText(i,3,Temp4);
m_list.SetItemText(i,4,Temp5);
i++;
}
}
else
TRACE("Can'topenfile%s,error=%u\n",pszFileName,fileException.m_cause);
//文件列表初始化
UpdateData(true);
if((m_xmima.IsEmpty()))
AfxMessageBox("请输入新密码!
");
else{
char*pszFileName="ForLogin.txt";
char*pszFileNameTemp="Transition.txt";
CStdioFilemyFile;
CStdioFilemyFileTemp;
CFileExceptionfileException;
CFileExceptionfileExceptionTemp;
CStringm_yonghu;
m_yonghu+="user";
CStringTemp=m_yonghu+''+m_xmima;
POSITIONpos=m_change_list.GetFirstSelectedItemPosition();//获取光标的位置
if(pos==NULL){
AfxMessageBox("请选中需要修改的信息条目!
");//如果没有选中
return;
}
if(MessageBox("你真的要修改选择信息吗?
","修改",MB_YESNO)==IDNO)
return;//弹出对话框提示用户是否真的需要删除
intRow=0,k=0;
intCurUser=m_change_list.GetNextSelectedItem(pos);//获取选择的位置
CStringCurUserID=m_change_list.GetItemText(CurUser,0);
if(myFile.Open(pszFileName,CFile:
:
typeText|CFile:
:
modeNoTruncate|CFile:
:
modeCreate|CFile:
:
modeReadWrite),&fileException)
{
CStringstrBuf;
inti=0;
while(myFile.ReadString(strBuf))
{
++Row;//Row存储的是txt的行数
inti=0;
for(i=0;i{
if(strBuf.GetAt(i)=='')
{
if(CurUserID==strBuf.Mid(0,i))
{
k=Row;//第K行需要修改
break;
}
elsebreak;
}//if
}//for
}//while
}
else
TRACE("Can'topenfile%s,error=%u\n",pszFileName,fileException.m_cause);
myFile.Close();
if((myFileTemp.Open(pszFileNameTemp,CFile:
:
typeText|CFile:
:
modeNoTruncate|CFile:
:
modeCreate|CFile:
:
modeReadWrite),&fileExceptionTemp)&&
myFile.Open(pszFileName,CFile:
:
typeText|CFile:
:
modeNoTruncate|CFile:
:
modeCreate|CFile:
:
modeReadWrite),&fileException)
{
CStringstrBuf;
for(inti=0;i{
if(i!
=k-1)
{
myFile.ReadString(strBuf);
myFileTemp.WriteString(strBuf);
myFileTemp.WriteString("\n");
}
else
{
myFile.ReadString(strBuf);
myFileTemp.WriteString(Temp);
myFileTemp.WriteString("\n");
}
}
}
else
TRACE("Can'topenfile%s,error=%u\n",pszFileName,fileException.m_cause);
myFile.Close();
myFileTemp.Close();
if((myFileTemp.Open(pszFileNameTemp,CFile:
:
typeText|CFile:
:
modeNoTruncate|CFile:
:
modeCreate|CFile:
:
modeReadWrite),&fileExceptionTemp)&&
myFile.Open(pszFileName,CFile:
:
typeText|CFile:
:
modeNoTruncate|CFile:
:
modeCreate|CFile:
:
modeReadWrite),&fileException)
{
CStringstrBuf;
for(inti=0;i{
myFileTemp.ReadString(strBuf);
myFile.WriteString(strBuf);
myFile.WriteString("\n");
}
}
else
TRACE("Can'topenfile%s,error=%u\n",pszFileName,fileException.m_cause);
myFile.Close();
myFileTemp.SetLength(0);
m_change_list.SetItemText(k-1,0,m_yonghu);
m_change_list.SetItemText(k-1,1,m_xmima);
myFileTemp.Close();
m_xmima.Empty();
UpdateData(false);
AfxMessageBox("密码修改成功!
");
}
//密码修改
UpdateData(true);
if((m_name.IsEmpty())||(m_time.IsEmpty())||(m_number.IsEmpty())||(m
|
|
|