I've moved this to the software development forum because I believe you do not want to limit your question to C/C++ answers.
The real 1st question to answer is how to you intend to interface to all the hardware sensors you are suggesting?
Will you wire the directly to you PC (a lot of wiring) or will you actually attach the to small local modules that can then be attached to some sort of bus or network that your PC can contact (less wiring but probably more expensive in hardware costs and obviously more things to learn).
If you are going to wire directly to your PC then you will need all sorts of digital and analogue input and output cards which you will need to write software to interface to, either writing drivers yourself or interfacing to 3rd party drivers. These 3rd party interfaces are likely to be either C libraries or .NET assemblies.
On the other hand if you have remote units then at the PC you just need to implement the protocol (there are many) but basically it is send and receiving data over the appropriate interface for example serial such as RS485 or CANBUS or ethernet.
There are a whole plethora of devices you can get for this sort of application
PLC's (programmable logic controllers) that have an expandable number of inputs in the form of modules added onto a base unit, where the base unit can be either dumb or intelligent and if it is intelligent it needs programming. An example of this is the Turck unit.
Smaller stand-alone units that provide a fixed set on i/o such as Adam units with different connection options (ADAM-4000 series uses serial, ADAM-6000 series uses ethernet).
Using a small micro controller to create you own outstation units, something like the PIC or Rabbit or even Raspberry PI but some programming of your own would be involved.
Once you have decided on the sort of architecture that you want to use for the hardware then you can decided on how you are going to approach programming the central PC, but obvious choices are
- C/C++ particularly if you need to write device drivers for the PC for i/o input boards.
- A .NET language such as C# or VB.NET or even C++/CLR (again if some low level programming is also required) especially if you have bought i/o units (such as Adam or Turck) and only need to write a serial or Ethernet based comms protocol to talk to them.
- You could consider running as some sort of web-service allowing your PC to become a server that an PC in the house can connect to to get to the house control web-site. You would also need to know some html/css and web-site design to do this.
You might want to ask yourself do you want to keep a database? That is do you just want to be able to get the readings right now or do you want to be able to store and access historical data for the house, in which some sort of archive and retrieval system is require a database being the most obvious system of that kind, although not necessarily the best suited to this application.
I would have to ask why you are considering DOS, which is well out of date. If you are after running this on an old computer with low resources (memory/processor/hard disk) then I would say Linux would be a better choice than a operating system that frankly I wouldn't even know where to buy any more.