第一篇:超市留言板报告
实
验
报
告
1.实验项目名称:超市促销留言板的设计与实现
2.实验原理:
mfc是微软基础类库的简称,是微软公司实现的一个c++类库,主要封装大部分的windows API函数。使用MFC可以方便的编写窗口型应用软件。
MFC下各种窗口都由类CWnd派生。CWnd及其派生类的每个实例对应一个可见的窗口。与窗口的通信需要通过消息实现。
3.实验目的:
通过编写一个留言板型的应用软件,学习和应用wingows下MFC编程。加强对MFC和系统消息处理、消息响应的理解。
4.实验内容:
4.1基于MFC,开发一个对话框程序。
4.2使用工具箱中的static text, radio button, check box, group box, button, edit control 控件设计一个交互式的界面。4.3对控件的ID和名称进行重命名。4.4为对话框添加一副背景图片。4.5为控件添加事件代码。
4.6将从界面中收集到 的信息,输出到文本文件。4.7记录顾客的联系方式。
4.8询问顾客对商品和品牌的喜欢。
4.9提供相应接口,让顾客留下意见和建议。
5.实验器材(设备、元器件):计算机,vs2008 6.实验步骤:
6.1添加相关组件
从工具栏拖出相应组件,设置好属性和ID,并添加控制变量和消息响应函数。
用到的控件如下:
1姓名信息:CstaticText,Cedit,Tip 2性别信息:CstaticText,RADIO 3年龄信息:CstaticText,Cedit,Spin,Tip 4电话信息:CstaticText,Cedit 5Email信息:CstaticText,Cedit,Tip 6喜好信息:CstaticText,Check 7品牌信息:CstaticText,Cedit 8留言信息:CstaticText,Cedit 6.2对话框添加背景图片
实现方法:将一张bmp格式图片添加到资源,记下资源ID。
在OnPaint中添加如下代码,并注释掉工程自带的CDialog::OnPaint(),在对话框中画出图片。
核心代码:
CPaintDC dc(this);CDC memdc;memdc.CreateCompatibleDC(&dc);//创建兼容DC CBitmap bkg;bkg.LoadBitmap(IDB_BITMAP1);//载入位图 BITMAP bkginfo;bkg.GetBitmap(&bkginfo);//获取位图信息 memdc.SelectObject(&bkg);RECT rect;GetWindowRect(&rect);//获取对话框信息
dc.StretchBlt(0,0,rect.right-rect.left,rect.bottom-rect.top,&memdc,0,0,bkginfo.bmWidth,bkginfo.bmHeight,SRCCOPY);//画出图片
6.3控件初始化
6.3.1初始化默认文件保存路径 核心代码:
CString newTitle;//设置默认存储路径 TCHAR CurrenPath[MAX_PATH];GetCurrentDirectory(sizeof(CurrenPath),CurrenPath);//当前程序路径 m_SavePath.Format(_T(“%ssaving.ini”),CurrenPath);newTitle.Format(_T(“MarketMessage(存储到%s)”),m_SavePath);SetWindowText(newTitle);//将路径显示到窗口标题
6.3.2控件初始化
核心代码:
m_CStaticText_Name.SetFocus();//焦点在NameEdit m_RADIO_MALE.SetCheck(TRUE);//初始化为male CEdit *pAge=(CEdit *)GetDlgItem(IDC_EDIT_AGE);pAge->SetWindowText(_T(“5”));//年龄初始设置成5 m_Spin_Age.SetBuddy(pAge);//年龄CEdit关联spin控件 m_Spin_Age.SetBase(1);m_Spin_Age.SetRange(5,150);6.3.3创建三个tip控件用于显示出错提示 核心代码:
m_Tip_NameError.Create(this,TTS_ALWAYSTIP|TTS_BALLOON);//创建3tip m_Tip_AgeError.Create(this,TTS_ALWAYSTIP|TTS_BALLOON);m_Tip_EmailError.Create(this,TTS_ALWAYSTIP|TTS_BALLOON);
m_Tip_NameError.EnableToolTips();m_Tip_NameError.Activate(TRUE);
m_Tip_AgeError.EnableToolTips();m_Tip_AgeError.Activate(TRUE);
m_Tip_EmailError.EnableToolTips();m_Tip_EmailError.Activate(TRUE);6.4处理各控件消息响应 6.4.1屏蔽enter按键
功能概述:为防止错误回车导致程序关闭,需要屏蔽enter按键响应。重载PreTranslateMessage(MSG * pMsg)函数,判断为enter按键直接返回。核心代码:
if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_ESCAPE)
return
TRUE;
if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN)
return
TRUE;
return
CDialog::PreTranslateMessage(pMsg);
6.4.2 姓名框失去焦点时响应
功能概述:判断姓名输入是否为空,调整StaticText前加*号 核心代码:
CString temp;m_CEdit_Name.GetWindowText(temp);if(temp.IsEmpty()==TRUE)m_CStaticText_Name.SetWindowText(_T(“*姓名:”));else m_CStaticText_Name.SetWindowText(_T(“姓名:”));6.4.3年龄框失去焦点时响应
功能概述:年龄限制在5-150岁以内,判断输入数值是否超出范围,如超出用tip控件进行错误提示。
核心代码:
UpdateData(true);if(m_Edit_Age>=5&&m_Edit_Age<=150)m_CStaticText_Age.SetWindowText(_T(“年龄:”));else //输入年龄超出范围
{
RECT rect;
CToolInfo
sTinfo;// 提示信息
CEdit *pAge=(CEdit *)GetDlgItem(IDC_EDIT_AGE);
m_Tip_AgeError.AddTool(pAge,_T(“年龄超出范围”));
m_CStaticText_Age.SetWindowText(_T(“*年龄:”));
if(m_Edit_Age<5)
{
pAge->SetWindowText(_T(“5”));//年龄设置成5
m_Tip_AgeError.UpdateTipText(_T(“错误:年龄小于5”), pAge);
}
if(m_Edit_Age>150)
{
pAge->SetWindowText(_T(“150”));//年龄设置成150
m_Tip_AgeError.UpdateTipText(_T(“错误:年龄大于150”), pAge);
}
pAge->GetWindowRect(&rect);//得到显示位置
m_Tip_AgeError.GetToolInfo(sTinfo, pAge);
sTinfo.uFlags = TTF_TRACK;
// 显示方式设置
m_Tip_AgeError.SetToolInfo(&sTinfo);//以下用发送消息的方式控制tip框显示 m_Tip_AgeError.SendMessage(TTM_TRACKPOSITION, 0,(LPARAM)MAKELONG(rect.left, rect.bottom));
m_Tip_AgeError.SendMessage(TTM_TRACKACTIVATE, TRUE,(LPARAM)&sTinfo);// tips显示
//设置1秒的定时,在定时器中发送消息关闭tip框显示
SetTimer(1000,1000,NULL);//定时关闭
} 6.4.4Email框失去焦点时响应
功能概述:判断输入的Email信息是否符合格式,不合适给出tip提示 核心代码:
CString temp;TCHAR *pFind=NULL;m_CEdit_Email.GetWindowText(temp);if(temp.IsEmpty()==TRUE)return;pFind=_tcschr(temp.GetBuffer(),'@');//判断是否存在@ if(pFind!=NULL&&(*(pFind+1))!=_T(' '))//@后是否还有字符 { pFind=_tcschr(pFind+1,'@');if(pFind==NULL)return;} //格式不合规范,显示tip提示 RECT rect;CToolInfo
sTinfo;
// 提示信息 CEdit *pEmail=(CEdit *)GetDlgItem(IDC_EDIT_EMAIL);m_Tip_EmailError.AddTool(pEmail,_T(“Email不符合规范”));m_Tip_EmailError.UpdateTipText(_T(“Email格式有误”), pEmail);pEmail->GetWindowRect(&rect);m_Tip_EmailError.GetToolInfo(sTinfo, pEmail);sTinfo.uFlags = TTF_TRACK;
// 显示方式设置 m_Tip_EmailError.SetToolInfo(&sTinfo);
m_Tip_EmailError.SendMessage(TTM_TRACKPOSITION, 0,(LPARAM)MAKELONG(rect.left, rect.bottom));m_Tip_EmailError.SendMessage(TTM_TRACKACTIVATE, TRUE,(LPARAM)&sTinfo);// tips显示
SetTimer(1001,1000,NULL);//定时关闭
6.4.5添加定时响应
功能概述:添加响应ON_WM_TIMER()消息,重载OnTimer(UINT_PTR nIDEvent)函数
核心代码:
switch(nIDEvent){ case 1000://为自定义定时ID KillTimer(nIDEvent);//只响应一次,关闭相应定时
m_Tip_AgeError.SendMessage(TTM_TRACKACTIVATE, FALSE, NULL);//关闭年龄 tip窗口
break;case 1001: KillTimer(nIDEvent);m_Tip_EmailError.SendMessage(TTM_TRACKACTIVATE, FALSE, NULL);//关闭Email tip窗口
break;case 1002: KillTimer(nIDEvent);m_Tip_NameError.SendMessage(TTM_TRACKACTIVATE, FALSE, NULL);//关闭姓名 tip窗口
break;} CDialog::OnTimer(nIDEvent);6.5按钮响应
6.5.1清空按钮响应
功能概述:将所有控件内容重新初始化,清空保存数据的结构。核心代码:
void CMarketMessage2Dlg::OnBnClickedButtonClear(){ // TODO: 在此添加控件通知处理程序代码 MessageInit();//清空保存数据的数据结构
m_CStaticText_Name.SetFocus();//焦点在NameEdit m_RADIO_MALE.SetCheck(TRUE);//初始化为male CEdit *pAge=(CEdit *)GetDlgItem(IDC_EDIT_AGE);pAge->SetWindowText(_T(“5”));//年龄初始设置成5 m_CEdit_Name.SetWindowText(_T(“"));m_CEdit_PhoneNumber.SetWindowText(_T(”“));m_CEdit_Email.SetWindowText(_T(”“));m_Edit_Message.SetWindowText(_T(”“));m_CEdit_Brand.SetWindowText(_T(”“));} bool CMarketMessage2Dlg::MessageInit(void){ m_MessageStruct.Name.SetString(_T(”“));m_MessageStruct.Email.SetString(_T(”“));m_MessageStruct.Brand.SetString(_T(”“));m_MessageStruct.PhoneNumber.SetString(_T(”“));m_MessageStruct.Message.SetString(_T(”“));m_MessageStruct.Age.SetString(_T(”“));m_MessageStruct.Gender.SetString(_T(”“));m_MessageStruct.Preference.SetString(_T(”“));m_MessageStruct.TotalSize=0;return true;} 6.5.2修改数据保存文件位置按钮响应
功能概述:弹出一个选择文件对话框,记录选定的文件路径。核心代码:
void CMarketMessage2Dlg::OnBnClickedButtonPlace(){ // TODO: 在此添加控件通知处理程序代码
CFileDialog *lpszOpenFile;
//定义一个CfileDialog对象
lpszOpenFile = new CFileDialog(TRUE,_T(”“),_T(”“),OFN_HIDEREADONLY , _T(”文件类型(*.ini)|*.ini|所有文件(*.*)|*.*||“));if(lpszOpenFile->DoModal()==IDOK)//假如点击对话框确定按钮 { CString newTitle;m_SavePath = lpszOpenFile->GetPathName();//得到保存打开文件的路径
newTitle.Format(_T(”MarketMessage(存储到%s)“),m_SavePath);SetWindowText(newTitle);//重新设置窗口标题,显示新路径 } delete lpszOpenFile;//释放分配的对话框 } 6.5.3最后提交按钮响应
功能概述:首先判断姓名是否为空,为空返回错误提示。如不为空,获取各控件输入信息,打开路径文件,获取系统时间,将输入信息和系统时间格式调整后写入文件末尾。弹出对话框表明提交成功。
核心代码:
void CMarketMessage2Dlg::OnBnClickedButtonHandin(){ // TODO: 在此添加控件通知处理程序代码 MessageInit();m_CEdit_Name.GetWindowText(m_MessageStruct.Name);if(m_MessageStruct.Name.IsEmpty())//没有填写姓名,取消保存 { RECT rect;CToolInfo
sTinfo;
// 提示信息
CEdit *pName=(CEdit *)GetDlgItem(IDC_EDIT_NAME);m_Tip_NameError.AddTool(pName,_T(”未填写姓名“));m_Tip_NameError.UpdateTipText(_T(”未填写姓名“), pName);pName->GetWindowRect(&rect);m_Tip_NameError.GetToolInfo(sTinfo, pName);sTinfo.uFlags = TTF_TRACK;
// 显示方式设置
m_Tip_NameError.SetToolInfo(&sTinfo);
m_Tip_NameError.SendMessage(TTM_TRACKPOSITION, 0,(LPARAM)MAKELONG(rect.left, rect.bottom));m_Tip_NameError.SendMessage(TTM_TRACKACTIVATE, TRUE,(LPARAM)&sTinfo);// tips显示
SetTimer(1002,1000,NULL);//定时关闭
return;} HANDLE //打开指定路径文件
H_SaveFile=CreateFile(m_SavePath,GENERIC_WRITE|FILE_APPEND_DATA,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);if(H_SaveFile==INVALID_HANDLE_VALUE){ MessageBox(_T(”存储文件打开失败“));return;} //读入性别信息
if(m_RADIO_MALE.GetCheck()==TRUE)m_MessageStruct.Gender.SetString(_T(”男“));else m_MessageStruct.Gender.SetString(_T(”女“));//读入年龄信息 UpdateData(true);m_MessageStruct.Age.Format(_T(”%d“),m_Edit_Age);//读入电话号码信息
m_CEdit_PhoneNumber.GetWindowText(m_MessageStruct.PhoneNumber);//读入Email信息
m_CEdit_Email.GetWindowText(m_MessageStruct.Email);//读入喜好信息
if(m_Check_1==TRUE)m_MessageStruct.Preference.Append(_T(”食品、“));if(m_Check_2==TRUE)m_MessageStruct.Preference.Append(_T(”日用品、“));if(m_Check_3==TRUE)m_MessageStruct.Preference.Append(_T(”服装、“));if(m_Check_4==TRUE)m_MessageStruct.Preference.Append(_T(”电子产品、“));if(m_Check_5==TRUE)m_MessageStruct.Preference.Append(_T(”奢侈品、“));//读入品牌信息
m_CEdit_Brand.GetWindowText(m_MessageStruct.Brand);//读入留言信息
m_Edit_Message.GetWindowText(m_MessageStruct.Message);//获取系统时间信息 SYSTEMTIME systime;CString Ctimestr;GetLocalTime(&systime);
Ctimestr.Format(”%4d年%02d月%02d日 %02d:%02d:%02d 星期%1d“,systime.wYear,systime.wMonth,systime.wDay,systime.wHour,systime.wMinute, systime.wSecond,systime.wDayOfWeek);
//将各信息格式进行调整,保存到一个Cstring结构中 CString temp=Ctimestr+_T(”rn“)+_T(”姓名 :“)+m_MessageStruct.Name+_T(”rn“)+_T(”性别 :“)+m_MessageStruct.Gender+_T(”rn“)+_T(”年龄 :“)+m_MessageStruct.Age+_T(”rn“)+_T(”电话 :“)+m_MessageStruct.PhoneNumber+_T(”rn“)+_T(”EMail:“)+m_MessageStruct.Email+_T(”rn“)+_T(”喜好 :“)+m_MessageStruct.Preference+_T(”rn“)+_T(”品牌 :“)+m_MessageStruct.Brand+_T(”rn“)+_T(”留言 :“)+m_MessageStruct.Message+_T(”rn“)+_T(”---------------------rn“);DWORD NumberOfBytesWritten;//在文件末尾写入数据,后关闭文件。
SetFilePointer(H_SaveFile,0,NULL,FILE_END);
WriteFile(H_SaveFile,temp,temp.GetLength(),&NumberOfBytesWritten,NULL);CloseHandle(H_SaveFile);temp+=_T(”提交完成");MessageBox(temp);} 7.实验数据及结果分析:
下面对软件实现的结果做截图展示 7.1开始界面全图
【图7-1】界面全图 7.2姓名和年龄是必填项目,带有星号提示,未填写时带*号,填写后去掉*号
【图7-2】未填写必填项目情况
【图7-3】已填写必填项目后情况
7.3姓名,年龄,Email出错时带有tip提示信息
【图7-4】姓名未填写弹出错误提示
【图7-5】年龄超出范围提示,并会自动修正为最接近的值
【图7-6】Email格式错误提示
7.4改变保存地址
【图7-7】点击改变保存位置
7.5提交成功
【图7-8】提交成功 7.6保存结果
【图7-8】保存的文件
8.实验结论:
本次试验使用MFC,开发一个超市促销留言板对话框程序。该应用程序实现了之前提出的要求,能够收集客户意见等信息,界面友好,操作方便。
9.总结及心得体会:
本次试验加深了我对MFC编程的理解,尤其是对消息响应添加的方法以及使用消息进行窗口间通信机制。
另外学习使用了spin、tip、文件对话框等之前没有使用过的控件,学习了添加背景图片。对于改善软件的操作性和视觉效果起到很大帮助。
在老师的指导下学会了定时器的使用方法,对程序流程的控制提供了新的思路。
10.对本实验过程及方法、手段的改进建议:
由于试验时间有限和本人目前的水平有限,软件中还有一些问题没有得到很好解决。主要有如下几点:
1、tip窗口弹出后不能跟随主窗口移动,虽然设计tip时窗口弹出1秒便消失,目前影响不大。但如果弹出时间增长,则软件视觉效果变差。目前解决思路是在移动主窗口时向各弹出的tip窗口发送移动消息,但在tip窗口很多的情况下实现困难。
2、信息提交后保存在一文本文件中,不便于浏览。如果时间试验允许可加入回读功能,读取已经保存的信息并显示出来。这需要修改保存时的数据结构,加入每次提交的数据长度等信息。但相应带来的问题是保存的文件可能不能再从文本文件中直接浏览。
第二篇:留言板
日照职业技术学院毕业设计(论文)
php留言板系统
学生姓名 院 部
电子信息科学与工程学院 专 业 计算机应用技术 指导老师 鲁 红 日 期 2015-05-19
目录
一 留言板简介..........................................................................................................................................4 二 留言板设计原理..................................................................................................................................4 三 四 五 PHP技术介绍...................................................................................................................................4 PHP技术优点...................................................................................................................................4 MYSQL介绍......................................................................................................................................6
六 留言板系统的概要设计......................................................................................................................6(一)系统开发环境...............................................................................................................................6(二)php语言选择...............................................................................................................................6(三)系统功能.......................................................................................................................................7 七 留言板详细设计..................................................................................................................................7(一)数据库设计...................................................................................................................................8(二)留言板数据库连接 写入和保存..................................................................................................9(三)留言板文件夹中文件的介绍.....................................................................................................15(四)留言板首页设计.........................................................................................................................15 八 总结....................................................................................................................................................15 九 留言板特色和不足............................................................................................................................15 参考文献:................................................................................................................................................16
第1页
留言板系统
摘要:随着Internet的发展,网站的作用越来越重要,被称之为继广播、报纸、杂志、电视后的
第五种媒体——数字媒体,拥有众多优势,所以现在不少企业都有或正在建设自己的网站。而留言板作为网站重要的一个部分,从来就是一个大家交流的平台!留言板是一种最为简单的BBS应用,借助留言板,浏览者可以张贴留言的方式给站长、版主或其他浏览者进行留言和提问。
本文主要介绍留言板系统的设计思路和制作过程,从留言板的重要性开始,介绍我的留言版采用的PHP技术和MYSQL数据库,进而阐述整个留言板系统的制作过程和具体的设计思路。该留言板较全面地利用PHP技术实现留言板的基本功能:留言、查看、删除,并增加了一些特色功能。最后介绍自己在设计过程的心得体会。关键词:留言板,PHP,MYSOL数据库
第2页
引言
Internet起源于20世纪60年代末、70年代初,当时,美国国防部为了将充斥于军事基地内各种厂商的电脑主机互连,让它们可以进行数据交换以便研究工作顺利进行,于是成立了ARPA网络计划。ARPA计划尝试建设1个网络系统,它可将各种不同厂商的电脑连接起来。随着这个计划的成功,各学术单位,研究机构也纷纷与ARPA计划所建立的ARPANet连接。到了20世纪80年代,Internet这个名词因势产生,它代表着这10年来所构建涵盖全球各地的网络系统。从1990年起,商业使用的Internet在美国急速地扩大,而Internet也从原来属于少数人使用的网络系统转变为普通百姓也能够使用的网络系统。
最初的Internet资源服务都还停留在文本模式,1989年,量子物理实验室(CERN)下的1个研究小组着手开发1种全新的Internet服务,它可以在网络上传送图片、文本、影像、声音等多媒体数据。于是由Tim Berners Lee领导的小组开发出了1种主从、分布式的网络服务系统,这就是www.xiexiebang.compile编译或链接程序,可在服务器端直接执行,这无疑是更加方便了我们的编写过程。
2、使用编程环境方便简单。可以使用普通的记事本之类的文本编辑器,即可进行编辑设计,如:Windows的记事本、FrontPage等文本编辑器。也可以用dreamweaver和专业的Microsoft Visual InterDev开发工具。
3、浏览网页方便,交互速度也快。PHP是运行在服务器端,所以我们无须担心浏览器是否支持PHP所使用的编程语言,用户端只要使用可执行HTML码的浏览器,即可浏览Personal home pages所设计的网页内容。PHP在服务器端运行,当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度。
4、提供多种编程语言。PHP能与任何ActiveX scripting语言相容。除了可用VBScript或JScript语言来设计外,还通过plug-in的方式,使用由第三方所提供的其他脚本语言,譬如Perl等。
5、提高代码的安全性。Personal home pages的程序代码隐藏,已编码的脚本在运行时由脚本引擎解码,因此不需要单独的应用程序。客户端上仅可以看到由PHP输出的动态HTML文件。因而可以避免所写的源程序被他人剽窃,也提高了程序的安全性。
6、功能强大。编程是面向对象的(Object oriented),并可扩展ActiveX Server组件功能。Personal home page Components(ActiveX服务器组件)具有无限可扩充性。你可以使用任何编程语言来编写你所需要的Personal Server 组件。可以使用Visual Basic、Java、Visual C++、COBOL等编程语言来编写你所需要的Personal Server Component。也可以使用第三方组件或自己开发的Personal Server组件。理论上说,可以实现任何功能。
7、访问数据库十分方便。可以通过PDO(Personal Data Objects,微软的一种新的数据访问模型,是一种可以提供WEB页面开发者轻松存取Internet的数据库,并可以在用户端实现网上立即、即时更新显示的最新WEB页面数据库技术。)非常方便地访问数据库。
总之,PHP从字面上说,包含三方面含义: 1.Personal:PHP使用了微软的Personal技术。Personal(COM)技术是现在Microsoft软件的重要基础。它采用封装对象,程序调用对象的技术,简化编程,加强程序间合作。PHP本身封装了一些基本组件和常用组件,有很多公司也开发了很多实用组件。只要你可以在服务器上安装这些组件,通过访问组件,你就可以快速、简易地建立自己的WEB应用。
2.home:PHP运行在服务器端。这样就不必担心浏览器是否支持PHP所使用的编程语言。PHP的编程语言可以是VBSCRIPT和JSCRIPT。VBSCRIPT是VB的一个简集,会VB的人可以很方便的快速上手。然而NETscape浏览器不支持客户端的VBSCRIPT,所以最好不要在客户端使用VBSCRIPT。而在服务器端,则无需考虑浏览器的支持问题。NETscape浏览器也可以正常显示PHP页面。
3.page:PHP返回标准的HTML页面,可以正常地在常用的浏览器中显示。浏览者查看页面源文件时,看到的是PHP生成的HTML代码,而不是PHP程序代码。这样就可以防止别人抄袭程序。由此可以看出,PHP是在IIS下开发WEB应用的一种简单、方便的编程工具。在了解了VBSCRIPT的基本语法后,只需要清楚各个组件的用途、属性、方法,就可以轻松编写出自己的PHP系统。
第5页
而我这次所开发的留言本系统,主要是利用PHP技术的简单和实用的特点,以及PHP使用的广泛性,而且非常适合于网络中小型系统开发。
五 MYSQL介绍
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008 年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购.对于Mysql的前途,没有任何人抱乐观的态度.目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
1.使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性 2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统
3.为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
4.支持多线程,充分利用CPU资源
5.优化的SQL查询算法,有效地提高查询速度
6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名
7.提供TCP/IP、ODBC和JDBC等多种数据库连接途径 8.提供用于管理、检查、优化数据库操作的管理工具 9.可以处理拥有上千万条记录的大型数据库
六 留言板系统的概要设计
(一)系统开发环境
基于微软平台PHP环境,使用MYSQL数据库。适用于IE8.0以上版本浏览器,Win2000+APACHE 或win7+APACHE以上运行环境。(本人用的win7+APACHE测试)。
(二)php语言选择
选择一个好的编程语言十分的重要,当前,面对众多的编程语言,很多人无从选择,而本人看到PHP的以上众多特点,个人认为:
MYSQL后台数据库+PHP服务器端程序+客户端IE浏览器,是一个精练实用高效的组合模式。在这种使用模式中,PHP程序无疑是最重要的,是沟通客户端和后台数据库之间的桥梁。在PHP程序中,通过数据库语言,建立对MYSQL数据库的连接,是客户能够访问后
第6页
台数据库的前提。
鉴于前面介绍PHP优点的原因,又有上面组合的优势,本人的留言板使用PHP语言也是十分正确而实用的。
(三)系统功能
该留言板具有的主要功能如下:
1.可以按照发言时间的先后顺序,留言板自动排序; 2.留言板的主要栏目组成图
3.本留言板不需注册,陌生人即可留言。
4.因为是个人留言板所以具有留言、查看、删除的功能。
七 留言板详细设计
有了技术和流程图以及留言板要实现的功能,接下来就应该进行详细设计了。数据库是首当其冲的,接下来就是用户常接触的首页的设计,然后就是该留言板特色功能的设计和实现。
第7页
(一)数据库设计
我的数据库采用的是MY SQL数据库,采用的原因也已经介绍了。以下就介绍留言板数据库的组成。
第8页
(二)留言板数据库连接 写入和保存
数据库链接失败!
”;
exit();} mysql_select_db(“gbook”, $con);mysql_query(“set names 'gb2312'”);date_default_timezone_set(PRC);?>
第9页
if(isset($_REQUEST['GLOBALS'])OR isset($_FILES['GLOBALS'])){ exit('Request tainting attempted.');} //Session保存路径
$sessSavePath = LOVE_ROOT.“data/sessions/”;if(is_writeable($sessSavePath)&& is_readable($sessSavePath)){ session_save_path($sessSavePath);} date_default_timezone_set(Singapore);$timestamp = time();require_once LOVE_ROOT.'./data/config.inc.php';require_once LOVE_ROOT.'./data/db.inc.php';require_once LOVE_ROOT.'./include/db_mysql.class.php';require_once LOVE_ROOT.'./include/template.class.php';if(defined('UC_KG')){include_once TM_ROOT.'/uc_client/client.php';} $PHP_SELF = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];$SCRIPT_FILENAME = str_replace('', '/',($_SERVER['PATH_TRANSLATED'] ? $_SERVER['PATH_TRANSLATED'] : $_SERVER['SCRIPT_FILENAME']));//$homeurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace(“//+(api|archiver|wap)?/*$/i”, '', substr($PHP_SELF, 0, strrpos($PHP_SELF, '/'))).'/';
//实例化数据库操作 $db = new dbstuff;$db->connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect);unset($dbhost, $dbuser, $dbpw, $dbname, $pconnect);$db->query(“set names gbk”);if(getenv('HTTP_CLIENT_IP')&& strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')){ $onlineip = getenv('HTTP_CLIENT_IP');} elseif(getenv('HTTP_X_FORWARDED_FOR')&& strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')){ $onlineip = getenv('HTTP_X_FORWARDED_FOR');} elseif(getenv('REMOTE_ADDR')&& strcasecmp(getenv('REMOTE_ADDR'), 'unknown')){ $onlineip = getenv('REMOTE_ADDR');} elseif(isset($_SERVER['REMOTE_ADDR'])&& $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')){ $onlineip = $_SERVER['REMOTE_ADDR'];}
preg_match(“/[d.]{7,15}/”, $onlineip, $onlineipmatches);$onlineip = $onlineipmatches[0] ? $onlineipmatches[0] : 'unknown';unset($onlineipmatches);?>
第10页
var $querynum = 0;var $link;var $histories;
var $dbhost;var $dbuser;var $dbpw;var $dbcharset;var $pconnect;var $tablepre;var $time;
var $goneaway = 5;
function connect($dbhost, $dbuser, $dbpw, $dbname = '', $dbcharset = '', $pconnect = 0, $tablepre='', $time = 0){
$this->dbhost = $dbhost;
$this->dbuser = $dbuser;
$this->dbpw = $dbpw;
$this->dbname = $dbname;
$this->dbcharset = $dbcharset;
$this->pconnect = $pconnect;
$this->tablepre = $tablepre;
$this->time = $time;
if($pconnect){
if(!$this->link = mysql_pconnect($dbhost, $dbuser, $dbpw)){
$this->halt('Can not connect to MySQL server');
}
} else {
if(!$this->link = mysql_connect($dbhost, $dbuser, $dbpw)){
$this->halt('Can not connect to MySQL server');
}
}
if($this->version()> '4.1'){
if($dbcharset){
mysql_query(“SET character_set_connection=”.$dbcharset.“, character_set_results=”.$dbcharset.“, character_set_client=binary”, $this->link);
}
if($this->version()> '5.0.1'){
mysql_query(“SET sql_mode=''”, $this->link);
}
第11页
} } if($dbname){ mysql_select_db($dbname, $this->link);} function fetch_array($query, $result_type = MYSQL_ASSOC){
return mysql_fetch_array($query, $result_type);}
function result_first($sql){
$query = $this->query($sql);
return $this->result($query, 0);}
function fetch_first($sql){
$query = $this->query($sql);
return $this->fetch_array($query);} function fetch_row($query){
$query = mysql_fetch_row($query);
return $query;} function fetch_fields($query){
return mysql_fetch_field($query);} function fetch_rows($sql){
$result = $this->query($sql);
$arr = array();
while($row = $this->fetch_array($result))
{
$arr[] = $row;
}
$this->free_result($result);
return $arr;} function fetch_one($sql){
$rs = $this->query($sql);
$arr = $this->fetch_array($rs,MYSQL_NUM);$this->free_result($rs);
第12页
return $arr[0];} function fetch_all($sql, $id = ''){
$arr = array();
$query = $this->query($sql);
while($data = $this->fetch_array($query)){
$id ? $arr[$data[$id]] = $data : $arr[] = $data;
}
return $arr;}
function cache_gc(){
$this->query(“DELETE FROM {$this->tablepre}sqlcaches WHERE expiry<$this->time”);}
function query($sql, $type = '', $cachetime = FALSE){
$func = $type == 'UNBUFFERED' && @function_exists('mysql_unbuffered_query')'mysql_unbuffered_query' : 'mysql_query';
if(!($query = $func($sql, $this->link))&& $type!= 'SILENT'){
$this->halt('MySQL Query Error', $sql);
}
$this->querynum++;
$this->histories[] = $sql;
return $query;}
function affected_rows(){
return mysql_affected_rows($this->link);}
function error(){
return(($this->link)? mysql_error($this->link): mysql_error());}
function errno(){
return intval(($this->link)? mysql_errno($this->link): mysql_errno());}
function result($query, $row){
$query = @mysql_result($query, $row);
return $query;}
function num_rows($query){
第13页
?
$query = mysql_num_rows($query);
return $query;}
function num_fields($query){
return mysql_num_fields($query);}
function free_result($query){
return mysql_free_result($query);}
function insert_id(){
return($id = mysql_insert_id($this->link))>= 0 ? $id : $this->result($this->query(“SELECT last_insert_id()”), 0);}
function version(){
return mysql_get_server_info($this->link);}
function close(){
return mysql_close($this->link);}
function halt($message = '', $sql = ''){
$error = mysql_error();
$errorno = mysql_errno();
if($errorno == 2006 && $this->goneaway--> 0){
$this->connect($this->dbhost, $this->dbuser, $this->dbpw, $this->dbname, $this->dbcharset, $this->pconnect, $this->tablepre, $this->time);
$this->query($sql);
} else {
$s = 'Error:'.$error.'
';
$s.= 'Errno:'.$errorno.'
';
$s.= 'SQL::'.$sql;
exit($s);
} } } ?>
第14页
(三)留言板文件夹中文件的介绍
有了数据库,就应该设计留言板的各个页面。本留言板由2个文件夹,11个文件组成,简单介绍各文件的作用:
index.PHP:留言板主页,主要功能是查看留言,任何人都可以查看留言信息。Fun.php连接数据库并统计留言条数、计算页数 Config.php连接配置数据库。
(四)留言板首页设计
我留言板的首页文件index.PHP,功能主要是为访客留下相关的信息,并进行留言。界面相对简单,但功能很实用!留言板的基本功能实现具体如下:
图7.1留言首页
图7.2愿望
图7.3愿望列表
结束语:通过上面的介绍,相信对该留言板整体的构建和各项功能都有了一定的认识,最重要的是学会了留言板的设计以及类似网络的编程,更对实际操作和具体设计流程有了清晰的认识。该留言板实现了基本功能,并具有自己的特色,例如屏蔽关键字和防灌水功能。由于该留言板功能实用,而且界面友好,特别适合于中小型网站使用。对于刚刚接触网络编程人员的信心和兴趣也会有很大提高。
八 总结
通过本次毕业设计,我学到了很多东西,例如:编程规范,PHP技术等。这次毕业设计是对我大学本科四年所学知识的一次综合应用,让我认识到了自己的不足,并不断的加强改进。在系统不断的完善改进中,我学到了很多新的知识,也懂得了很多。这使我对自己的未来充满了信心。
九 留言板特色和不足
特色:任何人都可以留言,任何人都可以看到。无需注册和登录,完全开放。不足:管理员功能较弱。
第15页
参考文献:
1.《PHP语言,进阶和高级应用》 龙浩等编著 清华大学出版社
2.《PHP & MYSQL Web数据库应用开发指南》 Hugh E.Williams等著 谢君英 欧阳宇译2003年5月
3.《php程序设计》 Programming PHP 中国电力出版社 2003年7月 4.《phpmysql数据库开发指南》焦桐顺著 电子工业出版社 2001年9月 5.《php4交互网页数据库实战手册》清华大学出版社 2004年7月
第16页
第三篇:简易留言板课程设计报告
武汉软件工程职业学院
课程设计报告
2016-2017学第 二 学期
题目:
简易留言板设计
姓名:
肖志超
班级:
网络1502
系部:
计算机学院
指导教师:
梁晓雅
日期:2017年6月13日
[摘要]
在网络网络技术迅速发展以信息交流频繁的今天,网络应用已经渗透到人类社会的各个角落。作为网络世界的支撑点的网站,更是人们关注的热点:政府利用网站宣传自己的施政纲领,日益成为与百姓交流的直通车;企业利用网站宣传自己的形象,进而挖掘无限商机;个人利用网站展示个性风采,创建彼此沟通的桥梁。越来越多的网站建立了自己的www.xiexiebang.command cmd = new SqlCommand(yh, conn);
if((int)cmd.ExecuteScalar()> 0){ string yhx = “admin”;string yhxx = “select count(*)from userinfo where uname='” + TextBox1.Text.Trim()+ “'and upwd='” + FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox2.Text.Trim(), “MD5”)+ “'and ulevel='” + yhx + “'”;SqlCommand cmd1 = new SqlCommand(yhxx, conn);if((int)cmd1.ExecuteScalar()> 0){ Session[“sf”] = “admin”;Session[“s”] = TextBox1.Text.Trim();} else { Session[“sf”] = TextBox1.Text.Trim();;} Response.Redirect(“xgxx.aspx”);} else { Response.Write(“”);}
}
protected void LinkButton1_Click(object sender, EventArgs e){
string yh = “select count(*)from userinfo where uname='” + TextBox1.Text.Trim()+ “'and upwd='”
+FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox2.Text.Trim(),“MD5”)+ “' ”;conn.Open();SqlCommand cmd = new SqlCommand(yh, conn);
if((int)cmd.ExecuteScalar()> 0){ Session[“uname”] = TextBox1.Text;
Response.Redirect(“ly.aspx”);} else { Response.Write(“”);}
}
4.2.新用户注册
在登录页面点击注册即可进入新用户注册页面
核心代码如下
static string Coonstr = System.Configuration.ConfigurationManager.ConnectionStrings[“coonstring”].ToString();SqlConnection conn = new SqlConnection(Coonstr);static int i = 1;protected void Page_Load(object sender, EventArgs e){ }
protected void LinkButton2_Click(object sender, EventArgs e){ Response.Redirect(“Default.aspx”);}
protected void LinkButton3_Click(object sender, EventArgs e){ string xyh = “select count(*)from userinfo where uname='” + TextBox1.Text.Trim()+ “'”;conn.Open();SqlCommand cmd = new SqlCommand(xyh, conn);
if((int)cmd.ExecuteScalar()> 0){ Label1.Text = “用户名重复”;} else { Label1.Text = “可以使用的用户名”;int i = 0;} }
protected void LinkButton1_Click(object sender, EventArgs e){
conn.Open();if(i!= 0){ string ss = “user”;//string cyh = “insert into userinfo values('” + TextBox1.Text + “','” + TextBox2.Text + “','” + TextBox4.Text + “','” + ss + “''” + DropDownList1.SelectedValue.ToString()+ “','” + FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox5.Text, “MD5”)+ “')”;string cyh = “insert into userinfo(uname,upwd,uemail,ulevel,uquestion,uanswer)values('” + TextBox1.Text + “','” + FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox2.Text, “MD5”)+ “','” + TextBox4.Text + “','” + ss + “','” + DropDownList1.SelectedValue.ToString()+ “','” + FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox5.Text, “MD5”)+ “')”;SqlCommand cmd = new SqlCommand(cyh, conn);int num = cmd.ExecuteNonQuery();if(num > 0){ Response.Write(“”);} else { Response.Write(“”);} } else { Response.Write(“”);}
}
4.3找回遗忘的密码
在用户登录界面中输入用户名,单击“忘记密码”链接按钮打开如图所示的界面,程序根据用户输入的用户名,在页面中显示注册时填写的安全问题,若用户能正确回答安全问题答案,即可重置密码
核心代码如下
public partial class zhmm : System.Web.UI.Page { static string Coonstr = System.Configuration.ConfigurationManager.ConnectionStrings[“coonstring”].ToString();SqlConnection conn = new SqlConnection(Coonstr);protected void Page_Load(object sender, EventArgs e){ if(!IsPostBack){ Label1.Text = Convert.ToString(Session[“zhmm”]);if(Label1.Text==“"){ Response.Redirect(”Default.aspx“);}
DropDownList1.Items.Clear();conn.Open();this.DropDownList1.Items.Add(”“);string mm = ”select uquestion from userinfo where uname='“+Session[”zhmm“]+”'“;SqlCommand sql = new SqlCommand(mm, conn);SqlDataReader dr = sql.ExecuteReader();while(dr.Read()){ this.DropDownList1.Items.Add(dr[”uquestion“].ToString());}
}
}
protected void LinkButton1_Click(object sender, EventArgs e){ string m = ”select count(*)from userinfo where uname='“ + Session[”zhmm“] + ”'and uanswer='“ + FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox1.Text.Trim(), ”MD5“)+ ”'and uquestion='“ +DropDownList1.SelectedValue.ToString()+ ”'“;conn.Open();SqlCommand cmd = new SqlCommand(m, conn);
if((int)cmd.ExecuteScalar()> 0){ Response.Write(”“);} else { Response.Write(”“);} }
protected void LinkButton2_Click(object sender, EventArgs e){ Response.Redirect(”Default.aspx“);}
4.4.修改用户信息
在用户登录页面中输入用户名和密码,单击“修改用户信息”链接按钮讲打开用户管理页面。管理员用户可以使用页面中的所有功能,而普通用户只能修改自己的密码,电子邮箱等信息。
核心代码如下
public partial class xgxx : System.Web.UI.Page { static string Coonstr = System.Configuration.ConfigurationManager.ConnectionStrings[”coonstring“].ToString();SqlConnection conn = new SqlConnection(Coonstr);protected void Page_Load(object sender, EventArgs e){ if(!IsPostBack){ if((string)Session[”sf“] == ”admin“){ string dr = ”select uname ,uemail,ulevel from userinfo where ulevel='user'“;DropDownList1.Items.Clear();conn.Open();DropDownList1.Items.Add(Session[”sf“].ToString());DropDownList2.Items.Add(”admin“);SqlCommand sql = new SqlCommand(dr, conn);SqlDataReader dr1 = sql.ExecuteReader();while(dr1.Read()){ this.DropDownList1.Items.Add(dr1[”uname“].ToString());} conn.Close();
string drq = ”select uname ,uemail,ulevel from userinfo where ulevel='“ + Session[”s“] + ”'“;conn.Open();SqlCommand sq1l = new SqlCommand(drq, conn);SqlDataReader dr11 = sq1l.ExecuteReader();
while(dr11.Read()){ TextBox3.Text = dr11[”uemail“].ToString();
} } else { DropDownList1.Items.Add(Session[”sf“].ToString());DropDownList1.Enabled = false;DropDownList2.Items.Add(”user“);LinkButton2.Enabled = false;} } }
protected void LinkButton1_Click(object sender, EventArgs e){conn.Open();string cz = ”update userinfo set upwd='“
+FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox2.Text.Trim(),”MD5“)+ ”',uemail='“+TextBox3.Text.Trim()+”' where uname='“ + Session[”sf“] + ”'“;SqlCommand cmd = new SqlCommand(cz, conn);if((int)cmd.ExecuteNonQuery()> 0){ Response.Write(”“);} }
protected void LinkButton3_Click(object sender, EventArgs e){ Response.Redirect(”Default.aspx“);}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e){ TextBox3.Text = ”“;string yx = ”select uemail,ulevel from userinfo where uname='“+DropDownList1.SelectedValue.ToString()+”'“;conn.Open();DropDownList2.Items.Clear();SqlCommand sql = new SqlCommand(yx, conn);SqlDataReader dr1 = sql.ExecuteReader();while(dr1.Read()){ TextBox3.Text = dr1[”uemail“].ToString();DropDownList2.Items.Add(dr1[”ulevel"].ToString());}
}
五、总结
做课设让我对ASP.NET有了新的认识,首先我接触了很多上课见过见过但没有实际用过的类和方法,让我对编程有了许多新的思想。虽然系统的基本功能都已实现,但还是存在系统不稳定等多个问题尚待解决。这个系统主要是我自己开发的,但也得到了老师和同学的很大帮助。我正在做系统的过程中遇到了很多问题,有的是知识存储不足,有的是考虑不够周全,之所以能够顺利实现基本功功能,离不开老师和同学的大力相助。事实证明,只靠自己是不能顺利完成一套功能完整的系统的,必须充分利用团队的力量。开发一套系统,最重要的是细心,并不是一定要做到面面俱到,但也要充分考虑到客户的需求和现实意义,不管什么系统,只用运用到实际应用中,才具有先现实意义。所以在准备工作中要正确分析社会需求了解现实应用,画出流程图,把大体框架做好,然后再逐一细化。我们不可能做到面面俱到,但一定要做到步步扎实,作为一个程序编程人员,要保持清醒的头脑,以现实为依据,让自己的每一行代码都能实现自己的意义。通过这次课程设计,我收获的不仅仅是课程上的知识得到实际应用,还有编程的基本习惯和开发系统时应注意的流程。这次课程设计本人主要参与了系统实现以及系统测试,还有参与小组共同完成的编写代码、实现功能模块。历时两个星期终于在大家的一起努力下顺利完成了。虽然过程辛苦是不可避免,但收获还是令人感到尤其的欣慰。在这次的课程设计中不仅检验了我所学习的知识,也培养了我的实践能力,让我知道遇到一个问题,如何去寻找思路,如何去解决问题,最终完成整个事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了宽容,学会了理解,也学会了做人与处世。课程设计是我们专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不少的过程。实验过程中,也十分感谢实验指导老师马骏老师的指点与教导。这次课程设计不仅是对这学期所学知识的一种综合检验,而且也是对自己动手能力的一种提高,增强了自己实践能力。通过这次课程设计使我明白了自己知识还比较欠缺,只是学习书本知识还是远远不够的,自己不会的东西还有太多,学习需要自己长期的积累,在以后的学习、工作中都应该不断的学习,将课本的理论知识与生活中的实践知识相结合,不断提高自己文化知识和实践能力.参考文献
常永英,ASP.NET程序设计教程(C#3)[M].北京:机械工业出版社,2007.常永英,ASP.NET程序设计教程(C#3)[M].上机指导与习题解答。北京:机械工业出版社,2007.崔淼.VisualC#2005程序设计教程[M]。北京:机械工业出版社,2007.张亚习.精通ASP.NET3.5网络开发技术[M].北京:电子工业出版社,2009.Stephen Walther.ASP.NET3.5揭秘(卷1)[M].北京:人民邮电出版社,2009.Stephen Walther.ASP.NET3.5揭秘(卷2)[M].北京:人民邮电出版社,2009.刘瑞新.Visual Basic。NET程序设计教程[M].北京:机械工业出版社,2005.
第四篇:ASPNET留言板
一、留言板的简介(一)留言板
留言板是一种电子便签管理系统,是用 ASP 或其它脚本语言编写的网络应用程序。在网络用户交流中起很大的作用, 每个人都可以将他的资料和要求等信息保留在页面上,以供他人观看。留言板供其他网友给自己留言,或者临时存放自己的感受。留言操作相对简单, 在您进入网站后, 进入任何一个留言板货社区均可以看到有输入框,输入后提交即可。留言板提供完备的信息发布功能,在网络用户交流中也有很大的作用。而这个留言板仅仅是简单的留言和管理员对留言板进行设置和进行回复、删除管理的工具。该留言板简单但实用, 而且具备了大多数留言板的基本功能。
二、需求分析(一)需求分析
要求系统具有良好的人机界面, 能够满足用户的留言要求, 能够让访客在查看留言内容后,对留言的内容发表自己的意见,管理员能够实现对留言的回复及删除操作, 网站最大限度地实现维护和易操作性,网站运行稳定、安全可靠。(二)设计目标
界面设计美观友好,使用灵活便捷,数据存储安全可靠,提供留言查看、留言发表、留言回复、留言删除功能,系统最大限度地实现易维护和易操作性。(三)功能分析
可以按照发言时间的先后顺序,留言板自动排序,友好简洁的管理界面,便于管理员维护留言板,管理员具有回复和删除留言的权限,具有页数跳转功能系统功能模块图,三、系统功能设计
在编写留言系统前,首先需要确定留言系统所需要的一些功能模块和适用场景,例如留言系统是以何种形式呈现给用户, 如何对这些留言进行管理等等,这些功能都是需要在开发初级进行设计和规划的。后台主页,后台主页面, 后台管理,后台留言信息管理,后台会员。前台主页,留言系统网站登陆界面,主页,留言动态。登陆界面主要有,注册、登陆、看帖、发帖。(一)主要功能 ,、留言网站用户登陆界面功能
当用户访问 W eb 页面时需要进行登录进入留言板网站界面,用户不进行登录就不能够进入系统,也不能够分享相应的信息。管理员可以配置是否需要进行登录才能查看留言板网站的内容, 如果管理员设置需要登录查看,则用户不登陆就不能够查看相应的内容。
2、用户主页功能
用户登录之后就可以看到留言板系统的内容。
3、用户注册功能
访客需要注册账户后才能够看帖,发帖。
4、用户看帖功能
用户登录留言板网站后,就可以查看到网站内的留言贴。
5、用户发帖功能
用户登录留言板网站后,就可以根据其它留言贴而发帖。
6、管理员登录功能
为了方便管理留言板系统,管理员进行对留言板管理。
7、回复功能
用户对留言进行回复(二)数据库设计 ASP.NET 留言板系统在数据库上并不是很困难, 但是也不会简单,其中包含了很多的功能, 这些功能能够让用户在网站上分享自己的见解、意见、聊天等,所以在数据库的设计上, 其表的数量和表与表之间的关系也原有的模块或系统更加复杂。
1、数据表的创建
创建表可以通过 SQL Server 进行创建
2、事务表 Admin Member Info
3、公告数据
公告数据可以不使用数据库进行存储,在这里可以使用 txt 文档进行数据存储, 这样不仅可以减轻数据库服务器的压力, 也能够增加公告中文本的可扩展性。注意,对于公告的数据直接存储在 txt 文档中,当首页需要调用公告时,可以直接从 txt 文档中读取数据进行 HTML 呈现。
(四)设计技术
1、ASP Microsoft Active Server Pages 即我们所称的 ASP,其实是一套微软开发的服务器端脚本环境。Active Server Page 是创建动态网页的一个很好的工具, 它起一种编程语言的作用,可以利用它编写动态产生 HTML 的程序代码。而且 ASP 也是服务器端脚本环境,可以用来创建交互式 WEB 页并建立强大的的 Web 应用程序。因此,只要用户浏览 Web 站点并请求一个 ASP 页,Web 服务器就可以处理相应的 ASP 代码,生成 HTML 代码,然后将它传递到用户浏览器并显示出网页。ASP 内含于 IIS4.0 和 5.0 之中,通过 ASP 我们可以结合 HTML 网页、ASP 指令和 ActiveX 元件建立动态、交互且高效的 WEB服务器应用程序。有了 ASP 就不必担心客户的浏览器是否能运行所编写的代码, 因为所有的程序都将在服务器端执行, 包括所有嵌在普通HTML 中的脚本程序。当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器, 这样也就减轻了客户端浏览器的负担, 大大提高了交互的速度。
2、SQL SQL 全称是“结构化查询语言(Structured Query Language)” ,最早的是 IBM 的圣约瑟研究实验室为其关系数据库管理系统 SYSTEM R开发的一种查询语言,它的前身是 SQUARE 语言。SQL 语言结构简洁,功能强大,简单易学,所以自从 IBM 公司 1981 年推出以来,SQL 语言,得到了广泛的应用。如今无论是像 Oracle ,Sybase, SQL Server这些大型的数据库管理系统,还是像 Visual Foxporo, PowerBuilder这些微机上常用的数据库开发系统,都支持 SQL 语言作为查询语言。
3、IIS IIS 是 Internet Information Server 的缩写,它是微软公司主推的服务器,最新的版本是 Windows2003 里面包含的 IIS 6,IIS 与WindowNT Server 完全集成在一起,因而用户能够利用 Windows NTServer 和 NTFS,NT File SystemNT 的文件系统,内置的安全特性,建立强大,灵活而安全的 Internet 和 Intranet 站点。IIS 支持 HTTP,Hypertext Transfer Protocol,超文本传输协议, ,FTP,Fele Transfer Protocol,文件传输协议,以及 SMTP 协议,通过使用 CGI 和 ISAPI,IIS 可以得到高度的扩展。
四、系统界面和代码实现
1、用户登录界面, 代码如下, u s i n g
S y s t e m.D a t a.S q l C l i e n t;p u b l i c
p a r t i a l
c l a s s
L o g i n
:
S y s t e m.W e b.U I.P a g e { p r o t e c t e d
v o i d
P a g e _ L o a d(o b j e c t
s e n d e r ,E v e n t A r g s
e)
{
} p r o t e c t e d
v o i d
B t n L o g i n _ C l i c k(o b j e c t
s e n d e r ,E v e n t A r g s
e){
i f
(T x t N a m e.T e x t
= =
“ ”
|
T x t P a s s.T e x t
= =
“ ”)
{ L a b e l 1.T e x t
=
“ 必须输入帐号和密码,”;r e t u r n;
} e l s e
{ S q l C o n n e c t i o n
c o n n
=
n e w
S q l C o n n e c t i o n(“ D a t a
S o u r c e =.;I n i t i a l C a t a l o g = B B S;I n t e g r a t e d
S e c u r i t y = t r u e ”);c o n n.O p e n();S q l C o m m a n d
C m d
=
n e w
S q l C o m m a n d();
C m d.C o n n e c t i o n
=
c o n n;C m d.C o m m a n d T e x t
=
“ s e l e c t
[ 用户名]
f r o m
[ m e m b e r ]
w h e r e
[ 用户名] = ' ”
+
T x t N a m e.T e x t +
“ '
a n d
[ 密码] = ' ”
+
T x t P a s s.T e x t
+
“ ' ”;S q l D a t a R e a d e r
d r
=
C m d.E x e c u t e R e a d e r();i f
(d r.R e a d()){ S e s s i o n [ “ m e m ” ]
=
T x t N a m e.T e x t;
/ / 登录成功后记下该用户昵称,以便后续功能使用
L a b e l 1.T e x t
=
“ 登录成功,”;T x t N a m e.T e x t
=
“ ”;T x t N a m e.E n a b l e d
=
f a l s e;T x t P a s s.T e x t
=
“ ”;T x t P a s s.E n a b l e d
=
f a l s e;d r.C l o s e();
} e l s e {
L a b e l 1.T e x t
=
“ 昵称不存在或密码不对,”;
} c o n n.C l o s e();
}
} p r o t e c t e d
v o i d
L i n k B u t t o n 1 _ C l i c k(o b j e c t
s e n d e r ,E v e n t A r g s
e){
R e s p o n s e.R e d i r e c t(“ g u a n l i.a s p x ”);
} }
2、用户注册界面, 代码如下,u s i n g
S y s t e m.D a t a.S q l C l i e n t;p u b l i c
p a r t i a l
c l a s s
_ D e f a u l t
:
S y s t e m.W e b.U I.P a g e
{
p r o t e c t e d
v o i d
P a g e _ L o a d(o b j e c t
s e n d e r ,E v e n t A r g s
e)
{
} p u b l i c
b o o l
C h e c k I n p u t(){
i f
(T x t N a m e.T e x t
= =
“ ”
|
T x t P a s s.T e x t
= =
“ ”
| T x t P a s s C o n f.T e x t
= =
“ ”
|
T x t E m a i l.T e x t
= =
“ ”){ L a b e l 1.T e x t
=
“ 你输入的信息不正确,请重新输入,”;T x t N a m e.T e x t
=
“ ”;T x t P a s s.T e x t
=
“ ”;T x t P a s s C o n f.T e x t
=
“ ”;T x t E m a i l.T e x t
=
“ ”;r e t u r n
f a l s e;
} e l s e {
i f
(T x t P a s s.T e x t
!=
T x t P a s s C o n f.T e x t){
L a b e l 1.T e x t
=
“ 你两次输入的密码不同,请重新输入,”;T x t N a m e.T e x t
=
“ ”;T x t P a s s.T e x t
=
“ ”;T x t P a s s C o n f.T e x t
=
“ ”;T x t E m a i l.T e x t
=
“ ”;r e t u r n
f a l s e;
}
} r e t u r n
t r u e;
} p r o t e c t e d
v o i d
B t n R e g _ C l i c k(o b j e c t
s e n d e r ,E v e n t A r g s
e){ i f
(C h e c k I n p u t()){ S q l C o n n e c t i o n
c o n n
=
n e w
S q l C o n n e c t i o n(“ D a t a
S o u r c e =.;I n i t i a l
C a t a l o g = B B S;I n t e g r a t e d S e c u r i t y = t r u e ”);c o n n.O p e n();/ / 检查用户是否已存在
S q l C o m m a n d
C m d
=
n e w
S q l C o m m a n d();C m d.C o n n e c t i o n
=
c o n n;C m d.C o m m a n d T e x t
=
“ s e l e c t
[ 用户名]
f r o m
m e m b e r ”;S q l D a t a R e a d e r
d r
=
C m d.E x e c u t e R e a d e r();w h i l e
(d r.R e a d()){ i f
(d r.G e t S t r i n g(0)
= =
T x t N a m e.T e x t){
L a b e l 1.T e x t
=
T x t N a m e.T e x t
+
“ 已经存在,请你选择另外的昵称,”;c o n n.C l o s e();r e t u r n;
}
} c o n n.C l o s e();s t r i n g
S q l S t r;S q l S t r
=
“ I n s e r t
i n t o
m e m b e r([ 用户名] , [ 密码] , [ 电子邮件])
v a l u e s(' ”
+
T x t N a m e.T e x t +
“ ' , ' ”
+
T x t P a s s.T e x t
+
“ ' , ' ”
+
T x t E m a i l.T e x t
+
“ ')”;C m d.C o m m a n d T e x t
=
S q l S t r;c o n n.O p e n();C m d.E x e c u t e N o n Q u e r y();c o n n.C l o s e();L a b e l 1.T e x t
=
“ 恭喜你,你已注册成功,”;}
}
p r o t e c t e d
v o i d
B t n C a n c e l _ C l i c k(o b j e c t
s e n d e r ,E v e n t A r g s
e){
R e s p o n s e.W r i t e(“ < s c r i p t
l a n g u a g e = j a v a s c r i p t > a l e r t(' 用户已取消注册,');< / s c r i p t > ”);
} p r o t e c t e d
v o i d
L i n k B u t t o n 1 _ C l i c k(o b j e c t
s e n d e r ,E v e n t A r g s
e){
R e s p o n s e.R e d i r e c t(“ g u a n l i.a s p x ”);
} } 3、看帖界面, 代码如下, u s i n g
S y s t e m.D a t a.S q l C l i e n t;p u b l i c
p a r t i a l
c l a s s
S h o w
:
S y s t e m.W e b.U I.P a g e {
p r o t e c t e d
v o i d
P a g e _ L o a d(o b j e c t
s e n d e r ,E v e n t A r g s
e){ S q l C o n n e c t i o n
c o n n
=
n e w
S q l C o n n e c t i o n(“ D a t a
S o u r c e =.;I n i t i a l
C a t a l o g = B B S;I n t e g r a t e d S e c u r i t y = t r u e ”);S q l D a t a A d a p t e r
a d a p t e r
=
n e w
S q l D a t a A d a p t e r(“ s e l e c t
*
f r o m
[ I n f o ] ” ,c o n n);D a t a S e t
d s
=
n e w
D a t a S e t();a d a p t e r.F i l l(d s ,“ I n f o T a b l e ”);G r i d V i e w 1.D a t a S o u r c e
=
d s.T a b l e s [ 0 ].D e f a u l t V i e w;G r i d V i e w 1.D a t a B i n d();} p r o t e c t e d
v o i d
G r i d V i e w 1 _ P a g e I n d e x C h a n g i n g(o b j e c t
s e n d e r ,G r i d V i e w P a g e E v e n t A r g s
e){
G r i d V i e w 1.P a g e I n d e x
=
e.N e w P a g e I n d e x;G r i d V i e w 1.D a t a B i n d();} p r o t e c t e d
v o i d
B u t t o n 1 _ C l i c k(o b j e c t
s e n d e r ,E v e n t A r g s
e){ R e s p o n s e.R e d i r e c t
(“ L o g i n.a s p x ”);} p r o t e c t e d
v o i d
L i n k B u t t o n 1 _ C l i c k(o b j e c t
s e n d e r ,E v e n t A r g s
e){
R e s p o n s e.R e d i r e c t(“ g u a n l i.a s p x ”);} }
4、发帖界面, 代码如下, u s i n g
S y s t e m.D a t a.S q l C l i e n t;p u b l i c
p a r t i a l
c l a s s
S e n d
:
S y s t e m.W e b.U I.P a g e {
p r o t e c t e d
v o i d
P a g e _ L o a d(o b j e c t
s e n d e r ,E v e n t A r g s
e){
} p r o t e c t e d
v o i d
B t n S e n d _ C l i c k(o b j e c t
s e n d e r ,E v e n t A r g s
e){
L b l C a u t i o n.T e x t
=
“ 你必须输入主题和内容,”;R e t u r n;
} S q l C o n n e c t i o n
c o n n
=
n e w
S q l C o n n e c t i o n(“ D a t a
S o u r c e =.;I n i t i a l
C a t a l o g = B B S;I n t e g r a t e d S e c u r i t y = t r u e ”);s t r i n g
S q l S t r;S q l S t r
=
“ I n s e r t
i n t o
i n f o(主题, 张贴者昵称, 内容, 张贴时间, 回复编号)
”;S q l S t r
=
S q l S t r
+
“
v a l u e s(' ”
+
T x t S u b j e c t.T e x t
+
“ ' , ' ”
+
S e s s i o n [ “ m e m ” ]
+
“ ' , ' ”
+ T x t C o n t e n t.T e x t;S q l S t r
=
S q l S t r
+
“ ' , ' ”
+
D a t e T i m e.N o w
+
“ ' , ' 0 ')”;S q l C o m m a n d
C m d
=
n e w
S q l C o m m a n d(S q l S t r ,c o n n);c o n n.O p e n();C m d.E x e c u t e N o n Q u e r y();c o n n.C l o s e();L b l C a u t i o n.T e x t
=
“ 已成功发帖,”;T x t S u b j e c t.T e x t
=
“ ”;T x t C o n t e n t.T e x t
=
“ ”;
} p r o t e c t e d
v o i d
M e n u 1 _ L o a d(o b j e c t
s e n d e r ,E v e n t A r g s
e)
{
} p r o t e c t e d
v o i d
L i n k B u t t o n 1 _ C l i c k(o b j e c t
s e n d e r ,E v e n t A r g s
e){
R e s p o n s e.R e d i r e c t(“ g u a n l i.a s p x ”);
} } 5、管理员登录界面, 代码如下, u s i n g
S y s t e m.D a t a.S q l C l i e n t;p u b l i c
p a r t i a l
c l a s s
g u a n l i
:
S y s t e m.W e b.U I.P a g e {
p r o t e c t e d
v o i d
P a g e _ L o a d(o b j e c t
s e n d e r ,E v e n t A r g s
e){
} p r o t e c t e d
v o i d
B u t t o n 1 _ C l i c k(o b j e c t
s e n d e r ,E v e n t A r g s
e){
i f
(T e x t B o x 1.T e x t
= =
“ ”
|
T e x t B o x 2.T e x t
= =
“ ”){
L a b e l 1.T e x t
=
“ 必须输入帐号和密码,”;r e t u r n;
} e l s e { S q l C o n n e c t i o n
c o n n
=
n e w
S q l C o n n e c t i o n(“ D a t a
S o u r c e =.;I n i t i a l C a t a l o g = B B S;I n t e g r a t e d
S e c u r i t y = t r u e ”);c o n n.O p e n();
S q l C o m m a n d
C m d
=
n e w
S q l C o m m a n d();C m d.C o n n e c t i o n
=
c o n n;C m d.C o m m a n d T e x t
=
“ s e l e c t
[ 用户名]
f r o m
[ a d m i n ]
w h e r e
[ 用户名] = ' ”
+
T e x t B o x 1.T e x t +
“ '
a n d
[ 密码] = ' ”
+
T e x t B o x 2.T e x t
+
“ ' ”;S q l D a t a R e a d e r
d r
=
C m d.E x e c u t e R e a d e r();i f
(d r.R e a d()){
S e s s i o n [ “ m e m ” ]
=
T e x t B o x 1.T e x t;
/ / 登录成功后记下该用户昵称,以便后续功能使用
L a b e l 1.T e x t
=
“ 登录成功,”;T e x t B o x 1.T e x t
=
“ ”;T e x t B o x 1.E n a b l e d
=
f a l s e;T e x t B o x 2.T e x t
=
“ ”;T e x t B o x 2.E n a b l e d
=
f a l s e;d r.C l o s e();R e s p o n s e.R e d i r e c t(“ S h o w A r t i c l e.a s p x ”);}
e l s e {
L a b e l 1.T e x t
=
“ 昵称不存在或密码不对,”;
} c o n n.C l o s e();
}
} p r o t e c t e d
v o i d
B u t t o n 2 _ C l i c k(o b j e c t
s e n d e r ,E v e n t A r g s
e){
R e s p o n s e.W r i t e(“ < s c r i p t
l a n g u a g e = j a v a s c r i p t > a l e r t(' 用户已取消注册,');< / s c r i p t > ”);
} p r o t e c t e d
v o i d
L i n k B u t t o n 1 _ C l i c k(o b j e c t
s e n d e r ,E v e n t A r g s
e){
R e s p o n s e.R e d i r e c t(“ g u a n l i.a s p x ”);} p r o t e c t e d
v o i d
B u t t o n 3 _ C l i c k(o b j e c t
s e n d e r ,E v e n t A r g s
e){
R e s p o n s e.R e d i r e c t(“ L o g i n.a s p x ”);} }
6、显示发帖信息界面, 代码如下,u s i n g
S y s t e m.D a t a.S q l C l i e n t;p u b l i c
p a r t i a l
c l a s s
S h o w A l l
:
S y s t e m.W e b.U I.P a g e {
p r o t e c t e d
v o i d
P a g e _ L o a d(o b j e c t
s e n d e r ,E v e n t A r g s
e){ S q l C o n n e c t i o n
c o n n
=
n e w
S q l C o n n e c t i o n(“ D a t a
S o u r c e =.;I n i t i a l
C a t a l o g = B B S;I n t e g r a t e d S e c u r i t y = t r u e ”);S q l C o m m a n d
C m d
=
n e w
S q l C o m m a n d(“ s e l e c t
*
f r o m
[ I n f o ]
w h e r e
I D = ”
+ R e q u e s t.Q u e r y S t r i n g [ “ i d ” ] ,c o n n);c o n n.O p e n();S q l D a t a R e a d e r
o b j = C m d.E x e c u t e R e a d e r();w h i l e
(o b j.R e a d()){
L b l N a m e.T e x t
=
o b j.G e t V a l u e(2).T o S t r i n g();L b l D a t e.T e x t
=
o b j.G e t V a l u e(4).T o S t r i n g();T x t S u b j e c t.T e x t
=
o b j.G e t V a l u e(1).T o S t r i n g();T x t C o n t e n t.T e x t
=
o b j.G e t V a l u e(3).T o S t r i n g();
} o b j.C l o s e();c o n n.C l o s e();s t r i n g
s q l
=
“ S e l e c t
*
F r o m
[ i n f o ]
w h e r e
回复编号= ' ”
+
R e q u e s t.Q u e r y S t r i n g [ “ i d ” ]
+
“ ' ”;S q l D a t a A d a p t e r
a d a p t e r
=
n e w
S q l D a t a A d a p t e r(s q l ,c o n n);D a t a S e t
d s
=
n e w
D a t a S e t();a d a p t e r.F i l l(d s ,“ R e p l y ”);D a t a L i s t 1.D a t a S o u r c e
=
d s.T a b l e s [ 0 ].D e f a u l t V i e w;D a t a L i s t 1.D a t a B i n d();
} p r o t e c t e d
v o i d
L i n k B u t t o n 1 _ C l i c k(o b j e c t
s e n d e r ,E v e n t A r g s
e){
R e s p o n s e.R e d i r e c t(“ g u a n l i.a s p x ”);} }
7、回复界面, 代码如下, u s i n g
S y s t e m.D a t a.S q l C l i e n t;p u b l i c
p a r t i a l
c l a s s
S h o w A r t i c l e
:
S y s t e m.W e b.U I.P a g e {
p r o t e c t e d
v o i d
P a g e _ L o a d(o b j e c t
s e n d e r ,E v e n t A r g s
e){
s t r i n g
s t r
=
“ 1 2 3 4 ”;S q l C o n n e c t i o n
c o n n
=
n e w
S q l C o n n e c t i o n(“ D a t a
S o u r c e =.;I n i t i a l
C a t a l o g = B B S;I n t e g r a t e d S e c u r i t y = t r u e ”);S q l C o m m a n d
C m d
=
n e w
S q l C o m m a n d(“ s e l e c t
*
f r o m
[ i n f o ]
w h e r e
[ 主题] = ”
+
s t r ,c o n n);c o n n.O p e n();S q l D a t a R e a d e r
o b j
=
C m d.E x e c u t e R e a d e r();w h i l e
(o b j.R e a d()){
L b l N a m e.T e x t
=
o b j.G e t V a l u e(2).T o S t r i n g();L b l D a t e.T e x t
=
o b j.G e t V a l u e(4).T o S t r i n g();T x t S u b j e c t.T e x t
=
o b j.G e t V a l u e(1).T o S t r i n g();T x t C o n t e n t.T e x t
=
o b j.G e t V a l u e(3).T o S t r i n g();}
c o n n.C l o s e();} p r o t e c t e d
v o i d
B t n R e p l y _ C l i c k(o b j e c t
s e n d e r ,E v e n t A r g s
e){
i f
(T x t R e.T e x t
= =
“ ”){
L b l C a u t i o n.T e x t
=
“ 请输入回帖内容,”;
} e l s e {
s t r i n g
S q l S t r;S q l S t r
=
“ I n s e r t
i n t o
i n f o([ 主题] , [ 张贴者昵称] , [ 内容] , [ 张贴时间] , [ 回复编号])
”;S q l S t r
=
S q l S t r
+
“
v a l u e s(' R e : ”
+
T x t S u b j e c t.T e x t +
“ ' , ' ”
+
S e s s i o n [ “ m e m ” ]
+ “ ' , ' ”
+
T x t R e.T e x t;S q l S t r
=
S q l S t r
+
“ ' , ' ”
+
D a t e T i m e.N o w
+
“ ' , ' ”
+
R e q u e s t.Q u e r y S t r i n g [ “ I D ” ]
+
“ ')”;S q l C o n n e c t i o n
c o n n
=
n e w
S q l C o n n e c t i o n(“ D a t a
S o u r c e =.;I n i t i a l C a t a l o g = B B S;I n t e g r a t e d
S e c u r i t y = t r u e ”);S q l C o m m a n d
C m d
=
n e w
S q l C o m m a n d(S q l S t r ,c o n n);c o n n.O p e n();C m d.E x e c u t e N o n Q u e r y();c o n n.C l o s e();L b l C a u t i o n.T e x t
=
“ 已成功回帖,”;} } p r o t e c t e d
v o i d
B t n A l l R e _ C l i c k(o b j e c t
s e n d e r ,E v e n t A r g s
e){
R e s p o n s e.R e d i r e c t(“ S h o w A l l.a s p x ? i d = ”
+
R e q u e s t.Q u e r y S t r i n g [ “ i d ” ]);} p r o t e c t e d
v o i d
B u t t o n 1 _ C l i c k(o b j e c t
s e n d e r ,E v e n t A r g s
e){
R e s p o n s e.R e d i r e c t(“ L o g i n.a s p x ”);
} p r o t e c t e d
v o i d
L i n k B u t t o n 1 _ C l i c k(o b j e c t
s e n d e r ,E v e n t A r g s
e){
R e s p o n s e.R e d i r e c t(“ g u a n l i.a s p x ”);
} }
8、Menu 控件,五、总结
上述就是我们组留言板管理系统的全部设计和开发过程。通过这次实训设计, 使我们感到高科技、新知识的力量, 让我们知道我们还有很多知识需要学习,这是我们第一次运用 ASP.NET 做的完整的设计程序, 加之水平有限, 设计中难免有不当之处, 还请老师给予批评、指正。
第五篇:经典留言板寄语
爱情是生活的理想,婚姻是生活的保障,爱情是浪漫,婚姻是现实,爱情是两个人的梦想,婚姻是含有家人的期盼"。很多时候爱情和婚姻似乎就象太阳和月亮,同在宇宙却永远无法靠近。
闻香下车,酒浓巷远。诗词隽永,散文涓涓。瑕疵之处,愿闻高见。遵循原创,真实自然。未上高中,才疏学浅。酷爱文学,见诸报刊。欢迎链接,广泛流传。五湖四海,拙文尽观。相互交流,传授经验。谢谢访客,互踩空间。
一个熟悉的笑脸一个熟悉的背影只能在梦里见的只能在画里看的不是寂寞才想起是因想起才寂寞虽抓不了他的手虽给不了一角钱土地蓝天我爷爷热血沸腾人生路时风时雨泪有下昨天今天默默为大城小市实诚民亲情无价平平乐前后左右今我续华族仁心永代代天地并和不弃爱时间知爱更坚固
看见留言心里甜我给朋友回留言吉祥送去好梦长如意送您永安康开心送您好心情快乐送您是真情祝您一切顺顺顺祝您事业发发发
温馨的留言充满着幸福的期待,珍藏的回忆是永不褪色的色彩,心灵的快乐是因为有你的存在,深深的牵挂凝聚着真挚的情怀,但愿朋友祝福常有,友情同在朋友你好!这段时间我试着让开心果回到朋友的身边,象以前一样每天给大家送开心,可是我没有做到,浮浅的笑容很悲哀,不是发自内心的开心更痛苦,也许需要时间才能让我从这次灾难的阴影中走出来,好久没来看望大家,我真的好想念你们,在端午节来临的时刻。愿我的朋友节日快乐!愿灾区的同胞和我们一起吃上香甜的粽子。缘祝福大家平安快乐!
云淡风轻,随意放飞美丽心情。诗情画意,爱心在阳光下沐裕盈盈笑语,管它哪堪泪水委屈。祝福为你,生活洋溢甜蜜温馨
送给你一阵轻风,带着我的问候;送给你一缕月光,映着我的影像;送给你一片白云,浸透我的温暖;留下我真诚祝福,连接你我友谊
好朋友:你好!欧阳迪来看您了,您好吗?.这几日您忙为汶川祈涛.很幸苦您了.多保重.给爱一张不老的容颜,让相爱过都终身不变;给爱一个不悔的誓言,让相爱过都彼此思念;给爱一片辽阔的蓝天,让那份真爱充满人间。哀悼四川死难同胞的日子里,无论是对生者还是逝者,爱是最真诚的人类情感了,我们用爱来相互祝福相互慰勉吧!多难兴邦,在北川灾难面前,就让我们紧密团结起来,为中华民族的伟大复兴而努力吧!
送给你一阵轻风,带着我的问候;送给你一缕月光,映着我的影像;送给你一片白云,浸透我的温暖;留下我真诚祝福,连接你我友谊
人生是一道风景,快乐是一种心境;轻轻的一声问候,融入了我所有的心愿;淡淡的一句祝福,倾注了无限的真诚;轻轻地道一声祝福,却道不尽心中的万语千言,只愿温馨的帖子,捎去我衷心地祝福,我的空间因你而美丽,感谢你!祝朋友幸福快乐!谢谢朋友!
问候朋友好!感谢你一直以来对我的关注和支持.无论你身在何方,其实我们的距离仅一屏之隔,我的祝福永远在你身边:不因季节变换而不想你不因路途遥远而不念你不因忙碌工作而疏远你不因时间推移而淡忘你不因没有回访而疏忽你好朋友是美梦,谁都企盼好朋友是赤金,永远灿烂好朋友是情缘,一世牵伴好朋友是心路,越走越宽好朋友是洪福,吉祥无边
花儿有个希望,希望天空给它太阳;云儿有个希望,希望风带它入天堂;蜜蜂有个希望,希望四季都有花香;我也有个希望,希望朋友开心安康!