
Результаты работы программы
Введите имя города
qwe
Введите кол-во мэров
1
Введите имя мэра
qwe
Кол-во голосов:
1
Добавился элемент в коллекцию?true
Добавился элемент?true
Ввести город?Да(1)/Нет(2)
1
Введите имя города
asd
Введите кол-во мэров1
Введите имя мэра
asd
Кол-во голосов:
1
Добавился элемент в коллекцию?true
Добавился элемент?true
Ввести город?Да(1)/Нет(2)
2
Первый элемент вектора
Город Мэр Кол-во голосов
qwe qwe 1
Последний элемент вектора
Город Мэр Кол-во голосов
asd asd 1
Исходные данные:
Город Мэр Кол-во голосов
qwe qwe 1
asd asd 1
Исходные данные:
Город Мэр Кол-во голосов
qwe qwe 1
asd asd 1
Добавилась коллекция в вектор?true
Город Мэр Кол-во голосов
qwe qwe 1
asd asd 1
qwe qwe 1
asd asd 1
Введите имя города
cxz
Введите кол-во мэров
1
Введите имя мэра
cxz
Кол-во голосов:
1
Содержит вектор date объект A?true
Город Мэр Кол-во голосов
qwe qwe 1
asd asd 1
cxz cxz 1
qwe qwe 1
asd asd 1
Добавилась коллекция в вектор?true
Город Мэр Кол-во голосов
qwe qwe 1
asd asd 1
qwe qwe 1
asd asd 1
cxz cxz 1
qwe qwe 1
asd asd 1
Объем
10
Cодержится элемент в векторе?true
Cодержится коллекция в векторе?true
Объем
10
Объем
50
Город Мэр Кол-во голосов
qwe qwe 1
asd asd 1
qwe qwe 1
asd asd 1
cxz cxz 1
qwe qwe 1
asd asd 1
cxz cxz 1
Город Мэр Кол-во голосов
qwe qwe 1
asd asd 1
qwe qwe 1
asd asd 1
cxz cxz 1
qwe qwe 1
asd asd 1
cxz cxz 1
Cодержится элемент в векторе?false
Хэш код вектора
74255033
Пустой вектор?false
Очистелся вектор?true
Город Мэр Кол-во голосов
asd asd 1
Удалился объект vektor@c2ea3f?true
Удалилась колекция?true
Удалились все элементы кроме коллекции?true
Элементы в коллекции
Город Мэр Кол-во голосов
qwe qwe 1
asd asd 1
Элементы в векторе
Город Мэр Кол-во голосов
qwe qwe 1
qwe qwe 1
asd asd 1
qwe qwe 1
asd asd 1
Задание №7
Условие
Используя класс, созданный в задании №3 продемонстрировать работу с файлами . Последовательно записать в файл несколько объектов, затем произвести считывание записи с нужным номером.
Структура файла
Вданной программе запись в файл реализована следующим образом:
(количество объектов)(размер следующего объекта)(сам объект)(размер следующего объекта)(сам объект)
Графическая илюстрация:
Блок схема
Кодпрограммы
import java.io.*;
public class InOutput {
static private int i,j,size;
public int kol[],kol_m;
private String name_city;
static public int sizeObject[];
private String name_mayor[];
static private String name_file="D:\\write.txt";
static public int n;
//Метод ввода данных
public void Enter(){
try
{
BufferedReader a=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Введите имя города");
String ch;
ch=a.readLine();
name_city = new String(ch.toString());
sizeObject[i]=sizeObject[i]+name_city.length();
System.out.print("Введите кол-во меров");
ch=a.readLine();
kol_m=Integer.parseInt(ch.toString());
sizeObject[i]=sizeObject[i]+4;
name_mayor=new String[kol_m];
kol=new int[kol_m];
for(j=0;j<kol_m;j++){
System.out.println("Введите имя мэра");
ch=a.readLine();
name_mayor[j] = new String(ch.toString());
sizeObject[i]=sizeObject[i]+name_mayor[j].length();
System.out.println("Кол-во голосов:");
ch=a.readLine();
kol[j] = Integer.parseInt(ch.toString());
sizeObject[i]=sizeObject[i]+4;
}
}
catch(IOException e){
System.out.println("gh");
}
}
//Метод записи в файл данных
public void write(){
try{
FileOutputStream outstream=new FileOutputStream(name_file,true);
BufferedOutputStream bufout=new BufferedOutputStream(outstream);
DataOutputStream out=new DataOutputStream(bufout);
out.writeBytes(name_city);
out.writeInt(kol_m);
for(j=0;j<kol_m;j++){
out.writeBytes(name_mayor[j]);
out.writeInt(kol[j]);
}
out.close();
}
catch(FileNotFoundException e){
System.out.println("Невозможно произвести запись в файл: " + name_file);
}
catch(IOException e){
System.out.println("Ошибка ввода/вывода: " + e.toString());
}
}
//Метод чтение записи номер , которой введен с клавиатуры
public int read(){
try{
File instream=new File(name_file);
RandomAccessFile in=new RandomAccessFile(instream,"r");
size=in.readInt();
System.out.println("В файле "+size+" записей");
int sizeO[]=new int[size];
for(i=0;i<size;i++){
sizeO[i]=in.readInt();
}
System.out.println("Введите номер записи которую надо прочесть");
BufferedReader a=new BufferedReader(new InputStreamReader(System.in));
String ch=a.readLine();
int nomer =Integer.parseInt(ch.toString());
int sum=16;
for(i=0;i<nomer-1;i++){
sum=sum+sizeO[i];
}
in.seek(sum);
byte[] arr=new byte[3];
in.read(arr);
name_city=new String(arr);
kol_m=in.readInt();
name_mayor=new String[kol_m];
kol=new int[kol_m];
for(i=0;i<kol_m;i++){
in.read(arr);
name_mayor[i]=new String(arr);
kol[i]=in.readInt();
}
in.close();
return nomer;
}
catch(FileNotFoundException e){
System.out.println("Невозможно произвести запись в файл: " + name_file);
}
catch(IOException e){
System.out.println("Ошибка ввода/вывода: " + e.toString());
}
return 0;
}
//Метод печати объекта
public void Print(){
for(j=0;j<kol_m;j++){
System.out.print(name_city+" "+name_mayor[j]+" "+kol[j]+"\n");
}
}
public static void main(String[] args){
try{
BufferedReader a=new BufferedReader(new InputStreamReader(System.in));
System.out.print("Введите кол-во строк в таблице");
String ch=a.readLine();
n = Integer.parseInt(ch.toString());
System.out.println("n=" + n);
}
catch(IOException e){
System.out.println("df");
}
sizeObject=new int[n];
InOutput A[]=new InOutput[n];
for(i=0;i<n;i++){
A[i]=new InOutput();
A[i].Enter();
}
System.out.println("Исходные данные:");
System.out.print("Город Мэр Кол-во голосов\n");
for(i=0;i<n;i++)
A[i].Print();
System.out.println("Запись в файл"+name_file);
try{
FileOutputStream outstream=new FileOutputStream(name_file);
BufferedOutputStream bufout=new BufferedOutputStream(outstream);
DataOutputStream out=new DataOutputStream(bufout);
out.writeInt(n);
for(i=0;i<n;i++){
out.writeInt(sizeObject[i]);
System.out.println("sizeObject="+sizeObject[i]);
}
out.close();
}
catch(FileNotFoundException e){
System.out.println("Невозможно произвести запись в файл: " + name_file);
}
catch(IOException e){
System.out.println("Ошибка ввода/вывода: " + e.toString());
}
for(i=0;i<n;i++)
A[i].write();
System.out.println("Файл сформирован"+name_file);
InOutput B=new InOutput();
int nomer=B.read();
System.out.println(nomer+" Запись");
System.out.print("Город Мэр Кол-во голосов\n");
B.Print();
}
}