数据库课程设计报告模板_第1页
数据库课程设计报告模板_第2页
数据库课程设计报告模板_第3页
数据库课程设计报告模板_第4页
数据库课程设计报告模板_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学生信息管理系统中南民族大学计算机科学学院数据库综合实验报告题 目 学生信息系统年 级 08级 专 业 计算机科学与技术指导教师 陈幼均 小组成员(姓名学号)08061097雷文 08061099周进 08060000兰晨泉 实验类型 综合型 成绩评定评语:教师签名: 年 月 日 2010 年 12月 20 日目录1引言21. 1实验目的22任务概述22. 1 目标222 开发平台22.2.1最小硬件设备22.2.2软件环境33. 功能需求33. 1 需求调查33. 2 静态数据(输入、输出)描述33. 3 功能设计33.3.1总体功能设计34. 数据描述441 逻辑设计442 E-R模型54

2、3 关系模型544 编码及调试能力95. 编程体会106. 1 遇到问题及解决方法106. 2 程序部分重要代码106. 注意事项.197. 结束语.198. 参考文献.191引言11 实验目的我们设计开发的图书馆借阅管理系统主要包括后台数据库的建立和前端应用程序的开发两个方面。对于前者我们用的是Microsoft office access,要求建立起数据一致性和完整性强.数据安全性好的库,而对于后者则用VISUAL C+开发工具,要求应用程序功能完备,易使用等特点。由于图书馆主要从事大量的图书资料的储存和流通。传统的人工管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量

3、的文件和数据,这对于查找、更新和维护都带来了不少的困难。而作为计算机应用的一部分,使用计算机对图书资源信息进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高图书馆管理的效率。因此对于开发这样一个图书馆借阅管理系统,有着非常重大的意义。2任务概述2. 1 目标本系统就是要达到对教师及学生借阅书籍的日常管理,能快速完成,并对信息进行数据库管理,从而为用户提供充足的信息和快捷的查询手段的目的。22 开发平台2.2.1最小硬件设备本系统开发所用服务器的配置是: ·Windows XP PC机·51

4、2MB内存·80GB硬盘(7200转,串行)2.2.2软件环境本系统的设计采用的是Microsoft office access,以及采用Visual C+6.0来处理图像数据。Microsoft office access是一种简单易学的数据库类型,而且易于与编程语言Visual C+进行连接,所以我们选用Microsoft office access作为我们的数据库。3. 功能需求3.1需求调查我们组设计的这个图书馆借阅管理系统,主要是针对图书馆的管理员的,使用此系统管理图书与读者信息能够更加便捷,提高工作效率。3.2静态数据(输入、输出)描述系统界面用户管理系统图书管理系统工作

5、系统读者管理系统添加删除管理员用户管理图书信息对借还信息做必要调整管理读者信息退出3.3 功能设计3.3.1 总体功能设计图3.3.1.1 整体功能设计图数据流图如下:添加的读者信息所删的读者编号修改的读者信息查询条件及方式添加的图书类别删除的图书类别修改的图书类别借阅表读者表图书信息表还书请求借书请求查询读者信息请求总体功能实现:选择类型检查编辑图书类别查询图书信息编辑读者信息编辑读者信息查询读者信息借书还书图书类别表选择用户4. 数据描述41 逻辑设计两种快捷方式按钮:1. 图书信息查询功能通过书名、书的编号、图书类别、作者或者出版社进行检索。对于未借出的书可以借给未借满的用户。2. 读者

6、信息:通过读者编号、姓名、和种类可以依据不同的分类方式对读者信息进行检索。菜单项功能:1. 图书管理图书类别管理:从图书类别表中添加、修改、删除图书类别。图书信息管理:从书籍信息表中对于图书信息进行查询、添加、修改、删除操作。2. 读者管理读者类别管理:从读者类别表添加、修改、删除读者类别。读者信息管理:从读者信息表对于读者信息进行查询、添加、修改、删除操作。3. 图书借阅管理借书管理:从借阅信息表中添加借书信息、查询借书信息。还书管理:从借阅信息表中将需要还的书加入。4. 系统管理添加管理员:对于不同的图书馆的工作人员都可以在界面下增加新的管理人员,添加入用户表。更改密码:对于进入系统的登录

7、密码进行修改,随之修改用户表中对应的密码。42 E-R模型总体的ER图用户借 阅mn图书借书日期管理员编辑添 加删 除更 新编辑n删 除n添 加更 新查询查询修改密码添加管理员mm 图4.2.1 E-R图43 关系模型(1)书籍信息表:本表主要用于存储图书信息, 主码为:(图书)编号 (2) 借阅信息表:本表主要用于存储读者借阅信息: (3) 用户表:(4)图书挂失信息表 44 编程能力及调试1) 用户界面设计采用总分式的结构;利用单页面多窗口,结构简单、操作方便、界面清晰2) 功能实现情况 1 图书信息查询功能通过书名、书的编号、图书类别、作者或者出版社进行检索。对于未借出的书可以借给未借满

8、的用户。2 读者信息:通过读者编号、姓名、和种类可以依据不同的分类方式对读者信息进行检索。5. 编程体会5.1遇到的问题及解决方法 我们遇到过困难。开始时,我们准备使用微软的SQL server,但由于不熟悉如何连接,继而使用了另一种较简单的数据库access。由于时间有限,加之接触VC+时间不长,我们对于界面的美化没有做到尽善尽美;一些特殊功能模块比如借书账单没有得以开发实现。5.2 程序部分重要代码 以下是图书管理系统的部分功能以及实现这些功能的代码(1). 图书管理系统登陆界面 实现的代码如下:CLibraryDlg:CLibraryDlg(CWnd* pParent /*=NULL*/

9、): CDialog(CLibraryDlg:IDD, pParent)/AFX_DATA_INIT(CLibraryDlg)m_strPassword = _T("");m_strUsername = _T("");/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);void CLibraryDlg:DoDataExchange(CDat

10、aExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CLibraryDlg)DDX_Text(pDX, IDC_EDIT_PASSWD, m_strPassword);DDX_Text(pDX, IDC_EDIT_USER, m_strUsername);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CLibraryDlg, CDialog)/AFX_MSG_MAP(CLibraryDlg)ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON_OK, O

11、nButtonOk)ON_BN_CLICKED(IDC_BUTTON_CANCEL, OnButtonCancel)ON_WM_CLOSE()ON_WM_LBUTTONDBLCLK()ON_WM_CREATE()ON_MESSAGE(DM_GETDEFID, OnGetDefID)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CLibraryDlg message handlersBOOL CLibraryDlg:OnInitDialog()CDialog:OnInitDialog();/ Set the icon for this dialog. The framework

12、does this automatically/ when the application's main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization herecount=0;return TRUE; / return TRUE unless you set the focus to a control/ If you add a minimize button to y

13、our dialog, you will need the code below/ to draw the icon. For MFC applications using the document/view model,/ this is automatically done for you by the framework.void CLibraryDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.Get

14、SafeHdc(), 0);/ Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIcon(x, y, m_hIcon);elseCDialog:

15、OnPaint();/ The system calls this to obtain the cursor to display while the user drags/ the minimized window.HCURSOR CLibraryDlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;void CLibraryDlg:OnButtonOk() UpdateData();if(m_strUsername.IsEmpty()MessageBox("Please input your username!","登录系

16、统",MB_OK|MB_ICONEXCLAMATION);m_strUsername.Empty();UpdateData(FALSE);return;if(!m_database.IsOpen()/连接数据源if(!m_database.Open(_T("Library")MessageBox("Cannot access the database!","图书管理系统",MB_OK|MB_ICONINFORMATION);return;CLoginSet *m_pLogset=new CLoginSet(&m_da

17、tabase);/编写SQL语句CString strSQL;strSQL.Format("select * from Admin_Info where User_Name='%s' AND Password='%s'",m_strUsername,m_strPassword);/编写SQL语句结束m_pLogset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_pLogset->GetRecordCount()=0)if(count<5)MessageBox("Login

18、incorrect!","图书管理系统",MB_OK|MB_ICONERROR);count+;m_strPassword.Empty();m_strUsername.Empty();UpdateData(FALSE);elsem_database.Close();MessageBox("You are dismissed this time, Please contact with Administrator!","图书管理系统");OnOK();elsem_database.Close();CMainDlg m_Main

19、;m_Main.m_user=m_strUsername;MessageBox("Login OK! Welcome to use my software!","图书管理系统");m_Main.DoModal();OnOK();void CLibraryDlg:OnButtonCancel() int iResult=MessageBox("Will you really quit?","图书管理系统",MB_YESNO|MB_ICONQUESTION);if(iResult=IDYES)if(m_database

20、.IsOpen()m_database.Close();OnOK();void CLibraryDlg:OnClose() OnButtonCancel();void CLibraryDlg:OnLButtonDblClk(UINT nFlags, CPoint point) MessageBox("What do you want to do?","图书管理系统",MB_ICONQUESTION);CDialog:OnLButtonDblClk(nFlags, point);int CLibraryDlg:OnCreate(LPCREATESTRUCT

21、 lpCreateStruct) if (CDialog:OnCreate(lpCreateStruct) = -1)return -1;return 0;LRESULT CLibraryDlg:OnGetDefID(WPARAM wp, LPARAM lp) return MAKELONG(0,DC_HASDEFID); (2). 修改密码 实现的代码如下:CPasswdDlg:CPasswdDlg(CWnd* pParent /*=NULL*/): CDialog(CPasswdDlg:IDD, pParent)/AFX_DATA_INIT(CPasswdDlg)m_strConfirm

22、= _T("");m_strNewPass = _T("");/AFX_DATA_INITvoid CPasswdDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CPasswdDlg)DDX_Text(pDX, IDC_EDIT_CONFIRM_PASS, m_strConfirm);DDX_Text(pDX, IDC_EDIT_NEW_PASS, m_strNewPass);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CPa

23、sswdDlg, CDialog)/AFX_MSG_MAP(CPasswdDlg)ON_BN_CLICKED(IDC_BUTTON_OK, OnButtonOk)ON_BN_CLICKED(IDC_BUTTON_CANCEL, OnButtonCancel)ON_WM_CLOSE()/AFX_MSG_MAPEND_MESSAGE_MAP()/ CPasswdDlg message handlersBOOL CPasswdDlg:OnInitDialog() CDialog:OnInitDialog();count=0;return TRUE; / return TRUE unless you

24、set the focus to a control / EXCEPTION: OCX Property Pages should return FALSEvoid CPasswdDlg:OnButtonOk() UpdateData();if(m_strNewPass!=m_strConfirm)if(count<5)MessageBox("New passwords of two times are different!","修改密码");count+;return;elseMessageBox("You have no right

25、for more trials, please contact with Administrator!","修改密码");OnOK();if(!m_database.IsOpen()if(!m_database.Open(_T("Library")MessageBox("Cannot access the database!","图书管理系统",MB_OK);return;CString strSQL;strSQL.Format("select * from Admin_Info where U

26、ser_Name='%s'",m_user);CLoginSet *m_pset=new CLoginSet(&m_database);m_pset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);m_pset->Edit();m_pset->m_Password=m_strNewPass;m_pset->Update();m_pset->Requery();m_database.Close();MessageBox("Password Modified successfully, do re

27、member new password!","修改密码");OnOK();void CPasswdDlg:OnButtonCancel() if(m_database.IsOpen()m_database.Close();OnOK();void CPasswdDlg:OnClose() OnButtonCancel();(3). 借书还书管理实现代码如下:CBorrowDlg:CBorrowDlg(CWnd* pParent /*=NULL*/): CDialog(CBorrowDlg:IDD, pParent)/AFX_DATA_INIT(CBorrowDlg)

28、m_strBookID = _T("");m_strProofID = _T("");/AFX_DATA_INITvoid CBorrowDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CBorrowDlg)DDX_Control(pDX, IDC_LIST_SHOW, m_ctrList);DDX_Text(pDX, IDC_EDIT_BOOK, m_strBookID);DDX_Text(pDX, IDC_EDIT_PROOF, m_str

29、ProofID);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CBorrowDlg, CDialog)/AFX_MSG_MAP(CBorrowDlg)ON_BN_CLICKED(IDC_BUTTON_RESET, OnButtonReset)ON_BN_CLICKED(IDC_BUTTON_OK, OnButtonOk)ON_BN_CLICKED(IDC_BUTTON_BACK, OnButtonBack)ON_WM_CLOSE()ON_BN_CLICKED(IDC_BUTTON_CHECK_BORROW, OnButtonCheckBorrow)ON_BN_CLICKED(

30、IDC_BUTTON_RETURN, OnButtonReturn)ON_BN_CLICKED(IDC_BUTTON_CHECK_BOOKS, OnButtonCheckBooks)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CBorrowDlg message handlersvoid CBorrowDlg:OnButtonReset() m_strProofID.Empty();m_strBookID.Empty();UpdateData(FALSE);void CBorrowDlg:OnButtonOk() UpdateData();if(m_strProofID=&q

31、uot;"|m_strBookID="")MessageBox("输入的域不完整,请重新输入!","借书管理",MB_ICONERROR);m_strProofID.Empty();m_strBookID.Empty();UpdateData(FALSE);return;if(!m_database.IsOpen()if(!m_database.Open(_T("Library")MessageBox("Cannot access the database!","借书管理&q

32、uot;);return;CString strSQL;/判断借书人是否有资格strSQL.Format("select * from Proof_Info where Proof_ID='%s'", m_strProofID);CProofSet *m_pProof=new CProofSet(&m_database);m_pProof->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_pProof->GetRecordCount()=0)MessageBox("There is no in

33、formation for this person","借书/还书",MB_ICONINFORMATION);m_pProof->Close();m_database.Close();return;CDBVariant varValue;m_pProof->GetFieldValue(7,varValue);if(varValue.m_iVal=4)/如果不满足条件MessageBox("You cannot borrow more than 4 books!","借书/还书",MB_OK|MB_ICONINFO

34、RMATION);m_pProof->Close();m_database.Close();return;/满足条件/借书量加一m_pProof->Edit();m_pProof->m_Now_Borrow_Amount+;m_pProof->Update();m_pProof->Requery();m_pProof->Close();/Book_Info表中,现存数量减一strSQL.Format("select * from Book_Info where Book_ID='%s'",m_strBookID);CBoo

35、kSet *m_pBook=new CBookSet(&m_database);m_pBook->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_pBook->GetRecordCount()=0)MessageBox("Sorry, there is no this book in this library!","借书/还书",MB_ICONINFORMATION);m_pBook->Close();m_database.Close();return;m_pBook->Edit();m

36、_pBook->m_Now_Amount-;m_pBook->Update();m_pBook->Requery();m_pBook->Close();/将借书信息存入借书信息表中strSQL.Format("select * from Borrow_Info");CBorrowSet *m_pBorrow=new CBorrowSet(&m_database);m_pBorrow->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_pBorrow->GetRecordCount()=0)Mess

37、ageBox("There are no any borrowing information!","借书/还书",MB_OK|MB_ICONINFORMATION);m_pBorrow->AddNew();m_pBorrow->SetFieldNull(&(m_pBorrow->m_Proof_ID),FALSE);m_pBorrow->m_Proof_ID=m_strProofID;m_pBorrow->SetFieldNull(&(m_pBorrow->m_Book_ID),FALSE);m_pBo

38、rrow->m_Book_ID=m_strBookID;CTime curTime=CTime:GetCurrentTime();m_pBorrow->SetFieldNull(&(m_pBorrow->m_Borrow_Date),FALSE);m_pBorrow->m_Borrow_Date=curTime;m_pBorrow->Update();m_pBorrow->Requery();m_pBorrow->Close();m_database.Close();MessageBox("Borrowing Successfully

39、!","借书/还书",MB_OK|MB_ICONINFORMATION);RefreshData();void CBorrowDlg:OnButtonBack() if(m_database.IsOpen()m_database.Close();OnOK();void CBorrowDlg:OnClose() OnButtonBack();BOOL CBorrowDlg:OnInitDialog() CDialog:OnInitDialog();m_ctrList.InsertColumn(0,"借阅证号");m_ctrList.InsertC

40、olumn(1,"姓名");m_ctrList.InsertColumn(2,"性别");m_ctrList.InsertColumn(3,"书号");m_ctrList.InsertColumn(4,"书籍名称");m_ctrList.InsertColumn(5,"借书日期");RECT rect;m_ctrList.GetWindowRect(&rect);int Width=rect.right-rect.left;m_ctrList.SetColumnWidth(0,Width

41、/6);m_ctrList.SetColumnWidth(1,Width/6);m_ctrList.SetColumnWidth(2,Width/6);m_ctrList.SetColumnWidth(3,Width/6);m_ctrList.SetColumnWidth(4,Width/6);m_ctrList.SetColumnWidth(5,Width/6);m_ctrList.SetExtendedStyle(LVS_EX_FULLROWSELECT);return TRUE; / return TRUE unless you set the focus to a control /

42、EXCEPTION: OCX Property Pages should return FALSEvoid CBorrowDlg:RefreshData()/刷新显示if(!m_database.IsOpen()if(!m_database.Open(_T("Library")MessageBox("Cannot open database!","借书/还书");return;CString strSQL,m_strName,m_strBName,m_strBookNo,m_strSex;char buf50;CDBVariant v

43、arValue;/处理借阅证信息CProofSet *m_pProof=new CProofSet(&m_database);strSQL.Format("select * from Proof_Info where Proof_ID='%s'",m_strProofID);m_pProof->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_pProof->GetRecordCount()=0)MessageBox("Cannot read table Proof_Info",&qu

44、ot;借书/还书");m_pProof->Close();m_database.Close();return;m_pProof->GetFieldValue(1,varValue);m_strName=varValue.m_pstring->GetBuffer(1);m_pProof->GetFieldValue(2,varValue);m_strSex=varValue.m_pstring->GetBuffer(1);m_pProof->Close();/处理表格strSQL.Format("select * from Borrow_I

45、nfo where Proof_ID='%s'",m_strProofID);CBorrowSet *m_pBorrow=new CBorrowSet(&m_database);m_pBorrow->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_pBorrow->GetRecordCount()=0)MessageBox("Cannot get borrowing information!","借书/还书",MB_OK|MB_ICONINFORMATION);m_pBor

46、row->Close();m_database.Close();return;m_ctrList.DeleteAllItems();m_pBorrow->MoveFirst();int i=0;CBookSet *m_pBook=new CBookSet(&m_database);while(!m_pBorrow->IsEOF()m_ctrList.InsertItem(i,buf);m_ctrList.SetItemText(i,0,m_strProofID);m_ctrList.SetItemText(i,1,m_strName);m_ctrList.SetIte

47、mText(i,2,m_strSex);m_pBorrow->GetFieldValue(2,varValue);m_strBookNo=varValue.m_pstring->GetBuffer(1);m_ctrList.SetItemText(i,3,m_strBookNo);m_pBorrow->GetFieldValue(3,varValue);sprintf(buf,"%d-%d-%d %d:%d:%d",varValue.m_pdate->year,varValue.m_pdate->month,varValue.m_pdate-&

48、gt;day,varValue.m_pdate->hour,varValue.m_pdate->minute,varValue.m_pdate->second);m_ctrList.SetItemText(i,5,buf);strSQL.Format("select * from Book_Info where Book_ID='%s'",m_strBookNo);m_pBook->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);m_pBook->GetFieldValue(1,varValue);m_

49、ctrList.SetItemText(i,4,varValue.m_pstring->GetBuffer(1);m_pBook->Close();i+;m_pBorrow->MoveNext();m_pBorrow->Close();m_database.Close();void CBorrowDlg:OnButtonCheckBorrow() CCheckBorrowDlg dlg;dlg.m_strProofID=m_strProofID;dlg.DoModal();void CBorrowDlg:OnButtonReturn() UpdateData();if(

50、m_strProofID=""|m_strBookID="")MessageBox("输入的域不完整,请重新输入!","借书管理",MB_ICONERROR);m_strProofID.Empty();m_strBookID.Empty();UpdateData(FALSE);return;if(!m_database.IsOpen()if(!m_database.Open(_T("Library")MessageBox("Cannot access the database!&quo

51、t;,"借书管理");return;CString strSQL;/借书信息表中是否有借书人的信息strSQL.Format("select * from Borrow_Info where Proof_ID='%s' AND Book_ID='%s'",m_strProofID,m_strBookID);CBorrowSet *m_pBorrow=new CBorrowSet(&m_database);m_pBorrow->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_

52、pBorrow->GetRecordCount()=0)MessageBox("你并没有借这本书!","借书/还书",MB_OK|MB_ICONINFORMATION);m_pBorrow->Close();m_database.Close();return;/借有这本书,删除这条记录信息。m_pBorrow->Delete();m_pBorrow->Close();/将借书人借书的总数减一strSQL.Format("select * from Proof_Info where Proof_ID='%s'", m_strProofID);CProofSet *m_pProof=new CProofSet(&m_database);m_pProof->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_pProof->GetRecordCount()=0)MessageBox("数据库中没有这个人!","借书/还书",MB_ICONINFORMATION);m_pProo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论