How can I create a customised add/node form in D7? How can I create a customised add/node form in D7? 

I am not talking about a form for gathering information that is not content for the site, like an event registration form. I'm talking about the node/add form where you create content for your site.

What I want to replicate is just some simple html tables, arranged together, and some css to make it look good. Lots of boxes in which to insert numbers, mainly, a few drop-downs and text fields too. Imagine you navigate to node/add/scorecard and something like this appears:

Thanks.

SOLUTION

This is the solution I have arrived at:

(1) Create a module (.INFO and .MODULE files).

(2) Implement hook_menu (in your new module) to create a url and page where the form is to reside.

(3) Add a function to render the HTML of the form using drupal_get_form.

(4) Add a form builder function and construct your form using an array called $form (see form API for details).

(5) Add a submit button at the end of your form.

(6) To make the form look the way you want it to there are several methods: (i) create a theme function to add to the elements of $form; (ii) use #prefix and #suffix properties to add additional HTML and CSS ids/classes to the rendered form; (iii) manipulate the many ids/classes, rendered by drupal_get_form, with CSS; (iv) use the #markup properties to add additional HTML and CSS ids/classes to the rendered form (not recommended). I used a combination of (ii) and (iii). I could not work out how to do (i) but it is probably the 'most correct' method.

(7) Add a validation function.

(8) Add a submit function using node_save (for nodes) and drupal_write_record (for fields) to insert your form values into the relevant database tables: node, field_data_field_my_field etc.
you may try using Webform module.

Webform is a module that aids in making various one-off forms such as contact forms, surveys, order forms, reservations, CRM requests, and more.
To install the module, download the module and add it to your sites/all/modules directory. Enable it under /admin/build/modules.
You will now have a new node type called &quot;Webform&quot;. From there you simply give the webform a title, description, confirmation message, set up email settings and the like.
Finally, you can add several components (think fields). There are several component types available: fieldset, pagebreaks, grid, textarea, textfield, select (checkboxes, pulldown lists), email addresses and more.

Here's the documentation.
Let me know if you need more information.
-------------------- UPDATE ----------------------
To customize the HTML of the form you can copy the file webform-form.tpl.php and copy it into you template.
Inside there is the array $form['submit'] that contains the compontents of the form.
write dsm($form['submit']) and it will print the compontents.
Then you may do something like
&lt;div class=&quot;my_class&quot; id=&quot;my_id&quot;&gt;
&lt;?php print render($form['submit']['YOUR_FIELD']); ?&gt;
&lt;/div&gt;

Then you may want to assign this template to that node, so it will be
webform-form-NID.tpl.php