版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库课程设计一、引言1.设计目的课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。课程设计的目的:加深对数据库系统、软件工程、程序设计语言的理论知识的理解和应用水平;在理论和实验教学基础上进一步巩固已学基本理论及应用知识并加以综合提高;学会将知识应用于实际的方法,提高分析和解决问题的能力,增强动手能力;为毕业设计和以后工作打下必要基础。2.设计要求运用数据库基本理论与应用知识,在微机RDBMS(SQLServer)的环境上建立一个数据库应用系统。要求把现实世界的事物及事物之间的复杂关系抽象为信息世界的实体及实体之间联系的信息模型,再转换为机器世界的数据模型和数据文件,并对数据文件实施检索、更新和控制等操作。1.用E-R图设计选定题目的信息模型;书名分类价格藏书总数出版社作者书名分类价格藏书总数出版社作者现存数现存数年份年份索书号索书号图书图书nn借书时间nn借书时间预约时间借阅预约预约时间借阅预约还书时间还书时间操作员操作员操作员操作员1111借书证借书证借书证号组别姓名单位借书证号组别姓名单位联系方式管理员ID姓名联系方式管理员ID姓名密码管理员管理员2.软件定义:图书管理系统系统图书馆管理系统包括四大模块:图书的查询借书还书图书的预约3、设计相应的关系模型,确定数据库结构;图书(索书号,书名,分类,出版社,作者,年份,价格,藏书总数,现存数)借书证(借书证号,姓名,单位,组别)管理员(管理员ID,姓名,密码,联系方式)借阅(借书证号,索书号,借书时间,还书时间,操作员)预约(借书证号,索书号,预约时间,操作员)4、通过设计关系的主码约束、外码约束和使用CHECK实现完整性控制;Book(book_ISBN,book_name,book_subject,book_author,book_year,book_price,book_total_num,book_stocked_num)Card(card_num,name,unit,rank)Admin(admin_id,admin_password,admin_name,admin_contact)Borrow(card_num,book_ISBN,borrow_date,return_date,admin_id)Order(card_num,book_ISBN,order_date,admin_id)5.分析关系模式各属于第几范式,阐明理由;图书属于BCNF,因为其中的每个决定因素都包含了码借书证属于BCNF,因为其中的每个决定因素都包含了码管理员属于BCNF,因为其中的每个决定因素都包含了码借阅属于BCNF,因为其中的每个决定因素都包含了码预约属于BCNF,因为其中的每个决定因素都包含了码6.开发环境:VC++,SQLServer通过ODBC连接二、详细设计1、数据库设计;建立admin表CREATETABLE[dbo].[admin]( [admin_id][nchar](10)NOTNULL, [admin_password][nchar](10)NULL, [admin_name][nchar](10)NOTNULL, [admin_contact][nchar](15)NULL,PRIMARYKEYCLUSTERED([admin_id]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]建立book表CREATETABLE[dbo].[book]( [book_ISBN][nchar](10)NOTNULL, [book_subject][nchar](10)NULL, [book_title][nchar](10)NULL, [book_press][nchar](10)NULL, [book_year][int]NULL, [book_authors][nchar](10)NULL, [book_price][numeric](5,2)NULL, [book_total_num][int]NULL, [book_stocked_num][int]NULL,PRIMARYKEYCLUSTERED([book_ISBN]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]建立card表CREATETABLE[dbo].[card]( [card_num][nchar](10)NOTNULL, [name][nchar](10)NOTNULL, [unit][nchar](15)NULL, [rank][nchar](10)NULL,PRIMARYKEYCLUSTERED([card_num]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ALTERTABLE[dbo].[card]WITHCHECKADDCONSTRAINT[c1]CHECK(([rank]='教师'OR[rank]='研究生'OR[rank]='本科生'))ALTERTABLE[dbo].[card]CHECKCONSTRAINT[c1]建立borrow表CREATETABLE[dbo].[borrow]( [card_num][nchar](10)NOTNULL, [book_ISBN][nchar](10)NOTNULL, [borrow_date][date]NULL, [return_date][date]NULL, [admin_id][nchar](10)NULL,FOREIGNKEY([admin_id])REFERENCES[dbo].[admin]([admin_id])FOREIGNKEY([admin_id])REFERENCES[dbo].[admin]([admin_id])FOREIGNKEY([book_ISBN])REFERENCES[dbo].[book]([book_ISBN])FOREIGNKEY([book_ISBN])REFERENCES[dbo].[book]([book_ISBN])FOREIGNKEY([card_num])REFERENCES[dbo].[card]([card_num]))建立order表CREATETABLE[dbo].[order]( [card_num][nchar](10)NOTNULL, [book_ISBN][nchar](10)NOTNULL, [order_date][date]NULL, [admin_id][nchar](10)NULL,PRIMARYKEYCLUSTERED([card_num]ASC,[book_ISBN]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])2、图书管理系统实现与截图窗口界面借书模块部分程序voidCBookBorrowDlg::OnOK(){//将编辑框中的数据更新到成员变量m_strCardNum和m_strBookNum中UpdateData(); if(m_strCardNum==""){AfxMessageBox("请输入借书证号!");return; } if(m_strBookNum==""){ AfxMessageBox("请输入索书号!"); return; } //如果卡号不存在,则拒绝借书 if(!IsValidCard(m_strCardNum)){// CDialog::OnOK();//调用基类CDialog的OnOK函数来关闭对话框 AfxMessageBox("读者未找到您的注册信息!");return; } //如果有书到期,也返回 if(AnyBookExpired(m_strCardNum)){// CDialog::OnOK(); return; } //如果要借的书没有库存,也返回 if(!AllowedToBorrow(m_strBookNum)){// CDialog::OnOK(); return; } //以上都没有问题,才能外借图书 if(BorrowBook(m_strCardNum,m_strBookNum)){ AfxMessageBox("借书成功"); } else{ AfxMessageBox("借书失败"); } CDialog::OnOK();}boolCBookBorrowDlg::IsValidCard(constCString&card_num){ //检查card表是否打开 if(!m_cardSet.IsOpen()){ m_cardSet.Open(); } //指定查询条件card_num为用户卡号 m_cardSet.m_strFilter.Format("card_num='%s'",card_num); m_cardSet.Requery(); //结果集如果为空则表示卡号不存在 if(m_cardSet.IsEOF()){ AfxMessageBox("该卡号不存在"); returnfalse; } returntrue;}boolCBookBorrowDlg::AnyBookExpired(constCString&card_num){ if(!m_borrowSet.IsOpen()){ m_borrowSet.Open(); } m_borrowSet.m_strFilter.Format("card_num='%s'andreturn_dateisnull",card_num); m_borrowSet.Requery(); CTimetoday=CTime::GetCurrentTime();//得到今天的日期 CTimeSpandiffDays; while(!m_borrowSet.IsEOF()) { diffDays=today-m_borrowSet.m_borrow_date;//计算已借图书的时间 if(diffDays.GetDays()>30){ AfxMessageBox("您有书过期了,请尽快还书!");//超过30天,则报错返回 returntrue;} m_borrowSet.MoveNext();} returnfalse;}boolCBookBorrowDlg::AllowedToBorrow(constCString&book_ISBN){ if(!m_bookSet.IsOpen()){ m_bookSet.Open();} //指定查询条件book_ISBN m_bookSet.m_strFilter.Format("book_ISBN='%s'",book_ISBN); m_bookSet.Requery(); //结果集为空则表明该书不存在 if(m_bookSet.IsEOF()){ AfxMessageBox("该书不存在"); returnfalse; } if(m_bookSet.m_book_stocked_num==0){ AfxMessageBox("该书已经被借空!"); returnfalse; } returntrue;}boolCBookBorrowDlg::BorrowBook(constCString&card_num,constCString&book_ISBN){ if(!m_bookSet.IsOpen()){ m_bookSet.Open();} m_bookSet.m_strFilter.Format("book_ISBN='%s'",book_ISBN); m_bookSet.Requery(); //将book表中书的库存-1 m_bookSet.Edit(); m_bookSet.m_book_stocked_num=m_bookSet.m_book_stocked_num-1; m_bookSet.Update(); //在borrow表中增加一条借书记录 if(!m_borrowSet.IsOpen()){ m_borrowSet.Open(); } m_borrowSet.AddNew();m_borrowSet.m_card_num=card_num; m_borrowSet.m_book_ISBN=book_ISBN; m_borrowSet.m_borrow_date=CTime::GetCurrentTime(); m_borrowSet.m_admin_id=admin; m_borrowSet.Update(); m_borrowSet.Requery(); returntrue;}voidCBookBorrowDlg::OnBorrowlist(){ UpdateData(); if(m_strCardNum==""){ AfxMessageBox("请输入卡号!"); return; } cardnum=m_strCardNum; CBorrowListDlgborrowlist;//构造“借书记录”对话框 borrowlist.DoModal();//显示“借书记录”对话框}批量入库部分代码voidCBookEnrollDlg::OnOK(){ inti; stringstr; strings="";chartmp[100]; CStringm_book_ISBN; CStringm_book_subject; CStringm_book_title; CStringm_book_press; intm_book_year; CStringm_book_authors; doublem_book_price; intm_book_total_num; UpdateData(); ifstreamfile; if(m_address.IsEmpty()) {AfxMessageBox("不能为空");} else {file.open(m_address);//打开文件 if(!file) {AfxMessageBox("文件打开失败!"); }if(file){while(getline(file,str,'\n')//用getline函数读取文件中的每一行 {intk=0; intm=0; intj=0; inttotal=0; inta; intb=0; doubleprice=0; for(i=0;i<=7;i++) {a=0; while(str[b]!=','&&str[b]){//读取每一行中的内容,以遇到','为结束 tmp[a]=str[b]; b++; a++; } b++; tmp[a]='\0'; s=tmp; //调用c_str()函数把string类型转换为cstring类型 switch(i){ case0:m_book_ISBN=s.c_str();break; case1:m_book_subject=s.c_str();break; case2:m_book_title=s.c_str();break; case3:m_book_press=s.c_str();break; //将输入的字符串对应转化为对应的年份 case4: intyear; year=(tmp[0]-48)*1000+(tmp[1]-48)*100+(tmp[2]-48)*10+(tmp[3]-48); m_book_year=year;break; case5: m_book_authors=s.c_str();break; //将输入的字符串转化为对应的价格 case6: doublepoint; point=((double)tmp[a-1]-48)/100+((double)tmp[a-2]-48)/10; for(k=0;k<a-3;k++) price=price*10+(tmp[k]-48); price+=point; m_book_price=price; break; //将输入的字符串转化为对应的库存数量 case7: for(m=0;m<a;m++) total=total*10+(tmp[m]-48); m_book_total_num=total;break;}} //检测book表是否打开 if(!m_bookSet.IsOpen()){ m_bookSet.Open();} //如果该书已经存在,在原来的库存量基础上加上入库的数量即可 m_bookSet.m_strFilter.Format("book_ISBN='%s'",m_book_ISBN); m_bookSet.Requery(); if(!m_bookSet.IsEOF()){ m_bookSet.Edit(); m_bookSet.m_book_total_num+=m_book_total_num; m_bookSet.m_book_stocked_num+=m_book_total_num; m_bookSet.Update(); continue;} //如果该书不存在 m_bookSet.AddNew(); m_bookSet.m_book_ISBN=m_book_ISBN; m_bookSet.m_book_subject=m_book_subject; m_bookSet.m_book_title=m_book_title; m_bookSet.m_book_press=m_book_press; m_bookSet.m_book_year=m_book_year; m_bookSet.m_book_authors=m_book_authors; m_bookSet.m_book_price=m_book_price; m_bookSet.m_book_total_num=m_book_total_num; m_bookSet.m_book_stocked_num=m_book_total_num; m_bookSet.Update();} AfxMessageBox("入库成功"); CDialog::OnOK();} }}单本入库部分代码voidCBookSingleEnrollDlg::OnOK(){ CStringstr=""; //检测book表是否打开 if(!m_bookSet.IsOpen()){ m_bookSet.Open(); } UpdateData(); //输入不能为空 if(m_book_ISBN.IsEmpty()||m_book_subject.IsEmpty()||m_book_title.IsEmpty()||m_book_press.IsEmpty()||m_book_year==0||m_book_authors.IsEmpty()||m_book_price==0||m_book_total_num==0){ AfxMessageBox("请输入完整信息"); return; } m_bookSet.m_strFilter.Format("book_ISBN='%s'",m_book_ISBN); m_bookSet.Requery(); //如果该书已经存在 if(!m_bookSet.IsEOF()){ m_bookSet.Edit(); m_bookSet.m_book_total_num+=m_book_total_num; m_bookSet.m_book_stocked_num+=m_book_total_num; m_bookSet.Update(); AfxMessageBox("入库成功!"); CDialog::OnOK();} //如果该书不存在 else{ m_bookSet.AddNew(); m_bookSet.m_book_ISBN=m_book_ISBN; m_bookSet.m_book_subject=m_book_subject; m_bookSet.m_book_title=m_book_title; m_bookSet.m_book_press=m_book_press; m_bookSet.m_book_year=m_book_year; m_bookSet.m_book_authors=m_book_authors; m_bookSet.m_book_price=m_book_price; m_bookSet.m_book_total_num=m_book_total_num; m_bookSet.m_book_stocked_num=m_book_total_num; m_bookSet.Update(); AfxMessageBox("入库成功"); CDialog::OnOK(); }}预约部分代码boolCBookOrderDlg::IsValidCard(constCString&card_num){ //检查card表是否打开 if(!m_cardSet.IsOpen()){ m_cardSet.Open(); } //指定查询条件card_num为用户卡号 m_cardSet.m_strFilter.Format("card_num='%s'",card_num); m_cardSet.Requery(); //结果集如果为空则表示卡号不存在 if(m_cardSet.IsEOF()){ AfxMessageBox("该卡号不存在"); returnfalse; } returntrue;}boolCBookOrderDlg::AllowedToBorrow(constCString&book_ISBN){ if(!m_bookSet.IsOpen()){ m_bookSet.Open(); } //指定查询条件book_ISBN m_bookSet.m_strFilter.Format("book_ISBN='%s'",book_ISBN); m_bookSet.Requery(); //结果集为空则表明该书不存在 if(m_bookSet.IsEOF()){ AfxMessageBox("该书不存在"); returnfalse; } if(m_bookSet.m_book_stocked_num==0){ AfxMessageBox("该书已经被借空!"); returnfalse;} returntrue;}boolCBookOrderDlg::OrderBook(constCString&card_num,constCString&book_ISBN){ //在borrow表中增加一条借书记录 if(!m_OrderSet.IsOpen()){ m_OrderSet.Open(); } m_OrderSet.AddNew();m_OrderSet.m_card_num=card_num; m_OrderSet.m_book_ISBN=book_ISBN; m_OrderSet.m_order_date=CTime::GetCurrentTime(); m_OrderSet.m_admin_id=admin; m_OrderSet.Update(); m_OrderSet.Requery(); returntrue;}voidCBookOrderDlg::OnBnClickedOk(){ //TODO:在此添加控件通知处理程序代码 CDialog::OnOK(); UpdateData(); if(m_strCardNum==""){ AfxMessageBox("请输入借书证号!"); return; } if(m_strBookNum==""){ AfxMessageBox("请输入索书号!"); return; } //如果卡号不存在,则拒绝借书 if(!IsValidCard(m_strCardNum)){// CDialog::OnOK();//调用基类CDialog的OnOK函数来关闭对话框 AfxMessageBox("读者未找到您的注册信息!");return; } //如果要借的书没有库存,也返回 if(!AllowedToBorrow(m_strBookNum)){// CDialog::OnOK(); return; } //以上都没有问题,才能外借图书 if(OrderBook(m_strCardNum,m_strBookNum)){ AfxMessageBox("预约成功"); } else{ AfxMessageBox("预约失败"); } CDialog::OnOK();}还书部分代码voidCBookReturnDlg::OnOK(){ UpdateData(true); if(m_strCardNum==""){ AfxMessageBox("请输入卡号!"); return; } if(m_strBookNum==""){ AfxMessageBox("请输入藏书号码!"); return; } if(!m_borrowSet.IsOpen()){ m_borrowSet.Open(); } //查找借书记录 m_borrowSet.m_strFilter.Format("card_num='%s'andbook_ISBN='%s'andReturn_dateisnull",m_strCardNum,m_strBookNum); m_borrowSet.Requery(); //当藏书不存在或所有记录的还书时间都为非空时 if(m_borrowSet.IsEOF()){ AfxMessageBox("此书不存在或已经还掉"); // CDialog::OnOK(); return; } CTimetoday=CTime::GetCurrentTime(); //将还书日期改为今天 m_borrowSet.Edit(); m_borrowSet.m_return_date=today; m_borrowSet.Update(); //book表中现有藏书加1 if(!m_bookSet.IsOpen()){ m_bookSet.Open(); } m_bookSet.m_strFilter.Format("book_ISBN='%s'",m_strBookNum); m_bookSet.Requery(); m_bookSet.Edit(); m_bookSet.m_book_stocked_num=m_bookSet.m_book_stocked_num+1; m_bookSet.Update(); AfxMessageBox("还书成功!"); CDialog::OnOK();}voidCBookReturnDlg::OnBorrowlist(){ UpdateData(); if(m_strCardNum==""){ AfxMessageBox("请输入卡号!"); return; } cardnum=m_strCardNum; CBorrowListDlgborrowlist;//构造“借书记录”对话框 borrowlist.DoModal();//显示“借书记录”对话框}voidCBookReturnDlg::OnBnClickedOk(){ //TODO:在此添加控件通知处理程序代码 CDialog::OnOK(); UpdateData(true); if(m_strCardNum==""){ AfxMessageBox("请输入借书证号!"); return; } if(m_strBookNum==""){ AfxMessageBox("请输入索书号!"); return; } if(!m_borrowSet.IsOpen()){ m_borrowSet.Open(); } //查找借书记录 m_borrowSet.m_strFilter.Format("card_num='%s'andbook_ISBN='%s'andReturn_dateisnullandborrow_dateisnotnull",m_strCardNum,m_strBookNum); m_borrowSet.Requery(); //当藏书不存在或所有记录的还书时间都为非空时 if(m_borrowSet.IsEOF()){ AfxMessageBox("此书不存在或已经还掉"); // CDialog::OnOK(); return; } //将还书日期改为今天 m_borrowSet.AddNew();m_borrowSet.m_card_num=m_strCardNum; m_borrowSet.m_book_ISBN=m_strBookNum; m_borrowSet.m_return_date=CTime::GetCurrentTime(); m_borrowSet.m_admin_id=admin; m_borrowSet.Update(); m_borrowSet.Requery(); //book表中现有藏书加1 if(!m_bookSet.IsOpen()){ m_bookSet.Open(); } m_bookSet.m_strFilter.Format("book_ISBN='%s'",m_strBookNum); m_bookSet.Requery(); m_bookSet.Edit(); m_bookSet.m_book_stocked_num+=1; m_bookSet.Update(); AfxMessageBox("还书成功!"); CDialog::OnOK();}增加借书证部分代码voidCCardAddDlg::OnOK(){ //检测card表是否打开 if(!m_cardSet.IsOpen()){ m_cardSet.Open(); } UpdateData(); m_cardSet.m_strFilter.Format("card_num='%s'",m_card_num); m_cardSet.Requery(); if(!m_cardSet.IsEOF()){ AfxMessageBox("该借书证已经存在"); return; } //如果该借书证不存在 m_cardSet.AddNew(); m_cardSet.m_card_num=m_card_num; m_cardSet.m_name=m_name; m_cardSet.m_unit=m_unit; m_cardSet.m_rank=m_rank; m_cardSet.Update(); AfxMessageBox("借书证添加成功"); CDialog::OnOK();}删除借书证代码voidCCardDeleteDlg::OnOK(){ //检测card表是否打开 if(!m_cardSet.IsOpen()){ m_cardSet.Open(); } UpdateData(); m_cardSet.m_strFilter.Format("card_num='%s'",m_card_num); m_cardSet.Requery(); if(m_cardSet.IsEOF()){ AfxMessageBox("此卡号不存在"); return; } m_cardSet.Delete(); AfxMessageBox("删除成功"); CDialog::OnOK();}图书查询部分代码voidCQueryBasicDlg::OnQuery(){ UpdateData(); CStringstrFilter;CStringstr1=""; CStringstr2="";if(m_edit2!=0){ str1.Format("book_yearbetween%dand%d",m_edit1,m_edit2); } if(m_edit4!=0){str2.Format("book_pricebetween%fand%f",m_edit3,m_edit4); } //用户输入的查询 m_bookSet.m_strFilter="book_ISBNlike'%"+m_keyword5+"%'" +"andbook_subjectlike'%"+m_keyword1+"%'" +"andbook_titlelike'%"+m_keyword2+"%'" +"andbook_presslike'%"+m_keyword3+"%'" +"andbook_authorslike'%"+m_keyword4+"%'";if(!str1.IsEmpty()){ m_bookSet.m_strFilter+="and"; m_bookSet.m_strFilter+=str1; } if(!str2.IsEmpty()){ m_bookSet.m_strFilter+="and"; m_bookSet.m_strFilter+=str2; } //检测book表是否打开 if(!m_bookSet.IsOpen()){ m_bookSet.Open(); } m_bookSet.Requery(); m_listResult.ResetContent();//清空详细信息列表框中的原有内容 m_listDetail.ResetContent();//清空信息列表框中的原有内容 if(m_bookSet.IsEOF()) { AfxMessageBox("查无此书"); return; } while(!m_bookSet.IsEOF()) { //将结果集中的每一本书的书名添加到查询结果列表中 m_list
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 燃气报警器安装及校验方案
- 原发性淋巴水肿皮肤日常防护方案共识
- 狼疮肾炎蛋白尿长期随访监测方案共识
- PayPal专业考核试题及详细参考答案
- 新生儿无创通气鼻部敷料更换周期标准共识
- 重症脓毒症器官功能支持指南(2026版)
- 预制构件防腐保护施工工规程
- 宠物过敏人群室内环境管控专家共识(2026版)
- 2026年大学《自动控制原理》试题及答案
- 次品返工处理方案
- ISO 22000-2018 食品安全管理体系要求培训课件
- 护患沟通人文关怀课件
- 大学转学协议书
- T-CITS 256-2025 分子检测实验室核酸去污染技术规范
- 菜鸟驿转让合同协议书
- 北京市住宅物业服务标准(三级)
- 特殊教育学校家长培训
- 2025年医学实验室质量控制知识试题及答案
- 多发骨折伴失血性休克的护理
- 教师法制安全知识培训课件
- (人教2024版PEP)英语一年级上册Unit 1单元测试(含答案+听力音频)
评论
0/150
提交评论