PDA

View Full Version : Need advice for a best way to make this application



frenk_castle
23rd September 2009, 15:49
I tried to be specific and provide enough details. If I wrote to much I apologize. If post is in the wrong forum section please move it to appropriate one.

I need your help writing an application. I don’t what you to do job for me just read my ideas and help me find the best, easiest, way to do it. I have moderate experience with C++ and STL. I am new to Qt.

The job at hand is this. I work in the IT Section of the Printing department in a national Telecommunication company. We print bills for land and cellular phones, various notices for our company an outside clients. Most of outside client are bank and insurance companies. Problem we have is that every job that we do must have a work order. Work order is basically a paper with says that 1000 notices for car loans need to be printed for Bank A on Bank A paper type 2 on our printer 3 than put in Bank A envelopes type 1 on our machine for automating packaging 4 and to in every envelope flayer need to be put for the feeding station 2.

Our working orders are very old and don’t serve their purpose any more. I want to make application that will help automatize the process of making and later printing our new working orders.

My idea, and this is where I need your advice and criticism, is to make main window, I’ll see later if SDI or MDI approach is better, and in this main window have central widget that will be heart of my application. First idea was make series of combo boxes.
In first one you choose a client company. Bank A, Company B etc.
In second you choose the paper but it should give you only paper that previously selected company has. If you chose one client second combo box have only paper options for that client.
In third you choose the envelope. Again you should get options only for the selected company.
Latter combo boxes let you choose printer, packaging machines, or any extra work, cutting to format, folding that needs to be done. If combo boxes can’t be „connected“ in this fashion I thought to when you click choose client new dialog appears where you are given check boxes. You have text box under and every box you check fills the text box with different text. That text is returned when you click ok.
Then when you select and click ok you are return to main window and you have a a field where is the name of selected client. Then you click select paper and again new dialog appears and you are given options of paper that selected client use. Basically „connected“ combo boxes are replaced with dialogs if that is easier to „connect“. Combo boxes for printers, packaging and extra work can stay or become dialogs.

Every dialog, or combo box, should have option other for specific jobs client and I will have text box for each choice where user can write further explanations.

Next my idea is to make my class which will have members that correspond with every combo box, dialog, and text box, and methods that set or get those members. When user choose save all of his entries are put in my class and that method of my class save all members to file. When user load all data is loaded in my class and that data is used to initialize combo boxes, fields if dialogs are used, and text boxes.

When user choose new my empty class is created and again used to initialize the widget.

If it is better members of my class could be set as soon as user make a change in selection, chance paper or printer, or it can be done only on save.

I hope you got the idea of what I want to do. I would appreciate advice of what idea or mine is the best for this application or if you have ideas that are better. I can do all this work on my on but since I am new to Qt I probably won’t choose the optimal way to make this application which will cause more work for me and latter date of completion of my application since I will have to try several times.

Reading what I wrote it seems that idea with dialogs is better. Every check box fills text box with different text if you check "other" it fills it with nothing. After that you can type some more if you need and when you click ok text box content is returned and stored in main window text box that can't be changed from main window. Only through dialog. That text is stored in my class in strings.

Any suggestions will be very appreciated. Thanks in advance.

Chisum
24th September 2009, 19:14
I have a few suggestions on how to begin. Much of my professional work was focused on system design and implementation.

Your post seems to include some basic ideas on some of the essential elements of a good system design. So here are some of my ideas:

1. Begin with the Business Process Design. You have a basic start of that in your comments which beginning the paragraph that stars with "The job at hand is this. ....". My suggestion is to create a flowchart diagram of the business process that you describe in that paragraph. Include at the beginning of the design a few simple paragraphs that describe the who, what, where, and when of the process. Then include a simple flowchart that describes the steps of the process. At this point, do not think about the computer or the code. Your goal is to produce a basic description of the business process.

Then show and discuss this document with the people who actually perform this business process as a part of their jobs at the present time. This effort is extremely important. Everything else that you will do is dependent of the success of this effort. Keep your work simple and clear cut. Be precise.
Do not expect your first efforts to be perfect. Your goal at this stage is to create a documentation of the business process that both IT and the staff who perform this process all agree that the document is accurate. Listen carefully to everyone's ideas and comments and include all relevant information. In fact, get their approval and 'buy in' to your effort, in writing if possible.

2. Once you have completed the first step, you can begin working on the a description of the IT processes currently used. Take each step of the business process and identify this IT components currently involved. These would include paper forms currently used, existing databases used, and how individual items on the forms are mapped to the existing databases. Some of this information may already exist.

As you have noted, "Our working orders are very old and don’t serve their purpose any more.". Identify the specific problems as you work through this step. Note current information that is obsolete, vague, and what new information is needed. Again, keep talking with the staff who actually are performing this process. They will, often, be very happy to point out the shortcomings in the current process. They will often be able to describe the irrelevant information being gathered now and they can describe the additional information which is actually needed. Such comments as "Oh, the item is worthless..." or "Oh, we always add extra data up here on the left about such and such..". They will tell you this information but you have to ask for it. The information that you gather here should be added to the description of the business process that you produced in Step 1.

3. The results of these two steps will allow you to write a proposal of your suggested improvements to streamline this business process. These suggestions would include changes to the current business process including new/revised source documents (forms), modified/new steps in the business process and modified/new changes to existing/new databases, and finally a description of the process of automation of all of your effort; in other words, your proposal for an computer application. The description of your proposed computer application should include sketches of the actual screens involved. Again, you will want to share this work with everyone involved, get their ideas and comments, and obtain their approval and 'buy-in'

Final Comments:

I know this is a lot of work. But I have created several large automated implementations of manual business processes by using these steps. By being careful and precise at the start, by involving the important players or users of this process, and by producing a final proposal that all can accept, you will find that you can achieve this with a minimum amount of pain. Imagine that you are building a pyramid. If you do not use the right stones, placed correctly at the bottom, the stone that you place on the higher levels will be wrong, and the pyramid will eventually fail.

To paraphrase a comment from an early sci-fi movie "TRON",

"You are TRON, you fight for the user.!"

There are also many books and articles on the INTERNET that discuss these issues. I would be happy to answer any of your questions.

Good Luck!!!

Gary

frenk_castle
25th September 2009, 17:22
I already thought that nobody would answer. Thanks for proving me wrong Gary. :)

I started conversations with people who will use the application and with people who will work with printed version of the working order. I almost finished a very rough code design of user interface. Application works but lack most functionality. This, I can't call it even prototype, will go to IT Section for their suggestions for the user interface and everything else. When I get input from both IT and Technology section I will make final design. In the mean time I won't think about the code at all but try to follow path similar to what you described. This is very similar to what my college professors talked about when they taught us system design. I majored in electronics but basic principles are the same. And off course I will try to find articles on the net about this kind of design to help me.

Thank you Gary.

Chisum
25th September 2009, 19:55
That is great news. Yeah, I was a college professor for awhile. I am so glad to hear what you have accomplished. It sounds like you are well on your way to a successful project.

It is absolutely essential to include users and technical staff in such a project. Think of them as your customers. If they are not satisfied, it really does not matter how cute or sophisticated is the code that you may come up with.

In the General Discussion forum on this site, there is a long topic on 'Are you a professional programmer?'. I have not put up my answer yet, but it will include a lot about Systems Design. Coding is fun, I still code even though I am retired, but to be a Professional means implementing good system design and satisfying your users and managers about all else.

Keep of the good work!!!

Gary