学生成绩管理课程设计报告_第1页
学生成绩管理课程设计报告_第2页
学生成绩管理课程设计报告_第3页
学生成绩管理课程设计报告_第4页
学生成绩管理课程设计报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

合肥学院计算机科学与技术系课程设计报告20092010学年第二学期课程Java 语言程序设计课程设计名称学生成绩管理系统专业班级07网络工程(1)班姓名董向阳指导教师许强、张贯虹2010年9月一、需求分析当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正式计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。管理信息系统是进行信息的采集、存储、加工、维护和使用的系统,它是随着管理科学和技术可续的发展而形成的。学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段,对学生来说,可以轻松地查阅自己在校的成绩以及信息等。但是一直以来人们都是考传统人工的方式管理学生成绩,这种管理方式存在着许多优点,如效率低、保密性差等,另外时间长的话,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,有着手工管理无法比拟的优点,如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生成绩管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。因此,开发这样的一套成绩管理系统成为很有必要的事情。学生成绩管理系统提供了强大的学生成绩管理管理功能,方便系统管理员对学生成绩等信息的添加、修改、删除、查询等操作,同时也为学生对自己的各种成绩查对以及学习的交流等提供了很好的可用性。介于时间及个人知识水平因素,本系统基本上实现了前台的信息浏览和查询功能以及后台对信息的增加、修改、删除、发布的功能。 二. 设计1设计思想: 该程序使用JDBC-ODBC桥与数据库连接,程序中主要定义主类和操作类来实现功能。其中主类提供等待用户的操作的主界面(菜单),到达任务要求有较好的图形界面,而操作类中定义与数据库的连接、提供各种操作界面(增、删、改及统计等操作)。并且操作类使用模块化设计,将各个不同的小的功能分别编在各个JAVA小程序中,通过操作类中的菜单项的事件监听连接执行各操作。在连接数据库时,我使用了JDBC-ODBC桥,JDBC-ODBC的作用概括起来有如下3个方面:(1)建立与数据库的连接;(2)向数据库发起查询请求;(3)处理数据库返回结果。这些作用是通过一系列API实现的,其中的几个重要类或接口如下表 1所示。 表 1与数据库有关的几个重要类或接口接口作用java.sql.Drivermanagerjava.sql.Connectionjava.sql.Statementjava.sql.ResultSet处理驱动程序的加载和建立新数据库连接处理与特定数据库的连接在指定连接中处理SQL语句处理数据库操作结果集2功能设计在本课程设计过程中,按照课程设计要求,设计了简单的使用数据库存储学生成绩的学生成绩管理程序。数据库中的每条记录包括学号、姓名、分数等信息。本系统的主要功能如下: (1)初始进入系统的图形界面(2)按照学号查找学生及成绩并显示全部记录。(3)增加、删除、修改学生成绩记录。(4)计算平均成绩。统计出优秀(100-90)、良好(89-75)一般(74-60)和不及格(59-0)的人数百分比。按成绩分数排序。功能结构图如下图1所示:图1 功能结构图3. 数据库设计本系统的开发利用SQL2000作为本系统的数据库,使用jdk1.6.0_18作为系统开发的开发环境,能够通过编程进行简单的图形界面式的设计,这样给人提供更简洁易于操作的图形界面化操作体统。数据库的设计主要是通过企业管理器进行xuesheng数据库的创建,然后在企业管理器中逐个输入待测试的数据集,这样可以简单地设计出学生成绩信息这个数据库,减少了使用SQL语言进行设计数据库的繁琐,提高了整个课程设计过程的时间效率。而对于本课程设计的系统中设计了简单的使用数据库存储学生成绩的学生成绩管理程序。数据库中的每条记录包括学号、姓名、分数等信息。所以学生建了一个xuesheng数据库,并且在这个数据库中我只建立了一帐xinxi表。表中的属性有Sno(学生学号)、Sname(学生姓名)、Score(学生成绩),并设置Sno为主属性。信息记录如下图 2所示:图 2数据库信息截图4详细设计(1)初始进入系统的图形界面定义一个主类MyProcess,用于设计一个用户操作的主界面,在这个主界面内,创建菜单及菜单选项,程序设计如下:public void go() /设置窗口容器的布局管理器 this.getContentPane().setLayout(borderlayout1); /设置窗口的大小和标题 this.setSize(new Dimension(300,200); this.setTitle(学生成绩管理系统); label1=new JLabel(学生管理信息系统); /添加菜单栏 this.setJMenuBar(jmenubar1); /设置菜单和菜单项名称 jmenu1.setText(成绩管理); jmenuitem1.setText(添加成绩); jmenuitem2.setText(删除成绩); jmenuitem3.setText(修改成绩); jmenuitem4.setText(查询成绩); jmenuitem5.setText(查看平均成绩); jmenu2.setText(帮助); jmenuitem6.setText(说明); jmenuitem7.setText(版权); jmenu3.setText(退出); jmenuitem8.setText(退出系统); /向菜单栏中添加菜单 jmenubar1.add(jmenu1); jmenubar1.add(jmenu2); jmenubar1.add(jmenu3); /向菜单中添加菜单项 jmenu1.add(jmenuitem1); jmenu1.add(jmenuitem2); jmenu1.add(jmenuitem3); jmenu1.add(jmenuitem4); jmenu1.add(jmenuitem5); jmenu2.add(jmenuitem6); jmenu2.add(jmenuitem7); jmenu3.add(jmenuitem8);并通过对每个菜单及菜单选项设计监听器,用于监听在对每个菜单及菜单选项的操作时产生的动作,然后做出相应的相应:jmenuitem1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) addusers addusers=new addusers(); panel.add(addusers,添加成绩); CardLayout c1=(CardLayout)panel.getLayout(); c1.show(panel,添加成绩); ); jmenuitem2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) delete dele=new delete(); panel.add(dele,删除成绩); CardLayout c1=(CardLayout)panel.getLayout(); c1.show(panel,删除成绩); ); jmenuitem3.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) chengjixiugai o=new chengjixiugai(); panel.add(o,修改成绩); CardLayout c1=(CardLayout)panel.getLayout(); c1.show(panel,修改成绩); ); jmenuitem4.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) chengjichaxun o=new chengjichaxun(); panel.add(o,成绩查询); CardLayout c1=(CardLayout)panel.getLayout(); c1.show(panel,成绩查询); ); jmenuitem5.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) pingjunchengji o=new pingjunchengji(); panel.add(o,平均成绩查看); CardLayout c1=(CardLayout)panel.getLayout(); c1.show(panel,平均成绩查看); ); jmenuitem6.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(currentContainer, 该程序使用JDBC-ODBC桥与数据库连接,来使用数据库存储学生成绩,进行学生成绩管理。,帮助信息,JOptionPane.PLAIN_MESSAGE); ); jmenuitem7.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(currentContainer, 小组成员:n+ 严国琴n + 董向阳n,版权信息,JOptionPane.INFORMATION_MESSAGE); ); jmenuitem8.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) Icon icon=new ImageIcon(baibai.gif); JOptionPane.showMessageDialog(currentContainer,icon,欢迎下次光临,JOptionPane.INFORMATION_MESSAGE); System.exit(0); ); Icon icon=new ImageIcon(qingliang.jpg); JLabel label=new JLabel(icon); panel.add(label);/设置图片 setContentPane(panel); /产生窗口的最佳尺寸、布局各组件,然后显示窗口 pack(); setVisible(true); 设计明细见“附录1”中的主菜单源程序。其程序的运行图形化结果如下图3:图3 用户操作整体界面(2)按照学号查找学生及成绩并显示全部记录。首先定义chengjichaxun类,然后分别在该类中设计方法,用于进行查询窗口的布局设计:chengjichaxun() super(成绩查询); c=getContentPane(); c.setLayout(new BorderLayout(); classLabel=new JLabel(学号,JLabel.CENTER); CTextField=new JTextField(15); button1=new JButton(查询); panel1=new JPanel(); panel1.add(classLabel); panel1.add(CTextField); panel1.add(button1); String n=学生学号,姓名,分数; String data=new String00; defaultModel=new DefaultTableModel(data,n); table=new JTable(defaultModel); table.setPreferredScrollableViewportSize(new Dimension(450,80); JScrollPane s=new JScrollPane(table); panel2=new JPanel(); panel2.add(s); c.add(panel1,BorderLayout.NORTH); c.add(panel2,BorderLayout.SOUTH); pack(); setVisible(true);然后监听输入的学号信息,通过语句Connection con =DriverManager.getConnection(jdbc:odbc:xuesheng); Statement stmt = con.createStatement(); ResultSet rs=stmt.executeQuery(str); while(rs.next() Vector data=new Vector(); data.addElement(rs.getString(1); data.addElement(rs.getString(2); data.addElement(rs.getString(3); defaultModel.addRow(data); table.revalidate();来进行数据库调用并查询,将存在的学生成绩信息显示出来,如果不存在则不显示任何信息。运行截图如下图4:图4 查询学生成绩(3)对于其他的操作类的设计与实现,其设计思想和实现方法同(2),在此不多加叙述。以下图例则是本程序的运行结果截图:图5 添加学生成绩图6 添加成功提示信息图7 删除学生成绩图8修改学生成绩信息图9 操作结束时退出提示界面三. 调试及测试1、调试过程中遇到的主要问题及解决方法 由于之前学习的JAVA课程中,对于数据库编程这方面我们基本没有涉及,所以在做程序之前学生查阅了这方面的资料,可是有些细节问题还是不太清楚,例如,在设计计算平均成绩百分比的算法时,数据库操作结果集总是无法返回并显示到界面上,在DOS运行中出现提示:ResultSet is Closed!,后来经过和在JAVA方面比较精通的同学以及同组中的同学相互讨论分析,找到了错误所在:在写SQL语句时,把String str2=select count(*) from xinxi where Score between 75 and 89写成了String str2=select count(*) from xinxi where Score between 89 and 75,而这样查询结果为0,而又没用if( rs2.next()语句来事先检测一下是否有结果集。2、对设计和编码的回顾讨论和分析由于本系统开发要求较好的图形界面,在主类中学生创建了菜单栏,添加了菜单,并加入要求实现不同功能的菜单项,对各菜单项设置了监听事件。在操作类中实现与数据库的连接,主要用了JDBC-ODBC桥。通过使用JDBC-ODBC,便于开发人员将SQL语句传送给几乎任何一种数据库,在设置完ODBC数据源后,在程序中实现对数据库的操作的有:(1) 处理驱动程序的加载和建立新数据库连接:String JDriver = sun.jdbc.odbc.JdbcOdbcDriver; String connectionURL=jdbc:odbc:xuesheng; Class.forName(JDriver);(2) 处理与特定数据库的连接:Connection con = DriverManager.getConnection(connectionURL);(3) 在指定连接中处理SQL语句:Statement stmt = con.createStatement();(4) 处理数据库操作结果集: ResultSet rs=stmt.executeQuery(str);至于程序中其他部分都是基本的JAVA关于图形设计语句,而且在本系统设计中,对于学生成绩的各种操作,即在诸如addusers.java,chengjichaxun.java,chengjixiugai.java,delete.java,pingjunchengji.java等程序的设计中,每个部分的设计思想以及与数据库的连接的思想是相同的,如上述对数据库的操作。故而这也使得在本课程设计中对于本系统的设计变得简单,也使得在整个程序设计中,易于学生能够较快地明确设计思路,进而设计出满足设计要求的简单的学生成绩管理系统。3、测试数据集测试数据集如下图 10所示:图10 数据库中学生信息表四、经验和体会。本次课程设计的理论知识建立在对JAVA和SQL数据库的学习基础上,是对此二学科知识的综合运用。它让学生更加清醒地温习和巩固了对数据库和JAVA编程语言的学习,通过二者的相互结合,让学生初步了解和学习了在软件设计过程中,JAVA语言程序软件设计与数据库的紧密结合及其设计软件的思想。而在这之前,由于所学的JAVA语言程序设计和SQL数据库二课程学时的限制,在老师的教学过程中,几乎没有涉及到JAVA程序设计与数据库链接以及二者在软件工程中紧密结合的知识,所以经过本次课程设计,让学生认识并学习到了这一点。对于后续课程,如即将开设的WEB应用系统开发课程的学习起到了引导的作用。学生的本次课程设计题目为学生成绩管理系统,根据课程设计要求,学生的本次关于学生成绩管理系统的设计简单,经过与同组同学的相互配合,很容易便理清了思路。由于仅仅涉及到学生成绩的添加、删除、查询以及修改等几个简单的操作,设计思路清晰,功能构架较简单,故而经过和同组同学商议,便一同设计并实现了该系统,完成了本次设计的设计要求。又鉴于学生学习JAVA和数据库的专业知识水平有限,故而仅仅是完成了课程设计的要求,达到本次课程设计的初衷目的。最后感谢许老师和张老师的辛勤指导,以及感谢同组中严国琴同学的合作与帮助,同时也感谢在学生的整个课程设计过程中,对学生在程序设计中遇到的种种学生难解的问题而给予热情帮助的冯晓凯同学,有了你们热心而大力的指导、合作与帮助,才有了学生这一次课程设计较完满地告一段落。衷心地向你们说一声:谢谢!附录:主要源程序代码附录1 、MyProcess.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class MyProcess extends JFrame private Container currentContainer = this; private JPanel panel=new JPanel(); private JLabel label1; BorderLayout borderlayout1=new BorderLayout(); JMenuBar jmenubar1=new JMenuBar(); /创建菜单栏 JMenu jmenu1=new JMenu(); JMenu jmenu2=new JMenu(); JMenu jmenu3=new JMenu(); /创建菜单 JMenuItem jmenuitem1=new JMenuItem(); JMenuItem jmenuitem2=new JMenuItem(); JMenuItem jmenuitem3=new JMenuItem(); JMenuItem jmenuitem4=new JMenuItem(); JMenuItem jmenuitem5=new JMenuItem(); JMenuItem jmenuitem6=new JMenuItem(); JMenuItem jmenuitem7=new JMenuItem(); JMenuItem jmenuitem8=new JMenuItem();/创建菜单项 /定义方法 public void go() /设置窗口容器的布局管理器 this.getContentPane().setLayout(borderlayout1); /设置窗口的大小和标题 this.setSize(new Dimension(300,200); this.setTitle(学生成绩管理系统); label1=new JLabel(学生管理信息系统); /添加菜单栏 this.setJMenuBar(jmenubar1); /设置菜单和菜单项名称 jmenu1.setText(成绩管理); jmenuitem1.setText(添加成绩); jmenuitem2.setText(删除成绩); jmenuitem3.setText(修改成绩); jmenuitem4.setText(查询成绩); jmenuitem5.setText(查看平均成绩); jmenu2.setText(帮助); jmenuitem6.setText(说明); jmenuitem7.setText(版权); jmenu3.setText(退出); jmenuitem8.setText(退出系统); /向菜单栏中添加菜单 jmenubar1.add(jmenu1); jmenubar1.add(jmenu2); jmenubar1.add(jmenu3); /向菜单中添加菜单项 jmenu1.add(jmenuitem1); jmenu1.add(jmenuitem2); jmenu1.add(jmenuitem3); jmenu1.add(jmenuitem4); jmenu1.add(jmenuitem5); jmenu2.add(jmenuitem6); jmenu2.add(jmenuitem7); jmenu3.add(jmenuitem8); jmenuitem1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) addusers addusers=new addusers(); panel.add(addusers,添加成绩); CardLayout c1=(CardLayout)panel.getLayout(); c1.show(panel,添加成绩); ); jmenuitem2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) delete dele=new delete(); panel.add(dele,删除成绩); CardLayout c1=(CardLayout)panel.getLayout(); c1.show(panel,删除成绩); ); jmenuitem3.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) chengjixiugai o=new chengjixiugai(); panel.add(o,修改成绩); CardLayout c1=(CardLayout)panel.getLayout(); c1.show(panel,修改成绩); ); jmenuitem4.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) chengjichaxun o=new chengjichaxun(); panel.add(o,成绩查询); CardLayout c1=(CardLayout)panel.getLayout(); c1.show(panel,成绩查询); ); jmenuitem5.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) pingjunchengji o=new pingjunchengji(); panel.add(o,平均成绩查看); CardLayout c1=(CardLayout)panel.getLayout(); c1.show(panel,平均成绩查看); ); jmenuitem6.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(currentContainer, 该程序使用JDBC-ODBC桥与数据库连接,来使用数据库存储学生成绩,进行学生成绩管理。,帮助信息,JOptionPane.PLAIN_MESSAGE); ); jmenuitem7.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(currentContainer, 小组成员:n+ 严国琴n + 董向阳n,版权信息,JOptionPane.INFORMATION_MESSAGE); ); jmenuitem8.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) Icon icon=new ImageIcon(baibai.gif); JOptionPane.showMessageDialog(currentContainer,icon,欢迎下次光临,JOptionPane.INFORMATION_MESSAGE); System.exit(0); ); Icon icon=new ImageIcon(qingliang.jpg); JLabel label=new JLabel(icon); panel.add(label);/设置图片 setContentPane(panel); /产生窗口的最佳尺寸、布局各组件,然后显示窗口 pack(); setVisible(true); public static void main(String args) MyProcess b=new MyProcess();b.go(); 附录2、addusers.javaimport java.io.*;import .*;import java.awt.event.*;import javax.swing.*;public class addusers extends JFrame JTextField Sno,Sname,Score; JLabel jSno,jSname,jScore; JButton button1,button2; String message=; public addusers() this.setLayout(null); jSno=new JLabel(学号); Sno=new JTextField(); jSname=new JLabel(姓名); Sname=new JTextField(); jScore=new JLabel(成绩); Score=new JTextField(); button1=new JButton(添加); button2=new JButton(取消); jSno.setBounds(30,20,60,30);/设置标签大小 jSname.setBounds(30,70,60,26); jScore.setBounds(30,120,60,26); Sno.setBounds(110,20,120,26); Sname.setBounds(110,70,120,26); Score.setBounds(110,120,120,26); button1.setBounds(30,220,60,26); button2.setBounds(140,220,60,26); this.add(jSno); this.add(Sno); this.add(jSname); this.add(Sname); this.add(jScore); this.add(Score); this.add(button1); this.add(button2); this.setSize(250,300); button1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) try tianjia o=new tianjia(); if(Sno.getText().toString().equals() JOptionPane.showMessageDialog(null,学号不能为空,添加,JOptionPane.WARNING_MESSAGE); else if(Sname.getText().toString().equals() JOptionPane.showMessageDialog(null,姓名不能为空,添加,JOptionPane.WARNING_MESSAGE); else if(Score.getText().toString().equals() JOptionPane.showMessageDialog(null,成绩不能为空,添加,JOptionPane.WARNING_MESSAGE); else o.tianjia(Sno.getText().toString(),Sname.getText().toString(),Score.getText().toString(); catch(Exception e1) e1.printStackTrace(); JOptionPane.showMessageDialog(null,添加成功!,添加成功!,JOptionPane.INFORMATION_MESSAGE); ); button2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) Sno.setText(); Sname.setText(); Score.setText(); ); setVisible(true);public static void main(String args)addusers add=new addusers();附录3、tianjia.javaimport java.sql.*;public class tianjia public void tianjia(String Sno,String Sname,String Score) throws Exception String JDriver = sun.jdbc.odbc.JdbcOdbcDriver; String connectionURL=jdbc:odbc:xuesheng; Class.forName(JDriver); Connection con = DriverManager.getConnection(connectionURL); Statement stmt = con.createStatement(); String query1 = insert into xinxi values (+Sno+,+Sname+,+Score+); stmt.executeUpdate(query1); con.close(); 附录4、tijiao.javaimport java.sql.*;public class tijiao public void tijiao(String CTextField,String XTextField,String NTextField) throws Exception String JDriver = sun.jdbc.odbc.JdbcOdbcDriver; String connectionURL=jdbc:odbc:xuesheng; Class.forName(JDriver); Connection con = DriverManager.getConnection(connectionURL); Statement stmt = con.createStatement(); String query1 = update xinxi set Score= +XTextField+, Sname=+NTextField+where Sno=+CTextField+; stmt.executeUpdate(query1); con.close(); 附录5、delete.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.sql.*;public class delete extends JFrameContainer c;JPanel panel1,panel2,panel3,panel4;JLabel classLabel,nameLabel;JTextField CTextField,NTextField;JButton button1,button2; delete() super(成绩删除);c=getContentPane();c.setLayout(new BorderLayout(); classLabel=new JLabel(学号,JLabel.CENTER); nameLabel=new JLabel(姓名,JLabel.CENTER); CTextField=new JTextField(15); NTextField=new JTextField(15); button1=new JButton(删除); panel1=new JPanel(); panel3=new JPanel(); panel4=new JPanel(); panel1.add(classLabel); panel3.add(nameLabel); panel1.add(CTextField); panel3.add(NTextField); panel4.add(button1); String n=学号,姓名,分数; panel2=new JPanel(); c.add(panel1,BorderLayout.NORTH); c.add(panel3,BorderLayout.CENTER); c.add(panel2,BorderLayout.SOUTH); c.add(panel4,BorderLayout.EAST); pack(); setVisible(true); button1.addActio

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论