Gramps is a free/libre genealogy software, available cross-platform (I’m using it on GNU/Linux, so can’t tell if the Windows version may have some quirks). It’s a desktop client and works, of course, offline.
I’m using it as a layman (without any genealogy experience), and found it very easy to use.
It can import/export data in various formats (CSV, XML, GEDCOM, …).
For every person you add, you can enter various details: name(s), birth date, free notes, attachments/gallery, events (like weddings), etc. You can even add custom attributes (name-value pairs).
Starting from a specific person, you can display his/her ancestry in a graphical tree (screenshot from the official website):
About the display of relationship degrees
For each person (in the Relationships view) it lists parents ("Vater", "Mutter"), siblings ("Geschwister"), spouse ("Ehepartner"), and children ("Kinder"). You can click on any on these listed names to see these mentioned relationships of the respective person.
In the graphical ancestry tree, it doesn’t list the degree names (you would have to count the generations yourself).
In the Tools menu, there is a tool ("Verwandtschaftsrechner") that lists all existing persons. Clicking on a person, it shows the relationship degree name (in relation to the active person), like: son ("Sohn"), uncle ("Onkel"), niece ("Nichte"), half uncle ("Halbonkel"), grandfather ("Großvater"), great-grandfather ("Urgroßvater"), and even half-great aunt ("Halbgroßtante") etc.
If there is no relationship between the active person and a selected person, it says "x and y are not related" ("x und y sind nicht verwandt.").