📄 scorecompute.java
字号:
jContentPane.add(getXuekeTextField(), null);
jContentPane.add(getScoreTextField(), null);
jContentPane.add(tongjiLabel, null);
jContentPane.add(getJButton(), null);
jContentPane.add(getJComboBox(), null);
jContentPane.add(jLabel, null);
jContentPane.add(jLabel1, null);
jContentPane.add(jLabel2, null);
jContentPane.add(getJButton1(), null);
jContentPane.add(getJButton2(), null);
jContentPane.add(getJScrollPane(), null);
jContentPane.add(jLabel11, null);
jContentPane.add(jLabel12, null);
jContentPane.add(jLabel13, null);
jContentPane.add(jLabel14, null);
jContentPane.add(jLabel15, null);
jContentPane.add(jLabel16, null);
jContentPane.add(jLabel17, null);
jContentPane.add(jLabel18, null);
jContentPane.add(jLabel19, null);
jContentPane.add(jLabel20, null);
jContentPane.add(jLabel21, null);
jContentPane.add(jLabel22, null);
jContentPane.add(jLabel23, null);
jContentPane.add(jLabel24, null);
jContentPane.add(jLabel25, null);
jContentPane.add(jLabel26, null);
jContentPane.add(jLabel27, null);
jContentPane.add(jLabel28, null);
jContentPane.add(jLabel29, null);
PanelExample paint = new PanelExample();
jContentPane.add(paint,BorderLayout.CENTER);
}
return jContentPane;
}
/**
* This method initializes jJMenuBar
*
* @return javax.swing.JMenuBar
*/
private JMenuBar getJJMenuBar() {
if (jJMenuBar == null) {
jJMenuBar = new JMenuBar();
jJMenuBar.add(getFileMenu());
jJMenuBar.add(getHelpMenu());
}
return jJMenuBar;
}
/**
* This method initializes jMenu
*
* @return javax.swing.JMenu
*/
private JMenu getFileMenu() {
if (fileMenu == null) {
fileMenu = new JMenu();
fileMenu.setText("文件");
fileMenu.add(getSaveMenuItem());
fileMenu.add(getExitMenuItem());
}
return fileMenu;
}
/**
* This method initializes jMenu
*
* @return javax.swing.JMenu
*/
private JMenu getHelpMenu() {
if (helpMenu == null) {
helpMenu = new JMenu();
helpMenu.setText("帮助");
helpMenu.add(getHelpMenuItem());
helpMenu.add(getAboutMenuItem());
}
return helpMenu;
}
/**
* This method initializes jMenuItem
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getExitMenuItem() {
if (exitMenuItem == null) {
exitMenuItem = new JMenuItem();
exitMenuItem.setText("退出");
exitMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
}
return exitMenuItem;
}
/**
* This method initializes jMenuItem
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getAboutMenuItem() {
if (aboutMenuItem == null) {
aboutMenuItem = new JMenuItem();
aboutMenuItem.setText("关于小智星");
aboutMenuItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e) {
JDialog aboutDialog = getAboutDialog
();
//aboutDialog.pack();
Point loc = getJFrame().getLocation
();
loc.translate(200, 100);
aboutDialog.setLocation(loc);
aboutDialog.setVisible(true);
}
});
}
return aboutMenuItem;
}
/**
* This method initializes jMenuItem
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getHelpMenuItem() {
if (useMenuItem == null) {
useMenuItem = new JMenuItem();
useMenuItem.setText("使用说明");
useMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JDialog helpDialog = getHelpDialog();
//helpDialog.pack();
Point loc = getJFrame().getLocation
();
loc.translate(200, 100);
helpDialog.setLocation(loc);
helpDialog.setVisible(true);
}
});
}
return useMenuItem;
}
/**
* This method initializes aboutDialog
*
* @return javax.swing.JDialog
*/
private JDialog getAboutDialog() {
if (aboutDialog == null) {
aboutDialog = new JDialog(getJFrame(), true);
aboutDialog.setTitle("关于小智星");
aboutDialog.setSize(new Dimension(272, 94));
aboutDialog.setResizable(false);
aboutDialog.setContentPane(getAboutContentPane());
}
return aboutDialog;
}
/**
* This method initializes aboutDialog
*
* @return javax.swing.JDialog
*/
private JDialog getHelpDialog() {
if (helpDialog == null) {
helpDialog = new JDialog(getJFrame(), true);
helpDialog.setTitle("使用说明");
helpDialog.setSize(new Dimension(414, 215));
helpDialog.setResizable(false);
helpDialog.setContentPane(getHelpContentPane());
}
return helpDialog;
}
/**
* This method initializes aboutContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getAboutContentPane() {
if (aboutContentPane == null) {
aboutContentPane = new JPanel();
aboutContentPane.setLayout(new BorderLayout());
aboutContentPane.add(getAboutVersionLabel(),
BorderLayout.CENTER);
}
return aboutContentPane;
}
/**
* This method initializes aboutContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getHelpContentPane() {
if (helpContentPane == null) {
helpContentPane = new JPanel();
helpContentPane.setLayout(new BorderLayout());
helpContentPane.add(getHelpVersionLabel(),
BorderLayout.CENTER);
}
return helpContentPane;
}
/**
* This method initializes aboutVersionLabel
*
* @return javax.swing.JLabel
*/
private JLabel getAboutVersionLabel() {
if (aboutVersionLabel == null) {
aboutVersionLabel = new JLabel();
aboutVersionLabel.setText("<html><center>中力技术团队制作</center>版权所有:www.scusoft.cn");
aboutVersionLabel.setHorizontalAlignment
(SwingConstants.CENTER);
}
return aboutVersionLabel;
}
private JLabel getHelpVersionLabel() {
if (aboutHelpLabel == null) {
aboutHelpLabel = new JLabel();
aboutHelpLabel.setText("<html><br><center>小智星使用说明</center><li>总成绩一栏一般为整数,若为小数,小数点后只能有一位</li>" +
"<li>若你的成绩是九级制,请按照如下数据比照,输入分数<br>分数 A A- B+ B B- C+ C C- F <br>" +
" 优 优- 良+ 良 良- 中+ 中 合格 差<br>绩点 4.0 3.8 3.6 3.2 2.7 2.2 1.7 1.0 0 <br></li>" +
"<li>由于框架所限,目前图形分析只支持20科成绩</li><li>保存计算结果,请在菜单栏中选择'文件'——'保存'</li>");
aboutHelpLabel.setHorizontalAlignment
(SwingConstants.CENTER);
}
return aboutHelpLabel;
}
private JScrollPane getJScrollPane() {
if (jScrollPane == null) {
jScrollPane = new JScrollPane(getJList());
jScrollPane.setBounds(new Rectangle(34, 62, 246, 379));
}
return jScrollPane;
}
/**
* This method initializes jMenuItem
*
* @return javax.swing.JMenuItem
*/
private JMenuItem getSaveMenuItem() {
if (saveMenuItem == null) {
saveMenuItem = new JMenuItem();
saveMenuItem.setText("保存");
saveMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String listtxt = "";
int pos2 = jList.getModel().getSize();
listtxt += "成绩 "+" 学分"+" 课程名\n";
for(int i=0;i<pos2;i++)
{
listtxt += listModel.get(i).toString()+"\n";
}
listtxt += "\n"+"总学分: "+totalxuefen;
listtxt += "\n"+"标准平均分: "+averagescore;
listtxt += "\n"+"加权平均分: "+averagepoint;
listtxt += "\n"+"学分绩点: "+averagescorepoint;
//System.out.println(listtxt);
try{
FileOutputStream fos = new FileOutputStream(new File("成绩单.txt"));
OutputStreamWriter osw = new OutputStreamWriter(fos);
String savestring = listtxt.replaceAll("\n", "\r\n");
osw.write(savestring);
osw.flush();
osw.close();
}catch(Exception ee)
{
ee.printStackTrace();
}
JOptionPane.showMessageDialog(null, "成绩已经保存在程序所在目录!", "温馨提示",JOptionPane.INFORMATION_MESSAGE);
//}
}
});
}
return saveMenuItem;
}
public void computercenter()
{
int pos1 = jList.getModel().getSize();
String selectItem = "";
int getxuefen = 0;
double getscore =0;
double totalscore = 0;
totalxuefen=0;
totalchengji=0;
double bigpoint = 0;
char Item1[] = new char[4];
char Item2[] = new char[4];
if(pos1==0)
{
averagepoint=0;
averagescore=0;
averagescorepoint=0;
totalxuefen=0;
}
else{
for(int i=0;i<pos1;i++)
{
String coursescorestr = "";
String coursexuefenstr = "";
selectItem = listModel.get(i).toString();
selectItem.getChars(0, 4, Item1, 0);
selectItem.getChars(14, 17, Item2, 0);
for(int j=0;j<4;j++){
coursescorestr += Item1[j];
coursexuefenstr += Item2[j];
}
//去空格并转化为int
getscore = Double.parseDouble(coursescorestr.trim());
getxuefen = Integer.parseInt(coursexuefenstr.trim());
double getchengji = getxuefen*getscore;
double scorepoint=0;
totalxuefen += getxuefen;
totalscore += getscore;
totalchengji += getchengji;
//成绩与学分绩点的匹配
if(getscore>=95&&getscore<=100)
scorepoint=4.0;
else if(getscore>=90&&getscore<=94)
scorepoint=3.8;
else if(getscore>=85&&getscore<=89)
scorepoint=3.6;
else if(getscore>=80&&getscore<=84)
scorepoint=3.2;
else if(getscore>=75&&getscore<=79)
scorepoint=2.7;
else if(getscore>=70&&getscore<=74)
scorepoint=2.2;
else if(getscore>=65&&getscore<=69)
scorepoint=1.7;
else if(getscore>=60&&getscore<=64)
scorepoint=1.0;
else
scorepoint=0;
double smallpoint = scorepoint*getxuefen;
bigpoint += smallpoint;
}
averagepoint = totalchengji/totalxuefen;
averagescore = totalscore/pos1 ;
averagescorepoint = bigpoint/totalxuefen;
}
jContentPane.updateUI();
}
class PanelExample extends JPanel {
public PanelExample() {
repaint();
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.black);
g.fillRoundRect(280, 165, 670, 320, 10, 10);
g.setColor(Color.white);
g.drawLine(290,430,900,430); //横坐标
g.drawString("0", 290, 442); //坐标原点
g.drawString("^ /分数", 298, 204);
g.drawLine(300,200,300,440); //纵坐标
g.drawString(">", 900, 435);
g.drawString("/科目编号", 880, 445);
g.drawLine(300,230,305,230); //100分线
g.drawString("100", 278, 235);
g.drawLine(300,250,305,250); //90分线
g.drawString("90", 283, 255);
g.drawLine(300,270,305,270); //80分线
g.drawString("80", 283, 275);
g.drawLine(300,290,305,290); //70分线
g.drawString("70", 283, 295);
g.drawLine(300,310,305,310); //60分线
g.drawString("60", 283, 315);
g.drawLine(300,330,305,330); //50分线
g.drawString("50", 283, 335);
//绘横坐标上的科目编号
for(int i=1;i<=20;i++)
{
//int pointy = i*5+420;
int pointx = i*28+300;
g.drawLine(pointx,425,pointx,429);
g.drawString(""+i, pointx-3, 445);
}
//绘制线条说明
g.drawString("标准平均分", 815, 195);
g.drawString("低于平均分科目", 815, 210);
g.drawString("高于平均分科目", 815, 225);
g.setColor(Color.yellow);
g.drawLine(800,190,810,190); //黄线
g.setColor(Color.red);
g.drawLine(800,205,810,205); //红线
g.setColor(Color.green);
g.drawLine(800,220,810,220); //绿线
//绘制平均分线
g.setColor(Color.yellow);
if(averagescore != 0)
g.drawLine(300,(int)(430-averagescore*2),900,(int)(430-averagescore*2));
//绘制单科成绩
int pos2 = jList.getModel().getSize();
String selectItem = "";
char Item1[] = new char[4];
char Item2[] = new char[4];
for(int i=0;i<pos2;i++)
{
String coursescorestr = "";
String coursexuefenstr = "";
selectItem = listModel.get(i).toString();
selectItem.getChars(0, 4, Item1, 0);
selectItem.getChars(14, 17, Item2, 0);
for(int j=0;j<4;j++){
coursescorestr += Item1[j];
coursexuefenstr += Item2[j];
}
//去空格并转化为int
double coursescore = Double.parseDouble(coursescorestr.trim());
if(coursescore>averagescore)
g.setColor(Color.green);
else
g.setColor(Color.red);
int pointx = i*28+328;
g.drawLine(pointx,(int)(430-coursescore*2),pointx,430);
}
//画虚线设置
g.setColor(Color.black);
float[] dash1 = { 5.0f };
Graphics2D gw = (Graphics2D) g;
gw.setStroke(new BasicStroke(1.0f, BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER, 10.0f, dash1, 0.0f));
gw.drawLine(8,35,278,35);
gw.drawLine(278,0,278,490);
gw.drawLine(275,160,950,160);
g.drawRoundRect(590, 10, 350, 140, 20, 20) ;
g.setColor(Color.black);
g.setFont(new Font("Bookman",Font.BOLD,13));
gw.drawString("即时成绩显示", 720, 25);
gw.drawString("总学分:", 600, 50);
gw.drawString("标准平均分:", 600, 80);
gw.drawString("加权平均分:", 600, 110);
gw.drawString("学分绩点:", 600, 140);
g.setColor(Color.white);
gw.drawString("即时成绩分析图", 590, 190);
g.setColor(Color.red);
gw.drawString(""+totalxuefen, 650, 50);
gw.drawString(""+averagescore, 680, 80);
gw.drawString(""+averagepoint, 680, 110);
gw.drawString(""+averagescorepoint, 680, 140);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -