gbowne1 / random_c_cpp_programs

A collection of my random opensource C and C++ programs
MIT License
3 stars 6 forks source link

DataFrame print table, Main menu and CMake copy CSV files to build directory #13

Closed andrewlod closed 10 months ago

andrewlod commented 10 months ago

In this pull requested I have added a couple features:

gbowne1 commented 10 months ago

@andrewlod this looks like you only shipped the build and some .csv's not the update(s).

Aside from this, this looks good. I can merge the changes.

andrewlod commented 10 months ago

My apologies for that. Usually I would just do git add . and all changes, including modifications and deletions would be included, but for some reason, they were not this time. I have included the changes in a new pull request.

gbowne1 commented 10 months ago

Yeah, thought that was a bit weird. But, appears to be fixed now @andrewlod

I also thought about a few improvements or functions.

Suppose a teacher has a bunch of classes all day and gives their students a test. Theres a hige pile of test papers to grade now. Once they have the test the students hand their papers in. Now the teacher has to grade all the papers, and input the grades/scores into data for each student, using either a separate program or this program. Do we make separate testdata for individual tests, use our gradebook program to help the teacher input the grades/scores, or?

andrewlod commented 10 months ago

Do we make separate testdata for individual tests, use our gradebook program to help the teacher input the grades/scores, or?

I suppose test grades could work the same way as assignment grades, where there is a CSV file, say, testgrades.csv with columns test_id,student_id,grade, and another CSV file testdata.csv with columns test_id,name/description,class_id.

Now for the teacher to update grades efficiently, it would be a lot easier if there was an actual UI (web or even Desktop) where a teacher could easily jump from one student to another (using arrow keys or the mouse, for example), in order to post grades. Another solution would be: GradeBook knows all students, and students could be linked to classes (CSV studentclasses.csv with columns student_id,class_id,semester), and tests are also linked to classes. Whenever a teacher wants to fill in the grades of an ungraded test, GradeBook could query all students of the class the test was applied and ask the grade, one by one, without the teacher having to type the name (or ID) of each student, just the grades. Does that make sense?

gbowne1 commented 10 months ago

Yeah that does make sense. I originally thought about some sort of UI when I made this program as well as intended for it to actually be used.

I don't know about a Web UI but certainly something useable could be made for the program.

Some sense of security needs to be had too so that someone couldn't get in and change grades scores etc without authorization which could be just username and password and a verification, maybe a couple levels deep.

andrewlod commented 10 months ago

Since we are thinking about authentication and UI, maybe it would make sense to make it a server (i.e. API) with a front-end. I have some experience with CPPRestSDK and it is cross-platform. There are some advantages to this approach, where people from multiple devices can connect to the service. Alternatively, if the goal is to have a local application only, it is possible to proceed with an approach without a server (like the current state of the project).

As for UI libraries, I have worked with openFrameworks and wxWidgets. Maybe the second one fits better in GUIs, but I am not completely sure. There is also QT, but I have never used it.

gbowne1 commented 10 months ago

I would be concerned with making the program capable. ie features first before we actually go down the UI route.. but yes, UI. I am completely ok with a text based UI akin to 16 bit early 32 bit DOS applications.

API would be good too.