Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

In C# Data and layout file structure Inside each of the data files is 102 lines

ID: 3915637 • Letter: I

Question

In C#

Data and layout file structure

Inside each of the data files is 102 lines of information. The first and last lines are just a header and footer that don’t contain a relevant record. Each of the other 100 lines contains one record each. These records each have 150 fields separated by | . The final field is just a field indicating the end of a record.

The data layout file has one field name per line corresponding to each of the 150 fields that each record in the data files have. These field names and the fields in the data files are all in the same order.

For this assignment you can have all of your code in the Program class if you choose to. You will need to give the user the choice of reading in all of DataFile1, 2, or 3. The data in the chosen file should be read in and converted to the JSON format. It’s important to note that the data files only have the values of each field, the DataFieldsLayout file contains the name of each field. The JSON formatted data then needs to be written out to a valid JSON file. The code that converts the data to the JSON format must be written by you. Do not use a serializer or 3rd party framework like Newtonsoft.Json.

Make sure your project meets the following requirements:

File I/O Reading

The field names are read in from the DataFieldsLayout file and stored in a variable.

The data fields are able to be read in from at least one of the DataFile files and stored in a variable.

File I/O Writing

All relevant data from a DataFile is written out to a single file.

JSON

Records are converted to valid JSON and written to a valid JSON file. (ex. The file
extension should be .json and not .txt).

User Input

The user is able to select which of the three data files they would like to process.

Extra Information

Tips and hints:

Each line of the data files is a separate record made up of key:value pairs.

Figuring out how to convert one record into JSON and then repeating that process for each record will be easier than trying to just lump convert the whole data set.

Test your JSON using the JSON validator found here.

This is an array of data, make sure that your output JSON file accurately represents this fact. The data should not just be a bunch of JSON objects in a file with no structure.

Go back through your code and check for the following:

All variables and methods are named appropriately.

Member variables should have either protected or private access.

Anytime the user is asked for input the expected input is made clear to the user.

Any information being output to the user should be clear and concise.

Make sure nothing accesses an object that doesn’t exist.

DataFieldsLayout.txt

DUNS
DUNS+4
CAGE CODE
DODAAC
SAM EXTRACT CODE
PURPOSE OF REGISTRATION
REGISTRATION DATE
EXPIRATION DATE
LAST UPDATE DATE
ACTIVATION DATE
LEGAL BUSINESS NAME
DBA NAME
COMPANY DIVISION
DIVISION NUMBER
SAM ADDRESS 1
SAM ADDRESS 2
SAM CITY
SAM PROVINCE OR STATE
SAM ZIP/POSTAL CODE
SAM ZIP CODE +4
SAM COUNTRY CODE
SAM CONGRESSIONAL DISTRICT
BUSINESS START DATE
FISCAL YEAR END CLOSE DATE
CORPORATE URL
ENTITY STRUCTURE
STATE OF INCORPORATION
COUNTRY OF INCORPORATION
BUSINESS TYPE COUNTER
BUS TYPE
PRIMARY NAICS
NAICS CODE COUNTER
NAICS CODE
PSC CODE COUNTER
PSC CODE
CREDIT CARD USAGE
CORRESPONDENCE FLAG
MAILING ADDRESS LINE 1
MAILING ADDRESS LINE 2
MAILING ADDRESS CITY
MAILING ADDRESS ZIP/POSTAL CODE
MAILING ADDRESS ZIP CODE +4
MAILING ADDRESS COUNTRY
MAILING ADDRESS STATE OR PROVINCE
GOVT BUS POC FIRST NAME
GOVT BUS POC MIDDLE INITIAL
GOVT BUS POC LAST NAME
GOVT BUS POC TITLE
GOVT BUS POC ST ADD 1
GOVT BUS POC ST ADD 2
GOVT BUS POC CITY
GOVT BUS POC ZIP/POSTAL CODE
GOVT BUS POC ZIP CODE +4
GOVT BUS POC COUNTRY CODE
GOVT BUS POC STATE OR PROVINCE
GOVT BUS POC U.S. PHONE
GOVT BUS POC U.S. PHONE EXT
GOVT BUS POC NON-U.S. PHONE
GOVT BUS POC FAX U.S. ONLY
GOVT BUS POC EMAIL
ALT GOVT BUS POC FIRST NAME
ALT GOVT BUS POC MIDDLE INITIAL
ALT GOVT BUS POC LAST NAME
ALT GOVT BUS POC TITLE
ALT GOVT BUS POC ST ADD 1
ALT GOVT BUS POC ST ADD 2
ALT GOVT BUS POC CITY
ALT GOVT BUS POC ZIP/POSTAL CODE
ALT GOVT BUS POC ZIP CODE +4
ALT GOVT BUS POC COUNTRY CODE
ALT GOVT BUS POC STATE OR PROVINCE
ALT GOVT BUS POC U.S. PHONE
ALT GOVT BUS POC U.S. PHONE EXT
ALT GOVT BUS POC NON-U.S. PHONE
ALT GOVT BUS POC FAX U.S. ONLY
ALT GOVT BUS POC EMAIL
PAST PERF POC POC FIRST NAME
PAST PERF POC POC MIDDLE INITIAL
PAST PERF POC POC LAST NAME
PAST PERF POC POC TITLE
PAST PERF POC ST ADD 1
PAST PERF POC ST ADD 2
PAST PERF POC CITY
PAST PERF POC ZIP/POSTAL CODE
PAST PERF POC ZIP CODE +4
PAST PERF POC COUNTRY CODE
PAST PERF POC STATE OR PROVINCE
PAST PERF POC U.S. PHONE
PAST PERF POC U.S. PHONE EXT
PAST PERF POC NON-U.S. PHONE
PAST PERF POC FAX U.S. ONLY
PAST PERF POC EMAIL
ALT PAST PERF POC FIRST NAME
ALT PAST PERF POC MIDDLE INITIAL
ALT PAST PERF POC LAST NAME
ALT PAST PERF POC TITLE
ALT PAST PERF POC ST ADD 1
ALT PAST PERF POC ST ADD 2
ALT PAST PERF POC CITY
ALT PAST PERF POC ZIP/POSTAL CODE
ALT PAST PERF POC ZIP CODE +4
ALT PAST PERF POC COUNTRY CODE
ALT PAST PERF POC STATE OR PROVINCE
ALT PAST PERF POC U.S. PHONE
ALT PAST PERF POC U.S. PHONE EXT
ALT PAST PERF POC NON-U.S. PHONE
ALT PAST PERF POC FAX U.S. ONLY
ALT PAST PERF POC EMAIL
ELEC BUS POC FIRST NAME
ELEC BUS POC MIDDLE INITIAL
ELEC BUS POC LAST NAME
ELEC BUS POC TITLE
ELEC BUS POC ST ADD 1
ELEC BUS POC ST ADD 2
ELEC BUS POC CITY
ELEC BUS POC ZIP/POSTAL CODE
ELEC BUS POC ZIP CODE +4
ELEC BUS POC COUNTRY CODE
ELEC BUS POC STATE OR PROVINCE
ELEC BUS POC U.S. PHONE
ELEC BUS POC U.S. PHONE EXT
ELEC BUS POC NON-U.S. PHONE
ELEC BUS POC FAX U.S. ONLY
ELEC BUS POC EMAIL
ALT ELEC POC BUS POC FIRST NAME
ALT ELEC POC BUS POC MIDDLE INITIAL
ALT ELEC POC BUS POC LAST NAME
ALT ELEC POC BUS POC TITLE
ALT ELEC POC BUS ST ADD 1
ALT ELEC POC BUS ST ADD 2
ALT ELEC POC BUS CITY
ALT ELEC POC BUS ZIP/POSTAL CODE
ALT ELEC POC BUS ZIP CODE +4
ALT ELEC POC BUS COUNTRY CODE
ALT ELEC POC BUS STATE OR PROVINCE
ALT ELEC POC BUS U.S. PHONE
ALT ELEC POC BUS U.S. PHONE EXT
ALT ELEC POC BUS NON-U.S. PHONE
ALT ELEC POC BUS FAX U.S. ONLY
ALT ELEC POC BUS EMAIL
NAICS EXCEPTION COUNTER
NAICS EXCEPTION STRING
DELINQUENT FEDERAL DEBT FLAG
EXCLUSION STATUS FLAG
SBA BUSINESS TYPES COUNTER
SBA BUSINESS TYPES STRING
NO PUBLIC DISPLAY FLAG
DISASTER RESPONSE COUNTER
DISASTER RESPONSE STRING
END OF RECORD INDICATOR

DataFile1, 2 and 3 are to large to post. I am including a screenshot of one as an example as to what is in all of them. As long as the code can accomidate the example file, incorporate it how you wish.

Explanation / Answer

using System;

using System.IO;

namespace DataAndFileLayout

{

class Program

{

public static void Main(string[] args)

{

string dataFieldLayoutFile = "DataFieldLayout.txt";

string dataFile = "DataFile";

Console.WriteLine("Choose a file to read the data from: 1. DataFile1 2. DataFile2 3. DataFile3");

var input = Convert.ToInt32(Console.ReadLine());

if (input < 1 || input > 3)

{

Console.WriteLine("Invalid input.");

return;

}

string JSON = "["; //Start of the JSON array

try

{

string[] dataFields = File.ReadAllLines(dataFieldLayoutFile);

string[] records = File.ReadAllLines(dataFile + input + ".txt");

for (int i = 1; i < records.Length - 1; i++)

{

JSON += " {";

var record = records[i].Split('|');

for (int j = 0; j < dataFields.Length; j++)

{

JSON += " "" + dataFields[j] + "":"" + record[j] + """;

if (j != dataFields.Length - 1)

JSON += ",";

}

JSON += " }";

//Adding comma after single record, if it is not the last record

if (i != records.Length - 2)

JSON += ",";

}

JSON += " ]"; //End of the JSON array

// Writing JSON data to output.json file

File.WriteAllText("output.json", JSON);

}

catch (Exception ex)

{

Console.WriteLine("Exception occured: " + ex.ToString());

}

}

}

}