計算機語言Java課程設(shè)計-學(xué)籍管理系統(tǒng)_第1頁
計算機語言Java課程設(shè)計-學(xué)籍管理系統(tǒng)_第2頁
計算機語言Java課程設(shè)計-學(xué)籍管理系統(tǒng)_第3頁
計算機語言Java課程設(shè)計-學(xué)籍管理系統(tǒng)_第4頁
計算機語言Java課程設(shè)計-學(xué)籍管理系統(tǒng)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、課程設(shè)計說明書名稱 計算機語言Java課程設(shè)計 學(xué)籍管理系統(tǒng) 2011年 6月20日至 2011年 6月26日共 1 周院 系 計算機工程系 班 級 10軟件技術(shù)(外包)1班 姓 名 系主任 教研室主任 指導(dǎo)教師 目錄:1 系統(tǒng)概述11.2流程圖11.2 系統(tǒng)開發(fā)工具與環(huán)境22 系統(tǒng)設(shè)計22.1 系統(tǒng)概要設(shè)計22.2統(tǒng)詳細(xì)設(shè)計33系統(tǒng)的調(diào)試174課程設(shè)計心得185 參考文獻191 系統(tǒng)概述1.1 系統(tǒng)功能1學(xué)籍管理系統(tǒng)主界面模塊ManagerWindow類負(fù)責(zé)創(chuàng)建學(xué)籍管理系統(tǒng)的主窗口,該類含有main方法,程序從該類開始執(zhí)行。ManagerWindow類的成員變量中有4種重要類型的對象:Inp

2、utStudent,Inquest,ModifySitation和Delete對象。ManagerWindow類的主要成員的作用將在后面詳細(xì)闡述,ManagerWindow類創(chuàng)建的窗口及其中的主要對象2學(xué)籍管理系統(tǒng)Student模塊Student類所創(chuàng)建的對象是InputStudent類的成員之一,負(fù)責(zé)封裝學(xué)生的基本信息。3學(xué)籍管理系統(tǒng)StudentPicture模塊StudentPicture類所創(chuàng)建InputStudent,Inquest,DeleteModifySitation類的成員變量之一,負(fù)責(zé)顯示學(xué)生的照片。4學(xué)籍管理系統(tǒng)InputStudent模塊InputStudent類創(chuàng)建的

3、對象是ManagerWindow類的重要成員之一,負(fù)責(zé)提供錄入學(xué)生基本信息的界面5學(xué)籍管理系統(tǒng)Inquest模塊 Inquest類創(chuàng)建的對象是ManagerWindow類的重要成員之一,負(fù)責(zé)提供查詢學(xué)生基本信息及打印基本信息的界面。6學(xué)籍管理系統(tǒng)ModifSituation模塊 ModifSituation類創(chuàng)建的對象是ManagerWindow類的要成員之一,負(fù)責(zé)提供修改學(xué)生基本信息的界面。7學(xué)籍管理系統(tǒng)Delete模塊Delete類創(chuàng)建的對象是ManagerWindow類的重要成員之一,負(fù)責(zé)提供刪除學(xué)生基本信息的界面1.2流程圖啟動程序?qū)W生信息錄入系統(tǒng)主界面學(xué)生信息查詢學(xué)生信息修改學(xué)生信息

4、刪除顯示學(xué)生照片學(xué)生信息封裝退出系統(tǒng)1.2 系統(tǒng)開發(fā)工具與環(huán)境開發(fā)工具 Eclipse 軟件環(huán)境 開發(fā)語言:Java、J2SE 操作系統(tǒng):Windows XP硬件方面: 處理器:Intel Pentium 166MX 或更高。 內(nèi)存:512M以上。 硬盤空間:200M以上。2 系統(tǒng)設(shè)計2.1 系統(tǒng)概要設(shè)計1錄入學(xué)生基本信息功能的界面。用戶可以通過菜單選項讓程序呈現(xiàn)錄入學(xué)生基本信息功能的界面,通過該界面可以錄入學(xué)生的學(xué)號,姓名,性別,出生日期,專業(yè)和照片等信息。2修改學(xué)生基本信息的功能界面。用戶可以通過菜單選項讓程序呈現(xiàn)“修改學(xué)生基本信息”功能的界面,通過該界面可以對已錄入的學(xué)生信息進行修改。3

5、查詢與打印學(xué)生基本信息功能的界面,用戶可以通過菜單選項讓程序呈現(xiàn)出“查詢與打印學(xué)生基本信息”功能的界面,通過該界面可以對以錄入的學(xué)生信息進行查詢和打印。4刪除學(xué)生基本信息功能的界面。用戶可以通過菜單選項讓程序呈現(xiàn)“刪除學(xué)生基本信息”功能的界面,通過該界面可以刪除已錄入的學(xué)生信息。2.2統(tǒng)詳細(xì)設(shè)計2.2.1 ManagerWindow類 該類是javax.swing包中的一個子類,并實現(xiàn)了ActionListener接口,標(biāo)明該類的主要成員變量和方法的UML圖如圖4-1所示1)成員變量基本信息錄入是InputStudent對象,負(fù)責(zé)提供錄入信息的界面。基本信息修改時ModifySituation

6、對象,負(fù)責(zé)提供修改信息的界面?;拘畔⒉樵兣c打印時Inquest對象,負(fù)責(zé)提供查詢與打印信息的界面。基本信息刪除時HashMap創(chuàng)建的散列映射,用于存儲鍵。file是File文件對象,程序?qū)⒒拘畔⑸⒘杏成鋵懭朐撐募?。錄入,修改,查詢,刪除,歡迎界面是JMenuItem創(chuàng)建的菜單項。2)方法ManagerWindow()是構(gòu)造方法,負(fù)責(zé)完成窗口的初始化。actionPerformed(ActionEvent)方法是ManagerWindow類實現(xiàn)的ActionListener接口中的方法main方法是程序運行的入口方法public class ManagerWindow extends JF

7、rame implements ActionListener InputStudent 基本信息錄入; ModifySituation 基本信息修改; Inquest 基本信息查詢與打印; Delete 基本信息刪除; JMenuBar bar; JMenu fileMenu; JMenuItem 錄入,修改,查詢與打印,刪除,歡迎界面; HashMap 基本信息=null; File file=null; CardLayout card=null; JLabel label=null; JPanel pCenter; public ManagerWindow() 錄入=new JMenuIt

8、em(錄入學(xué)生基本信息); 修改=new JMenuItem(修改學(xué)生基本信息); 查詢與打印=new JMenuItem(查詢與打印學(xué)生基本信息); 刪除=new JMenuItem(刪除學(xué)生基本信息); 歡迎界面=new JMenuItem(歡迎界面); bar=new JMenuBar(); fileMenu=new JMenu(菜單選項); fileMenu.add(錄入); fileMenu.add(修改); fileMenu.add(查詢與打印); fileMenu.add(刪除); fileMenu.add(歡迎界面); bar.add(fileMenu); setJMenuBa

9、r(bar); label=new JLabel(學(xué)籍管理系統(tǒng),JLabel.CENTER); label.setIcon(new ImageIcon(welcome.jpg); label.setFont(new Font(隸書,Font.BOLD,36); label.setHorizontalTextPosition(SwingConstants.CENTER); label.setForeground(Color.red); 基本信息=new HashMap(); 錄入.addActionListener(this); 修改.addActionListener(this); 查詢與打印

10、.addActionListener(this); 刪除.addActionListener(this); 歡迎界面.addActionListener(this); card=new CardLayout(); pCenter=new JPanel(); pCenter.setLayout(card); file=new File(基本信息.txt); if(!file.exists() try FileOutputStream out=new FileOutputStream(file); ObjectOutputStream objectOut=new ObjectOutputStrea

11、m(out); objectOut.writeObject(基本信息); objectOut.close(); out.close(); catch(IOException e) 基本信息錄入=new InputStudent(file); 基本信息修改=new ModifySituation(file); 基本信息查詢與打印=new Inquest(file); 基本信息刪除=new Delete(file); pCenter.add(歡迎界面,label); pCenter.add(錄入界面,基本信息錄入); pCenter.add(修改界面,基本信息修改); pCenter.add(刪除

12、界面,基本信息刪除); add(pCenter,BorderLayout.CENTER); validate(); setVisible(true); setBounds(100,50,460,280); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) int n=JOptionPane.showConfirmDialog(null,確認(rèn)退出嗎?,確認(rèn)對話框, JOptionPa

13、ne.YES_NO_OPTION ); if(n=JOptionPane.YES_OPTION) System.exit(0); ); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=錄入) 基本信息錄入.clearMess(); card.show(pCenter,錄入界面); else if(e.getSource()=修改) 基本信息修改.clearMess(); card.show(pCenter,修改界面); else if(e.getSource()=查詢與打印) 基本信息查詢與打印.c

14、learMess(); 基本信息查詢與打印.setLocation(getBounds().x+getBounds().width,getBounds().y); 基本信息查詢與打印.setVisible(true); else if(e.getSource()=刪除) card.show(pCenter,刪除界面); else if(e.getSource()=歡迎界面) card.show(pCenter,歡迎界面); public static void main(String args) new ManagerWindow(); 運行效果如下圖所示:.2.2.2 Student類 創(chuàng)建

15、的類對象“學(xué)生”是InputStudent的重要成員之一,負(fù)責(zé)處理和學(xué)生有關(guān)的數(shù)據(jù)。標(biāo)明Student類的主要成員變量和方法以及InputStudent類之間的組合1)成員變量number,name,discipling,grade,borth和sex是String對象,他們的值分別表示學(xué)生的學(xué)號,姓名,專業(yè),年級,出生日期,性別。imagePic是File對象,用來存放學(xué)生的照片圖像的引用。2)方法setNumber(String)和getNumber()方法分別用來設(shè)置number和獲取number。setImagePic和getImagePic()方法分別用來設(shè)置imagePic和獲取它

16、的值。源代碼:public class Student implements Serializable String number,name,discipling,grade,borth,sex; File imagePic; public void setNumber(String number) this.number=number; public String getNumber() return number; public void setName(String name) =name; public String getName() return name; pu

17、blic void setDiscipling(String discipling) this.discipling=discipling; public String getDisciping() return discipling; public void setGrade(String grade) this.grade=grade; public String getGrade() return grade; public void setBorth(String borth) this.borth=borth; public String getBorth() return bort

18、h; public void setSex(String sex) this.sex=sex; public String getSex() return sex; public void setImagePic(File image) imagePic=image; public File getImagePic() return imagePic; 運行效果如下圖所示:2.2.3 InputStudent類InputStudent類是javax.swing包中JPanel容器的子類,并實現(xiàn)了ActionListener接口,所創(chuàng)建的對象,基本信息錄入是ManagerWiodow類中的最重要

19、成員之一,負(fù)責(zé)提供錄入學(xué)生信息的界面。表明Inputstudent類的主要成員變量,方法和ManagerWindow類組合關(guān)系1)成員變量學(xué)生是Student創(chuàng)建的對象,該對象含有核學(xué)生有關(guān)的數(shù)據(jù)。pic是StudentPicture創(chuàng)建的對象,負(fù)責(zé)繪制學(xué)生的照片。錄入,重置和選擇照片是JButton創(chuàng)建的對象,這些按鈕都將當(dāng)前容器注冊為自己的ActionEvent事件監(jiān)視器。2)方法InputStudent(File)是構(gòu)造方法,用來創(chuàng)建基本信息錄入對象,當(dāng)創(chuàng)建對象時,通過該構(gòu)造方法的參數(shù)將ManagerWindow類中的file的引用傳遞給systemFile.actionPerforme

20、d(ActionEvent)方法是Inputstudent類實現(xiàn)接口中的方法。InputStdent創(chuàng)建的容器是錄入,重置,選擇照片按鈕時,容器將執(zhí)行action Performed(ActionEvent)方法進行相應(yīng)的操作。運行效果如下圖所示:源代碼:public class InputStudent extends JPanel implements ActionListener Student 學(xué)生=null; StudentPicture pic; HashMap 基本信息表=null; JTextField 學(xué)號,姓名,年級,出生; JButton 選擇照片; JComboBox

21、專業(yè); JRadioButton 男,女; ButtonGroup group=null; JButton 錄入,重置; FileInputStream inOne=null; ObjectInputStream inTwo=null; FileOutputStream outOne=null; ObjectOutputStream outTwo=null; File systemFile,imagePic; public InputStudent(File file) systemFile=file; pic=new StudentPicture(); 學(xué)號=new JTextField(5

22、); 姓名=new JTextField(5); 專業(yè)=new JComboBox(); try FileReader inOne=new FileReader(專業(yè).txt); BufferedReader inTwo= new BufferedReader(inOne); String s=null; int i=0; while(s=inTwo.readLine()!=null) 專業(yè).addItem(s); inOne.close(); inTwo.close(); catch(IOException exp) 專業(yè).addItem(數(shù)學(xué)); 專業(yè).addItem(計算機科學(xué)與技術(shù));

23、 年級=new JTextField(5); 出生=new JTextField(5); 選擇照片=new JButton(選擇); group=new ButtonGroup(); 男=new JRadioButton(男,true); 女=new JRadioButton(女,false); group.add(男); group.add(女); 錄入=new JButton(錄入); 重置=new JButton(重置); 錄入.addActionListener(this); 選擇照片.addActionListener(this); 重置.addActionListener(this

24、); Box box1=Box.createHorizontalBox(); box1.add(new JLabel(學(xué)號:,JLabel.CENTER); box1.add(學(xué)號); Box box2=Box.createHorizontalBox(); box2.add(new JLabel(姓名:,JLabel.CENTER); box2.add(姓名); Box box3=Box.createHorizontalBox(); box3.add(new JLabel(性別:,JLabel.CENTER); box3.add(男); box3.add(女); Box box4=Box.cr

25、eateHorizontalBox(); box4.add(new JLabel(專業(yè):,JLabel.CENTER); box4.add(專業(yè)); Box box5=Box.createHorizontalBox(); box5.add(new JLabel(年級:,JLabel.CENTER); box5.add(年級); Box box6=Box.createHorizontalBox(); box6.add(new JLabel(出生:,JLabel.CENTER); box6.add(出生); Box boxH=Box.createVerticalBox(); boxH.add(bo

26、x1); boxH.add(box2); boxH.add(box3); boxH.add(box4); boxH.add(box5); boxH.add(box6); boxH.add(Box.createVerticalGlue(); JPanel picPanel=new JPanel(); picPanel.setBackground(Color.green); picPanel.add(new JLabel(選擇照片:,JLabel.CENTER); picPanel.add(選擇照片); JPanel putButton=new JPanel(); putButton.add(錄入

27、); putButton.add(重置); JPanel messPanel=new JPanel(); messPanel.add(boxH); messPanel.setBackground(Color.cyan); putButton.setBackground(Color.red); setLayout(new BorderLayout(); JSplitPane splitV= new JSplitPane(JSplitPane.VERTICAL_SPLIT,picPanel,pic); JSplitPane splitH=new JSplitPane(JSplitPane.HORI

28、ZONTAL_SPLIT,messPanel,splitV); add(splitH,BorderLayout.CENTER); add(putButton,BorderLayout.SOUTH); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=錄入) String number=; number=學(xué)號.getText(); if(number.length()0) try inOne=new FileInputStream(systemFile); inTwo=new ObjectInputSt

29、ream(inOne); 基本信息表=(HashMap)inTwo.readObject(); inOne.close(); inTwo.close(); catch(Exception ee) if(基本信息表.containsKey(number) String warning=該生基本信息已存在,請到修改頁面修改!; JOptionPane.showMessageDialog(this,warning,警告, JOptionPane.WARNING_MESSAGE); else String m=基本信息將被錄入!; int ok=JOptionPane.showConfirmDialo

30、g(this,m,確認(rèn), JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE); if(ok=JOptionPane.YES_OPTION) String name=姓名.getText(); String discipling=(String)專業(yè).getSelectedItem(); String grade=年級.getText(); String borth=出生.getText(); String sex=null; if(男.isSelected() sex=男.getText(); else sex=女.getTex

31、t(); 學(xué)生=new Student(); 學(xué)生.setNumber(number); 學(xué)生.setName(name); 學(xué)生.setDiscipling(discipling); 學(xué)生.setGrade(grade); 學(xué)生.setBorth(borth); 學(xué)生.setSex(sex); 學(xué)生.setImagePic(imagePic); try outOne=new FileOutputStream(systemFile); outTwo=new ObjectOutputStream(outOne); 基本信息表.put(number,學(xué)生); outTwo.writeObject(

32、基本信息表); outTwo.close(); outOne.close(); clearMess(); Catch(Exception ee) else String warning=必須要輸入學(xué)號!; JOptionPane.showMessageDialog(this,warning,警告,JOptionPane.WARNING_MESSAGE); else if(e.getSource()=選擇照片) JFileChooser chooser=new JFileChooser(); FileNameExtensionFilter filter = new FileNameExtensi

33、onFilter( JPG & GIF Images, jpg, gif); chooser.setFileFilter(filter); int state=chooser.showOpenDialog(null); File choiceFile=chooser.getSelectedFile(); if(choiceFile!=null&state=JFileChooser.APPROVE_OPTION) 選擇照片.setText(choiceFile.getName(); imagePic=choiceFile; pic.setImage(imagePic); pic.repaint(

34、); else if(e.getSource()=重置) clearMess(); public void clearMess() 學(xué)號.setText(null); 姓名.setText(null); 年級.setText(null); 出生.setText(null); 選擇照片.setText(選擇); imagePic=null; pic.setImage(imagePic); pic.repaint(); 2.2.4 ModifySituation類 ModifySituation類是javax.swing包中JPanel容器的子類,并實現(xiàn)了ActionListener接口,所創(chuàng)建的

35、對象:基本信息查詢時ManagerWindow類中最重要的成員之一,負(fù)責(zé)提供修改學(xué)生信息的界面。標(biāo)明ModifySituation類的主要成員變量,方法以及和ManagerWindow類之間組合關(guān)系。1)成員變量pic是StudentPicture創(chuàng)建的對象,負(fù)責(zé)繪制學(xué)生的照片。錄入,重置和選擇照片是JButton創(chuàng)建的對象,這些按鈕都將當(dāng)前容器注冊為自己的ActionEvent事件監(jiān)視器.actionPerformed(ActionEvent)方法是InputStudent類實現(xiàn)ActionListener接口中的方法。Inquest創(chuàng)建的對話框時查詢,打印文本照片,打印文本和打印照片按鈕的

36、ActionEvent事件監(jiān)視器,當(dāng)用戶單擊某個按鈕時,對話框?qū)?zhí)行actionPerformed(ActionEvent)方法進行相應(yīng)的操作。2)方法 ModifySituation(File)是構(gòu)造方法,用來創(chuàng)建基本信息修改對象,當(dāng)創(chuàng)建該對象時,通過該構(gòu)造方法的參數(shù)將ManagerWindow類中的file的引用傳遞給systemFile. actionPerformed(ActionEvent)方法是InputStudent類實現(xiàn)的ActionListener接口中的方法。InputStudent創(chuàng)建的容器時開始修改,錄入修改,重置,選擇照片按鈕的ActionPerformed(Acti

37、onEvent)方法進行相應(yīng)的操作。運行效果如下圖所示:2.2.5 Delete類 Delete類是javax.swing包中JPanel容器的子類,并實現(xiàn)了ActionListen接口,所創(chuàng)建的對象:基本信息刪除是ManagerWindow類中最重要的成員之一,負(fù)責(zé)提供刪除學(xué)生信息的界面。標(biāo)明Delete類的主要成員變量,方法以及和 ManagerWindow類之間組合關(guān)系1)成員變量 基本信息表是HashMap創(chuàng)建的散列映射,用于存儲鍵值數(shù)據(jù)對,其中的鍵必須是一個String對象,鍵對應(yīng)的值必須是Student對象。程序?qū)膕ystemFile文件中讀出曾寫入到該文件中的HashMap對象

38、,并且將這個對象的引用賦給基本信息表。刪除是JButton創(chuàng)建的對象,該按鈕將當(dāng)前容器注冊為自己的ActionEvent事件監(jiān)視器。systemFile和imagePic是File聲明的對象,其中systemFile存放的件引用ManagerWindow類中的file相同。2)方法Delete是構(gòu)造方法,用來創(chuàng)建基本信息刪除對象,當(dāng)創(chuàng)建對象時,通過該構(gòu)造方法的參數(shù)將ManagerWindow類中的file的引用傳遞給system.actionPerformed(ActionEvent)方法是InputStudent類實現(xiàn)ActionListener接口中的方法。Inquest創(chuàng)建的對話框時查詢

39、,打印文本照片,打印文本和打印照片按鈕的ActionEvent事件監(jiān)視器,當(dāng)用戶單擊某個按鈕時,對話框?qū)?zhí)行actionPerformed(ActionEvent)方法進行相應(yīng)的操作。運行效果如下圖所示:源代碼:public class Delete extends JPanel implements ActionListener HashMap 基本信息表=null; JTextField 學(xué)號,姓名,專業(yè),年級,出生; JRadioButton 男,女; JButton 刪除; ButtonGroup group=null; FileInputStream inOne=null; Obje

40、ctInputStream inTwo=null; FileOutputStream outOne=null; ObjectOutputStream outTwo=null; File systemFile=null; public Delete(File file) systemFile=file; 學(xué)號=new JTextField(10); 刪除=new JButton(刪除); 學(xué)號.addActionListener(this); 刪除.addActionListener(this); 姓名=new JTextField(10); 姓名.setEditable(false); 專業(yè)=

41、new JTextField(10); 專業(yè).setEditable(false); 年級=new JTextField(10); 年級.setEditable(false); 出生=new JTextField(10); 出生.setEditable(false); 男=new JRadioButton(男,false); 女=new JRadioButton(女,false); group=new ButtonGroup(); group.add(男); group.add(女); Box box1=Box.createHorizontalBox(); box1.add(new JLabe

42、l(輸入要刪除的學(xué)號:,JLabel.CENTER); box1.add(學(xué)號); box1.add(刪除); Box box2=Box.createHorizontalBox(); box2.add(new JLabel(姓名:,JLabel.CENTER); box2.add(姓名); Box box3=Box.createHorizontalBox(); box3.add(new JLabel(性別:,JLabel.CENTER); box3.add(男); box3.add(女); Box box4=Box.createHorizontalBox(); box4.add(new JLa

43、bel(專業(yè):,JLabel.CENTER); box4.add(專業(yè)); Box box5=Box.createHorizontalBox(); box5.add(new JLabel(年級:,JLabel.CENTER); box5.add(年級); Box box6=Box.createHorizontalBox(); box6.add(new JLabel(出生:,JLabel.CENTER); box6.add(出生); Box boxH=Box.createVerticalBox(); boxH.add(box1); boxH.add(box2); boxH.add(box3); boxH.add(box4); boxH.add(box5); boxH.a

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論