Dublin University Rifle Club

Version Date : September 19, 2001 Filename : Status :

Rifle Club Management System

Design Brief

Mark Dennehy

September 19, 2001

Contents

Executive Summary 1

1 General Architecture 1

2 Data 2

List of Figures

Executive Summary

The Club at present suffers from an excessive amount of paperwork, duplication and a lack of support information. The nature of the information the Club maintains makes it particularly suitable to computerisation. Hence, this design was created for a system to maintain Club data and provide operational and decision-making support information. It has been named R.C.M.S., for Rifle Club Management System.

1 General Architecture

The Club gathers a large amount of information on its member’s progress during the year. The best means for maintaining a store of this data is to place it in a database. SQL databases have had thousands of man-years of work invested in their design and implementation. Capitalising on this is an obvious choice. Hence, an SQL database called PostgreSQL has been selected and installed on the club webserver,durc.tcd.ie; libraries to use this database from several languages have also been installed.

This gives a single repository for all Club data. A single program could concievably be written to produce all required reports for Club use, but this approach has many disadvantages.

2 Data

1. A large program will take longer to write 2. A large complex program will have more problems and bugs

3. A large program may not encompass all the reports needed, and adding to it to generate further reports will require the programmer to become familiar with the program thus making adding reports a difficult task.

A single program can often be easier for novice users as they only have to learn to use one program. However, this is outweighed by the inflexibility of a monolithic approach. Further, most users will be Range Officers who will only have to use the system to generate Range Officer Reports and that can be handled by a single program which can call other programs for assistance.

Thus the architecture is as follows;

• All information stored in an SQL database

• Several small programs, each of which produces a single report, and which can be used by other programs.

• Output should be in L^{A}TEX format since this allows for output in printed format, acrobat or web-based formats, and only requires a simple text file to do so.

• A single program should be available to produce an RO report with a great deal of work done on the user interface. However, it should be possible to use this program from a standard dumb terminal so the interface should have two modes; text (curses) based and graphical.

Thus we have a large group of utility programs and a single large RO Report program.

2 Data

The data is stored in a single SQL database with the following tables.

members

2 Data

durc id CHAR(6) NOT NULL PRIMARY KEY
surname TEXT NOT NULL
name TEXT NOT NULL
email TEXT DEFAULT NULL
gender CHAR(1)
date of birth DATE
course TEXT
year TEXT
eye dominance CHAR(1)
handedness CHAR(1)
pref air rifle TEXT
pref free rifle TEXT
pref sporter rifle TEXT
pref jacket TEXT
pref sling TEXT
sling stop TEXT
handstop TEXT
cheekpiece TEXT
buttplate setting TEXT
safety briefing attended BOOL DEFAULT FALSE
safety briefing date DATE DEFAULT NULL
safety briefing instructor CHAR(6) DEFAULT NULL
range officer BOOL DEFAULT FALSE
trainee range officer BOOL DEFAULT FALSE
notes TEXT
notes file TEXT

membership fees

durc id CHAR(6) NOT NULL PRIMARY KEY
paid to CHAR(6) NOT NULL
paid on DATE NOT NULL

credit

given to CHAR(6) NOT NULL PRIMARY KEY
given by CHAR(6)
given on DATE NOT NULL
amount NUMERIC(9

2)

notes TEXT

cash

recieved from CHAR(6) NOT NULL PRIMARY KEY
recieved by CHAR(6)
received on DATE NOT NULL
amount NUMERIC(9

2)

regular detail income BOOL DEFAULT TRUE
membership fee BOOL DEFAULT TRUE
detail no INT2
notes TEXT

members progress 2 Data

durc id CHAR(6) NOT NULL PRIMARY KEY
notes TEXT
notes file TEXT

members progress free INHERITS members progress

class CHAR(1) DEFAULT ’D’
junior BOOL DEFAULT NULL
novice BOOL DEFAULT TRUE
colours novice BOOL DEFAULT TRUE
average FLOAT8 DEFAULT 0
mcrae average FLOAT8 DEFAULT 0
details attended INT8 DEFAULT 0
competitions attended INT8 DEFAULT 0
shoots ladder cards BOOL DEFAULT FALSE
ladder cards shot INT8 DEFAULT 0

members progress air INHERITS members progress

class CHAR(1) DEFAULT ’D’
junior BOOL DEFAULT NULL
novice BOOL DEFAULT TRUE
colours novice BOOL DEFAULT TRUE
average FLOAT8 DEFAULT 0
mcrae average FLOAT8 DEFAULT 0
details attended INT8 DEFAULT 0
competitions attended INT8 DEFAULT 0
shoots ladder cards BOOL DEFAULT FALSE
ladder cards shot INT8 DEFAULT 0

members phone

durc id CHAR(6) NOT NULL PRIMARY KEY
phone type TEXT
phone number TEXT NOT NULL

members address

durc id CHAR(6) NOT NULL PRIMARY KEY
address type TEXT
address TEXT

members photo

durc id CHAR(6) NOT NULL PRIMARY KEY
photo filename TEXT

scores

durc id CHAR(6) NOT NULL PRIMARY KEY
score date DATE
witness RO CHAR(6) NOT NULL
score INT2 NOT NULL
type TEXT
ladder BOOL DEFAULT TRUE
competition BOOL DEFAULT FALSE
notes TEXT

no shows

durc id CHAR(6) NOT NULL PRIMARY KEY
noshow date DATE NOT NULL
detail no INT2 NOT NULL
witness RO CHAR(6) NOT NULL
apology given BOOL DEFAULT FALSE
apology date DATE
apology RO CHAR(6)

members IDs

durc id CHAR(6) NOT NULL PRIMARY KEY
id type TEXT NOT NULL
id number TEXT NOT NULL
witness RO CHAR(6) NOT NULL
witness date DATE NOT NULL

ammo usage

issued by CHAR(6) NOT NULL PRIMARY KEY
issued to CHAR(6) NOT NULL
amount issued INT2 NOT NULL
amount used INT2
date DATE NOT NULL
type TEXT NOT NULL
detail no INT2

duty roster

roster date DATE NOT NULL PRIMARY KEY
discipline TEXT
primary RO CHAR(6) NOT NULL
secondary RO CHAR(6) NOT NULL
TRO CHAR(6)
alternate RO CHAR(6)

detail

detail date DATE NOT NULL PRIMARY KEY
detail no INT2 NOT NULL
firing point INT2 NOT NULL
durc id CHAR(6) NOT NULL
booked at DATETIME
confirmed BOOL NOT NULL DEFAULT FALSE

event

event date DATE NOT NULL PRIMARY KEY
event TEXT

internal competition

competition date DATE NOT NULL PRIMARY KEY
competition name TEXT NOT NULL
competition discipline TEXT
firing points per detail INT2
detail length TIME
start time TIME