Я чрезвычайно новичок в C++ (и вообще программирование), и я работаю над проектом, который меня озадачил (не трудно сделать ha). Проект включает файлы прямого доступа. Мы должны создать файл, состоящий из серии записей деталей. Вот некоторые из характеристик:Работа с файлами прямого доступа в C++
Должна содержать запись заголовка (заполнено 24 байта), указывающую количество действительных элементов .
Каждый (24 байт длиной) запись данных будет содержать инвентарный номер (4 цифры макс), описание (8 символов), счетчик (4 цифры), и индикатор «Тест часть» (4 цифры max => -1 - конец файла ).
Этот файл изначально будет содержать 20 незаполненных (фиктивных) записей и будет создан по порядку .
После того как файл был создан, будет доступен доступ к последовательному текстовому файлу на основе номеров акций, и в файл будут добавлены новые записей.
Когда обновление будет завершено, действительные записи о партиях будут напечатаны в порядке, начиная с запаса запись "1".
Обновление путем чтения файла обновления текста (prog4.dat) и ищет позицию файла, основанный на инвентарный номер (не забудьте запись в заголовка)
Например:
Initial (empty)
Input (updates)
1 widgits 25 3
6 gidgits 12 8
8 kidgits 6 -1
3 didgits 11 6
Output
1 widgits 25
3 didgits 11
6 gidgits 12
8 kidgits 6
Я не знаю абсолютно ничего о файлах прямого доступа, поэтому рассматривал пару различных ссылок, которые я нашел в Google (http://cee-ux49.cee.illinois.edu/cee490/public_html/pdfs_vgs/aL23_Direct_Access_Files.pdf, и конкретно), но мне трудно понять, как сделать эту работу этой конкретной программы.
Я не очень много сделал для кода, поскольку, как я уже сказал, это меня озадачило, и то, что у меня есть, основано главным образом на этой первой ссылке, поэтому я не знаю, что это правильно (не уверен какой размер дать вектор, так как я не совсем уверен, что это было бы в моей конкретной проблеме (возможно, массив деталей?)), но вот что я мог бы придумать.
#include <iostream>
#include <string>
#include <fstream>
#include <stream>
using namespace std;
class records {
public:
int getStckNumber() {
return stockNumber;
}
void setStockNumber(int stockNum) {
stockNumber = stockNum;
}
string getItemDespcription() {
return itemDescription;
}
void setItemDespcription(string itemDescrip) {
itemDescription = itemDescrip;
}
int getItemAmount() {
return itemAmount;
}
void setItemAmount(int itemAmt) {
itemAmount = itemAmt;
}
int getNext() {
return next;
}
void setNext(int nxt) {
next = nxt;
}
private:
int stockNumber;
string itemDescription;
int itemAmount;
int next;
int recNum;
}
int main() {
int stockNumber;
string itemDescription;
int itemAmount;
int next;
int recNum;
int recSize = sizeof(int) + sizeof(string) + sizeof(int) + sizeof(int) + sizeof(int);
istream updateFile;
updateFile.open("prog4.dat");
if(!updateFile) {
cerr << "Open Failure" << endl;
exit(1);
}
}
Вот файл я буду использовать для обновлений:
10 zidgits 17 -1
14 lidgits 2 7
6 gidgits 12 8
1 bidgits 25 3
16 widgits 9 10
7 midgits 0 2
3 didgits 11 6
5 tidgits 5 16
2 pidgits 7 5
8 kidgits 6 14
Вот некоторые конкретные вопросы, которые у меня есть:
Как бы идти о хранении информации от updateFile до переменных, которые будут записаны в выходной файл (еще не создан)?
Как я могу получить данные в правильном порядке, поскольку он основан на последнем номере в каждой строке в файле updateFile.
Например, выходной файл должен начинаться с самой низкой stockNumber, который 1, поэтому на основе файла, элемент с stockNumber 1 является bidgits. Затем файл должен смотреть на последний номер в этой строке (3) и записывать информацию для элемента с этим количеством запаса (didgits) и так далее.
Это основные вопросы, которые возникают у меня прямо сейчас, но я уверен, что все это будет развиваться. Любая помощь была бы высоко оценена. Кроме того, это происходит примерно через 5 часов, поэтому я стараюсь придерживаться как можно большего кода, который у меня уже есть (я знаю, что гораздо больше добавится, конечно), если это вообще возможно.
Я искал это, что может быть полезно: http://cee-ux49.cee.illinois.edu/cee490/public_html/pdfs_vgs/aL23_Direct_Access_Files.pdf По крайней мере, первые несколько страниц. – Galik
Спасибо, это выглядит действительно полезно. –
Мне просто сложно понять, как применить его к моей конкретной проблеме: -/ –