




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、医院药品管理系统目 录一、项目开发文档(1)1 项目需求分析(1)2 概要设计(6)3 详细设计(7)4 项目文档清单(13)5 项目命名约定(13)6 项目测试(13)二、项目开发进度(14)三、项目成果软件(15)四、软件安装使用说明(21)五、项目总结(24)附录1 项目成果软件代码(25)一、项目开发文档1 项目需求分析1.1 项目目标医院单位的药品信息和数据纷乱复杂,整理统计费力费时。要做好对医院药品的管理,医院就必须快速准确地获取药品的信息,这就要求及时统计数据并方便查看,以及对药品的数据信息进行维护。本软件是利用NetBeans 5.5设计开发的医院药品信息管理系统,是医院信息系
2、统的一个重要组成部分,可实现对医院药品信息的分类管理和数据分析,从而使信息整理快速、准确、简单,以便于相关部门给予统筹安排,从而提高改进传统的管理方法,提高医院药品管理水平。特点:多目标性:对一个项目而言,项目目标往往不是单一的,而是一个多目标系统,希望通过一个项目的实施,实现一系列的目标,满足多方面的需求。我们本次的项目是为了实现医院药品管理员可以简单的管理药品。在简单的层次上又有效科学的管理药品入库、出库等。优先性:项目是一个多目标的系统,不同目标在项目的不同阶段,根据不同需要,其重要性也不一样。本项目主要目标是可以对库存的药品入库日期、出库日期、有效期、库存量等方面信息进行增删该查。对有
3、药品库存不足时会对医院药品管理员提示。层次性:本项目的最高层次的目标是医院药品管理员可以简单科学的管理药品。本项目的最低层次的目标是医院药品管理员可以对所有的药品信息增加、删除、修改、查询。1.2 功能描述医院药品平时储存在库房,由库房为医院进药。医院销售药品由药房管理,药房药品不足是可以向库房申请补足。库房:1、药品入库:根据供货单输入入库药品属性及数量等,入库同时修改相应药品的库存数量,打印入库单。2、药品出库:主要是往各药房发药,包括退还给药品供应商,同时打印药品出库单。3、药品调价:调整药品的现行售价,包括批发价、零售价。药库进行价格调整后,各药房立即执行调整后的价格,同时打印调价单。
4、4、药品盘点:对库存药品进行盘点,打印盘点标表,盘点后打印盈亏单。5、药品报损:对药品损失进行报损,记录报损原因,报损批准人,打印报损单。6、药品调拨:库房间药品相互调拨。7、与药品供应商结帐:根据入库药品的入库价与数量同药品供应商进行结帐。8、统计查询:对现存药品、短缺、积压药品、药品出库情况等进行查询,打印查询结果;生成采购计划。9、信息维护:药品特征维护、药房信息维护、供货单位维护、药品目录维护。药房:1、药品需求申请:统计出低于限定库存数量的药品,发出需求药品申请,打印药品需求申请单。2、医嘱处方发药:每天根据住院病房医生开的处方,打印发药单,进行发药,减少药房相应药品的库存数量。3、
5、其它情况发药:临时取药、急诊取药、打印发药单,进行发药,减少药房相应药品的库存数量。4、药品盘存:对药房药品进行盘点,打印盘点标表,盘点后打印盈亏单。5、药品报损:对药品损失进行报损,记录报损原因,报损批准人,打印报损单。6、药品调拨:医院各药房间药品的相互调拨。7、门诊发药:输入病人就诊号或处方号可调出处方、打印处方。8、统计查询:查询药品情况、短缺药品、医生用药情况,打印查询结果。1.3可行性分析1.系统可行性:随着计算机的普及,人们对计算机的认识及需求有了明显的增加。计算机对于大量信息的管理的优势更是显而易见。对于一个只要企业来说,这方面的需要尤其重要。有了这个药品库存管理系统,管理员的
6、工作任务就可能会事半功倍。 药品管理是医院药品管理的核心,是节流增收最有潜力的环节。本药库管理系统是按照卫生部新的财务制度的要求设计的,采用药品分类国家标准编码体系,实现了发药与库存管理一体化。支持药品多种规格的变换,加权平均等多种仓库管理模式。支持药品有效期管理,防止药物的过期浪费,可以根据现有的库存、药品有效期以及往年同期的药品消耗情况制定采购计划、失效预报或应暂停采购的药品清单,方便领导决策。本系统主要有以下几个功能模块:(1)系统登录模块,登录系统。(2)系统设置模块,管理系统用户及密码。(3)基本信息管理模块,录入药品基本信息,供货商及客户的相关信息。(4)药品管理模块,库存药品信息
7、,药品的报损。(5)其他信息管理模块,流通资金,业务员管理,数据备份,数据库初值。有了这个药品库存管理系统,管理员的工作任务就可能会事半功倍。在本系统的可行性分析过程中,通过调查分析医院药品库存管理所具备的能力及实现的方法。确定总体结构,利用SQL Server数据库所具有的能力,以最简洁最容易的方法,对药品名称、编码、种类等属性进行增加、修改、删除、查询。使用Java/JSP应用程序编程,还可以清晰的看到入库出库信息,这有利于医院药品管理员有效的对药品仓库的管理。药品管理系统的规模、设备状况、维护和修改系统程序,都需要相关的操作人员。2.技术可行性药品管理系统采用MVC模式,MVC英文即Mo
8、del-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层模型层、视图层、控制层。系统是由网络和网页实现的。所以本系统使用Java技术编程,应用界面友好且功能强大的DREAMWEAVER作为开发工具,服务器端脚本用JSP/JAVA脚本来编写,客户端脚本也用Java来编写,数据库使用SQL Server 20005 数据库,服务器是TOMCAT 5.0 。使用 Struts,会话管理,过滤器以及数据库集成技术,构建健壮的Web应用程序。使用Java Server Pages技术(JSP页面)编写
9、网页。使用Model2设计良好的Web应用程序能够容易的移植到复杂的J2EE架构。通过MVC模式编写的,具有极其良好的可扩展性。它可以轻松实现以下功能:实现一个模型的多个视图;采用多个控制器;当模型改变时,所有视图将自动刷新;所有的控制器将相互独立工作。本团队在大学的学习中,已经学过这几门语言。热爱计算机科学,有一种奋发向上刻苦钻研的精神,经过大学两年的学习,这些课程已熟练掌握,本系统是在学校开发,遇到问题可以与同学一起研究,再加上导师的指导。因此在技术上能够适应本系统的开发。3.使用可行性本系统主要是对制药公司的药品库存的管理,能够及时的登录存入的药品和减少销售药品的数量;能够对每一种药品的
10、各种信息进行汇总,比如药品编号、药品名、生产日期、过期日期、主要订购商等等;并且能提供对药品各种信息的查询; 对生产和销售的药品每月月底做一个汇总,同时对每月的盈利情况进行汇总;当药品的存储数量低于某一数量的时候,系统要能自动提示管理员该药品该再进货(生产)了;同时当某一种药品的数量超过了某一数值的时候管理系统又能自动提示管理员该暂时减少或者停止该药的进货(生产)量;对已经过期的药品应该注销,同时提醒管理员销毁或者处理该药品。本项目开发在技术方面采用Java/JSP应用程序编程与数据库相结合方法来实现。要求所有数据信息的储存都由数据库来完成。使用到局域网连接技术、JSP/NetBean 5.5
11、开发技术、SQL Server2005服务器端的T-SQL语言数据库开发技术,这些都是非常成熟的技术。本系统采用先进的开发技术,开发的程序具有WINDOWS图形用户界面,和WINDOWS特性风格,界面直观易懂,操作简洁,使用非常方便。1.4 运行环境CPU奔腾 1.4G或以上内存512M或以上硬盘80GB或以上服务器端OSWindows 2000/NT/Server客户端OSWindows 2000/XP网络配置局域网2 概要设计报告碎着计算机的普及,人们对计算机的认识及需求有了明显的增加。计算机对于大量信息的管理的优势更是显而易见。对于一个只要企业来说,这方面的需要尤其重要。有了这个药品库存
12、管理系统,管理员的工作任务就可能会事半功倍。根据目标、功能描述、数据流程图的分析和系统的初步方案,新系统目标应设置为:及时接收新药品的信息;查询每种药品的库存情况;药品库存不足时及时提醒;库存药品过期及时上报销毁或退还给原厂商等功能。接口设计由于各模块功能单一,所以上层模块与下层模块之间存在调用与返回的关系,同层模块之间没有联系。v3 详细设计报告3.1 E-R图3.2 表结构1. Medicine(药品)表字段类型约束说明CodeCHAR(30)PRIMARY KEY,编码NnameVARCHAR(30)Not null名字AddressVARCHAR(20)Not null地址Manufa
13、cturing_DateVARCHAR(10)Not null截至日期DatelineVARCHAR(10)Not null出厂日期PriceINTNot null价格NumberINTNot null数量2.Input(入库)表 字段类型约束说明aCodeCHAR(30)PRIMARY KEY编码PriceINTNot null价格AmountINTNot null数量DatalineVARCHAR(10)Not null出厂日期3. Output(出库)表字段类型约束说明CodingCHAR(30)PRIMARY KEY编码OriginalpirceINTNot null进价dDateli
14、neVARCHAR(10)Not null出厂日期PriceINTNot null价格AmountINTNot null数量4.UserBase(用户)表字段类型约束说明UsernameVARCHAR(10)Not null用户名PasswordVARCHAR(10)Not null密码DivisionVARCHAR(30)Not null角色3.3 用例图3.4 分析模型管理员管理系统流程图:库存在医院管理模式流程图:药品在医院内部流动流程图:类名 Input私有成员变量aCode CHAR(30)Price intAmount intDataline VARCHAR(10)公有成员函数3.
15、5 类图类名Output私有成员变量Coding CHAR(30)Originalpirce intdDateline VARCHAR(10)Price int Amount int公有成员函数类名medicine私有成员变量Code char(30)Name varchar(30)Address varchar(20)Manufacturing_Data varchar(30)Dateline varchar(30)公有成员函数类名UserBase私有成员变量username VARCHAR(10) password VARCHAR(10) division VARCHAR(30) 公有成员
16、函数4 项目文档清单文件名项目名称model. Medical. Javamodel. MedicalDAO.javamodel. MedicalService.javamodel .ObjectIdDAO.javamodel.ObjectNotFoundException.javamodel. User.javamodel. UserDAO.javamodel. UserService.javamodel中定义属性代码model中连接数据库DAO代码model中服务类代码model中连接数据库DAO代码model中出现异常代码model中用户定义属性代码model中用户连接数据库DAO代码m
17、odel中用户服务类代码controller.AddyaopinAction.javacontroller.ChaxunYaopinAction1.javacontroller.DeleteYaopinAction.javacontroller.LoginServlet.javacontroller.Udate_yaopin.javacontroller中增加映射类代码controller中查询映射类代码controller中删除映射类代码controller中登陆映射类代码controller中修改映射类代码view. AddyaopinForm.javaview.ChaxunyaopinA
18、ctionForm1.javaview.DeleteYaopinActionForm.javaview中增加表单验证代码view中查询表单验证代码view中删除表单验证代码N0705第2组医院药品管理系统.doc Login.jsp yaopin.jsp UpdateMed.jsp delect_yaopin.jsp项目文档登陆片段显示药品片段修改药品片段删除药品片段5 项目命名约定类名:大写字母开头 如:Medical类属性:采用匈牙利命名法(即第一个字母小写并表明数据类型)如:name类方法:每个单词均为大写字母开头 如:getCode()变量:采用匈牙利命名法(即第一个字母小写并表明数据
19、类型) 如:Code环境变量:全部大写 如:Medicine6 项目测试测试内容预计实际改善情况登陆测试登陆模块测试失败重新连接数据库更新测试更新模块测试失败路径重新更改增加测试增加模块测试成功 显示测试显示模块测试成功 删除测试删除模块测试成功二、项目开发进度2009-4-13拿到项目题目,对项目进行分析.项目分工,上网或者在书上查找需要的资料.2009-4-14分派2个组员开始撰写文档.开始构建登入框.建立项目所需的数据库.2009-4-15组员继续撰写文档.登入框构建接近尾声,开始对登入框进行美化.2009-4-16上网查找文档所需的资料,开始画E-R图、用例图、类图等.登入框的构建和美
20、化结束.2009-4-17开始撰写概要设计报告和分析模型.对以构建好的登入框进行最后的修改.2009-4-18休息2009-4-19休息2009-4-20对上星期所写的文档进行修改,对文档中不足之处继续补充.开始制作内部网页,如:不能实现功能的静态页面.2009-4-21对文档在次修改,添加一些新的图.对原有的图修改.继续制作静态页面.2009-4-22在文档中添写一些新的内容.静态页面制作结束.2009-4-23开始撰写项目成果、安装说明前几步.开始制作增删该查功能.2009-4-24文档修改.增删该查功能继续进行制作.2009-4-25休息2009-4-26休息2009-4-27文档修改.
21、增删该查功能继续进行制作.2009-4-28文档修改.增删该查功能继续进行制作.2009-4-29文档修改.增删该查功能继续进行制作.2009-4-30文档修改.增删该查功能继续进行制作.2009-5-1休息2009-5-2休息2009-5-3休息2009-5-4交文档和项目.三、项目成果软件a.登陆界面b.进入用户操作界面 1显示所有药品 2.增加药品 3.更新药品 4.删除药品 c. 静态页面1. 认识药品 2.系统介绍 3.技术可行性 4.药品流程5.药房介绍 四、项目安装说明第一步打开SQL2005,建立数据库。进入SQL。第二步打开文件夹Medicines.sql第三步打开NetBe
22、ans 5.5第四步打开项目第五步运行项目五、项目总结不知不觉,三个星期的设计结束了。在这三个星期的设计,让我们受益非浅。自我们学计算机专业以来,始终认为一个完整的程序就相当于一个优秀的软件产品,只要程序编得精致、具体、详细,所开发的软件就绝对完美、实用。在这次设计药品管理系统中,我们组所有的成员都齐心制作。刚开始设计时遇到了一些困难,因为学过的NetBeans 5.5已经有些忘了,再加上自己还要上课和写毕业论文,时间的安排上也很紧迫,编程的进度比较缓慢。在设计中还会遇到一些功能不知该如何实现的困难,在两位老师的热情帮助下,我们渐渐的复习了NetBeans 5.5控件的使用方法、NetBean
23、s 5.5的编程语法,之后的编程过程也相对得心应手,基本完成了预期计划的要求。但是系统功能还没有完全完善,有待进一步加强。通过这次毕业设计,我们进一步加深对基础理论的理解,扩大专业知识面,对收集资料、查阅文献、方案制定等实践方面得到了很好的锻练,促进对所学知识应用能力的提高。同时,发现问题、分析归纳、综合比较的逻辑分析能力、处理问题等能力也得到了提高。但是在这次毕业设计过程中,还是发现了自己很多不足之处,也遇到了许多问题和困难,而这些困难大多是三年中不注重自己系统学习,学有所用造成的,这让我认识到系统的学习和锻炼的重要性,基础知识掌握不仅要多,而且要会运用它,那样的话设计才会更全面、更顺利、更
24、完美。 附录1 项目成果软件代码1 Model代码package Medicine.model;public class Medical String code; String name; String address; String date; String dateline; int price; int number; int inventory; public Medical(String code,String name,String address,String date,String dateline,int price,int inventory,int number) thi
25、s.code=code; =name; this.address=address; this.number=number; this.dateline=dateline; this.date=date; this.price=price; this.inventory=inventory; public String getCode() return code; public void setCode(String code) this.code = code; public String getName() return name; public void setName(String na
26、me) = name; public String getAddress() return address; public void setAddress(String address) this.address = address; public int getNumber() return number; public void setNumber(int number) this.number = number; public String getDateline() return dateline; public void setDateline(String dateline) th
27、is.dateline = dateline; public String getDate() return date; public void setDate(String Date) this.date = date; public int getPrice() return price; public void setPrice(int price) this.price=price; public int getInventory() return inventory; public void setInventory(int inventory) this.inventory = i
28、nventory; public boolean equals(Object o) boolean result = false; if ( o instanceof Medical ) Medical l = (Medical) o; result = (this.code = l.code); return result; public int hashCode() Integer OID = new Integer(code); return OID.hashCode(); package Medicine.model;import java.sql.Connection;import
29、java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import javax.sql.DataSource;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import java.util.List;import java.util.LinkedList;import java.lang.*;public class MedicalDA
30、O public MedicalDAO() List retrieveAll() DataSource ds = null; Connection connection = null; PreparedStatement stmt = null; ResultSet results = null; List medicinesList = new LinkedList(); Medical yaopin = null; try Context ctx = new InitialContext(); if ( ctx = null ) throw new RuntimeException(JND
31、I Context could not be found.); ds = (DataSource)ctx.lookup(java:comp/env/jdbc/MedicinesDB); if ( ds = null ) throw new RuntimeException(DataSource could not be found.); connection = ds.getConnection(); stmt = connection.prepareStatement(RETRIEVE_ALL_STMT); results = stmt.executeQuery(); while ( res
32、ults.next() ) String code = results.getString(code); /int code=Integer.parseInt(code1); yaopin = new Medical(code, results.getString(Nname), results.getString(Address), results.getString(Manufacturing_Date), results.getString(Dateline), results.getInt(Price), results.getInt(Inventory), results.getIn
33、t(Number) ); medicinesList.add( yaopin); return medicinesList; catch (SQLException se) throw new RuntimeException(A database error occured. + se.getMessage(); catch (NamingException ne) throw new RuntimeException(A JNDI error occured. + ne.getMessage(); finally if ( results != null ) try results.clo
34、se(); catch (SQLException se) se.printStackTrace(System.err); if ( stmt != null ) try stmt.close(); catch (SQLException se) se.printStackTrace(System.err); if ( connection != null ) try connection.close(); catch (Exception e) e.printStackTrace(System.err); private static final String RETRIEVE_ALL_ST
35、MT = SELECT * FROM medicine; void insert(Medical yaopin) throws Exception DataSource ds = null; Connection connection = null; PreparedStatement insert_stmt = null; try Context ctx = new InitialContext(); if ( ctx = null ) throw new RuntimeException(JNDI Context could not be found.); ds = (DataSource
36、)ctx.lookup(java:comp/env/jdbc/MedicinesDB); if ( ds = null ) throw new RuntimeException(DataSource could not be found.); connection = ds.getConnection(); insert_stmt = connection.prepareStatement(INSERT_STMT); int yaopin_id =ObjectIdDAO.getNextObjectID(ObjectIdDAO.YAOPIN, connection); String yaopin
37、ID=String.valueOf(yaopin_id); insert_stmt.setString(1, yaopinID); insert_stmt.setString(2,new Strin.getBytes(ISO8859-1); insert_stmt.setString(3,new String(yaopin.address.getBytes(ISO8859-1); insert_stmt.setString(4,new String(yaopin.date.getBytes(ISO8859-1); insert_stmt.setString(5,new String(yaopi
38、n.dateline.getBytes(ISO8859-1); insert_stmt.setInt(6,yaopin.price); insert_stmt.setInt(7,yaopin.inventory); insert_stmt.setInt(8,yaopin.number); insert_stmt.executeUpdate(); yaopin.code = yaopinID; catch (SQLException se) throw new RuntimeException(A database error occured. + se.getMessage(); catch
39、(NamingException ne) throw new RuntimeException(A JNDI error occured. + ne.getMessage(); finally if ( insert_stmt != null ) try insert_stmt.close(); catch (SQLException se) se.printStackTrace(System.err); if ( connection != null ) try connection.close(); catch (Exception e) e.printStackTrace(System.
40、err); private static final String INSERT_STMT = INSERT INTO medicine (Code, Nname, Address,Manufacturing_Date,Dateline,Price,Inventory,Number) + VALUES (?, ?, ?, ?, ?, ?, ?, ?); void update(Medical yaopin) throws Exception DataSource ds = null; Connection connection = null; PreparedStatement updata_
41、stmt = null; try Context ctx = new InitialContext(); if ( ctx = null ) throw new RuntimeException(JNDI Context could not be found.); ds = (DataSource)ctx.lookup(java:comp/env/jdbc/MedicinesDB); if ( ds = null ) throw new RuntimeException(DataSource could not be found.); connection = ds.getConnection
42、(); updata_stmt = connection.prepareStatement(UPDATA_STMT); updata_stmt.setString(8, yaopin.code); updata_stmt.setString(1, new Strin.getBytes(ISO8859-1); updata_stmt.setString(2, new String(yaopin.address.getBytes(ISO8859-1); updata_stmt.setString(3, new String(yaopin.date.getBytes(ISO8859-1); upda
43、ta_stmt.setString(4, new String(yaopin.dateline.getBytes(ISO8859-1); updata_stmt.setInt(5,yaopin. price); updata_stmt.setInt(6,yaopin. number); updata_stmt.setInt(7,yaopin. inventory); updata_stmt.executeUpdate(); catch (SQLException se) throw new RuntimeException(A database error occured. + se.getM
44、essage(); catch (NamingException ne) throw new RuntimeException(A JNDI error occured. + ne.getMessage(); finally if ( updata_stmt != null ) try updata_stmt.close(); catch (SQLException se) se.printStackTrace(System.err); if ( connection != null ) try connection.close(); catch (Exception e) e.printSt
45、ackTrace(System.err); private static final String UPDATA_STMT = UPDATE medicine SET Nname=?, Address =?,Manufacturing_Date=?,Dateline =?,Price=?,Inventory =?,Number=? WHERE Code =?;Medical retrieveLID(String Code) throws ObjectNotFoundException DataSource ds = null; Connection connection = null; Pre
46、paredStatement stmt = null; ResultSet results = null; Medical yaopin = null; try Context ctx = new InitialContext(); if ( ctx = null ) throw new RuntimeException(JNDI Context could not be found.); ds = (DataSource)ctx.lookup(java:comp/env/jdbc/MedicinesDB); if ( ds = null ) throw new RuntimeExceptio
47、n(DataSource could not be found.); connection = ds.getConnection(); stmt = connection.prepareStatement(RETRIEVE1_STMT); stmt.setString(1, Code.trim(); results = stmt.executeQuery(); while ( results.next() ) String code = results.getString(Code); yaopin = new Medical(code, results.getString(Nname), results.getString(Address), results.getString(Manufacturing_Date), results.getString(Dateli
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 证券经纪业务合规文化建设考核试卷
- 硅冶炼厂的安全文化建设考核试卷
- 质检技术在电子产品销售中的应用考核试卷
- 矿山企业经营管理考核试卷
- 电子运动数据分析平台市场前景预测考核试卷
- 电力设备绝缘性能检测与评估方法考核试卷
- 跨国婚姻与家庭法律问题考核试卷
- 谷物磨制企业产品创新与研发管理考核试卷
- 聚吡咯烷酮纤维制造考核试卷
- 校园食品安全培训
- 2025-2030中国无损检测(NDT)行业发展现状与前景预测研究报告
- 现代农业产业园协议合同
- GB/T 196-2025普通螺纹基本尺寸
- 城市社区多元主体协同治理的体系构建研究
- 2024-2025学年陕旅版(三起)小学英语五年级下册(全册)知识点归纳
- 《一榀框架的结构计算和设计21000字(论文)》
- 应急预案定期评估制度
- 《C语言程序设计》教学设计 项目八北京冬奥会奖牌榜指针
- 土地房屋测绘项目投标方案技术标
- 巡视巡察课件2025
- 湖北省武汉市江岸区2024-2025学年上学期元调九年级化学试题(含标答)
评论
0/150
提交评论