Trying to practice good design, is this half decent?
**Disclaimer:**

This post has no code, it is all about design questions, is it good or is it bad.

**Introduction:**

I've started attending a computer science university trying to become a programmer, but I have found out the hard way that even though this university is ranked top 10 for computer science in my country it is quite bad, so I'm trying to do as much as possible by myself in my spare time (like summer vacation)

**Nature of program:**

I'm trying to do a pseudo bank database, with clients, accounts, account / client details, validation, etc.

**Basics:**

I have clients and accounts. Any client can have any number of account, any account can have any number of clients. Accounts have access rights both from clients and non clients (most accounts can have founds deposited from complete strangers).

**Design Questions:**

Is it bad that every client has a list of pointers to every account they own, and every account has a list of pointers to every client that has access to that account (a family may have a account together but the rest are separate); also a client may have access rights to an account they do not own.

I am building my own linked list, dynamic vector, hash table, binary tree to store data (practicing). However I have no idea how exactly to store the data. Should I store both accounts and clients separately for ease of access (finding accounts directly). Or should I only store let's say clients and find accounts trough them (overlap in accounts, difficult to find desired account).

Is there an alternative to storing data in a text file by having *to* and *from* string functions (write private class elements as string / read them from file) like pickle in python ? - in c++

**P.S.**

If you think I should add some code please say so, or if I should go in detail about something.
Trying to practice good design, is this half decent?
===

**Disclaimer:**

This post has no code, it is all about design questions, is it good or is it bad.

**Introduction:**

I've started attending a computer science university trying to become a programmer, but I have found out the hard way that even though this university is ranked top 10 for computer science in my country it is quite bad, so I'm trying to do as much as possible by myself in my spare time (like summer vacation)

**Nature of program:**

I'm trying to do a pseudo bank database, with clients, accounts, account / client details, validation, etc.

**Basics:**

I have clients and accounts. Any client can have any number of account, any account can have any number of clients. Accounts have access rights both from clients and non clients (most accounts can have founds deposited from complete strangers).

**Design Questions:**

Is it bad that every client has a list of pointers to every account they own, and every account has a list of pointers to every client that has access to that account (a family may have a account together but the rest are separate); also a client may have access rights to an account they do not own.

I am building my own linked list, dynamic vector, hash table, binary tree to store data (practicing). However I have no idea how exactly to store the data. Should I store both accounts and clients separately for ease of access (finding accounts directly). Or should I only store let's say clients and find accounts trough them (overlap in accounts, difficult to find desired account).

Is there an alternative to storing data in a text file by having *to* and *from* string functions (write private class elements as string / read them from file) like pickle in python ? - in c++

**P.S.**

If you think I should add some code please say so, or if I should go in detail about something.