




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验大纲1字符统计程序程序运行结果:统计字符源文件:StaChar.javaimportjavax.swing.*;/***1字符统计程序<BR>*利用对话框读入字符串统计输入字符行中数字字符、英文字母个数.<BR>*@author黎明你好*/publicclassStaChar{ publicstaticvoidmain(String[]args) { Stringstr=JOptionPane.showInputDialog("请输入字符串:"); char[]c=str.toCharArray(); intnumberCount=0; intletterCount=0; for(inti=0;i<c.length;i++) { if(c[i]<'9'&&c[i]>'0') numberCount++; elseif((c[i]>'A'&&c[i]<'Z')||(c[i]>'a'&&c[i]<'z')) letterCount++; } Stringresult="输入内容:\n"+str+"\n数字字符:"+numberCount+"个;"+"\n字母:"+letterCount +"个"; JOptionPane.showMessageDialog(null,result,"结果:",JOptionPane.INFORMATION_MESSAGE); }}2找质数程序程序运行结果:输出质数原文件:PrintPrime.javaimportjavax.swing.JOptionPane;/***2找质数程序,利用对话框读入整数,输出2至这个整数之间的质数.<BR>*@author黎明你好*/publicclassPrintPrime{ privateintnumber;//正整数 privateStringresult=""; publicPrintPrime()//构造方法 { number=getIntegerNumber("输入整数n",0);//要求是>=0的整数 if(number<0) { return;//出现错误,程序结束 } else //如果大于等于2,开始用循环计算结果 { for(inti=2;i<=number;i++)//计算素数和 { if(isPrimeNumber(i)) result+=i+""; } } //显示最后的和 JOptionPane.showMessageDialog(null,number+"之前所有素数为:\n“"+result+"”","显示结果", JOptionPane.INFORMATION_MESSAGE); } /** *通过图形界面,得到符合规则的正整数的方法 *@parammessage-在弹出的对话框中,显示提示信息 *@parammin-要求此数必须大于等于min *@return-返回符合规则的整数 */ publicintgetIntegerNumber(Stringmessage,intmin) { Stringstr=JOptionPane.showInputDialog(null,message,"提示信息", JOptionPane.INFORMATION_MESSAGE); intnumber=-1; try { number=Integer.parseInt(str);//得到输入的正整数 } catch(Exceptione) { JOptionPane.showMessageDialog(null,"输入非数字字符\n程序结束","错误警告",JOptionPane.ERROR_MESSAGE); return-1;//输入的不是数字字符,程序结束 } if(number<min) { JOptionPane.showMessageDialog(null,"输入的数不符合规则,不是正整数\n程序结束","错误警告", JOptionPane.ERROR_MESSAGE); return-1;//输入的数不是大于2的正整数时候,程序结束 } else returnnumber; } /** *判断是否是素数的方法 *@paramn-需要判断的数 *@return-是素数返回true,否则返回false */ publicbooleanisPrimeNumber(intn) { for(inti=2;i<n;i++) { if(n%i==0) returnfalse; } returntrue; } /**main方法*/ publicstaticvoidmain(String[]args) { newPrintPrime(); }}3类的继承定义,包括几何形状类Shape、圆形类Circle.、矩形类Rectangle/***几何图形类,抽象类*/abstractclassShape{ publicfloatarea() { return0.0f; }}/***圆形类*/classCircleextendsShape{ privatefloatR; publicCircle(floatr) { R=r; } publicfloatarea() { return(float)(Math.PI*R*R); } }/***矩形类*/classRectangleextendsShape{ privatefloatw,h; publicRectangle(floatw,floath) { this.w=w; this.h=h; } publicfloatarea() { returnw*h; }}publicclassWork11_3{ publicstaticvoidmain(Stringargs[]) { Circlec; Rectangler; c=newCircle(2.0f); r=newRectangle(3.0f,5.0f); System.out.println("圆面积"+returnArea(c)); System.out.println("长方形面积"+returnArea(r)); } staticfloatreturnArea(Shapes) { returns.area(); }}4数组排序程序源文件:Work11_4.javaimportjavax.swing.*;importjava.util.*;/***4数组排序程序.<BR>*输入整数序列,对输入的整数进行排序,输出结果.<BR>*@author黎明你好*/publicclassWork11_4{ publicstaticfinalintRISE=0; publicstaticfinalintLOWER=1; publicstaticvoidmain(String[]args) { Stringstr=JOptionPane.showInputDialog("请输入字符串:"); StringTokenizertoken=newStringTokenizer(str,",.;:"); intmode=Work11_4.RISE;//排列模式,默认为升序排列 intcount=token.countTokens();//输入的整数的个数 intarray[]=newint[count]; intindex=0; while(token.hasMoreTokens()) { try { array[index]=Integer.parseInt(token.nextToken()); index++; } catch(Exceptione) { JOptionPane.showMessageDialog(null,"输入非法字符","错误警告",JOptionPane.ERROR_MESSAGE); return;//输入非法字符时候,直接结束程序 } } sort(array,mode);//按mode模式,进行排序 Stringresult=newString(); StringmodeString=newString(); if(mode==Work11_4.RISE) modeString="升序排列结果为:"; if(mode==Work11_4.LOWER) modeString="降序排列结果为:"; for(inti=0;i<array.length;i++) { result=result+array[i]+","; } if(result!=null) JOptionPane .showMessageDialog(null,result,modeString,JOptionPane.INFORMATION_MESSAGE); } /** *给数组排序的方法 *@paramarray-需要排序的数组 *@parammode-排序的模式,可以为RISE,LOWER */ publicstaticvoidsort(intarray[],intmode) { for(inti=0;i<array.length;i++) { for(intj=0;j<array.length-1;j++) { if(mode==Work11_4.RISE&&array[j]>array[j+1]) { inttemp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } if(mode==Work11_4.LOWER&&array[j]<array[j+1]) { inttemp=array[j]; array[j]=array[j+1]; array[j+1]=temp; } } } }}5字符串处理程序,括号匹配程序运行结果:括号匹配检测源文件:CheckBrackets.javaimportjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importunit9.MyFileFilter;importjava.io.*;/***5字符串处理程序.<BR>*输入程序的源程序代码行,找出可能存在圆括号,花括号不匹配的错误.<BR>*@author黎明你好*/publicclassCheckBracketsextendsJFrameimplementsActionListener,ItemListener{ privatestaticfinallongserialVersionUID=1L; privateJFileChooserfileChooser; privateJButtonopenFileButton; privateJComboBoxcomboBox; privateJTextFieldshowRowStringField; privateJTextFieldshowMessageField; privateJTextAreatextArea; privateJPanelnorthPanel,control_panel; privateStringrowString[]; privateFilefile=null; publicCheckBrackets() { super("检测圆、花括号匹配程序"); fileChooser=newJFileChooser(System.getProperty("user.dir")); openFileButton=newJButton("打开文件"); showRowStringField=newJTextField(); showMessageField=newJTextField(20); textArea=newJTextArea(); comboBox=newJComboBox(); northPanel=newJPanel(); control_panel=newJPanel(); rowString=newString[1000]; fileChooser.addChoosableFileFilter(newMyFileFilter("txt"));//文件筛选 textArea.setLineWrap(true); showRowStringField.setEditable(false); showRowStringField.setBackground(Color.WHITE); showMessageField.setEditable(false); showMessageField.setBackground(Color.WHITE); openFileButton.addActionListener(this); comboBox.addItemListener(this); comboBox.addItem("请选择"); control_panel.add(openFileButton); control_panel.add(newJLabel("选择代码行:")); control_panel.add(comboBox); control_panel.add(newJLabel("检测结果:")); control_panel.add(showMessageField); northPanel.setLayout(newGridLayout(2,1,10,10)); northPanel.add(control_panel); northPanel.add(showRowStringField); this.add(northPanel,BorderLayout.NORTH); this.add(newJScrollPane(textArea),BorderLayout.CENTER); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setBounds(50,50,550,500); this.setVisible(true); this.validate(); } publicvoidactionPerformed(ActionEvente) { showMessageField.setText(""); intmessage=fileChooser.showOpenDialog(this); if(message==JFileChooser.APPROVE_OPTION) { file=fileChooser.getSelectedFile(); comboBox.removeAllItems(); comboBox.addItem("请选择"); readFile(file); } } publicvoiditemStateChanged(ItemEvente) { intindex=comboBox.getSelectedIndex(); if(index>=1) { showRowStringField.setText(rowString[index-1]); charc[]=rowString[index-1].toCharArray(); intcount1=0; intcount2=0; for(inti=0;i<c.length;i++) { if(c[i]=='{') count1++; if(c[i]=='}') count1--; if(c[i]=='(') count2++; if(c[i]==')') count2--; System.out.println("大括号"+count1+",小括号:"+count2); } if(count1!=0) showMessageField.setText("第"+index+"行,大括号'{}'匹配错误"); elseif(count2!=0) showMessageField.setText("第"+index+"行,小括号'()'匹配错误"); elseif(count1!=0&&count2!=0) showMessageField.setText("第"+index+"行,大、小括号都匹配错误"); elseif(count1==0&&count2==0) showMessageField.setText("括号匹配正确"); } } publicvoidreadFile(Filef) { if(f!=null) try { FileReaderfile=newFileReader(f); BufferedReaderin=newBufferedReader(file); Strings=newString(); inti=0; textArea.setText(""); while((s=in.readLine())!=null) { textArea.append((i+1)+":"+s+"\n"); rowString[i]=s; comboBox.addItem(i+1); i++; } } catch(Exceptione) { System.out.println(""+e.toString()); } } publicstaticvoidmain(String[]args) { newCheckBrackets(); }}6计算器程序。程序运行结果:简易计算器程序原文件:Calculator.javaimportjava.awt.*;importjava.awt.event.*;importjavax.swing.*;/***计算器程序.<BR>*三个文本框,加、减、乘、除按钮在前两个文本框分别输入两个运算数点击按钮后,在第三个文本框中显示计算结果.<BR>*@author黎明你好*/publicclassCalculatorextendsJFrameimplementsActionListener{ privatestaticfinallongserialVersionUID=1L; privateJTextFieldoneField,twoField,resultField; privateJButtonaddButton,subtractButton,multiplyButton,divideButton,cleanButton; privateJPanelpanel1,panel2,panel3; publicCalculator() { super("简易计算器"); oneField=newJTextField(10); twoField=newJTextField(10); resultField=newJTextField(20); addButton=newJButton("+"); subtractButton=newJButton("-"); multiplyButton=newJButton("*"); divideButton=newJButton("/"); cleanButton=newJButton("CE"); panel1=newJPanel(); panel2=newJPanel(); panel3=newJPanel(); oneField.setHorizontalAlignment(JTextField.RIGHT); twoField.setHorizontalAlignment(JTextField.RIGHT); resultField.setHorizontalAlignment(JTextField.RIGHT); resultField.setEditable(false); resultField.setBackground(Color.WHITE); resultField.setForeground(Color.RED); panel3.setLayout(newGridLayout(1,4,5,5)); panel3.add(addButton); panel3.add(subtractButton); panel3.add(multiplyButton); panel3.add(divideButton); panel3.add(cleanButton); addButton.addActionListener(this); subtractButton.addActionListener(this); multiplyButton.addActionListener(this); divideButton.addActionListener(this); cleanButton.addActionListener(this); panel1.add(newJLabel("输入x:")); panel1.add(oneField); panel2.add(newJLabel("输入y:")); panel2.add(twoField); this.setLayout(newFlowLayout()); this.add(panel1); this.add(panel2); this.add(panel3); this.add(resultField); this.setBounds(200,100,300,200); this.setVisible(true); this.validate(); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } publicvoidactionPerformed(ActionEvente) { doublex=0; doubley=0; try { x=Double.parseDouble(oneField.getText()); y=Double.parseDouble(twoField.getText()); } catch(NumberFormatExceptione1) { resultField.setText("请输入数字字符"); } if(e.getSource()==addButton) { resultField.setText("X+Y="+(x+y)); } elseif(e.getSource()==subtractButton) { resultField.setText("X-Y="+(x-y)); } elseif(e.getSource()==multiplyButton) { resultField.setText("X¡ÁY="+(x*y)); } elseif(e.getSource()==divideButton) { if(y==0) resultField.setText("除数不能为0"); else resultField.setText("X¡ÂY="+(x/y)); } if(e.getSource()==cleanButton) { oneField.setText(""); twoField.setText(""); resultField.setText(""); } } publicstaticvoidmain(String[]args) { newCalculator(); }}7选择框应用程序。程序运行结果:选择框程序源文件:Work11_7.javaimportjava.awt.*;importjava.awt.event.*;importjavax.swing.*;/***7选择框应用程序.<BR>*使用选择框选择商品,在文本框显示商品的单价、产地等信息.<BR>*@author黎明你好*/publicclassWork11_7extendsJFrameimplementsActionListener{ privatestaticfinallongserialVersionUID=1L; privateJPanelpanel1,panel2; privateGoodsgoods1,goods2,goods3,goods4; privateJTextFieldshowNameText;//显示商品名字 privateJTextFieldshowCostText;//显示单价 privateJTextFieldshowPlaceText;//显示产地 privateJTextFieldshowWeightText;//显示重量 privateButtonGroupgroup; publicWork11_7() { super("选择框应用程序"); panel1=newJPanel(); panel2=newJPanel(); group=newButtonGroup(); goods1=newGoods("高露洁牙膏",10.45,"广州",850); goods2=newGoods("飘柔洗发露",16.90,"天津",1530.5); goods3=newGoods("老干妈肉酱",9.80,"贵阳",210); goods4=newGoods("可比克薯片",8.50,"吉林",45); showNameText=newJTextField(10); showCostText=newJTextField(10); showPlaceText=newJTextField(10); showWeightText=newJTextField(10); addGoods(goods1); addGoods(goods2); addGoods(goods3); addGoods(goods4); panel2.setLayout(newGridLayout(4,2)); panel2.add(newJLabel("商品名称:")); panel2.add(showNameText); panel2.add(newJLabel("商品单价:")); panel2.add(showCostText); panel2.add(newJLabel("商品产地:")); panel2.add(showPlaceText); panel2.add(newJLabel("商品重量:")); panel2.add(showWeightText); this.setLayout(newFlowLayout()); this.add(panel1); this.add(panel2); this.setBounds(200,100,400,200); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } publicvoidaddGoods(Goodsgoods) { JCheckBoxbox=newJCheckBox(goods.getName()); group.add(box); box.addActionListener(this); panel1.add(box); } publicvoidactionPerformed(ActionEvente) { Stringname=e.getActionCommand(); if(name.equals(goods1.getName())) setGoodsText(goods1); if(name.equals(goods2.getName())) setGoodsText(goods2); if(name.equals(goods3.getName())) setGoodsText(goods3); if(name.equals(goods4.getName())) setGoodsText(goods4); } publicvoidsetGoodsText(Goodsgoods) { showNameText.setText(""+goods.getName()); showPlaceText.setText(""+goods.getPlace()); showCostText.setText(""+goods.getCost()+"元"); showWeightText.setText(""+goods.getWeight()+"克"); } publicstaticvoidmain(Stringargs[]) { newWork11_7(); }}用到的商品类源文件:Goods.java/***商品类*/classGoods{ privateStringname;//商品名称 privatedoublecost;//商品单价,单位元 privateStringplace;//商品产地 privatedoubleweight;//商品重量,单位克 publicGoods(Stringname,doublecost,Stringplace,doubleweight) { =name; this.cost=cost; this.place=place; this.weight=weight; } publicStringgetName() { returnname; } publicStringgetPlace() { returnplace; } publicdoublegetCost() { returncost; } publicdoublegetWeight() { returnweight; }}8菜单应用程序。程序运行结果:菜单练习程序源文件:MenuFrame.javaimportjava.awt.*;importjava.awt.event.*;importjavax.swing.*;/***菜单应用程序.<BR>*一个菜单,一个菜单条含三个下拉式菜单,每个下拉式菜单又有2到3个菜单项.<BR>*当选择某个菜单项时,弹出一个对话框显示菜单项的选择信息.<BR>*@author黎明你好*/publicclassMenuFrameextendsJFrameimplementsActionListener{ privatestaticfinallongserialVersionUID=1L; privateJMenuBarmenubar; privateJMenufile_menu,edit_menu,look_menu,arrangeIcons_menu,tool_menu; privateJMenuItemnew_item,open_item; privateJMenuItemcopy_item,paste_item; privateJMenuItemrefresh_item,byGroup_item,auto_item; privateJTextAreatextArea; publicMenuFrame() { super("菜单应用程序"); textArea=newJTextArea(); menubar=newJMenuBar(); file_menu=newJMenu("文件"); edit_menu=newJMenu("编辑"); look_menu=newJMenu("查看"); tool_menu=newJMenu("工具栏"); arrangeIcons_menu=newJMenu("排列图标"); new_item=newJMenuItem("新建"); open_item=newJMenuItem("打开"); copy_item=newJMenuItem("复制"); paste_item=newJMenuItem("粘贴"); refresh_item=newJMenuItem("刷新"); byGroup_item=newJMenuItem("按组排列"); auto_item=newJMenuItem("自动排列"); menubar.add(file_menu); menubar.add(edit_menu); menubar.add(look_menu); file_menu.add(new_item); file_menu.add(open_item); edit_menu.add(copy_item); edit_menu.add(paste_item); look_menu.add(refresh_item); look_menu.add(tool_menu); look_menu.add(arrangeIcons_menu); arrangeIcons_menu.add(byGroup_item); arrangeIcons_menu.add(auto_item); new_item.addActionListener(this); open_item.addActionListener(this); copy_item.addActionListener(this); paste_item.addActionListener(this); refresh_item.addActionListener(this); byGroup_item.addActionListener(this); auto_item.addActionListener(this); this.setJMenuBar(menubar); this.add(textArea,BorderLayout.CENTER); this.setBounds(50,50,250,200); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } publicvoidactionPerformed(ActionEvente) { Stringname=e.getActionCommand(); JOptionPane.showMessageDialog(this,name+"背选中","提示信息",JOptionPane.INFORMATION_MESSAGE); } publicstaticvoidmain(String[]args) { newMenuFrame(); }}9多线程应用程序。程序运行结果:多线程程序源文件ThreadFrame.javaimportjava.awt.BorderLayout;importjava.awt.event.*;importjavax.swing.*;***多线程应用程序.<BR>*爸爸和妈妈不断往盘子中放桃子.<BR>*三个儿子不断吃盘子汇总的桃子,吃的速度不一样.<BR>*不能同时操作盘子,盘子最多可以放5个桃子.<BR>*@author黎明你好*/publicclassThreadFrameextendsJFrameimplementsRunnable,ActionListener{ privatestaticfinallongserialVersionUID=1L; privateJPanelpanel; privateJButtonbutton; privateJTextAreatextArea; privateThreadfatherThread,motherThread,childOneThread,childTwoThread,childThreeThread; privateintpeachCount=0;//盘子桃子数量 publicstaticfinalintEAT=0;//动作,吃桃子 publicstaticfinalintPRODUCE=1;//动作,放桃子 publicstaticfinalintCOUNTDISH=5;//盘子可以放桃子总数 publicstaticfinalintCOUNT=50;//总的执行次数,防止程序一直执行下去 privateintnumber=0; publicThreadFrame() { super("多线程应用程序"); fatherThread=newThread(this); motherThread=newThread(this); childOneThread=newThread(this); childTwoThread=newThread(this); childThreeThread=newThread(this); panel=newJPanel(); button=newJButton("开始程序"); textArea=newJTextArea(); button.addActionListener(this); panel.add(button); this.add(panel,BorderLayout.NORTH); this.add(newJScrollPane(textArea),BorderLayout.CENTER); this.setBounds(10,10,500,700); this.setVisible(true); this.validate(); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } publicvoidactionPerformed(ActionEvente) { fatherThread.start(); motherThread.start(); childOneThread.start(); childTwoThread.start(); childThreeThread.start(); } publicvoidrun() { if(Thread.currentThread()==fatherThread) { while(number<COUNT) { dish(PRODUCE,"爸爸-"); try { Thread.sleep(100); } catch(InterruptedExceptione) { e.printStackTrace(); } number++; } } if(Thread.currentThread()==motherThread) { while(number<COUNT) { dish(PRODUCE,"妈妈-"); try { Thread.sleep(200); } catch(InterruptedExceptione) { e.printStackTrace(); } number++; } } if(Thread.currentThread()==childOneThread) { while(number<COUNT) { dish(EAT,"老大-"); try { Thread.sleep(1000); } catch(InterruptedExceptione) { e.printStackTrace(); } number++; } } if(Thread.currentThread()==childTwoThread) { while(number<COUNT) { dish(EAT,"老二-"); try { Thread.sleep(500); } catch(InterruptedExceptione) { e.printStackTrace(); } number++; } } if(Thread.currentThread()==childThreeThread) { while(number<COUNT) { dish(EAT,"老三-"); try { Thread.sleep(300); } catch(InterruptedExceptione) { e.printStackTrace(); } number++; } } } /** *对盘子操作的方法 *@paramaction-动作,分为吃EAT,和放PRODUCE *@paramname-动作的产生者 */ publicsynchronizedvoiddish(intaction,Stringname) { if(action==EAT) { while(true) { if(peachCount>=1) break; else { try { textArea.append("eatpeachwait"+name+"吃桃子等待\n"); wait(); } catch(InterruptedExceptione) { e.printStackTrace(); } } } peachCount--; textArea.append(name+"吃掉一个桃子\n"); textArea.append("----------------盘子中桃子数量为:"+peachCount+"个\n"); } if(action==PRODUCE) { while(true) { if(peachCount<COUNTDISH) break; else { try { textArea.append("producepeachwait"+name+"放桃子等待\n"); wait(); } catch(InterruptedExceptione) { e.printStackTrace(); } } } peachCount++; textArea.append(name+"放上一个桃子\n"); textArea.append("----------------盘子中桃子数量为:"+peachCount+"个\n"); } notify(); } publicstaticvoidmain(String[]args) { newThreadFrame(); }}10数据文件应用程序。原文件:OpenAndSaveFile.javaimportjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.io.*;/***保存和打开文件*@author黎明你好*/publicclassOpenAndSaveFileextendsJFrameimplementsActionListener{ privatestaticfinallongserialVersionUID=1L; privateJFileChooserfileChooser;//文件选择对话框 privateJPanelnorthPanel;//布局用的panel privateJButtonopenFileButton,saveFileButton;//打开和保存文件按钮 privateJLabellabel;//
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 财税筹划与税务筹划顾问服务合同
- 互联网教育循环额度信用借款协议范本
- 智能制造场咨询服务协议
- 移离保全标的物申请书
- 监理专用表格汇编
- 公私账户集中管理制度
- 列车餐车夜班管理制度
- 出海作业用具管理制度
- 中西结合医院消防水池基坑支护设计报告
- 垃圾分类存储管理制度
- 搅拌站安全教育培训
- 大学语文(第三版)教案 孔子论孝
- 营养专科护士总结汇报
- 《美术教育学》课件
- 体检的服务方案
- 大盛公路工程造价管理系统V2010操作手册
- 户外运动基地设施建设技术可行性分析
- 礼品行业供应链优化研究
- 2023年山东省青岛市市南区、市北区、崂山区中考数学一模试卷(含答案解析)
- 无人生还-读书分享
- 单板硬件调试与单元测试方案报告
评论
0/150
提交评论