版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、要Visual C+ 6.0 编辑用户操作界面、以SQL WORD 格式-可编辑-专业资料 要Visual C+ 6.0 编辑用户操作界面、以SQL 摘银行管理系统在无论在网络上,还是各种管理系统软件的资料上都有讲解,而且均非常详细,其难度也可想而知。这次课程设计时间紧迫,另外作者本身能力也十分有限,只能完成银行管理系统中的少量功能,所以该系统还有很多有待扩充及完善的地方,有不妥善的地方还请老师指点。 (这些应出现在总结,在此应简要说明选题的目的及意义) 这次课程设计只是达到训练、牢固知识的目的,熟悉数据库的前台和后台编程、VC+的控件、如何访问数据库等方面的知识,所以实现的功能也很有限,待以
2、后随着知识的积累,慢慢地扩充完善该系统。本系统采用了可视化的集成开发环境Sever 为后台数据库并以 CRecordSet类访问数据库信息的管理系统,该系统能够完成用户帐号的建立、用户存取款、数据备份与恢复等基本功能。关键字: SQL数据库、SQL语言、VC+、银行管理系统-完整版学习资料分享录1 1 1 1 1 2 2 2 4 4 418 WORD 格式-可编辑-专业资料 录1 1 1 1 1 2 2 2 4 4 418 目1 绪论1.1 选题目的及意义1.2 设计内容2 需求分析2.1 功能需求2.2 数据需求2.3 其他需求3 数据库设计3.1 概念结构设计3.2 逻辑结构设计3.3 物
3、理结构设计4 系统功能设计 5 系统实现5.1 开发环境5.2 主要功能的运行结果及代码6 总结参考文献(页码再核对一下)1 绪论-完整版学习资料分享功能需求数据需求,金额 float ,类型(存入,支出 ),账户余额 float ,利功能需求数据需求,金额 float ,类型(存入,支出 ),账户余额 float ,利息 float ,存款金额 float ,存款日期 datetime ,取款人姓名 varhcar(10)varhcar(10)其它需求 ,取款金额 float ,取款日期 datetime ;,类型(存入,支出 ),办1.1 选题的目的及意义银行管理系统:该系统要求建立的用户
4、表并不是很多,完成的功能也相对有限,但其中各个表之间的联系很紧密,该系统对数据库表的设计要求会很高,所以完成这个题目,能更好的训练数据库设计和 VC的编程能力,选择该题目就是充分训练数据库表设计的能力和运用 VC的能力。1.2 设计内容用户管理模块:建立新用户、删除老用户、更改用户操作;账户操作模块:账户信息、活期存取款操作、查询活期操作记录、定期存款、定期取款、查询定期操作记录;数据库模块:数据库备份、数据库恢复;2 需求分析2.1对于用户部分,能够新建和删除用户,在操作过程中可以更改用户;对于账户部分,可以查询用户的信息,包括各种基本信息、活期余额、定期账单等;对于账户操作部分,有活期存取
5、款、定期存取款操作,另外操作完成之后存储相应的操作记录并能够查询操作记录等功能。2.2账户信息:帐号 varchar(20) ,开户人姓名 varchar(20) ,账户密码 char(6) ,身分证号varchar(20) ,账户余额 float ,开户日期 datetime ,开户地址 varchar(30) ;活期操作: 帐号 varchar(20)存入日期 datetime ;定期存款:帐号 varchar(20) ,存款人姓名 varhcar(10)存储年份 int ,存储利率 float ;定期取款:帐号 varchar(20)定期历史操作记录:帐号 varchar(20) ,存取
6、款人姓名理日期 datetime ,存储年份 int ,存储利率 float ;2.3完成数据库的备份与恢复,系统登录对话框等功能。3. 数据库设计3.1 概念结构设计-完整版学习资料分享活期存取款存储开户日期定期存取款););););) 字段名称CNo CName CPassword CID CSex CBalance CDate CAddress 6位;字段名称nID CNo CMoney CStyle 姓名储户帐户余额字段描述帐号开户人姓名登录密码活期存取款存储开户日期定期存取款););););) 字段名称CNo CName CPassword CID CSex CBalance CDa
7、te CAddress 6位;字段名称nID CNo CMoney CStyle 姓名储户帐户余额字段描述帐号开户人姓名登录密码身份证号性别帐户余额开户日期开户地址字段描述序号帐号操作金额操作类型密码数据类型Varchar Varhcar Char Varchar Char Float Datetime Varchar 数据类型Int Varchar Float Varchar 长度20 20 6 20 2 8 8 30 长度4 20 8 10 属性PK 非空非空非空非空非空非空非空属性PK 非空非空非空活期操作记录帐号身份证号银行性别开户地址定期操作记录银行管理系统 E-R图3.2 逻辑结构
8、设计储户(帐号,姓名,密码,身份证号,性别,帐户余额,开户日期,开户地址活期存取款 (nID ,帐号,金额,类型,办理日期,利息,账户余额定期存款 (nID ,帐号,存款人姓名,金额,存储年份,年利率,存储日期定期取款 (nID ,帐号,取款人姓名,取款金额,取款日期定期记录 (nID ,帐号,存取款人姓名,类型,操作金额,年份,操作日期3.3 物理结构设计储户表序号1 2 3 4 5 6 7 8 主键:帐号;约束条件:各属性均非空,密码长度为活期存取款表序号1 2 3 4 -完整版学习资料分享Datetime Float Float 数据类型Int Varchar Varchar Float
9、 Datetime Int Float 字段名称nID CNo CName CMoney CDate 字段名称nID CNo CName CStyle CMoney CYear CDate 8 8 8 长度4 20 10 8 8 4 8 字段描述序号帐号取款人姓名取款金额取款日期字段描述序号Datetime Float Float 数据类型Int Varchar Varchar Float Datetime Int Float 字段名称nID CNo CName CMoney CDate 字段名称nID CNo CName CStyle CMoney CYear CDate 8 8 8 长度4
10、 20 10 8 8 4 8 字段描述序号帐号取款人姓名取款金额取款日期字段描述序号帐号存取款人姓名操作类型存取款金额存储年份存取款日期非空非空非空属性PK 非空非空非空非空非空非空数据类型Int Varchar Varchar Float Datetime 数据类型Int Varchar Float Char float Int Datetime 长度4 20 10 8 8 长度4 20 8 4 8 4 8 属性PK 非空非空非空非空属性PK 非空非空非空非空非空非空5 CDate 操作日期6 CInterest 利息7 CBalance 帐户余额主键: nID;外键:帐号;被参照表:储户表
11、约束条件:各属性均非空;定期存款表序号 字段名称 字段描述1 nID 序号2 CNo 帐号3 CName 存款人姓名4 CMoney 存款金额5 CDate 存款日期6 CYear 存储年份7 CRate 存储利率主键: nID;外键:帐号;被参照表:储户表约束条件:各属性均非空;定期取款表序号1 2 3 4 5 主键: nID;外键: nID;被参照表:定期存款表约束条件:各属性非空定期操作记录表序号1 2 3 4 5 6 7 主键: nID;外键: nID;被参照表:定期存款表,定期取款表约束条件:各属性非空4. 系统功能设计-完整版学习资料分享理删除账户查看账户信息定期存款数据库备份SQ
12、L Sever 注册”;,输入数据库名 账户管理活期存取款定期取款Bank;新建账户WORD 格式-可编辑-专业资理删除账户查看账户信息定期存款数据库备份SQL Sever 注册”;,输入数据库名 账户管理活期存取款定期取款Bank;新建账户银行管理系统账户登录, 身份验证银行账户系统管退出系统更改账户账户操作活期操作查看历史记录定期操作数据库管理查看历史记录数据库恢复图4-1 银行管理系统功能结构图5 . 系统实现5.1 系统开发环境软件: SQL Sever 2000 ,VC+6.0 操作系统: Window XP 硬件: Pentiun 4 DDR 512MB 120G 硬盘5.2 主要
13、功能的运行结果及代码数据库创建过程及其连接(1). 进入企业管理器窗口,选择“新建(2). 选中“数据库”文件夹,单击鼠标右键,选择“新建数据库”(3). 单击“确定”按钮,关闭对话框,数据库创建成功。完成“账户登录”的窗口-完整版学习资料分享WORD 格式-可编辑-专业资料 ID 控件类型 成员变量 说明IDC_EDIT1 CString m_strNo 用户帐号IDC_EDIT1 CEdit m_ctrNo IDC_EDIT2 CString m_strPassword 登录密码IDC_EDIT2 CEdit m_ctrPassword IDC_EDIT3 CString m_strReP
14、assword 确认密码IDC_EDIT3 CEdit m_ctrRePassword IDOK “OK”按钮IDCANCLE “Cancle”按钮(1) 添加记录集类 CAccountSet 类,基类为 CRecordSet,数据表为 account 表;(2) 在 CLoginDlg 类中添加 CAccontSet 类的成员变量 m_recordset ;(3) 为“CBankApp”类添加为 CString 型的成员变量 strNO;(4) IDOK 控件的消息响应函数:void CLoginDlg:OnOK() UpdateData(TRUE); if (m_strNo = ) Mes
15、sageBox(Please Input the Account Number!); m_ctrNo.SetFocus(); return ; if (m_strPassword = ) MessageBox(Please Input the Password!); m_ctrPassword.SetFocus(); return ; if (m_strRePassword = ) -完整版学习资料分享 WORD 格式-可编辑-专业资料 MessageBox(Please Input the Confirm Password!); m_ctrRePassword.SetFocus(); ret
16、urn ; if (m_strPassword != m_strRePassword) MessageBox(Two Passwords Are Differed!); m_strPassword = ; m_strRePassword = ; UpdateData(FALSE); m_ctrPassword.SetFocus(); return ; CString strSQL; strSQL.Format(select * from Account where CNo = %s,m_strNo); if (!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,
17、strSQL) MessageBox(Open Database Filed!,Database Error,MB_OK); return ; if (m_recordset.m_CPassword != m_strPassword) MessageBox(Password Error! Please Rewrite!); m_recordset.Close(); m_strPassword = ; m_strRePassword = ; UpdateData(FALSE); m_ctrPassword.SetFocus(); return ; CBankApp * ptheApp = (CB
18、ankApp *) AfxGetApp(); ptheApp-strNo = m_strNo; CDialog:OnOK(); (5) 在“CBankApp”类中的“ InitInstance() ”函数中添加登录对话框的对象:CLoginDlg dlg; if (dlg.DoModal() != IDOK) return FALSE; 完成“创建新帐户”的窗口:-完整版学习资料分享控件类型CComboBox CTime CString CEdit CString CEdit CString CEdit CString CEdit CString CEdit Double CString CE
19、dit “确定”按钮“取消”按钮m_recordset ;CCurrentSet 类,基类控件类型CComboBox CTime CString CEdit CString CEdit CString CEdit CString CEdit CString CEdit Double CString CEdit “确定”按钮“取消”按钮m_recordset ;CCurrentSet 类,基类为 CRecordSet,数据表为 current方法: 成员变量m_ctrSex m_tmDate m_strNo m_ctrNo m_strName m_ctrName m_strPassword m_
20、ctrPassword m_strComPassword m_ctrComPassword m_strID m_ctrID m_bBalance m_strAddress m_ctrAddress 表;说明性别开户日期帐号开户人姓名密码确认密码身份证号帐户余额开户地址ID IDC_COMBO1 IDC_DATETIMEPICKER1 IDC_EDIT1 IDC_EDIT1 IDC_EDIT2 IDC_EDIT2 IDC_EDIT3 IDC_EDIT3 IDC_EDIT4 IDC_EDIT4 IDC_EDIT5 IDC_EDIT5 IDC_EDIT6 IDC_EDIT7 IDC_EDIT7 ID
21、OK IDCANCLE (1) 在 CAccountDlg 类中添加 CAccontSet 类的成员变量(2) 添加记录集类(3) 添加初始化对话框 OnInitDialog()BOOL CAccountDlg:OnInitDialog() -完整版学习资料分享 WORD 格式-可编辑-专业资料 CDialog:OnInitDialog(); m_tmDate = CTime:GetCurrentTime(); m_ctrSex.AddString( 男); m_ctrSex.AddString( 女); UpdateData(FALSE); return TRUE; (4) IDOK控件的消
22、息响应函数,完成对帐户表和活期存取款表的记录添加。完成“删除帐户”的功能:在 CMainFrame类中添加菜单的消息响应函数,找到当前用户在账户表中的记录,并且判断该帐户是否还有活期存款和定期存款,如果有记录,则无法删除帐户。void CMainFrame:OnDeleteAccount() / TODO: Add your command handler code here CBankApp * ptheApp = (CBankApp *) AfxGetApp(); CString strSQL; strSQL.Format(select * from Account where CNo =
23、 %s,ptheApp-strNo); CAccountSet recordset; if (!recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL) MessageBox(Open Database Filed!,Database Error,MB_OK); return ; if (MessageBox( 确定删除该用户 ?, 提示,MB_YESNO) = IDYES) if (recordset.m_CBalance != 0) recordset.Close(); MessageBox(用户账户中活期存款仍存有余额,无法进行销户 !); retur
24、n ; CTimeDepositSet tds; CString strRecord; strRecord.Format(select * from TimeDeposit where CNo = %s,ptheApp-strNo); if (!tds.Open(AFX_DB_USE_DEFAULT_TYPE,strRecord) recordset.Close(); MessageBox(Open Database Filed!,Database Error,MB_OK); return ; if (tds.GetRecordCount() != 0) recordset.Close();
25、tds.Close(); -完整版学习资料分享!); WORD 格式-可编辑-专业资料 !); MessageBox(用户账户中仍存有定期账目,无法销户 !); return ; recordset.Delete(); recordset.Requery(); recordset.Close(); MessageBox(用户账户删除成功 else recordset.Close(); return ; 完成“更改帐户”的功能:在 CMainFrame类中添加菜单的消息响应函数,重新打开登录对话框:void CMainFrame:OnChangeAccount() / TODO: Add you
26、r command handler code here CLoginDlg dlg; dlg.DoModal(); 完成“退出系统”的功能:在 CMainFrame类中添加菜单的消息响应函数:void CMainFrame:OnExit() if (MessageBox( 确定退出该系统 ?, 提示,MB_YESNO) = IDYES) PostQuitMessage(1); return ; 完成“查询账户信息”的功能:-完整版学习资料分享成员变量m_tmDate m_strNo m_strName m_strAddress m_strBalance m_ctrList “确定”按钮响应函数
27、,初始化对话框信息;类添加 void 型的成员函数控件类型“存款”按钮“取款”按钮“历史记录”按钮CString CString Double CEdit “OK”按钮“Cancl成员变量m_tmDate m_strNo m_strName m_strAddress m_strBalance m_ctrList “确定”按钮响应函数,初始化对话框信息;类添加 void 型的成员函数控件类型“存款”按钮“取款”按钮“历史记录”按钮CString CString Double CEdit “OK”按钮“Cancle”按钮 说明开户日期帐号姓名开户地址帐户余额列表控件RefreshList()成员变
28、量m_strName m_strBalance m_bMoney m_ctrMoney ,初始化列表信息。说明存取款人姓名账户余额存取金额ID 控件类型IDC_DATETIMEPICKER1 CTime IDC_EDIT1 CString IDC_EDIT2 CString IDC_EDIT3 CString IDC_EDIT4 CString IDC_LIST1 CListCtrl IDOK (1) 添加初始化对话框 OnInitDialog()(2) 为 CAccountInfo完成“活期存取款”功能ID IDC_BUTTON_DEPOSIT IDC_BUTTON_GET IDC_BUTT
29、ON_HISTORY IDC_EDIT1 IDC_EDIT2 IDC_EDIT3 IDC_EDIT3 IDOK IDCANCLE -完整版学习资料分享控件类型 成员变量 说明MListCtrl m_ctrList “OK”按钮“Cancle控件类型 成员变量 说明MListCtrl m_ctrList “OK”按钮“Cancle”按钮OnInitDialog() 响应函数,初始化对话框信息;类成员函数,初始化列表信息; (1) 添加初始化对话框 OnInitDialog() 响应函数,初始化对话框信息;(2) 添加各种操作的消息响应函数,为存取款表添加相应的记录;完成“查看活期存取款历史记录”
30、功能:ID IDC_LIST1 IDOK IDCANCLE (1) 添加初始化对话框(2) 添加 RefreshList()-完整版学习资料分享 WORD 格式-可编辑-专业资料 BOOL CHistroyRecordDlg:OnInitDialog() CDialog:OnInitDialog(); m_ctrList.InsertColumn(0, 存取款人姓名 ); m_ctrList.InsertColumn(1, 操作类型 ); m_ctrList.InsertColumn(2, 操作金额 ); m_ctrList.InsertColumn(3, 账户余额 ); m_ctrList.
31、InsertColumn(4, 操作日期 ); m_ctrList.SetColumnWidth(0,120); m_ctrList.SetColumnWidth(1,80); m_ctrList.SetColumnWidth(2,80); m_ctrList.SetColumnWidth(3,80); m_ctrList.SetColumnWidth(4,100); m_ctrList.SetExtendedStyle(LVS_EX_FULLROWSELECT); RefreshList(); / TODO: Add extra initialization here return TRUE
32、; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE void CHistroyRecordDlg:RefreshList() m_ctrList.DeleteAllItems(); m_ctrList.SetRedraw(FALSE); CBankApp * ptheApp = (CBankApp *) AfxGetApp(); CCurrentSet m_recordset; /* 打开用户账户记录 */ if (!m_records
33、et.Open(AFX_DB_USE_DEFAULT_TYPE) MessageBox(Open Database Filed!,Database Error,MB_OK); return ; int i = 0; while (!m_recordset.IsEOF() if (m_recordset.m_CNo = ptheApp-strNo) m_ctrList.InsertItem(i,m_recordset.m_CNo); m_ctrList.SetItemText(i,1,m_recordset.m_CStyle); CString strMoney; strMoney.Format
34、(%.2lf,m_recordset.m_CMoney); m_ctrList.SetItemText(i,2,strMoney); CString strBal; -完整版学习资料分享说明存储年份存储利率存储日期存款人姓名存储金额“OK”按钮“Cancle ”按钮控件类型 成员变量说明WORD 格式说明存储年份存储利率存储日期存款人姓名存储金额“OK”按钮“Cancle ”按钮控件类型 成员变量说明strBal.Format(%.2lf,m_recordset.m_CBalance); m_ctrList.SetItemText(i,3,strBal); /*convert DataTime
35、 to CString */ CString strDate = m_recordset.m_CDate.Format(_T(%Y %b %d); m_ctrList.SetItemText(i,4,strDate); i+; m_recordset.MoveNext(); m_ctrList.SetRedraw(TRUE); m_recordset.Close(); 完成“定期存款”功能:ID 控件类型 成员变量IDC_COMBO1 CComboxBox m_ctrYear IDC_COMBO1 CString m_strYear IDC_COMBO2 CComboxBox m_ctrRat
36、e IDC_COMBO2 CString m_strRate IDC_DATETIMEPICKER2 CTime m_tmDate IDC_EDIT1 CString m_strName IDC_EDIT1 CEdit m_ctrName IDC_EDIT2 Double m_bMoney IDC_EDIT2 CEdit m_ctrMoney IDOK IDCANCLE (1) 添加初始化对话框 OnInitDialog() 响应函数,初始化对话框信息;(2) 添加各种操作的消息响应函数,为存取款表添加相应的记录;完成“定期取款”的功能:ID -完整版学习资料分享m_tmDDate m_tmG
37、Date CString Double Long CString CEdit CString double CListCtrl Cbutton “取消”按钮OnInitDialog()类成员函数,初始化已存在的定期存单的列表信息;控件类型MListCtrl “OK”按钮“Cancle”按钮 存款日期取款日期m_strDName m_bMoney m_nYear m_strGName m_ctrGName m_strInterest m_dSum m_ctrList m_ctrOk 响应函数,初始化对话框信息;成员变量m_tmDDate m_tmGDate CString Double Long
38、 CString CEdit CString double CListCtrl Cbutton “取消”按钮OnInitDialog()类成员函数,初始化已存在的定期存单的列表信息;控件类型MListCtrl “OK”按钮“Cancle”按钮 存款日期取款日期m_strDName m_bMoney m_nYear m_strGName m_ctrGName m_strInterest m_dSum m_ctrList m_ctrOk 响应函数,初始化对话框信息;成员变量m_ctrList 存款人姓名存款金额存款年份取款人姓名存款利息取款金额“取款”按钮说明IDC_TIMEDATEPICKER1
39、 CTime IDC_TIMEDATEPICKER3 CTime IDC_EDIT1 IDC_EDIT2 IDC_EDIT3 IDC_EDIT4 IDC_EDIT4 IDC_EDIT5 IDC_EDIT6 IDC_LIST1 IDOK IDCANCLE (1) 添加初始化对话框(2) 添加 RefreshList()(3) 添加取款操作的消息响应函数,在存款记录中删除该记录,在取款记录表中添加该操作记录,在历史操作记录表中添加该操作记录。完成“查询定期存取款历史记录”功能:ID IDC_LIST1 IDOK IDCANCLE -完整版学习资料分享OnInitDialog() 响应函数,初始化对
40、话框信息;类成员函数,初始化定期存款历史记录的列表信息;数 据库文件WORD 格式-可编辑OnInitDialog() 响应函数,初始化对话框信息;类成员函数,初始化定期存款历史记录的列表信息;数 据库文件(1) 添加初始化对话框(2) 添加 RefreshList()完成“数据库备份”的功能:(1) 在应用类里为 master 数据库添加名为 master 的数据源SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN, SQL Server, DSN=master0 SERVER=(local)0 DATABASE=master0 Trusted_Connect
41、ion=Yes); (2) 在 MainFrame 类里添加数据库备份的消息响应函数:void CMainFrame:OnDatabaseBackup() / TODO: Add your command handler code here CString strBackup; CfileDialog dlg(FALSE,bak,NULL,OFN_HIDEREADONLY,(*.bak)|*.bak|,NULL); if (dlg.DoModal() = IDOK) strBackup = dlg.GetPathName(); Invalidate(FALSE); if (strBackup != ) CDatabase database; if (!database.IsOpen() -完整版学习资料分享所有文件 WORD 格式-可编辑-专业资料 所有文件 if (databa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 7.1.2复数的几何意义【超级课堂】2022-2023学年高一数学教材配套教学精-品课件+分层练习人教A版2019必修第二册
- 《小区推广策略》课件
- 《水健康知识》课件
- 计算机软件及应用晕晕课件
- 《呼吸内科医生培训》课件
- 河南省周口市太康县灵运初级中学2024-2025学年九年级上学期1月期末考试语文试题(含答案)
- 单位管理制度展示大全【人力资源管理篇】
- 单位管理制度收录大合集【人事管理篇】
- Module 2 Unit 3 课后培优分级练(解析版)
- 2025无偿保管合同协议书
- (新版)北师大版五年级数学上册期末试卷
- 小班《火车开了》音乐欣赏课评课稿
- 伦理学与医学伦理学 (医学伦理学课件)
- GB/T 6344-2008软质泡沫聚合材料拉伸强度和断裂伸长率的测定
- GA/T 1740.1-2020旅游景区安全防范要求第1部分:山岳型
- 产后康复客户健康评估表格
- 个人现实表现材料1500字德能勤绩廉(通用6篇)
- 六年级上册数学单元测试-5.圆 青岛版 (含答案)
- (精心整理)高一语文期末模拟试题
- QC成果解决铝合金模板混凝土气泡、烂根难题
- 管线管廊布置设计规范
评论
0/150
提交评论