Участник:Necron
import java.util.ArrayList; import java.io.*; import java.awt.*; import javax.swing.*; import javax.swing.event.*; import java.awt.event.*; class CollectWindow extends JFrame { JPanel panel1=new JPanel(); JPanel panel2=new JPanel(); JPanel panel3=new JPanel(); JPanel panelTab1=new JPanel(); JPanel panelTab2=new JPanel(); JLabel labelAlbom=new JLabel(); JLabel labelKolichestvoAlb=new JLabel(); JList list1=new JList(); JScrollPane scrollPane1 = new JScrollPane(); JTabbedPane tab=new JTabbedPane(); //вкладка информация об альбоме JLabel labelAvtor=new JLabel(); JTextField textAvtor=new JTextField(); JLabel labelGanr=new JLabel(); JTextField textGanr=new JTextField(); JLabel labelGod=new JLabel(); JTextField textGod=new JTextField(); JLabel labelProdolAlb=new JLabel(); JTextField textProdolAlb=new JTextField(); JPanel panelAlbom=new JPanel(); //вкладка музыкальные произведения JList listMproiz=new JList(); JScrollPane scrollMproiz=new JScrollPane(); JLabel labelTextSong=new JLabel(); JTextField textTextSong=new JTextField(); JLabel labelAvtorSong=new JLabel(); JTextField textAvtorSong=new JTextField(); JLabel labelInstrument=new JLabel(); JTextField textInstrument=new JTextField(); JPanel panelMproiz1=new JPanel(); JPanel panelMproiz2=new JPanel(); JButton jbAction=new JButton("Сформировать описание"); ChooseAlbom chooseAlbom=new ChooseAlbom(); ChooseMproiz cm=new ChooseMproiz(); ClickButton cb=new ClickButton(); //меню JMenuBar jMenuBar=new JMenuBar(); JMenu file=new JMenu("Коллекция"); JMenu menuAlbom=new JMenu("Альбом"); JMenu menuMp=new JMenu("Муз.произведение"); JMenuItem fileItem=new JMenuItem("Новый альбом"); JMenuItem removeAlbom=new JMenuItem("Удалить альбом"); JMenuItem changeAlbom=new JMenuItem("Изменить альбом"); JMenuItem addMproiz=new JMenuItem("Создать муз.произведение"); JMenuItem changeMproiz=new JMenuItem("Изменить муз. произведение"); JMenuItem removeMproiz=new JMenuItem("Удалить муз. произведение"); ChooseAddAlbom chooseAddAlbom=new ChooseAddAlbom(); ChooseAddMproiz chooseAddMproiz=new ChooseAddMproiz(); RemoveAlbom removeAlbomListener=new RemoveAlbom(); RemoveMproiz removeMproizListener=new RemoveMproiz(); ChangeAlbom changeAlbomListener=new ChangeAlbom(); JLabel labelNull4=new JLabel(); ChangeMproizListener changeMproizListener=new ChangeMproizListener(); Collect c; //Albom a; public CollectWindow(Collect c) { this.c=c; // this.a=a; this.setSize(800,600); this.setDefaultCloseOperation(EXIT_ON_CLOSE); panel1.setPreferredSize(new Dimension(200,570)); panel3.setPreferredSize(new Dimension(800,30)); panel1.setBackground(Color.green); panel2.setBackground(Color.green ); panel3.setBackground(Color.green); this.getContentPane().add(panel1, BorderLayout.WEST); this.getContentPane().add(panel2, BorderLayout.CENTER); this.getContentPane().add(panel3, BorderLayout.SOUTH); panel1.setLayout(new BorderLayout()); panel2.setLayout(new BorderLayout()); panel3.setLayout(new BorderLayout()); labelAlbom.setText("Альбомы: "); panel1.add(labelAlbom,BorderLayout.NORTH); labelKolichestvoAlb.setText("Количество альбомов:"+c.getAlb().size()); panel3.add(labelKolichestvoAlb,FlowLayout.LEFT); list1.setListData(c.getAlb().toArray()); list1.setBackground(Color.yellow); scrollPane1.getViewport().add(list1); panel1.add(scrollPane1,BorderLayout.CENTER); tab.add(panelTab1,"Информация об альбоме"); tab.setBackground(Color.yellow); tab.add(panelTab2,"Музыкальные произведения"); panel2.add(tab,BorderLayout.CENTER); //Вкладка информация об альбоме panelTab1.setLayout(new BorderLayout()); panelAlbom.setLayout(new GridLayout(4,2)); labelAvtor.setText("Автор/группа"); panelAlbom.add(labelAvtor); panelAlbom.add(textAvtor); labelGanr.setText("Жанр"); panelAlbom.add(labelGanr); panelAlbom.add(textGanr); labelGod.setText("Год выпуска"); panelAlbom.add(labelGod); panelAlbom.add(textGod); labelProdolAlb.setText("Общая продолжительность альбома"); panelAlbom.add(labelProdolAlb); panelAlbom.add(textProdolAlb); panelTab1.add(panelAlbom,BorderLayout.NORTH); panelAlbom.setBackground(Color.green); panelTab1.setBackground(Color.yellow); panelTab2.setBackground(Color.yellow); removeAlbom.addActionListener(removeAlbomListener); changeAlbom.addActionListener(changeAlbomListener); //вкладка музыкальные произведения panelTab2.setLayout(new BorderLayout()); scrollMproiz.getViewport().add(listMproiz); listMproiz.setBackground(Color.yellow); panelTab2.add(scrollMproiz,BorderLayout.WEST); scrollMproiz.setPreferredSize(new Dimension(150,150)); panelMproiz1.setLayout(new BorderLayout()); panelMproiz1.add(panelMproiz2,BorderLayout.NORTH); panelMproiz1.setBackground(Color.yellow); panelMproiz2.setBackground(Color.green); panelTab2.add(panelMproiz1,BorderLayout.CENTER); panelMproiz2.setLayout(new GridLayout(4,2)); labelTextSong.setText("Текст"); panelMproiz2.add(labelTextSong); panelMproiz2.add(textTextSong); labelAvtorSong.setText("Автор песни"); panelMproiz2.add(labelAvtorSong); panelMproiz2.add(textAvtorSong); labelInstrument.setText("Инструмент"); panelMproiz2.add(labelInstrument); panelMproiz2.add(textInstrument); panelMproiz2.add(jbAction); jbAction.setBackground(Color.orange); list1.addListSelectionListener(chooseAlbom); listMproiz.addListSelectionListener(cm); jbAction.addActionListener(cb); //меню this.setJMenuBar(jMenuBar); jMenuBar.add(file); file.add(menuAlbom); file.add(menuMp); menuAlbom.add(fileItem); menuAlbom.add(changeAlbom); menuAlbom.add(removeAlbom); menuMp.add(addMproiz); menuMp.add(changeMproiz); menuMp.add(removeMproiz); jMenuBar.setBackground(Color.yellow); file.setBackground(Color.orange); menuAlbom.setBackground(Color.orange); menuMp.setBackground(Color.orange); fileItem.setBackground(Color.orange); changeAlbom.setBackground(Color.orange); removeAlbom.setBackground(Color.orange); addMproiz.setBackground(Color.orange); changeMproiz.setBackground(Color.orange); removeMproiz.setBackground(Color.orange); changeMproiz.addActionListener(changeMproizListener); fileItem.addActionListener(chooseAddAlbom); addMproiz.addActionListener(chooseAddMproiz); removeMproiz.addActionListener(removeMproizListener); this.setVisible(true); } //класс обработчик события создание нового альбома class ChooseAddAlbom implements ActionListener { public void actionPerformed(ActionEvent e) { new AlbomFrame(c).setVisible(true); textTextSong.setText(""); textAvtorSong.setText(""); textInstrument.setText(""); textAvtor.setText(""); textGanr.setText(""); textGod.setText(""); textProdolAlb.setText(""); listMproiz.setListData(new Object[0]); } } //Класс обработчик события удаление альбома class RemoveAlbom implements ActionListener { public void actionPerformed(ActionEvent e) { if(list1.getSelectedValue()!=null) { c.removeA((Albom)list1.getSelectedValue()); labelKolichestvoAlb.setText("Количество альбомов:"+c.getAlb().size()); list1.setListData(c.getAlb().toArray()); panel3.add(labelKolichestvoAlb,FlowLayout.LEFT); textAvtor.setText(""); textGanr.setText(""); textGod.setText(""); textProdolAlb.setText(""); listMproiz.setListData(new Object[0]); } } } //класс обработчик событие изменение альбома class ChangeAlbom implements ActionListener { public void actionPerformed(ActionEvent e) { if(list1.getSelectedValue()!=null) { new AlbomFrame((Albom)list1.getSelectedValue()); list1.setListData(c.getAlb().toArray()); textTextSong.setText(""); textAvtorSong.setText(""); textInstrument.setText(""); textAvtor.setText(""); textGanr.setText(""); textGod.setText(""); textProdolAlb.setText(""); listMproiz.setListData(new Object[0]); } } } //класс обработчик события удаление музыкального произведения class RemoveMproiz implements ActionListener { public void actionPerformed(ActionEvent e) { if(listMproiz.getSelectedValue()!=null) { ((Albom)list1.getSelectedValue()).removePro((Mproiz)listMproiz.getSelectedValue()); listMproiz.setListData(((Albom)list1.getSelectedValue()).getMpro().toArray()); textTextSong.setText(""); textAvtorSong.setText(""); textInstrument.setText(""); } } } //класс обработчик события создание музыкального произведения class ChooseAddMproiz implements ActionListener { public void actionPerformed(ActionEvent e) { new MproizFrame((Albom)list1.getSelectedValue()).setVisible(true); } } //класс обработчик события изменение музыкального произведения class ChangeMproizListener implements ActionListener { public void actionPerformed(ActionEvent e) { if(listMproiz.getSelectedValue()!=null) { new MproizFrame((Mproiz)listMproiz.getSelectedValue()); listMproiz.setListData(((Albom)list1.getSelectedValue()).getMpro().toArray()); } } } //класс обработчик события выбор альбома class ChooseAlbom implements ListSelectionListener { public void valueChanged(ListSelectionEvent e) { if(((JList)e.getSource()).getSelectedValue()!=null) { Albom a=(Albom)((JList)e.getSource()).getSelectedValue(); textAvtor.setText(a.getAvtor()); textGanr.setText(a.getGanr()); textGod.setText(a.getGod()+""); textProdolAlb.setText(a.autoPro()+""); listMproiz.setListData(a.getMpro().toArray()); } } } //класс обработчик события выбор музыкального произведения class ChooseMproiz implements ListSelectionListener { public void valueChanged(ListSelectionEvent e) { if(((JList)e.getSource()).getSelectedValue()!=null) { Mproiz m=(Mproiz)((JList)e.getSource()).getSelectedValue(); if(m instanceof Song) { textTextSong.setText(((Song)m).getTextSong()); textAvtorSong.setText(((Song)m).getAuthor()); textInstrument.setText(""); } else if(m instanceof Instrumental) { textTextSong.setText(""); textAvtorSong.setText(""); textInstrument.setText(((Instrumental)m).getInstr()); } } else { textTextSong.setText(""); textAvtorSong.setText(""); textInstrument.setText(""); } } } //класс обработчик события нажатия на кнопку "Сформировать описание" class ClickButton implements ActionListener { public void actionPerformed(ActionEvent e) { if(listMproiz.getSelectedValue()!=null) { JOptionPane.showMessageDialog(jbAction,((Mproiz)listMproiz.getSelectedValue()).createDistriction()); } } } //класс для создания нового альбома class AlbomFrame extends JDialog { JPanel panelNewAlbom=new JPanel(); JPanel panelChangeAlbom=new JPanel(); JLabel labelNewAvtor=new JLabel("Введите автора нового альбома"); JTextField textNewAvtor=new JTextField(); JLabel labelNewGanr=new JLabel("Введите жанр нового альбома"); JTextField textNewGanr=new JTextField(); JLabel labelNewGod=new JLabel("Введите год выпуска нового альбома"); JTextField textNewGod=new JTextField(); JButton buttonOK=new JButton("OK"); JButton buttonCancel=new JButton("Cancel"); JButton buttonChangeAlbom=new JButton("Изменить альбом"); ButtonOKListener buttonOKListener=new ButtonOKListener(); ButtonCancelListener buttonCancelListener=new ButtonCancelListener(); ButtonChangeListener buttonChangeListener=new ButtonChangeListener(); Collect c;Albom a; public AlbomFrame(Collect c)//конструктор для создания альбома { this.setModal(true); this.c=c; this.setSize(500,150); this.setTitle("Создание нового альбома"); this.getContentPane().add(panelNewAlbom); panelNewAlbom.setLayout(new GridLayout(4,2)); panelNewAlbom.setBackground(Color.green); panelNewAlbom.add(labelNewAvtor); panelNewAlbom.add(textNewAvtor); panelNewAlbom.add(labelNewGanr); panelNewAlbom.add(textNewGanr); panelNewAlbom.add(labelNewGod); panelNewAlbom.add(textNewGod); panelNewAlbom.add(buttonOK); panelNewAlbom.add(buttonCancel); buttonOK.addActionListener(buttonOKListener); buttonCancel.addActionListener(buttonCancelListener); } public AlbomFrame(Albom a)//конструктор для изменения альбома { this.a=a; this.setSize(500,150); this.setModal(true); this.setTitle("Изменение альбома"); this.getContentPane().add(panelChangeAlbom); panelChangeAlbom.setLayout(new GridLayout(4,2)); panelChangeAlbom.setBackground(Color.green); panelChangeAlbom.add(labelNewAvtor); panelChangeAlbom.add(textNewAvtor); panelChangeAlbom.add(labelNewGanr); panelChangeAlbom.add(textNewGanr); panelChangeAlbom.add(labelNewGod); panelChangeAlbom.add(textNewGod); textNewAvtor.setText(a.getAvtor()); textNewGanr.setText(a.getGanr()); textNewGod.setText(a.getGod()+""); panelChangeAlbom.add(buttonChangeAlbom); panelChangeAlbom.add(buttonCancel); buttonChangeAlbom.addActionListener(buttonChangeListener); buttonCancel.addActionListener(buttonCancelListener); this.setVisible(true); } //Класс-обработчик события-добавить альбом class ButtonOKListener implements ActionListener { public void actionPerformed(ActionEvent e) { Albom alb=new Albom(textNewAvtor.getText(),textNewGanr.getText(),Integer.parseInt(textNewGod.getText())); c.addA(alb); labelKolichestvoAlb.setText("Количество альбомов:"+c.getAlb().size()); list1.setListData(c.getAlb().toArray()); panel3.add(labelKolichestvoAlb,FlowLayout.LEFT); setVisible(false); } } //класс - обработчик события - изменить альбом class ButtonChangeListener implements ActionListener { public void actionPerformed(ActionEvent e) { a.setAvtor(textNewAvtor.getText()); a.setGanr(textNewGanr.getText()); a.setGod(Integer.parseInt(textNewGod.getText())); setVisible(false); } } //нажатие на кнопку "Cancel" class ButtonCancelListener implements ActionListener { public void actionPerformed(ActionEvent e) { setVisible(false); } } } //класс для создания нового музыкального произведения class MproizFrame extends JDialog { JPanel panelnewMproiz=new JPanel(); JPanel panelChangeMproiz=new JPanel(); JLabel labelNewName=new JLabel("Введите название муз.произведения"); JTextField textNewName=new JTextField(); JLabel labelNewProdol=new JLabel("Введите продолжительность муз.произведения"); JTextField textNewProdol=new JTextField(); JLabel labelTypeMproiz=new JLabel("Тип музыкального произведения"); JLabel labelNewText=new JLabel("Введите текст песни"); JTextField textNewText=new JTextField(); JLabel labelNewAvtor=new JLabel("Введите автора песни"); JTextField textNewAvtor=new JTextField(); JLabel labelNewInstrument=new JLabel("Введите инструмент"); JTextField textNewInstrument=new JTextField(); JComboBox choiceType=new JComboBox(); JButton buttonOKMproiz=new JButton("OK"); JButton buttonCancelMproiz=new JButton("Cancel"); JButton buttonChabgeMproiz=new JButton("Изменить муз. произведение"); AddMproiz buttonOKMPListener=new AddMproiz(); ButtonCancelMproizListener buttonCancelMPListener=new ButtonCancelMproizListener(); ButtonChangeMPListener buttonChangeMPListener=new ButtonChangeMPListener(); JComboBoxChangeType jComboBoxChangeType=new JComboBoxChangeType(); Albom a; Mproiz m; public MproizFrame(Albom a)//кoнструктор для создания музыкального произведения { this.a=a; this.setSize(700,300); this.setModal(true); this.setTitle("Создание нового музыкального произведения"); this.getContentPane().add(panelnewMproiz); panelnewMproiz.setBackground(Color.green); panelnewMproiz.setLayout(new GridLayout(7,2)); panelnewMproiz.add(labelNewName); panelnewMproiz.add(textNewName); panelnewMproiz.add(labelNewProdol); panelnewMproiz.add(textNewProdol); panelnewMproiz.add(labelTypeMproiz); panelnewMproiz.add(choiceType); panelnewMproiz.add(labelNewText); panelnewMproiz.add(textNewText); panelnewMproiz.add(labelNewAvtor); panelnewMproiz.add(textNewAvtor); panelnewMproiz.add(labelNewInstrument); panelnewMproiz.add(textNewInstrument); panelnewMproiz.add(buttonOKMproiz); panelnewMproiz.add(buttonCancelMproiz); this.choiceType.setEditable(false); this.choiceType.addItem(""); this.choiceType.addItem("Песня"); this.choiceType.addItem("Инструментальное произведение"); buttonOKMproiz.addActionListener(buttonOKMPListener); buttonCancelMproiz.addActionListener(buttonCancelMPListener); choiceType.addItemListener(jComboBoxChangeType); } public MproizFrame(Mproiz m)//конструктор для изменения музыкального произведения { this.m=m; this.setSize(700,300); this.setModal(true); this.setTitle("Изменение музыкального произведения"); this.getContentPane().add(panelChangeMproiz); panelChangeMproiz.setBackground(Color.green); panelChangeMproiz.setLayout(new GridLayout(7,2)); panelChangeMproiz.add(labelNewName); panelChangeMproiz.add(textNewName); panelChangeMproiz.add(labelNewProdol); panelChangeMproiz.add(textNewProdol); panelChangeMproiz.add(labelTypeMproiz); panelChangeMproiz.add(choiceType); panelChangeMproiz.add(labelNewText); panelChangeMproiz.add(textNewText); panelChangeMproiz.add(labelNewAvtor); panelChangeMproiz.add(textNewAvtor); panelChangeMproiz.add(labelNewInstrument); panelChangeMproiz.add(textNewInstrument); panelChangeMproiz.add(buttonChabgeMproiz); panelChangeMproiz.add(buttonCancelMproiz); this.choiceType.setEditable(false); this.choiceType.addItem(""); this.choiceType.addItem("Песня"); this.choiceType.addItem("Инструментальное произведение"); textNewName.setText(m.getName()); textNewProdol.setText(m.getProdol()+""); if(m instanceof Song) { textNewAvtor.setText(((Song)m).getAuthor()); textNewText.setText(((Song)m).getTextSong()); textNewInstrument.setEditable(false); choiceType.setSelectedItem("Песня"); choiceType.setEditable(false); } else if(m instanceof Instrumental) { textNewInstrument.setText(((Instrumental)m).getInstr()); textNewAvtor.setEditable(false); textNewText.setEditable(false); choiceType.setSelectedItem("Инструментальное произведение"); choiceType.setEditable(false); } buttonChabgeMproiz.addActionListener(buttonChangeMPListener); buttonCancelMproiz.addActionListener(buttonCancelMPListener); choiceType.addItemListener(jComboBoxChangeType); this.setVisible(true); } //класс - обработчик события - изменить музыкальное произведение class ButtonChangeMPListener implements ActionListener { public void actionPerformed(ActionEvent e) { m.setName(textNewName.getText()); m.setProdol(Integer.parseInt(textNewProdol.getText())); if(choiceType.getSelectedItem().toString()=="Песня") { ((Song)m).setTextSong(textNewText.getText()); ((Song)m).setAuthor(textNewAvtor.getText()); listMproiz.setListData(((Albom)list1.getSelectedValue()).getMpro().toArray()); } else { ((Instrumental)m).resetInst(textNewInstrument.getText()); listMproiz.setListData(((Albom)list1.getSelectedValue()).getMpro().toArray()); } setVisible(false); } } //нажатие на кнопку "Cancel" class ButtonCancelMproizListener implements ActionListener { public void actionPerformed(ActionEvent e) { setVisible(false); } } //Донастраиваем интерфейс, обрабатывая событие - изменение данных внизпадающем списке class JComboBoxChangeType implements ItemListener { public void itemStateChanged(ItemEvent e) { if(choiceType.getSelectedItem().toString().equals("Песня")) { labelNewText.setEnabled(true); textNewText.setEnabled(true); labelNewAvtor.setEnabled(true); textNewAvtor.setEnabled(true); labelNewInstrument.setEnabled(false); textNewInstrument.setEnabled(false); } else if(choiceType.getSelectedItem().toString().equals("Инструментальное произведение")) { labelNewText.setEnabled(false); textNewText.setEnabled(false); labelNewAvtor.setEnabled(false); textNewAvtor.setEnabled(false); labelNewInstrument.setEnabled(true); textNewInstrument.setEnabled(true); } else if(choiceType.getSelectedItem().toString()=="") { labelNewText.setEnabled(false); textNewText.setEnabled(false); labelNewAvtor.setEnabled(false); textNewAvtor.setEnabled(false); labelNewInstrument.setEnabled(false); textNewInstrument.setEnabled(false); } } } //добавляем музыкальное произведение class AddMproiz implements ActionListener { public void actionPerformed(ActionEvent e) { try { if(choiceType.getSelectedItem().toString()=="Песня") { Song song=new Song(textNewName.getText(),Integer.parseInt(textNewProdol.getText()),textNewText.getText(),textNewAvtor.getText()); ((Albom)list1.getSelectedValue()).addPro(song); listMproiz.setListData(((Albom)list1.getSelectedValue()).getMpro().toArray()); textProdolAlb.setText(((Albom)list1.getSelectedValue()).autoPro()+""); list1.setListData(c.getAlb().toArray()); } else { Instrumental instr=new Instrumental(textNewInstrument.getText(),Integer.parseInt(textNewProdol.getText())); ((Albom)list1.getSelectedValue()).addPro(instr); listMproiz.setListData(((Albom)list1.getSelectedValue()).getMpro().toArray()); textProdolAlb.setText(((Albom)list1.getSelectedValue()).autoPro()+""); list1.setListData(c.getAlb().toArray()); } } catch(NazvanieException ex) { System.out.println("Невозможно создать музыкальное произведение – не указано название!"); } setVisible(false); } } } } class FileSave { public static void saveFile(Collect c, String filename)throws IOException { FileOutputStream fileOutput = new FileOutputStream(filename); ObjectOutputStream objectOutput = new ObjectOutputStream(fileOutput); objectOutput.writeObject(c); objectOutput.close(); fileOutput.close(); } public static Collect loadFile(String filename) throws IOException, ClassNotFoundException { FileInputStream fileInput = new FileInputStream(filename); ObjectInputStream objectInput = new ObjectInputStream(fileInput); Collect c=(Collect)objectInput.readObject(); objectInput.close(); fileInput.close(); return c; } } class Report { public static String createReport(Collect c) { String str=new String(); str=str+c.getName()+", автор: "+c.getFio()+"\n\n"; Albom a; Mproiz mp; for (int i=0; i<c.getAlb().size();i++) { a=(Albom)c.getAlb().get(i); str=str+"Альбом: "+a.getAvtor()+", "+a.getGanr()+", "+a.getGod()+"\n"; for(int j=0;j<a.getMpro().size();j++) { mp=(Mproiz)a.getMpro().get(j); str=str+mp.getName()+"|"+mp.getProdol()+"\n"; } str=str+"-----------------------------\n"; str=str+"Общая длительность: "+a.autoPro()+"\n\n"; } return str; } public static void saveFile(Collect c,String filename)throws IOException { FileOutputStream fileOutput = new FileOutputStream(filename); fileOutput.write(createReport(c).getBytes()); fileOutput.close(); } public static String loadFile(String filename)throws IOException { FileInputStream fileInput = new FileInputStream(filename); byte[] b = new byte[fileInput.available()]; fileInput.read(b); fileInput.close(); return new String(b); } } class Vvod { public static String vvodStroki()throws IOException { byte[] b=new byte[100]; System.in.read(b); String s=new String(b); s=s.trim(); return s; } public static int vvodChisla()throws IOException,NumberFormatException { byte b[]=new byte[100]; System.in.read(b); String s=new String(b); s=s.trim(); int m=0; m=Integer.parseInt(s); return m; } } class Collect implements Serializable { public Collect(String name,String fio) { this.name=name; this.fio=fio; } private String name; private String fio; public String getName() { return name; } public void setName(String s) { name=s; } public String getFio() { return fio; } public void setFio(String s) { fio=s; } ArrayList albomy = new ArrayList(); public ArrayList getAlb() { return albomy; } public void addA(Albom alb) { albomy.add(alb); } public void removeA(Albom alb) { albomy.remove(alb); } public Mproiz poisk(String s) { for (int i=0; i<getAlb().size(); i++) { Albom a = (Albom) getAlb().get(i); for (int j=0; j<a.getMpro().size(); j++) { Mproiz m = (Mproiz) a.getMpro().get(j); if (s.equals(m.getName())) { return m; } } } return null; } } class Albom implements Serializable { private String avtor; private String ganr; private int god; private int prodol; public String toString() { String str=new String(); str=this.avtor+", "+this.god+" год"; return str; } public Albom(String avtor,String ganr,int god) { this.avtor=avtor; this.ganr=ganr; this.god=god; } public String getAvtor() { return avtor; } public void setAvtor(String s) { avtor=s; } public String getGanr() { return ganr; } public void setGanr(String s) { ganr=s; } public int getGod() { return god; } public void setGod(int s) { god=s; } public int getProdol() { return prodol; } public int autoPro() { prodol=0; for (int i=0;i<getMpro().size();i++) { Mproiz m = (Mproiz)getMpro().get(i); prodol+=m.getProdol(); } return prodol; } ArrayList pro = new ArrayList(); public ArrayList getMpro() { return pro; } public void addPro(Mproiz pr) { pro.add(pr); } public void removePro(Mproiz pr) { pro.remove(pr); } private Collect cal; public Collect getCal() { return cal; } public void setCal(Collect cl) { this.cal=cl; } } abstract class Mproiz implements Serializable { private String name; private int prodol; public String toString() { String str=new String(); str=this.name+" "+this.prodol; return str; } public Mproiz(String name,int prodol)throws NazvanieException { try { if(name==null||name.equals("")==true) { throw new NazvanieException("Невозможно создать музыкальное произведение – не указано название!"); } } catch(NazvanieException ne) { System.out.println(ne.getMessage()); throw ne; } this.name=name; this.prodol=prodol; } public String getName() { return name; } public void setName(String s) { name=s; } public int getProdol() { return prodol; } public void setProdol(int s) { prodol=s; } private Albom alb; public Albom getAlb() { return alb; } public void setAlb(Albom al) { this.alb = al; } public abstract String createDistriction(); } class NazvanieException extends Exception { public NazvanieException(String message) { super(message); } } class Song extends Mproiz { private String textSong; private String author; public Song(String name, int prodol, String textSong, String author)throws NazvanieException { super(name,prodol); this.author=author; this.textSong=textSong; } public void setTextSong(String text) { textSong=text; } public String getTextSong() { return textSong; } public void setAuthor(String a) { author=a; } public String getAuthor() { return author; } public String createDistriction() { try { if(this.getProdol()<=0)throw new ProdolzhitelnostException ("ОШИБКА: Продолжительность песни не может быть меньше или равна нулю!!"); //int a=2/0; return "Название: "+this.getName()+"\nПродолжительность: "+this.getProdol()+"\nТекст песни:"+textSong+"\nАвтор:"+author; } catch(ProdolzhitelnostException ep) { System.out.println(ep.getMessage()); return null; } catch(Exception ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); return null; } } } class Instrumental extends Mproiz { public Instrumental(String name, int prodol)throws NazvanieException { super(name,prodol); } ArrayList instr=new ArrayList(); public void addInstr(String inst) { instr.add(inst); } public void resetInst(String inst) { instr.clear(); instr.add(inst); } public void removeInstr(String inst) { instr.remove(inst); } public String getInstr() { String str=""; for(int i=0;i<instr.size();i++) { str+=((String)instr.get(i))+" "; } return str; } public String createDistriction() { try { if(this.getProdol()<=0)throw new ProdolzhitelnostException ("ОШИБКА: Продолжительность инструментального произведения не может быть меньше или равна нулю!!"); //int a=3/0; String distr="Название: "+this.getName()+"\nПродолжительность: "+this.getProdol(); for(int i=0;i<instr.size();i++) { distr+="\n"+(String)instr.get(i); } return distr; } catch(ProdolzhitelnostException ep) { System.out.println(ep.getMessage()); return null; } catch(Exception ex) { System.out.println(ex.getMessage()); ex.printStackTrace(); return null; } } } class ProdolzhitelnostException extends Exception { public ProdolzhitelnostException(String message){ super(message); } } public class Lab16 { public static void main(String[] args) { /*String str3="",str4=""; int str5; Collect c1=null; try { System.out.println("Введите название коллекции: "); String str1=Vvod.vvodStroki(); System.out.println("Введите ФИО владельца коллекции: "); String str2=Vvod.vvodStroki(); c1=new Collect(str1, str2); System.out.println("Введите автора: "); str3=Vvod.vvodStroki(); System.out.println("Введите жанр: "); str4=Vvod.vvodStroki(); } catch(IOException ex) { System.out.println("Произошла ошибка ввода-вывода. Fatal Error. Windows Must Die!!!"); System.out.println("Работа программы завершена аварийно((((("); return; } while(true) { try { System.out.println("Введите год выпуска: "); str5=Vvod.vvodChisla(); break; } catch(IOException ex) { System.out.println("Произошла ошибка ввода-вывода. Fatal Error. Windows Must Die!!!"); System.out.println("Работа программы завершена аварийно((((("); return; } catch(NumberFormatException ex) { System.out.println("Ошибка преобразования типа. Попробуйте ещё раз))))))"); } } Albom a1=new Albom(str3, str4, str5); c1.addA(a1); try { try { //Song m1=new Song("Belie rosi",-2,"В определенный альбом добавить ...","Без Понятия"); System.out.println("Введите название, продолжительность, текст и автора песни: "); Song m1= new Song(Vvod.vvodStroki(), Vvod.vvodChisla(), Vvod.vvodStroki(), Vvod.vvodStroki()); System.out.println("Введите название, продолжительность инстументального произведения: "); //Instrumental m2=new Instrumental("Моцарт",5); Instrumental m2=new Instrumental(Vvod.vvodStroki(), Vvod.vvodChisla()); m2.addInstr("Cкрипка"); System.out.println("Введите название, продолжительность инструментального произведения: "); Instrumental m3=new Instrumental(Vvod.vvodStroki(), Vvod.vvodChisla()); //Instrumental m3=new Instrumental("Бетховин",4); m3.addInstr("Гитара"); m3.addInstr("Гонг"); a1.addPro(m1); a1.addPro(m2); a1.addPro(m3); for(int i=0;i<a1.getMpro().size();i++) { if(((Mproiz)a1.getMpro().get(i)).createDistriction()!=null) System.out.println(((Mproiz)a1.getMpro().get(i)).createDistriction()); System.out.println(); } //m3=new Instrumental("",7); m3=new Instrumental(null,6); System.out.println(); m3=new Instrumental("",8); } catch(NazvanieException ex) { System.out.println(ex.getMessage()); } } catch(java.io.IOException ex) { System.out.println("Произошла ошибка ввода-вывода. Fatal Error. Windows Must Die!!!"); System.out.println("Работа программы завершена аварийно((((("); return; } catch(java.lang.NumberFormatException ex) { System.out.println("Ошибка преобразования данных!!!!"); }*/ Collect c1=new Collect("My music","Niculina Ekaterina Viktorovna"); Albom a1=new Albom("Serebro","Pop",2007); Albom a2=new Albom("Лицей","Pop",1995); Albom a3=new Albom("Madonna","Pop",2006); Albom a4=new Albom("МакSим","Pop",2008); Albom a5=new Albom("Би-2","Pop",1999); Albom a6=new Albom("А.Б.Пугачева","Pop",1987); Albom a7=new Albom("Абба","Pop",1998); Albom a8=new Albom("Mr.Credo","Pop",2004); Albom a9=new Albom("Алсу","Pop",2001); c1.addA(a1); c1.addA(a2); c1.addA(a3); c1.addA(a4); c1.addA(a5); c1.addA(a6); c1.addA(a7); c1.addA(a8); c1.addA(a9); try { Song m1=new Song("Belie rosi",2,"В определенный альбом добавить две песни и одно инструментальное произведение.... ","Без Понятия"); Song m4=new Song("Осень",3,"В определенный альбом добавить две песни и одно инструментальное произведение. ","Без Понятия"); Instrumental m2=new Instrumental("Моцарт",5); m2.addInstr("Cкрипка"); Instrumental m3=new Instrumental("Бетховен",4); Instrumental m5=new Instrumental("Гитара",4); m3.addInstr("Гитара"); m3.addInstr("Гонг"); a1.addPro(m1); a1.addPro(m2); a1.addPro(m3); a2.addPro(m4); a2.addPro(m5); } catch(NazvanieException ex) { System.out.println(ex.getMessage()); } try { FileSave.saveFile(c1, "data.data"); FileSave.loadFile("data.data"); System.out.println(); } catch(ClassNotFoundException ex) { System.out.println("ClassNotFoundException!"); } catch(IOException ex) { System.out.println("IOException!"); } System.out.println(Report.createReport(c1)); try { Report.saveFile(c1, "My report"); System.out.println(Report.loadFile("My report")); } catch(IOException ex) { System.out.println("Ошибка сохранения/загрузки файла!!!"); } CollectWindow myWindow=new CollectWindow(c1); myWindow.setTitle("Название коллекции: "+c1.getName()+", ФИО владельца: "+c1.getFio()); } }