手机照片如何将工具栏放在下面电脑那一个栏里:

当前位置: →
→ 怎么在同一个文本框中,实现对多个表的查询
怎么在同一个文本框中,实现对多个表的查询
& 作者:佚名 & 来源: 互联网 & 热度:
&收藏到→_→:
摘要: 如何在同一个文本框中,实现对多个表的查询&&&我想做一个像百度一样:如点击网页,就查询“网页”这一个表。点...
"怎么在同一个文本框中,实现对多个表的查询"::
如何在同一个中,实现对多个表的查询&&&我想做一个像百度一样:如点击网页,就查询“网页”这一个表。点击新闻,就查“新闻”这一个表。(注:在这里我把网页和新闻各看成各的单独的表)!现在我把页面做完了,后台的查询也写完了,点击那个如百度样的旁的按钮也可以实现下面对表的查询,但是它实现的是查询整个表,不是表中的某个字段,比如我想查邮件表中的收件人,他就查询不出来,出来的是整个数据!我碰到的问题是,我怎么知道那个里查询的哪个表的哪个字段呢?不说多了,上个图吧!有图有真相,才清晰!
------解决方案--------------------把你那--网页--知道--贴吧的类型传到后台,不同类型调用不同实现类
或者直接在js中判断调用不同action方法------解决方案--------------------1、采用多个action去操控,在js动态变化链接。
2、根据用户选中的类别去判断你所要查询表的标识。传到后台后,通过标识判断所要查询的表------解决方案--------------------改变一下思路,不要用一种请求处理所有的查询
不同的查询发不同的请求,&服务端用不同的action处理(如果用的是struts2的话)------解决方案--------------------后台查询如果在servlet中的话
可以判断输入的参数来动态拼接sql语句------解决方案--------------------我说下我的个人想法
就是你可以在下面放几个radio。比如新闻。网页。此文来自: 马开东博客
转载请注明出处 网址:
这个状态来判断执行那个表的查询点查询的时候获取这个radio的值然后拼接传到后台去查询就可以了。这样查询的时候也要考虑到你的js能力了。可以尝试一下。&------解决方案--------------------1.百度是不同好几个网页做的分类&&&
2.字段的问题用&from&biao&where&fajianren&like&'%?%'&or&shoujianren&like&'%?%'
or&biaoti&like&'%?%'
------解决方案--------------------解释一下16楼的
如果&getemail&不为空,其余全空,那么
sql="***&and&email&like&'%***%'&and&subject&like&'%%'&and&sendermail&like&'%%'&****"
这样的话,我没运行过,反正感觉是不顺服
应该分开来写:
if&(in.getemail()&!=&null&&&&!in.getemail().equals("")){
sql&+=&"and&hs.email&like&'%"&+&in.getemail()&+&"%'"
if(in.getsubject()&!=&null&&&&!in.getsubject().equals("")){
sql&+=&"and&hs.subject&like'%"&+&in.getsubject()&+&"%'"
这样你运行下看看------解决方案--------------------这个判断啊,在action中就能实现,前段用js判断,别死脑筋,想办法记录是哪个代表哪个条件就行,一个对应一个隐藏域,隐藏域的值写对应的哪个表,显示出来的显示要查的字段条件值,把和他对应的值都传过去了,这不就解决了....------解决方案--------------------&input&type="text"&id="id"&value="查询关键字"/&
&input&type="hidden"&id="id2"&value="表明"/&
这两个是一组,就解决问题了,一起传到action中------解决方案--------------------这就是后台拼写sql的问题啊,保证参数都正确传到后台就可以了,多表联合查询 搜索此文相关文章:中,实现对多个表的查询此文来自: 马开东博客
网址: 站长QQ
上一篇:没有了
怎么在同一个文本框中,实现对多个表的查询_JavaWeb相关文章
JavaWeb_总排行榜
JavaWeb_最新
JavaWeb_月排行榜
JavaWeb_周排行榜
JavaWeb_日排行榜JFreeReport中,如何实现多个TableModel显示在同一报表中?
发布时间: 7:35:50
编辑:www.fx114.net 我要评论
本篇文章主要介绍了"JFreeReport中,如何实现多个TableModel显示在同一报表中?
100CSDN]",主要涉及到JFreeReport中,如何实现多个TableModel显示在同一报表中?
100CSDN]方面的内容,对于JFreeReport中,如何实现多个TableModel显示在同一报表中?
100CSDN]感兴趣的同学可以参考一下。
public&JFreeTest(final&String&urlname,&final&TableModel&data)
&&&&final&ReportGenerator&gen&=&ReportGenerator.getInstance();
&&&&final&URL&i&=&ObjectUtilities.getResource("org/vivianj/jfreereport/report3.xml",&JFreeTest.class);
&&&&&&//从报表定义文件中获得要用到的报表定义内容
&&&&&&final&JFreeReport&report1&=&gen.parseReport(i);
&&&&&&//将报表定义和数据结合
&&&&&&report1.setData(data);
&&&&&&//将生成的报表放到预览窗口中
&&&&&&final&PreviewFrame&frame1&=&new&PreviewFrame(report1);
&&&&&&.........
&&&&catch&(Exception&e)
&&&&&&System.out.print("report.definitionfailure-----------------------\r\n"&+&e);
上述代码只能实现单一数据结构,如果在此报表页面中出现另一与其完全不同的数据要求显示在同一页面,也就是至少两个以上TableModel,是属"嵌套报表"吗?该如何实现啊?应该可以实现,但是我觉得是否应该将两个合并tablemodel为一个,这样更方便学习
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:如何将同一字段分成多组统计 | 快逸报表工具 java报表软件
快逸做的更好
您的位置:
& 如何将同一字段分成多组统计
如何将同一字段分成多组统计
在过程中,常常会出现想要按照数据库中一个字段进行分组的需求,例如数据表是一张类似商店的储备清单,除了必要的商品单价和库存等信息外,对这些商品按类别分组也是必要的。下面简单介绍下如何对将数据库里的数据按照一个字段分成多组。
第一步:制作数据集,如图所示;
仔细观察图中数据不难发现,商品代码的规律,即商品代码分为三部分,前三位101或102代表两个大的分类,食品和用品,第四位是在前一个分类的基础上细分出来的小的类别,调味品,饮料,海鲜等。
第二步:根据商品代码将商品分类;
B列里用模糊将商品代码按照条件取出。
预览效果如下:
需要注意的是:需要分组的字段必须是一组有规律的值。> java中如何实现表格的多表头显示_Java
java中如何实现表格的多表头显示_Java
上传者:cuckooli
我也要“”
& & 首先声明,这些内容都是借鉴来的,稍微改动了一下。 主要就是三个应用类ColumnGroup, GroupableTableHeader,GroupableTableHeaderU 和一个示例类GroupableHeaderExample 1、ColumnGroup类主要负责多表头的构建 import java . import java.aw& & 首先声明,这些内容都是借鉴来的,稍微改动了一下。& & 主要就是三个应用类ColumnGroup, GroupableTableHeader,GroupableTableHeaderU& & 和一个示例类GroupableHeaderExample& & 1、ColumnGroup类主要负责多表头的构建& & importjava.& & import java.awt.D& & import java.util.E& & import java.util.V& & import javax.swing.JL& & import javax.swing.JT& & import javax.swing.UIM& & import javax.swing.table.DefaultTableCellR& & import javax.swing.table.JTableH& & import javax.swing.table.TableCellR& & import javax.swing.table.TableC& & public class ColumnGroup {& & protected TableCellR& & protected V& & protected S& & protected int margin = 0;& & public ColumnGroup(String text) {& & this(null, text);& & }& & public ColumnGroup(TableCellRenderer renderer, String text) {& & if (renderer == null) {& & this.renderer = new DefaultTableCellRenderer() {& & public Component getTableCellRendererComponent(JTable table,& & Object value, boolean isSelected, boolean hasFocus,& & int row, int column) {& & JTableHeader header = table.getTableHeader();& & if (header != null) {& & setForeground(header.getForeground());& & setBackground(header.getBackground());& & setFont(header.getFont());& & }& & setHorizontalAlignment(JLabel.CENTER);& & this.setText((value == null) ? "" : value.toString());& & setBorder(UIManager.getBorder("TableHeader.cellBorder"));& && & }& & };& & } else {& & this.renderer =& & }& & this.text =& & v = new Vector();& & }& & /**& & * @param obj& & *&&&&&&&&&&&TableColumn or ColumnGroup& & */& & public void add(Object obj) {& & if (obj == null) {& && & }& & v.addElement(obj);& & }& & /**& & * @param c& & *&&&&&&&&&&&TableColumn& & * @param v& & *&&&&&&&&&&&ColumnGroups& & */& & public Vector getColumnGroups(TableColumn c, Vector g) {& & g.addElement(this);& & if (v.contains(c))& && & Enumeration enumeration = v.elements();& & while (enumeration.hasMoreElements()) {& & Object bj = enumeration.nextElement();& & if (obj instanceof ColumnGroup) {& & Vector groups = (Vector) ((ColumnGroup) obj).getColumnGroups(c,& & (Vector) g.clone());& & if (groups != null)& && & }& & }& && & }& & public TableCellRenderer getHeaderRenderer() {& && & }& & public Object getHeaderValue() {& && & }& & public int getSize() {& & return v == null ? 0 : v.size();& & }& & public Dimension getSize(JTable table) {& & Component comp = renderer.getTableCellRendererComponent(table,& & getHeaderValue(), false, false, -1, -1);& & int height = comp.getPreferredSize().& & int width = 0;& & Enumeration enumeration = v.elements();& & while (enumeration.hasMoreElements()) {& & Object bj = enumeration.nextElement();& & if (obj instanceof TableColumn) {& & TableColumn aColumn = (TableColumn)& & width += aColumn.getWidth();& & width +=& & } else {& & width += ((ColumnGroup) obj).getSize(table).& & }& & }& & return new Dimension(width, height);& & }& & /**& & *& & * 创建日期:( 10:53:26)& & *& & * @return java.lang.String& & */& & public java.lang.String getText() {& && & }& & /**& & * 列表头中删除Column 创建日期:( 15:49:00)& & */& & public boolean removeColumn(ColumnGroup ptg, TableColumn tc) {& & boolean retFlag =& & if (tc != null) {& & for (int i = 0; i < ptg.v.size(); i++) {& & Object tmpObj = ptg.v.get(i);& & if (tmpObj instanceof ColumnGroup) {& & retFlag = removeColumn((ColumnGroup) tmpObj, tc);& & // 如果找到返回& & if (retFlag)& && & } else if (tmpObj instanceof TableColumn) {& & // 判断是否查找的对象& & if (tmpObj == tc) {& & ptg.v.remove(i);& & retFlag =& && & }& & }& & }& & }& & return retF& & }& & /**& & * 列表头中删除ColumnGrp 删除返回true,否则返回 创建日期:( 15:49:00)& & */& & public boolean removeColumnGrp(ColumnGroup ptg, ColumnGroup tg) {& & boolean retFlag =& & if (tg != null) {& & for (int i = 0; i < ptg.v.size(); i++) {& & Object tmpObj = ptg.v.get(i);& & if (tmpObj instanceof ColumnGroup) {& & // 判断是否查找的对象& & if (tmpObj == tg) {& & ptg.v.remove(i);& & retFlag =& && & } else {& & retFlag = removeColumnGrp((ColumnGroup) tmpObj, tg);& & // 如果找到返回& & if (retFlag)& && & }& & } else if (tmpObj instanceof TableColumn) {& && & }& & }& & }& & return retF& & }& & public void setColumnMargin(int margin) {& & this.margin =& & Enumeration enumeration = v.elements();& & while (enumeration.hasMoreElements()) {& & Object bj = enumeration.nextElement();& & if (obj instanceof ColumnGroup) {& & ((ColumnGroup) obj).setColumnMargin(margin);& & }& & }& & }& & public void setHeaderRenderer(TableCellRenderer renderer) {& & if (renderer != null) {& & this.renderer =& & }& & }& & /**& & *& & * 创建日期:( 10:53:26)& & *& & * @param newText& & *&&&&&&&&&&&java.lang.String& & */& & public void setText(java.lang.String newText) {& & text = newT& & }& & }& & 2、GroupableHeader继承自JTableHeader,为多表头结构的管理者& & import java.util.E& & import java.util.V& & import javax.swing.table.JTableH& & import javax.swing.table.TableC& & import javax.swing.table.TableColumnM& & /**& & * GroupableTableHeader& & * @author flyx& & */& & public class GroupableTableHeader extends JTableHeader {& & private static final String uiClassID = "GroupableTableHeaderUI";& & protected Vector columnGroups =& & public GroupableTableHeader(TableColumnModel model) {& & super(model);& & setUI(new GroupableTableHeaderUI());& & setReorderingAllowed(false);& & setRequestFocusEnabled(false);& & }& & public void addColumnGroup(ColumnGroup g) {& & if (columnGroups == null) {& & columnGroups = new Vector();& & }& & columnGroups.addElement(g);& & }& & /**& & *& & * 创建日期:( 15:54:29)& & */& & public void clearColumnGroups() {& & columnGroups =& & }& & public ColumnGroup[] getColumnGroups() {& & ColumnGroup[] retg=& & if (columnGroups.size()>0) {& & retg=new ColumnGroup[columnGroups.size()];& & columnGroups.copyInto(retg);& & }& && & }& & public Enumeration getColumnGroups(TableColumn col) {& & if (columnGroups == null)& && & Enumeration enum = columnGroups.elements();& & while (enum.hasMoreElements()) {& & ColumnGroup cGroup = (ColumnGroup) enum.nextElement();& & Vector v_ret = (Vector) cGroup.getColumnGroups(col, new Vector());& & if (v_ret != null) {& & return v_ret.elements();& & }& & }& && & }& & /**& & * Identifies whether or not this component can receive the focus.& & * A disabled button, for example, would return false.& & *& & * @return true if this component can receive the focus& & */& & public boolean isFocusTraversable() {& & return super.isFocusTraversable() && isRequestFocusEnabled();& & }& & public void setColumnMargin() {& & if (columnGroups == null)& && & int columnMargin = getColumnModel().getColumnMargin();& & Enumeration enum = columnGroups.elements();& & while (enum.hasMoreElements()) {& & ColumnGroup cGroup = (ColumnGroup) enum.nextElement();& & cGroup.setColumnMargin(columnMargin);& & }& & }& & public void setReorderingAllowed(boolean b) {& & reorderingAllowed =& & }& & }& & 3、GroupableTableHeaderUI继承自BasicTableHeaderUI,是多表头的画匠& && & import java.awt.D& & import java.awt.G& & import java.awt.R& & import java.util.E& & import java.util.H& & import java.util.V& & import javax.swing.JC& & import javax.swing.JL& & import javax.swing.JT& & import javax.swing.UIM& & import javax.swing.plaf.basic.BasicTableHeaderUI;& & import javax.swing.table.*;& & /**& & * 多表头TableHeaderUI& & *& & * @author flyx& & */& & public class GroupableTableHeaderUI extends BasicTableHeaderUI {& & private int m_& & private Dimension createHeaderSize(long width) {& & TableColumnModel columnModel = header.getColumnModel();& & width += columnModel.getColumnMargin() * columnModel.getColumnCount();& & if (width > Integer.MAX_VALUE) {& & width = Integer.MAX_VALUE;& & }& & return new Dimension((int) width, getHeaderHeight());& & }& & /**& & * 获得该多表头下的基本列数(zjb) 递归 创建日期:(02-4-8 18:03:56)& & *& & * @return int& & * @param cg& & *&&&&&&&&&&&nc.ui.pub.beans.table.ColumnGroup& & */& & private int getColCountUnderColGroup(ColumnGroup cg, int iCount) {& & Vector v = cg.v;& & for (int i = 0; i < v.size(); i++) {& & Object bj = v.elementAt(i);& & if (obj instanceof ColumnGroup)& & iCount = getColCountUnderColGroup((ColumnGroup) obj, iCount);& & else& & iCount++;& & }& & return iC& & }& & public int getHeaderHeight() {& & int height = 0;& & TableColumnModel columnModel = header.getColumnModel();& & for (int column = 0; column < columnModel.getColumnCount(); column++) {& & TableColumn aColumn = columnModel.getColumn(column);& & TableCellRenderer renderer = aColumn.getHeaderRenderer();& & //& & if (renderer == null) {& & renderer = new DefaultTableCellRenderer() {& & public Component getTableCellRendererComponent(& & JTable table, Object value, boolean isSelected,& & boolean hasFocus, int row, int column) {& & JTableHeader header = table.getTableHeader();& & if (header != null) {& & setForeground(header.getForeground());& & setBackground(header.getBackground());& & setFont(header.getFont());& & }& & setHorizontalAlignment(JLabel.CENTER);& & setText((value == null) ? "" : value.toString());& & setBorder(UIManager.getBorder("TableHeader.cellBorder"));& && & }& & };& & }& & //& & Component comp = renderer.getTableCellRendererComponent(header& & .getTable(), aColumn.getHeaderValue(), false, false, -1,& & column);& & int cHeight = comp.getPreferredSize().& & Enumeration enumeration = ((GroupableTableHeader) header)& & .getColumnGroups(aColumn);& & if (enumeration != null) {& & while (enumeration.hasMoreElements()) {& & ColumnGroup cGroup = (ColumnGroup) enumeration& & .nextElement();& & cHeight += cGroup.getSize(header.getTable()).& & }& & }& & height = Math.max(height, cHeight);& & }& & height = Math.max(height, m_height);& && & }& & public Dimension getPreferredSize(JComponent c) {& & long width = 0;& & Enumeration enumeration = header.getColumnModel().getColumns();& & while (enumeration.hasMoreElements()) {& & TableColumn aColumn = (TableColumn) enumeration.nextElement();& & width = width + aColumn.getWidth();& & }& & return createHeaderSize(width);& & }& & public void paint(Graphics g, JComponent c) {& & Rectangle clipBounds = g.getClipBounds();& & if (header.getColumnModel() == null)& && & ((GroupableTableHeader) header).setColumnMargin();& & int column = 0;& & Dimension size = header.getSize();& & Rectangle cellRect = new Rectangle(0, 0, size.width, size.height);& & Hashtable h = new Hashtable();& & int columnMargin = header.getColumnModel().getColumnMargin();& & Enumeration enumeration = header.getColumnModel().getColumns();& & while (enumeration.hasMoreElements()) {& & cellRect.height = size.& & cellRect.y = 0;& & TableColumn aColumn = (TableColumn) enumeration.nextElement();& & Enumeration cGroups = ((GroupableTableHeader) header)& & .getColumnGroups(aColumn);& & if (cGroups != null) {& & int groupHeight = 0;& & while (cGroups.hasMoreElements()) {& & ColumnGroup cGroup = (ColumnGroup) cGroups.nextElement();& & Rectangle groupRect = (Rectangle) h.get(cGroup);& & if (groupRect == null) {& & groupRect = new Rectangle(cellRect);& & Dimension d = cGroup.getSize(header.getTable());& & if (!System.getProperty("java.vm.version").startsWith(& & "1.2")) {& & int iColCount = getColCountUnderColGroup(cGroup, 0); // 获得该多表头下的基本列数(zjb)& & // System.out.println(iColCount);& & groupRect.width = d.width - iColCount& & * columnM& & } else& & groupRect.width = d.& & groupRect.height = d.& & h.put(cGroup, groupRect);& & }& & paintCell(g, groupRect, cGroup);& & groupHeight += groupRect.& & cellRect.height = size.height - groupH& & cellRect.y = groupH& & }& & }& & if (!System.getProperty("java.vm.version").startsWith("1.2"))& & cellRect.width = aColumn.getWidth();& & else& & cellRect.width = aColumn.getWidth() + columnM& & if (cellRect.intersects(clipBounds)) {& & paintCell(g, cellRect, column);& & }& & cellRect.x += cellRect.& & column++;& & }& & }& & private void paintCell(Graphics g, Rectangle cellRect, int columnIndex) {& & TableColumn aColumn = header.getColumnModel().getColumn(columnIndex);& & TableCellRenderer renderer = aColumn.getHeaderRenderer();& & //& & if (renderer == null) {& & renderer = new DefaultTableCellRenderer() {& & public Component getTableCellRendererComponent(JTable table,& & Object value, boolean isSelected, boolean hasFocus,& & int row, int column) {& & JTableHeader header = table.getTableHeader();& & if (header != null) {& & setForeground(header.getForeground());& & setBackground(header.getBackground());& & setFont(header.getFont());& & }& & setHorizontalAlignment(JLabel.CENTER);& & setText((value == null) ? "" : value.toString());& & setBorder(UIManager.getBorder("TableHeader.cellBorder"));& && & }& & };& & }& & //& & // Component component =& & // renderer.getTableCellRendererComponent(header.getTable(),& & // aColumn.getHeaderValue(), false, false, -1, columnIndex);& & //& & String headerValue = aColumn.getHeaderValue().toString();& & Component component = renderer.getTableCellRendererComponent(header& & .getTable(), headerValue, false, false, -1, columnIndex);& & rendererPane.add(component);& & rendererPane.paintComponent(g, component, header, cellRect.x,& & cellRect.y, cellRect.width, cellRect.height, true);& & }& & private void paintCell(Graphics g, Rectangle cellRect, ColumnGroup cGroup) {& & TableCellRenderer renderer = cGroup.getHeaderRenderer();& & //& & if (renderer == null) {& & renderer = new DefaultTableCellRenderer() {& & public Component getTableCellRendererComponent(JTable table,& & Object value, boolean isSelected, boolean hasFocus,& & int row, int column) {& & JTableHeader header = table.getTableHeader();& & if (header != null) {& & setForeground(header.getForeground());& & setBackground(header.getBackground());& & setFont(header.getFont());& & }& & setHorizontalAlignment(JLabel.CENTER);& & setText((value == null) ? "" : value.toString());& & setBorder(UIManager.getBorder("TableHeader.cellBorder"));& && & }& & };& & }& & //& & // Component component =& & // renderer.getTableCellRendererComponent(header.getTable(),& & // cGroup.getHeaderValue(), false, false, -1, -1);& & //& & String headerValue = cGroup.getHeaderValue().toString();& & Component component = renderer.getTableCellRendererComponent(header& & .getTable(), headerValue, false, false, -1, -1);& & rendererPane.add(component);& & rendererPane.paintComponent(g, component, header, cellRect.x,& & cellRect.y, cellRect.width, cellRect.height, true);& & }& & public void setHeaderHeight(int iHeight) {& & m_height = iH& & }& & }& & 4、一个简单的测试用例GroupableHeaderExample& & import java.awt.C& & import java.awt.event.WindowA& & import java.awt.event.WindowE& & import javax.swing.JF& & import javax.swing.JScrollP& & import javax.swing.JT& & import javax.swing.table.DefaultTableM& & import javax.swing.table.JTableH& & import org.f5.ui.table.ColumnG& & import org.f5.ui.table.GroupableTableH& & /**& & * @version 1.0 11/09/98& & */& & public class GroupableHeaderExample extends JFrame. {& & GroupableHeaderExample() {& & super("Groupable Header Example");& & initialize();& & }& & private void initialize() {& & DefaultTableModel dm = new DefaultTableModel();& & dm.setDataVector(new Object[][] {& & { "119", "foo", "bar", "ja", "ko", "zh" },& & { "911", "bar", "foo", "en", "fr", "pt" } }, new Object[] {& & "SNo.", "1", "2", "Native", "2", "3" });& & JTable table = new JTable(dm) {& & protected JTableHeader createDefaultTableHeader() {& & return new GroupableTableHeader(columnModel);& & }& & };& & GroupableTableHeader header = (GroupableTableHeader) table& & .getTableHeader();& & javax.swing.table.TableColumnModel cm = table.getColumnModel();& & // 接受类型& & ColumnGroup g_jslx = new ColumnGroup(& & "接收类型");& & g_jslx.add(cm.getColumn(1));& & g_jslx.add(cm.getColumn(2));& & header.addColumnGroup(g_jslx);& & JScrollPane scroll = new JScrollPane(table);& & getContentPane().add(scroll);& & setSize(400, 120);& & //设置列头背景为红色& & header.setBackground(Color.RED);& & }& & public static void main(String[] args) {& & GroupableHeaderExample frame. = new GroupableHeaderExample();& & frame.addWindowListener(new WindowAdapter() {& & public void windowClosing(WindowEvent e) {& & System.exit(0);& & }& & });& & frame.setVisible(true);& & }& & }& & 5、效果图& & 等我会贴图了再贴上来吧& & 原文转自:http://www.ltesting.net
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
论文写作技巧
上一篇:下一篇:
相关经验教程

我要回帖

更多关于 一台电脑怎么挣钱 的文章

 

随机推荐