版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计说明书课程名称:Java程序设计课程设计设计项目:产品销售管理系统学生姓名:学号:专 业:软件工程班 级:指导教师:2017 年2 月、任务与具体要求建立数据库:产品库(产品 ID、名称、规格等),销售 员库(销售员ID、姓名、性别、电话等),销售记录库(销 售日期、销售产品ID、售由数量、单价、销售员 ID等)。实现对销售数据的输入、查询、修改与维护(例如操作员管理、数据备份等)等功能。二、设计说明书包括的内容需求分析、系统功能结构、软硬件环境、开发工具、数据库结构设计、各个功能模块的详细实现方法、系统测试数据与结果、设计体会、参考文献等三、应完成的图纸系统功能结构框架图、 各功能模
2、块窗口界面图、 算法流程图、 测试结果图等四、评语及成绩指导教师(签字)年 月 日目录1问题概述 12系统需求分析 13系统概要设计 13.1 系统的主要功能 13.2 系统的总体结构 23.3 系统软硬件环境 33.4 数据结构设计 34系统的详细设计 34.1 添加客户信息记录 34.2 显示客户信息记录 54.3 删除客户信息记录 55系统测试及调试 56结束语 67参考文献 78附录 71 问题概述设计一个产品销售管理系统,以解决传统产品信息管理方式的 诸多不便和弊端。2系统需求分析在客户的日常管理中,经常需要对产品的相关信息进行处理, 采用 传统的手工记录,查询方式,显然有很多不便,
3、如多次的增、删、改 可能使记录变得混乱,为今后的信息提取带来很多麻烦。为了解决这 问题,可采用现代化的手段一一计算机进行系统的管理。这样可大 大提高管理的质量和效率,并且使客户的日常管理也从手工操作中解 脱出来,减少纸制材料的数量,对日常信息的查询、方便、快捷。因 此,基于这些方面的考虑,决定开发本系统。3系统概要设计3.1 系统的主要功能系统的主要功能是实现基本的客户的数据管理和维护。主要包括:(1)添加:添加产品信息记录(2)显示:显示产品信息记录(3)删除:删除产品信息记录(4)查询:查询产品信息记录(5)修改:修改产品信息记录6) 保存:将产品保存到数据库3.2 系统的总体结构产品数据
4、库管理:显示全部产品信息:将全部的产品信息打印出来添加产品记录信息:添加新的产品记录信息更新产品记录信息:将已经添加的产品信息进行更新删除产品记录信息:将已经添加的产品记录删除销售员数据库管理:显示全部销售员息:将全部的产品信息打印出来查询销售员信息:通过ID 查询销售员并将其信息打印出来添加销售员记录信息:添加新的销售员信息更新销售员记录信息:将已经添加的销售员信息进行更新删除销售员记录信息:将已经添加的销售员记录删除销售记录数据库管理:显示全部销售记录信息:将全部的销售记录信息打印出来查询销售记录信息:查询销售记录并将其信息打印出来添加销售记录信息:添加新的销售记录信息更新销售记录信息:将
5、已经添加的销售记录信息进行更新删除销售记录信息:将已经添加的销售记录删除3.3 系统软硬件环境本程序所适用的计算机系统软硬件环境要求为:硬件环境: Pentium?III?500以上 内存: 256M?软件环境: Windows XP? 及以上3.4 数据结构设计客户信息数据结构类型如下:销售记录包括销售日期、销售产品ID、 售出数量、单价、 销售员ID,salesDate ;productID salesVolumessalesPricesalesID ;定义方式如下:privateStringprivateIntegerprivateStringprivateStringprivateIn
6、teger产品信息包括产品ID、名称、规格,定义方式如下:private int productID ;privateStringproductName ;privateStringproductSpecifications;销售员信息包括销售员ID、姓名、性别、电话,定义方式如下:private int salespersonID ;private String salespersonName ;private int salespersonPhone ;4 系统的详细设计首先声明了三个类分别存储三种不同的数据库的信息如下,再通 过一系列对数据库的操作实现对数据的增、删、改、查。4.1 产品
7、信息管理功能实现:通过使用SQL语句对数据库的操作进行对产品信息的管理代码实现:package ProductSystemOne;import java.sql.*;import java.util.*;/ 对产品的Daopublic class ProductDao / 对产品库的查询操作;public List query() throws SQLExceptionConnection conn=DBUtil.getConnection();/ 链接数据库Statement stmt=conn.createStatement();String sql=select * from produ
8、ctdate;ResultSet rs=stmt.executeQuery(sql);List productList=new ArrayList();ProductDate productDate=null;while(rs.next()productDate=new ProductDate();productDate.setProductID(rs.getInt(ProductID);productDate.setProductName(rs.getString(productName);productDate.setProductSpecifications(rs.getString(p
9、roductSpecifica tions);productList.add(productDate);return productList;/ 对产品库进行ID 查询public List queryEvery( int PID) throws SQLExceptionConnection conn=DBUtil.getConnection();/ 链接数据库String sql=select * from productdate where productID=?;PreparedStatement pst=conn.prepareStatement(sql);pst.setInt(1,
10、PID);ResultSet rs=pst.executeQuery();List productList=new ArrayList();ProductDate productDate=null;while(rs.next()productDate=new ProductDate();productDate.setProductID(rs.getInt(ProductID);productDate.setProductName(rs.getString(productName);productDate.setProductSpecifications(rs.getString(product
11、Specifica tions);productList.add(productDate);return productList;public void addProduct(int PID,String PNAME,String PSPECIFICATIONS)throws SQLException/ 对数据库的添加操作Connection conn=DBUtil.getConnection();/ 链接数据库String sql=insert into productdate values ( ?,?,?);PreparedStatement pst=conn.prepareStateme
12、nt(sql);pst.setInt(1, PID);pst.setString(2, PNAME);pst.setString(3, PSPECIFICATIONS);pst.executeUpdate();输入你要更新产品的ID,进行修改你的产品信息public void updateProduct(int PID,String PNAME,String PSPECIFICATIONS) throws SQLException/ 更新Connection conn=DBUtil.getConnection();/ 链接数据库String sql=update productdate set
13、 productName=? , productSpecifications=? where productID=?;PreparedStatement pst=conn.prepareStatement(sql);pst.setString(1, PNAME);pst.setString(2, PSPECIFICATIONS);pst.setInt(3, PID);pst.executeUpdate();/ 输入你要删除的产品的ID 进行删除操作public void delProduct(int PID) throws SQLException/删除Connection conn=DBUt
14、il.getConnection();/ 链接数据库String sql=delete from productdate where productID=?;PreparedStatement pst=conn.prepareStatement(sql);pst.setInt(1, PID);pst.executeUpdate();4.2 销售员信息管理功能实现:通过使用SQL语句对数据库的操作进行对销售员信息的管代码实现:package ProductSystemOne;public class SalespersonDateDao / 对产品库的查询操作;public List query
15、() throws SQLExceptionConnection conn=DBUtil.getConnection();/ 链接数据库Statement stmt=conn.createStatement();String sql=select * from salespersondate;ResultSet rs=stmt.executeQuery(sql);List saleSpersonList=new ArrayList();SalespersonDate saleSpersonDate=null;while(rs.next()saleSpersonDate=new Salesper
16、sonDate();saleSpersonDate.setSalespersonID(rs.getInt(salespersonID);saleSpersonDate.setSalespersonName(rs.getString(salespersonName) ;saleSpersonDate.setSalespersonPhone(rs.getInt(salespersonPhone); saleSpersonList.add(saleSpersonDate);return saleSpersonList;/ 对产品库进行ID 查询public List queryEvery( int
17、SID) throws SQLExceptionConnection conn=DBUtil.getConnection();/ 链接数据库whereString sql=select * from salespersondate salespersonID=?;PreparedStatement pst=conn.prepareStatement(sql);pst.setInt(1, SID);ResultSet rs=pst.executeQuery();List saleSpersonList=new ArrayList();SalespersonDate saleSpersonDate
18、=null;while(rs.next()saleSpersonDate=new SalespersonDate();saleSpersonDate.setSalespersonID(rs.getInt(salespersonID);saleSpersonDate.setSalespersonName(rs.getString(salespersonName) ;saleSpersonDate.setSalespersonPhone(rs.getInt(salespersonPhone);saleSpersonList.add(saleSpersonDate);return saleSpers
19、onList;/ 对销售员库的添加public void addSaleperson(int SID,String SNAME,int SPHONEt)hrows SQLException/ 对数据库的添加操作Connection conn=DBUtil.getConnection();/ 链接数据库String sql=insert into salespersondate values ( ?,?,?);PreparedStatement pst=conn.prepareStatement(sql);pst.setInt(1, SID);pst.setString(2, SNAME);ps
20、t.setInt(3, SPHONE);pst.executeUpdate();输入你要更新销售员的ID,进行修改你的产品信息public void updateSalesperson(int SID,String SNAME,int SPHONE) throws SQLException/ 更新Connection conn=DBUtil.getConnection();/ 链接数据库Stringsql=updatesalespersondatesetsalespersonName=? ,salespersonPhone=? where salespersonID=?;PreparedSta
21、tement pst=conn.prepareStatement(sql);pst.setString(1, SNAME);pst.setInt(2, SPHONE);pst.setInt(3, SID);pst.executeUpdate();/ 输入你要删除的销售员的ID 进行删除操作public void delProduct(int SID) throws SQLException/删除Connection conn=DBUtil.getConnection();/ 链接数据库String sql=delete from salespersondate where salesperso
22、nID=?;PreparedStatement pst=conn.prepareStatement(sql);pst.setInt(1, SID);pst.executeUpdate();4.3 销售记录信息管理管理代码实现:package ProductSystemOne;import java.sql.*;import java.util.*;public class SoldNoteDateDao public List query() throws SQLExceptionConnection conn=DBUtil.getConnection();/链接数据库Statement st
23、mt =conn.createStatement();String sql=select * from soldnotedate ;ResultSet rs=stmt.executeQuery(sql);List soldNoteList=new ArrayList();SoldNoteDate soldNoteDate=null;while(rs.next()soldNoteDate =new SoldNoteDate();soldNoteDate.setSalesDate(rs.getString(salesDate);soldNoteDate.setSalesID(rs.getInt(s
24、alesID);soldNoteDate.setSalesPrice(rs.getString(salesPrice);soldNoteDate.setSalesVolumes(rs.getString(salesVolumes);soldNoteDate.setProductID(rs.getInt(productID);soldNoteList.add(soldNoteDate);return soldNoteList;public List queryEvery(int SID) throws SQLExceptionConnection conn=DBUtil.getConnectio
25、n();String sql=select * from soldnotedate where salesID=? ;PreparedStatement pst=conn.prepareStatement(sql);pst.setInt(1, SID);ResultSet rs=pst.executeQuery();List soldNoteList=new ArrayList();SoldNoteDate soldNoteDate=null;while(rs.next()soldNoteDate =new SoldNoteDate();soldNoteDate.setSalesDate(rs
26、.getString(salesDate);soldNoteDate.setProductID(rs.getInt(productID);soldNoteDate.setSalesID(rs.getInt(salesID);soldNoteDate.setSalesPrice(rs.getString(salesPrice);soldNoteDate.setSalesVolumes(rs.getString(salesVolumes);soldNoteList.add(soldNoteDate);return soldNoteList;/ 售出产品public void sell(int SA
27、LESID,String salesPrice,String salesVolumes,int salesDate,int PID) throws SQLExceptionConnection conn=DBUtil.getConnection();String sql=insert into soldnotedate values ( ?,?,?,?,?) ;PreparedStatement pst=conn.prepareStatement(sql);pst.setInt(1, SALESID);pst.setString(2, salesVolumes);pst.setString(3
28、, salesPrice);pst.setInt(4,salesDate);pst.setInt(5, PID);pst.executeUpdate();/ 更新销售数据的销售员信息public void updateSalesperson(int PID,int SALESID) throws SQLExceptionConnection conn=DBUtil.getConnection();String sql=update soldnotedate set salesID=? where productID=? ;PreparedStatement pst=conn.prepareSt
29、atement(sql);pst.setInt(1, SALESID);pst.setInt(2, PID);pst.executeUpdate();/ 删除销售数据的信息public void deleSalesDate(int PID) throws SQLExceptionConnection conn=DBUtil.getConnection();String sql=delete from soldnotedate where productID=?;PreparedStatement pst=conn.prepareStatement(sql);pst.setInt(1, PID)
30、;pst.executeUpdate();5 系统测试及调试5.1 产品信息管理1. 进入主菜单后,输入“1”进入产品信息管理界面如下图2. 在产品信息管理菜单下,输入“1”显示所有的产品信息如下图3. 在产品信息管理菜单下,输入“2”和产品的ID 进行产品信息查询如下图:4. 在产品信息管理菜单下,输入“3”和相关信息进行对产品信息的修改如下图:操作如下图6. 在产品信息管理菜单下,输入“5”和ID 进行对产品信息的删除如下图5.2 销售员信息管理1. 在主菜单下,输入“2”进入销售员信息管理菜单2. 在销售员信息管理菜单下,输入“3. 在销售员信息管理菜单下,输入“询如下图:4. 在销售员
31、信息管理菜单下,输入“的修改如下图:5. 在销售员信息管理菜单下,输入“的添加如下图:6. 在销售员信息管理菜单下,输入“的修改如下图:5.3 产品记录信息管理1 ”显示全部销售员信息如下图:2”和ID 进行对销售员信息的查3”和相关信息进行对销售员信息4”和相关信息进行对销售员信息5”和相关信息进行对销售员信息1. 在主菜单下,输入“3”进入销售记录信息管理菜单2. 在销售记录信息管理菜单下,3. 在销售记录信息管理菜单下,输入“输入 “ 1” 显示全部销售记录信息如下:2”和相关信息添加销售记录信息如下图:4. 在销售记录信息管理菜单下,输入“3”和相关信息更新销售记录信息如下图:5.在销
32、售记录信息管理菜单下,输入“ 4”和相关信息更新销售记录信 息如下图:6结束语本次操作实训虽然很辛苦,但实在是受益匪浅。在操作实训过程 中碰到了很多问题,刚开始的时候,还真不知道从哪里下手。但最终 在图书、同学和老师的帮助下都得到了解决,让我学会了好多书本上 没有的东西,通过本次操作实训我也能将课本上的知识融会贯通,起 到了很好的辅助学习的效果,但是我发现我学到的知识比整整一个学 期学到的都多。理论和实践的相结合是学习最有效的方法。在实验的 过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻, 掌握得不够牢固,这次操作实训之后,一定把以前所学过的知识重新 温故。通过这次操作实训使我懂
33、得了理论与实际相结合是很重要的,只 有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来, 从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手 能力和独立思考的能力。最后,要感谢学校为我们提供这次实验机会,也要感谢老师的教 导,帮助与支持。7参考文献书?名Java编程思想(第4版)作?者 Bruce Eckel出版社机械工业出版社出版时间2007年6月1日8附录主要代码:AddProductDateSystemAction.javapackage ProductSystemOne;public class AddProductDateSystemAction public A
34、ddProductDateSystemAction。ProductDao productDao=new ProductDao();Scanner sc=new Scanner(System.in);int PID=sc.nextInt();String PNAME=sc.next();String PSPECIFICATIONS=sc.next();try productDao.addProduct(PID, PNAME, PSPECIFICATIONS); catch (SQLException e) / TODO Auto-generated catch block e.printStac
35、kTrace();AddSalepersonSystemAction.java:package ProductSystemOne;public class AddSalepersonSystemAction public AddSalepersonSystemAction。SalespersonDateDao salespersonDateDao=new SalespersonDateDao();Scanner sc=new Scanner(System.in);int SID=sc.nextInt();String SNAME=sc.next();int SPHONE=sc.nextInt(
36、);try salespersonDateDao.addSaleperson(SID, SNAME, SPHONE); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();AddSellSoldNoteDateDaoSystemAction.java:package ProductSystemOne;public class AddSellSoldNoteDateDaoSystemAction public AddSellSoldNoteDateDaoSystemAction() SoldNot
37、eDateDao soldNoteDateDao=new SoldNoteDateDao();Scanner scanner =new Scanner(System.in);int PID=scanner.nextInt();String salesPrice=scanner.next();String salesVolumes=scanner.next();int salesDate=scanner.nextInt();int SALESID=scanner.nextInt();try soldNoteDateDao.sell(SALESID, salesPrice, salesVolume
38、s, salesDate, PID); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();AllQueryProductSystemAction.java:package ProductSystemOne;import java.util.*;public class AllQueryProductSystemAction public AllQueryProductSystemAction() ProductDao productDao=new ProductDao();List listP
39、roductDao;try listProductDao = productDao.query();Iterator pi=listProductDao.iterator();while(pi.hasNext()ProductDate next =(ProductDate)pi.next();int productID=next.getProductID();String productName=next.getProductName();StringproductSpecifications=next.getProductSpecifications(); catch (SQLExcepti
40、on e) / TODO Auto-generated catch block e.printStackTrace();AllQuerySalespersonSystemAction.java:package ProductSystemOne;import java.util.*;/ 测试public class AllQuerySalespersonSystemAction public AllQuerySalespersonSystemAction() SalespersonDateDao salespersonDateDao=new SalespersonDateDao(); List
41、listSalespersonDateDao;try listSalespersonDateDao = salespersonDateDao.query();Iterator si= listSalespersonDateDao.iterator();while(si.hasNext()SalespersonDate next = (SalespersonDate)si.next();int salespersonID = next.getSalespersonID();String salespersonName=next.getSalespersonName();int salespers
42、onPhone=next.getSalespersonPhone(); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace();AllQuerySoldNoteSystemAction.java:package ProductSystemOne;/* private String salesDate;private Integer productID;private String salesVolumes;private String salesPrice;private Integer sale
43、sID;*/public class AllQuerySoldNoteSystemAction public AllQuerySoldNoteSystemAction() SoldNoteDateDao soldNoteDateDao=new SoldNoteDateDao();List listSoldNoteDateDao;try listSoldNoteDateDao = soldNoteDateDao.query();Iterator si=listSoldNoteDateDao.iterator();while(si.hasNext()SoldNoteDate next=(SoldN
44、oteDate)si.next();String salesDate=next.getSalesDate();int productID=next.getProductID();String salesVolumes=next.getSalesVolumes();String salesPrice=next.getSalesPrice(); int salesID=next.getSalesID(); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace();DBUtil.java:package
45、ProductSystemOne;import java.sql.*;public class DBUtil private static final String NAME=root;private static final String PASSWORD=root;private static Connection conn=null;statictry conn=DriverManager.getConnection(URL,NAME,PASSWORD); catch (ClassNotFoundException e) / TODO Auto-generated catch block
46、 e.printStackTrace(); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace();public static Connection getConnection() return conn;DeleProductDateSystemAction.java:package ProductSystemOne;public class DeleProductDateSystemAction public DeleProductDateSystemAction() ProductDao p
47、roductDao=new ProductDao();Scanner sc=new Scanner(System.in);int PID =sc.nextInt();try productDao.delProduct(PID); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace();DeleSalesDateSystemAction.java:package ProductSystemOne;public class DeleSalesDateSystemAction public DeleSa
48、lesDateSystemAction() SoldNoteDateDao soldNoteDateDao=new SoldNoteDateDao();Scanner scanner =new Scanner (System.in);int PID=scanner.nextInt();try soldNoteDateDao.deleSalesDate(PID); catch (SQLException e) / TODO Auto-generated catch block e.printStackTrace();DeleSalespersonSystemAction.java:package
49、 ProductSystemOne;public class DeleSalespersonSystemAction public DeleSalespersonSystemAction() SalespersonDateDao salespersonDateDao=new SalespersonDateDao(); Scanner sc=new Scanner(System.in);int SID=sc.nextInt();try salespersonDateDao.delProduct(SID); catch (SQLException e) / TODO Auto-generated
50、catch block e.printStackTrace();EveryProductDaoSystemAction.java:package ProductSystemOne;public class EveryProductDaoSystemAction public EveryProductDaoSystemAction() ProductDao productDao=new ProductDao();Scanner sc=new Scanner(System.in);int PID =sc.nextInt();List listproductDao;try listproductDa
51、o = productDao.queryEvery(PID);Iterator pi=listproductDao.iterator();ProductDate next=(ProductDate)pi.next();String PNAME=next.getProductName();String PSPECIFICATIONS=next.getProductSpecifications(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();nEveryQuerySalespersonSy
52、stemAction.java:package ProductSystemOne;public class EveryQuerySalespersonSystemAction public EveryQuerySalespersonSystemAction() SalespersonDateDao salespersonDateDao=new SalespersonDateDao(); Scanner sc=new Scanner(System.in);int SID=sc.nextInt();List listSalespersonDateDate;try listSalespersonDa
53、teDate = salespersonDateDao.queryEvery(SID);Iterator si= listSalespersonDateDate.iterator();SalespersonDate next = (SalespersonDate)si.next();int salespersonID = next.getSalespersonID();String salespersonName=next.getSalespersonName();int salespersonPhone=next.getSalespersonPhone(); catch (SQLExcept
54、ion e) / TODO Auto-generated catch block e.printStackTrace();EveryQuerySoldNoteDateDaoSystemAction.java:package ProductSystemOne;public class EveryQuerySoldNoteDateDaoSystemAction public EveryQuerySoldNoteDateDaoSystemAction() SoldNoteDateDao soldNoteDateDao=new SoldNoteDateDao();Scanner sc=new Scanner (System.in);int SID=sc.nextInt();List listSoldNoteDateDao;try listSoldNoteDateDao = soldNoteDateDao.queryEvery(SID);Iterator si=listSoldNoteDateDao.iterator();SoldNoteDate next=(SoldNoteDate)si.next();String salesDat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北师大版小学语文六年级下册期末试卷含参考答案
- 2023-2024学年浙江省金华市东阳市高三下学期三模物理试题(解析版)
- 2023-2024学年江西省萍乡市高一下学期4月期中物理试题(解析版)
- 2024FIDIC新版合同条件研究
- 2023年黄丹项目需求分析报告
- 2023年液压系统项目需求分析报告
- 3《飞天凌空》活动型公开课一等奖创新教案+(共22张)
- 21 大自然的声音 公开课一等奖创新教学设计
- (2篇)X县社区党组织书记“擂台赛”发言
- 静脉注射锁骨上窝并发症的发生机制
- 2024云南新华书店集团限公司公开招聘34人(高频重点提升专题训练)共500题附带答案详解
- 《财务会计基础》课件-认知原始凭证
- 第25课これは明日会議で使う資料です课件高中日语标准日本语初级下册
- 强国复兴有我课件模板
- 五年级小数乘法竖式计算练习500道及答案
- 2024年“学宪法 讲宪法”知识竞赛题库及答案
- 【课件】点线传情-造型元素之点线面高中美术人美版(2019)选择性必修1+绘画
- 中国子宫内膜增生管理指南(2022)解读
- DL-T5334-2016电力工程勘测安全规程
- 家政服务员职业技能竞赛题库含答案(1-200判断题)
- 浙江省宁波市明州2024年初中学业水平考试英语试题
评论
0/150
提交评论