《[精选]商品库存管理系统.pptx》由会员分享,可在线阅读,更多相关《[精选]商品库存管理系统.pptx(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、商品库存管理系统功能:1.提供仓库各类信息的浏览、添加、删除、修改等操作。2.可以进行入库出库等操作,并保证安全性。3.可以进行日志管理,方便事后查看。4.系统其他的相关功能。5.首先进行系统分析:6.本系统主要模块有4个:商品管理模块、商家管理模块、入库信息管理模块、出库信息管理模块。下面分别对这四个模块进行介绍:商品管理模块 仓库管理员通过此模块来管理商品信息,主要包括浏览、查询、添加、修改和删除功能。在进行商品信息的添加时系统会自动检测所添加的商品信息中的商品号在商品表中是否已经存在,存在则提示,否则进行添加。删除时要进行确认方可进行信息删除。修改时,商品的商品号是不可以修改的,因为商品
2、号作为数据库中商品表的主键是不同商品的唯一标识可以通过数据库管理员实现修改。2、商家管理模块 仓库管理员通过此模块来管理商家信息,包括浏览、查询、添加、修改和删除等。进行商家信息添加时系统自动检测所添加的商家是否已经存在,存在则提示,否则继续添加。删除时也需确认才可删除,商家号不准修改。3、入库信息管理模块 仓库管理员通过此模块来管理入库信息,包括浏览、查询、添加、修改和删除功 能。在进行入库信息添加时,系统自动检测所添加信息是否在商品表里是否已经存在。存在则提示,否则继续添加。其他基本功能和前面类似。4、出库信息管理模块 仓库管理员通过此模块进行出库操作。选择相应的商品,系统自动显示被选择的
3、商品的数量。假设出库量大于当前商品数量,则操作不能完成。下面介绍程序的实现本例用Visual C+6.0创立一个基于对话框的MFC AppWizardexe工程。工程名为GMS。创立工程后,Visual C+呈现给使用者的是一个CGMSDlg对话框,本例的登录界面其实就是在这个对话框的基础上开始设计的。登录对话框把生成的应用系统框架中的基本对话框IDD_GMS_DIALOG作为应用系统的登录界面加以制作。1、删除无关控件2、界面设计如右图:控件类型ID属性设置Picture默认BitMapButtonIDC_BUTTON_OKCaption设为“确定ButtonIDC_BUTTON_CANCE
4、LCaption设为“取消Static Text默认Caption设为“用户名Static Text默认Caption设为“密码Edit BoxIDC_EDTI_LOGINNAME默认Edit BoxIDC_EDIT_PASSWDPassword按上表添加控件,然后双击对话框,翻开Class Wizard,为IDD_GMS_DIALOG添加CGMSDlg类系统已添加,然后按照下表添加成员变量:控件ID 变量类 数据类型IDC_EDIT_LOGINNAMEm_strLoginNameCStringIDC_EdIT_PASSWDm_strPasswdCString代码编写 1.“确定按钮单击“确定
5、按钮,验证用户名和密码的有效性,成功则进入主界面:void CGMSDlg:OnButtonOk CString strSql;_variant_t strQuery;UpdateDataTRUE;if m_strName.IsEmpty /*判断用户名信息是否为空*/AfxMessageBox请输入用户名!;return;strQuery=SELECT*FROM admin WHERE Admin_name=+m_strName+AND Admin_passwd=+m_strPasswd+;theApp.ADOExecutetheApp.m_pRs,strQuery;int iCount=t
6、heApp.m_pRs-GetRecordCount;if 0=iCount AfxMessageBox用户名或密码错误!;m_strName=;m_strPasswd=;UpdateDatafalse;elsestrAdminName=m_strName;:Sleep300;OnOK;CMainDlg dlg;dlg.DoModal;/TODO:Add your control notification handler code here2.“取消按钮单击“取消按钮则关闭登录对话框,不做任何操作:void CGMSDlg:OnButtonCancel OnCancel;/TODO:Add y
7、our control notification handler code here 主界面的实现功能:当登录成功后,将出现应用程序主界面。因为主界面需要集合其他各个模块,所以一般编程时都是每坐完一个模块,就连接上一块。界面设计 如以下图:对话框ID属性设置为:IDD_DIALOG_MAIN按照右图添加控 件添加完控件后,双击对话框资源,打开Class Wizard,为IDD_DIALOG_MAIN添加CMainDlg类。代码编写:“库存商品按钮:void CMainDlg:OnButtonGoodsadd CGoodsDlg dlg;this-ShowWindowSW_HIDE;dlg.Do
8、Modal;this-ShowWindowSW_SHOW;“供货商家按钮:void CMainDlg:OnButtonProvideradd CProviderDlg dlg;this-ShowWindowSW_HIDE;dlg.DoModal;this-ShowWindowSW_SHOW;“商品入库按钮:void CMainDlg:OnButtonGoodsin CInDlg dlg;this-ShowWindowSW_HIDE;dlg.DoModal;this-ShowWindowSW_SHOW;“商品出库按钮:void CMainDlg:OnButtonGoodsout COutDlg
9、dlg;this-ShowWindowSW_HIDE;dlg.DoModal;this-ShowWindowSW_SHOW;/TODO:Add your control notification handler code here“商品信息按钮:void CMainDlg:OnButtonGoods CViewDlg dlg;this-ShowWindowSW_HIDE;dlg.Init1;dlg.DoModal;this-ShowWindowSW_SHOW;“商家信息按钮:void CMainDlg:OnButtonProvider CViewDlg dlg;this-ShowWindowS
10、W_HIDE;dlg.Init2;dlg.DoModal;this-ShowWindowSW_SHOW;/TODO:Add your control notification handler code here“入库信息按钮:void CMainDlg:OnButtonIn CViewDlg dlg;this-ShowWindowSW_HIDE;dlg.Init3;dlg.DoModal;this-ShowWindowSW_SHOW;“出库信息按钮:void CMainDlg:OnButtonOut CViewDlg dlg;this-ShowWindowSW_HIDE;dlg.Init3;d
11、lg.DoModal;this-ShowWindowSW_SHOW;/TODO:Add your control notification handler code here“库存报警按钮:void CMainDlg:OnButtonAlert CAlertDlg dlg;dlg.DoModal;“修改管理员密码按钮:void CMainDlg:OnButtonAdmin CPasswdDlg dlg;dlg.DoModal;“操作日志按钮:void CMainDlg:OnButtonLog CViewDlg dlg;this-ShowWindowSW_HIDE;dlg.Init5;dlg.D
12、oModal;this-ShowWindowSW_SHOW;/TODO:Add your control notification handler code here“帮助按钮读者可以自行添加帮助文档:void CMainDlg:OnButtonHelp WinExecnotepad.exe GPS.HEP,SW_SHOW;“关于按钮:void CMainDlg:OnButtonAbout CAboutDlg dlg;dlg.DoModal;“退出按钮可以用OnCancel代替:void CMainDlg:OnButtonExit OnOK;/TODO:Add your control not
13、ification handler code here 商品操作对话框1、功能描述 在主界面上单击“库存商品按钮,弹出此对话框。该对话框用于商品的注册登记,同时也可以进行相应的数据库操作。对话框ID属性设置为:IDD_DIALOG_GOO DS。按以下图添加控件:按图添加完控件后,双击对话框资源,翻开Class Wizard,为IDD_DIALOG_GOODS添加CGoodsDlg类,并按照下表为该类添加成员变量。控件ID变量名数据类型IDC_EDIT_CODEm_strCodeCString IDC_EDIT_NAMEm_strNameCStringIDC_EDIT_MAXNUMm_strM
14、axNum CStringIDC_EDIT_MINNUMm_strMinNumCStringIDC_LIST_DISPm_listDispCListCtrl代码编写:ClearTxt清空编辑框中的内容:void CGoodsDlg:ClearTxtm_strCode=;m_strName=;m_strMaxNum=;m_strMinNum=;UpdateDatafalse;RefreshData向列表控件填充数据:void CGoodsDlg:RefreshDatam_listDisp.DeleteAllItems;m_listDisp.SetRedrawFALSE;_variant_t Ho
15、lder,strQuery;strQuery=select*from goods;theApp.ADOExecutetheApp.m_pRs,strQuery;int iCount=theApp.m_pRs-GetRecordCount;if 0=iCount return;theApp.m_pRs-MoveFirst;int i=0;while!theApp.m_pRs-adoEOFHolder=theApp.m_pRs-GetCollectG_code;ifHolder.vt!=VT_NULLm_listDisp.InsertItemi,char*_bstr_tHolder;Holder=
16、theApp.m_pRs-GetCollectG_name;ifHolder.vt!=VT_NULLm_listDisp.SetItemTexti,1,char*_bstr_tHolder;Holder=theApp.m_pRs-GetCollectCurrent_number;ifHolder.vt!=VT_NULLm_listDisp.SetItemTexti,2,char*_bstr_tHolder;Holder=theApp.m_pRs-GetCollectMax_number;ifHolder.vt!=VT_NULLm_listDisp.SetItemTexti,3,char*_bs
17、tr_tHolder;Holder=theApp.m_pRs-GetCollectMin_number;ifHolder.vt!=VT_NULLm_listDisp.SetItemTexti,4,char*_bstr_tHolder;theApp.m_pRs-MoveNext;i+;m_listDisp.SetRedrawTRUE;初始化对话框。设置列表控件,装载数据:BOOL CGoodsDlg:OnInitDialog CDialog:OnInitDialog;m_listDisp.InsertColumn0,商品编号;m_listDisp.InsertColumn1,商品名称;m_lis
18、tDisp.InsertColumn2,当前库存;m_listDisp.InsertColumn3,最大库存;m_listDisp.InsertColumn4,最小库存;RECT rect;m_listDisp.GetWindowRect▭int wid=rect.right-rect.left;m_listDisp.SetColumnWidth0,wid/5;m_listDisp.SetColumnWidth1,wid/5;m_listDisp.SetColumnWidth2,wid/5;m_listDisp.SetColumnWidth3,wid/5;m_listDisp.Set
19、ColumnWidth4,wid/5;m_listDisp.SetExtendedStyleLVS_EX_FULLROWSELECT;RefreshData;/TODO:Add extra initialization herereturn TRUE;/return TRUE unless you set the focus to a control /EXCEPTION:OCX Property Pages should return FALSE按钮事件:“增加按钮:void CGoodsDlg:OnButtonAdd UpdateData;CString strSql;strSql.For
20、matINSERT INTO goods G_code,G_name,Current_number,Max_number,Min_number VALUES%s,%s,0,%s,%s,m_strCode,m_strName,m_strMaxNum,m_strMinNum;_variant_t vtQuerystrSql;theApp.ADOExecutetheApp.m_pRs,vtQuery;RefreshData;ClearTxt;theApp.m_log.AddLog添加商品;“修改按钮:void CGoodsDlg:OnButtonModify UpdateData;CString s
21、trSql;strSql.FormatUPDATE goods SET G_name=%s,Max_number=%s,Min_number=%s WHERE G_code=%s,m_strName,m_strMaxNum,m_strMinNum,m_strCode;/TODO:Add your control notification handler code here_variant_t vtQuerystrSql;iftheApp.ADOExecutetheApp.m_pRs,vtQueryRefreshData;ClearTxt;theApp.m_log.AddLog修改商品;else
22、AfxMessageBox修改失败;“删除按钮:void CGoodsDlg:OnButtonDelete UpdateData;CString strSql;strSql.FormatDELETE FROM goods WHERE G_code=%s,m_strCode;_variant_t vtQuerystrSql;theApp.ADOExecutetheApp.m_pRs,vtQuery;RefreshData;ClearTxt;theApp.m_log.AddLog删除商品;“退出按钮:void CGoodsDlg:OnButtonExit OnOK;/TODO:Add your c
23、ontrol notification handler code here 列表控件:中选择左边列表控件的元素时,将在右边的编辑框中显示。代码如下:void CGoodsDlg:OnClickListDispNMHDR*pNMHDR,LRESULT*pResult/TODO:Add your control notification handler code hereint i=m_listDisp.GetSelectionMark;m_strCode=m_listDisp.GetItemTexti,0;m_strName=m_listDisp.GetItemTexti,1;m_strMaxN
24、um=m_listDisp.GetItemTexti,3;m_strMinNum=m_listDisp.GetItemTexti,4;UpdateDataFALSE;*pResult=0;供货商家对话框功能描述:在主界面上单击“供货商家按钮,弹出此对话框。该对话框用于商家的注册登记,同时也可以进行相应的数据库操作。界面设计:如右图:对话框属性为:IDD_DIALOG_ PROVIDERCCProvideDlg类成员变量控件ID变量名数据类型IDC_EDIT_CODEm_strCodeCString IDC_EDIT_NAMEm_strNameCStringIDC_EDIT_ADDRESSm_s
25、trAddressCString IDC_EDIT_PERSONm_strPersonCStringIDC_EDIT_PHONEm_strPhoneCStringIDC_EDIT_EMAILm_strEmailCStringIDC_LIST_DISPm_listDispCListCtrl代码编写:1.功能函数。2.ClearTxt清空编辑框中的内容:void CProviderDlg:ClearTxtm_strAddress=;m_strCode=;m_strName=;m_strEmail=;m_strPerson=;m_strPhone=;UpdateDatafalse;RefreshDa
26、ta向列表控件填充数据:void CProviderDlg:RefreshDatam_listDisp.DeleteAllItems;m_listDisp.SetRedrawFALSE;_variant_t Holder,strQuery;strQuery=select*from provider;theApp.ADOExecutetheApp.m_pRs,strQuery;int iCount=theApp.m_pRs-GetRecordCount;if 0=iCount return;theApp.m_pRs-MoveFirst;int i=0;while!theApp.m_pRs-ado
27、EOFHolder=theApp.m_pRs-GetCollectProvider_code;ifHolder.vt!=VT_NULLm_listDisp.InsertItemi,char*_bstr_tHolder;Holder=theApp.m_pRs-GetCollectProvider_name;ifHolder.vt!=VT_NULLm_listDisp.SetItemTexti,1,char*_bstr_tHolder;Holder=theApp.m_pRs-GetCollectProvider_address;ifHolder.vt!=VT_NULLm_listDisp.SetI
28、temTexti,2,char*_bstr_tHolder;Holder=theApp.m_pRs-GetCollectProvider_person;ifHolder.vt!=VT_NULLm_listDisp.SetItemTexti,3,char*_bstr_tHolder;Holder=theApp.m_pRs-GetCollectProvider_telphone;ifHolder.vt!=VT_NULLm_listDisp.SetItemTexti,4,char*_bstr_tHolder;Holder=theApp.m_pRs-GetCollectProvider_email;i
29、fHolder.vt!=VT_NULLm_listDisp.SetItemTexti,5,char*_bstr_tHolder;theApp.m_pRs-MoveNext;i+;m_listDisp.SetRedrawTRUE;2.初始化对话框。初始化设置列表控件,装载数据:BOOL CProviderDlg:OnInitDialog CDialog:OnInitDialog;m_listDisp.InsertColumn0,编号;m_listDisp.InsertColumn1,名称;m_listDisp.InsertColumn2,地址;m_listDisp.InsertColumn3,负
30、责人;m_listDisp.InsertColumn4,;m_listDisp.InsertColumn5,Email;RECT rect;m_listDisp.GetWindowRect▭int wid=rect.right-rect.left;m_listDisp.SetColumnWidth0,wid/6;m_listDisp.SetColumnWidth1,wid/6;m_listDisp.SetColumnWidth2,wid/6;m_listDisp.SetColumnWidth3,wid/6;m_listDisp.SetColumnWidth4,wid/6;m_list
31、Disp.SetColumnWidth5,wid/6;m_listDisp.SetExtendedStyleLVS_EX_FULLROWSELECT;RefreshData;return TRUE;/return TRUE unless you set the focus to a control3.按钮事件。“增加按钮:void CProviderDlg:OnButtonAdd UpdateData;CString strSql;strSql.FormatINSERT INTO providerProvider_code,Provider_name,Provider_address,Prov
32、ider_person,Provider_telphone,Provider_email VALUES%s,%s,%s,%s,%s,%s,m_strCode,m_strName,m_strAddress,m_strPerson,m_strPhone,m_strEmail;_variant_t vtQuerystrSql;theApp.ADOExecutetheApp.m_pRs,vtQuery;RefreshData;ClearTxt;theApp.m_log.AddLog添加商家;/TODO:Add your control notification handler code here“修改
33、按钮:void CProviderDlg:OnButtonModify UpdateData;CString strSql;strSql.FormatUPDATE provider SET Provider_name=%s,Provider_address=%s,Provider_person=%s,Provider_telphone=%s,Provider_email=%s WHERE Provider_code=%s,m_strName,m_strAddress,m_strPerson,m_strPhone,m_strEmail,m_strCode;/TODO:Add your contr
34、ol notification handler code here_variant_t vtQuerystrSql;iftheApp.ADOExecutetheApp.m_pRs,vtQueryRefreshData;ClearTxt;theApp.m_log.AddLog修改商家;elseAfxMessageBox修改失败;“删除按钮:void CProviderDlg:OnButtonDelete UpdateData;CString strSql;strSql.FormatDELETE FROM provider WHERE Provider_code=%s,m_strCode;_var
35、iant_t vtQuerystrSql;theApp.ADOExecutetheApp.m_pRs,vtQuery;RefreshData;ClearTxt;theApp.m_log.AddLog删除商品;“退出按钮:void CProviderDlg:OnButtonExit OnOK;/TODO:Add your control notification handler code here 4,。列表控件。中选择左边列表控件的元素时,将在右边的编辑框中显示。代码如下:void CProviderDlg:OnClickListDispNMHDR*pNMHDR,LRESULT*pResult
36、/TODO:Add your control notification handler code hereint i=m_listDisp.GetSelectionMark;m_strCode=m_listDisp.GetItemTexti,0;m_strName=m_listDisp.GetItemTexti,1;m_strAddress=m_listDisp.GetItemTexti,2;m_strPerson=m_listDisp.GetItemTexti,3;m_strPhone=m_listDisp.GetItemTexti,4;m_strEmail=m_listDisp.GetIt
37、emTexti,5;UpdateDataFALSE;*pResult=0;入库对话框1.功能描述2.在主界面上单击“商品入库按钮,弹出此对话框。该对话框用于商品的入库操作,当对话框加载时,自3.动列出已注册的入4.库商品和供给商以5.供选择。2.界面设计3.对话框ID属性:4.IDD_DIALOG_IN1.CInDlg类的成员变量:控件ID变量名数据类型IDC_EDIT_NUMm_strNumCStringIDC_EDIT_PRICEm_strPriceCString IDC_ BO_GOODSm_cbGoodsC boBoxIDC_ BO_PROVIDERm_sbProviderC boBo
38、xIDC_DATETIMEPICKER_DATAm_DataCTimeIDC_DATETIMEPICKER_TIMEm_TimeCTime3.代码编写功能函数:AddGoods修改商品信息当前存储数=原先领先存储数+入库的数目:void CInDlg:AddGoodsint iNumint iCurrentNum=0;_variant_t Holder,strQuery;strQuery=select*from goods where G_name=+m_strGoodsName+;theApp.ADOExecutetheApp.m_pRs,strQuery;theApp.m_pRs-Move
39、First;Holder=theApp.m_pRs-GetCollectCurrent_number;ifHolder.vt!=VT_NULLiCurrentNum=Holder.iVal;iCurrentNum+=iNum;CString strSql;strSql.FormatUPDATE goods SET Current_number=%d WHERE G_name=%s,iCurrentNum,m_strGoodsName;/TODO:Add your control notification handler code here_variant_t vtQuerystrSql;ift
40、heApp.ADOExecutetheApp.m_pRs,vtQueryAfxMessageBox入库成功;theApp.m_log.AddLog商品入库;AddIng添参加库信息:void CInDlg:AddInCString strGcode,CString strPcodeCString strSql;CString strDate=m_Date.Format%Y-%m-%d;strDate+=m_Time.Format%H:%M:%S;strSql.FormatINSERT INTO inlib VALUES%s,%s,%s,%s,%s,strGcode,strPcode,m_str
41、Num,m_strPrice,strDate;_variant_t vtQuerystrSql;theApp.ADOExecutetheApp.m_pRs,vtQuery;theApp.m_log.AddLog添参加库;GetGoodsCode根据给出的商品名,查找获得对应的商品号:void CInDlg:GetGoodsCodeCString strName,CString&strCode_variant_t Holder,strQuery;strQuery=select*from goods where G_name=+strName+;theApp.ADOExecutetheApp.m_
42、pRs,strQuery;theApp.m_pRs-MoveFirst;Holder=theApp.m_pRs-GetCollectG_code;ifHolder.vt!=VT_NULLstrCode=Holder.bstrVal;GetProviderCode根据所给出的商家名,查找获得对应的商家号:void CInDlg:GetProviderCodeCString strName,CString&strCode_variant_t Holder,strQuery;strQuery=select*from provider where Provider_name=+strName+;the
43、App.ADOExecutetheApp.m_pRs,strQuery;theApp.m_pRs-MoveFirst;Holder=theApp.m_pRs-GetCollectProvider_code;ifHolder.vt!=VT_NULLstrCode=Holder.bstrVal;初始化对话框:初始化时,应将已注册的商品和商家填入列表框里。代码如下:BOOL CInDlg:OnInitDialog CDialog:OnInitDialog;m_Date=CTime:GetCurrentTime;m_Time=m_Date;m_cbGoods.SetRedrawfalse;m_cbPr
44、ovider.SetRedrawfalse;_variant_t Holder,strQuery;strQuery=select*from goods;theApp.ADOExecutetheApp.m_pRs,strQuery;int iCount=theApp.m_pRs-GetRecordCount;if 0=iCount return TRUE;theApp.m_pRs-MoveFirst;int i=0;while!theApp.m_pRs-adoEOFHolder=theApp.m_pRs-GetCollectG_name;ifHolder.vt!=VT_NULLm_cbGoods
45、.AddStringLPCTSTR_bstr_tHolder;theApp.m_pRs-MoveNext;i+;strQuery=select*from provider;theApp.ADOExecutetheApp.m_pRs,strQuery;iCount=theApp.m_pRs-GetRecordCount;if 0=iCount return TRUE;theApp.m_pRs-MoveFirst;i=0;while!theApp.m_pRs-adoEOFHolder=theApp.m_pRs-GetCollectProvider_name;ifHolder.vt!=VT_NULL
46、m_cbProvider.AddStringLPCTSTR_bstr_tHolder;theApp.m_pRs-MoveNext;i+;m_cbGoods.SetRedrawtrue;m_cbProvider.SetRedrawtrue;UpdateDataFALSE;/TODO:Add extra initialization herereturn TRUE;/return TRUE unless you set the focus to a control按钮事件确定按钮入库时,一方面修改商品信息表,另一方面添加进入数据库信息表:void CInDlg:OnButtonOk UpdateD
47、ata;m_cbGoods.GetWindowTextm_strGoodsName;m_cbProvider.GetWindowTextm_strProviderName;CString strGcode,strPcode;GetGoodsCodem_strGoodsName,strGcode;GetProviderCodem_strProviderName,strPcode;AddInstrGcode,strPcode;AddGoodsatoim_strNum;/TODO:Add your control notification handler code here 出库对话框1.功能描述2
48、.在主界面上单击“商品出库按钮,弹出此对话框。该对话框用于商品的出库操作,当对话框加载时,3.自动列出已注册的4.出库商品以供选择。2.界面设计:对话框ID属性:IDD_DIALOG_OUTCOutDlg类成员变量如下表:控件ID变量名数据类型IDC_EDIT_CNUMm_strCNumCStringIDC_EDIT_PERSONm_strPersonCStringIDC_EDIT_ONUMm_strONumCStringIDC_ BO_GOODSm_cbGoodsC boBoxIDC_DATETIMEPICKERm_DateCTimeIDC_DATETIMEPICKERm_TimeCTime
49、9、静夜四无邻,荒居旧业贫。4月-234月-23Monday,April 17,202310、雨中黄叶树,灯下白头人。22:59:4522:59:4522:594/17/2023 10:59:45 PM11、以我独沈久,愧君相见频。4月-2322:59:4522:59Apr-2317-Apr-2312、故人江海别,几度隔山川。22:59:4522:59:4522:59Monday,April 17,202313、乍见翻疑梦,相悲各问年。4月-234月-2322:59:4522:59:45April 17,202314、他乡生白发,旧国见青山。17 四月 202310:59:45 下午22:59
50、:454月-2315、比不了得就不比,得不到的就不要。四月 2310:59 下午4月-2322:59April 17,202316、行动出成果,工作出财富。2023/4/17 22:59:4522:59:4517 April 202317、做前,能够环视四周;做时,你只能或者最好沿着以脚为起点的射线向前。10:59:45 下午10:59 下午22:59:454月-239、没有失败,只有暂时停止成功!。4月-234月-23Monday,April 17,202310、很多事情努力了未必有结果,但是不努力却什么改变也没有。22:59:4522:59:4522:594/17/2023 10:59:4