Benshark war im Januar 2003 mit der Programmentwicklung tätig und arbeitet seit 19 Monaten. Unter ihnen ist die Arbeit zeitweise alles auf die schlechten Dinge zurückzuführen, die durch die eigenen mangelnden Erfahrung entwickelt wurden, was zu Wander- und Beschäftigungsschwierigkeiten führt! Jetzt hat Bensha die Fähigkeit eines qualifizierten Programmierers erreicht.
Im Allgemeinen ist die Entwicklungsaufgabe für neu abgeschlossene Programmierer nur ein Modul in einem Unterprojekt in einem Projekt. Ein Modul hat fast 5-6 Formen mit einem Codevolumen von etwa 2.000 Zeilen. Tatsächlich ist diese Menge an Aufgaben nicht so gut wie das Abschlussdesign, daher sollte sie abgeschlossen sein, aber die Entwicklungszeit ist relativ klein, etwa 6 bis 12 Arbeitstage anstelle von 1-2 Monaten in der Schule, und Es gibt auch Klassenkameraden, die helfen können. Daher verfügt es über die Entwicklerentwicklungswerkzeuge, Syntax, Frameworks und Bibliotheken. Darüber hinaus können Sie den Betriebsmechanismus der Systemplattform und den Algorithmusanforderungen verstehen und wissen, was vor sich geht. Es ist erforderlich, dass Programmierer eher aktiv als passiv arbeiten können. Kann die Initiative ergreifen, um Informationen zu finden, Kollegen zu fragen und Kollegen zu bitten, bei unbekannten Aufgaben Unterstützung zu leisten.
Dieser Hai befindet sich hauptsächlich in den Entwicklungsaufgaben der Rezeption des Datenbanksystems. Daher wird hauptsächlich gemeinsame Datenbankkomponenten verwendet, um zu veranschaulichen, dass die Aufgaben der Rezeption des Datensystems am schwersten sind und immer von Benutzern kritisiert werden.
Im Allgemeinen sind die Entwicklungsschritte dieses Hai:
0 Aufgabenanforderungen verstehen
1. Implementieren Sie zuerst die Funktion
2. Die Ausnahmebehandlung für Funktionsfunktionen
3. Nutzerfreundlichkeit erreichen
4 Benutzerfreundlichkeit lösen
Das Leistungsproblem wird dem Benutzer überlassen, es zu lösen, wenn das Datenvolumen in Zukunft groß ist! Gegenwärtig ist es wichtig, die Aufgabe zu treffen. Die folgenden Komponenten werden häufig verwendet
Tedit tcombobox TlistView ttreeview tChecklistbox tlabel tdbGrid Timage Tmemo Tbutton Tdbchart TPanel Tmaskedit TDATETIMEPICER TPAGECONTROLLE
1. Während des Interviews hat Ihr Code -Stil den Interviewer. .
2 Komponentenattributeinstellungen
1 tlabel: autosize = Flase;
2 TEDIT Setzen
3 tcomBOBOX, wenn nur Auswahl erlaubt ist, Stil: = csdropdownlist;
Beim Hinzufügen von Daten zu seinen Elementen
Fontcombo-> items-> beginUpdate ();
FontCombo->Items->Add(“XXX”); //
FontCombo->Items->EndUpdate(); //reenable painting
Unabhängig davon, wie viel Data TlistView Treeview TDBGird ähnliche Daten anzeigen Blockierungsfunktionen.
4 tTreeview Wenn Sie den Text des Knotens nicht ändern, müssen Sie die RowSelect = true readonly teadony;
5 TlistView ViewStyle vsReporTreadonly RowSelect = True;
6 tpageControl pageControl1.ActivePageIndex: = 0;
7 TDATETIMEPICKER DATUMFORMAT: = DFLONG Wenn die Zeit zum Bearbeiten kopiert wird
Edit.Text: = DateTimeFormate ("yyyy-mm-dd", DateTimePicker1.Date)
8 Tbutton zum Abbrechen modalResult -Hinweiss festlegen
3 Komponenten mit demselben Schnittstellenlayout sollten zusammengelegt und mit der Umgebung ausgerichtet werden, links und rechts. Elternbehälter, und geben Sie es endlich schön.
Schnittstellenlayoutdetails
1): Verwenden Sie den Rahmen, um Schaltflächen zu formulieren, die die gleichen oder ähnlichen Funktionen erfüllen, und häufig verwendete Tasten müssen Verknüpfungen unterstützen.
2): Elemente, die dieselbe Funktion oder Aufgabe erfüllen, werden in einer zentralisierten Position platziert, um den Abstand der Mausbewegung zu verringern.
3): Lokale Blöcke der Schnittstelle entsprechend der Funktion teilen, sie mit einem Rahmenbox einschließen und eine Funktionsbeschreibung oder einen Titel haben.
4): Die Schnittstelle muss die automatische Browsing -Taste -Funktion der Tastatur unterstützen, dh der automatischen Schaltfunktion zum Drücken der Registerkarte Taste.
5): Die Steuerelemente, die zuerst eingeben sollten, und wichtige Informationen über die Schnittstelle sollten vor der Registerkartenbestellung stehen und auch in eine auffälligere Position im Fenster platziert werden.
6): Es ist am besten, 10 Steuerelemente auf derselben Schnittstelle zu überschreiten.
7): Die Paginationsschnittstelle sollte das schnelle Schalten zwischen Seiten und die häufig verwendeten Kombinationskurzabkneipstasten Strg+unterstützen
8): Die Standardtaste muss die Eingabetaste und die Auswahl von Vorgängen unterstützen, dh nach der Eingabetaste werden die entsprechenden Vorgänge der Standardtaste automatisch ausgeführt.
9): Nachdem die schriftliche Steuerung illegale Eingaben erkannt hat, sollte die Beschreibung angegeben werden und der Fokus kann automatisch erhalten werden.
10): Die Reihenfolge der Registerkarten und die Reihenfolge der Bedienelemente sollte derzeit konsistent sein.
11): Kontrollkästchen und Optionskästchen sind nacheinander gemäß dem oberen Boden der Auswahlwahrscheinlichkeit angeordnet.
12): Kontrollkästchen und Optionskästchen müssen Standardoptionen haben und die Registerkartenauswahl unterstützen.
13): Wenn die Anzahl der Optionen gleich ist, verwenden Sie das Optionsfeld anstelle des Dropdown-Listenfelds.
14): Verwenden Sie das Dropdown-Box anstelle des Optionsfelds, wenn der Schnittstellenraum klein ist.
15): Wenn die Anzahl der Optionen als klein bezeichnet wird, verwenden Sie das Optionsfeld und verwenden Sie stattdessen das Dropdown-Listenfeld.
16): Software mit starker Professionalität sollte relevante professionelle Begriffe verwenden, während die universelle Schnittstelle die Verwendung von universellen Wörtern befürwortet.
4 Codes
1 Funktionale Inspektion: Überprüfen Sie, ob alle Funktionen und Beschränkungen, die die Anforderungen benötigt, implementiert werden
2 Grenzüberprüfung: Führen Sie Grenzüberprüfungen für Funktionen wie die Eingabe aus verschiedenen Datentypen oder Daten verschiedener Bereiche durch
3 Illegale Zugriffsprüfung: Testen Sie, ob ein illegaler Speicherzugriffsfehler vorliegt. Die Referenzfehlermeldung zur Bestimmung, ob sie zu dieser Art von Fehler gehört, ist ähnlich:
"... nicht gefunden", "Listenindex aus den Grenzen ...", "Zugriffsverletzung unter der Adresse ..."
4: Eingabeaufforderung zur Informationsanleitung: Geben Sie alle Zeichen nach Belieben ein, einschließlich Bearbeitungsfelder, Tabellenfelder und Auswahlfelder, einschließlich englischer und chinesischer Zeichen, testen Sie, ob illegale Zugriffsfehler verursacht werden und ob inakzeptable Zeichen verwendet werden und Tipps zu führen.
5 Einheitenbasierte Inspektion: Überprüfen Sie, ob die Beschreibung der Einheitenheader in dieser Einheit, die Beschreibung jeder Funktion und die Annotationsbeschreibung korrekt sind. Zitieranweisungen: Gibt es zusätzliche Zitate
// Insbesondere, wenn die C ++ - Header -Datei unnötige Einschlüsse enthält, treten für andere Einheiten unnötige Probleme auf.
In der Tat werden diese als Angestellte und Einheiten-Testinhalt bezeichnet. Wenn Sie den Testcode gemäß dem Testbuch schreiben möchten, möchte ich, dass jeder Entwickler es nicht will!可不作又不行,容易出错不好交货的。 Daher ist es sehr notwendig, die Testmethoden zu verstehen, diese Methoden
Es gibt Einführung in Software -Engineering an Universitäten, und Softwaredesigner müssen ebenfalls eingenommen werden. Wenn Sie ein Programm schreiben, werden Sie darauf achten, zu überlegen, welche Fehler in verschiedenen Situationen auftreten können! Werden die Variablen jedoch bei der Implementierung der Funktion leer sein? Ist der Wert gültig? Ist es überfüllt? Löschen Sie den Raum der Variablen? Ist es eine Fallanforderung? Gibt es vor und danach Räume?
Diese Urteile müssen zuerst in die Funktion und den Beginn des Prozesses geschrieben werden!
if (treeview-> selected == null) // Wird die Variable leer sein?
dann zurückkehren;
std :: vecotr <int> intarrray; // Ist es überfüllt?
if (intarrray <= 0)
Dann zurückkehren;
if (i <listView.items-> count) // Ist es überfüllt und überquert die Grenze?
Edit-> text = listView-> items-item [i] .Caption;
Edit-> text.trim (); // Gibt es vor und nach einem Platz?
Char A [10];
memcpy (a, "/0", 10); // Löschen Sie den Raum der Variablen?
a [9] = 'i';
// Die Person, die Ihre Funktion verwendet, schreibt eine Schleife, um Ihre Funktionsvariable aufzurufen, wenn Ihre Funktion in der Mitte ein Urteilsvermögen hat, aber keine Daten an den Anrufer zurückschreibt Die Urteilsbedingungen des Anrufers verlieren ihre Wirkung!
if (name.trim () == "Delphi") dann name = "bcb";
switch () {case zu brechen;
5 Standarddaten, Eingabeaufforderungen, Positionierung und Freundlichkeit
Wenn die Schnittstelle angezeigt wird, werden die Daten standardmäßig angezeigt.
Combobox1.ItemIndex: = 0;
Im Allgemeinen werden neue Ergänzungen und Modifikationen in einem einzelnen Paar mit einer Schnittstelle bearbeitet. Wenn der Neuzugang abgeschlossen ist, müssen alle Komponenten auf dem neu hinzugefügten Datensatz positioniert werden, und das gleiche gilt für die Änderung. Suchen Sie beim Löschen den nächsten Datensatz.
ListView und DBGird, damit die Sortierung auf den Titel klickt, um nach dem numerischen Briefdatum nach oben/nach unten zu steigen
ListView und DBGird Wenn der ausgewählte Datenfokus auf der Schaltfläche verschoben wird, welche Zeile ist derzeit ausgewählt? !
void __fastcall tfrmgather760 :: lvdatacustomdrawitem (tcustomlistView *Sender, TlistItem *Element, TcustomdrawState -Status, Bool & DefaultDraw) // Dieser Code zeichnet einen gelben unten auf der ausgewählten Linie
{
if (Absender-> ausgewählt! = NULL)
if (item-> index == sender-> ausgewählt-> index)
{
Absender-> Canvas-> Pinsel-> color = clyellow;
Absender-> Canvas-> font-> color = clbblue;
}
}
Bei Operationen, die normalerweise 2 Sekunden überschreiten, muss es in der Funktion sein.
TCursor OldCursor;
OldCursor = Screen-> Cursor;
Screen-> cursor = crsqlwait;
versuchen{ . . . . . . } __ schließlich {screen-> cursor = oldCursor;}
procedure tform1.FormKeyDown (Absender: Tobject; var key: word; Shift: tShiftState);
Beginnen
if (revers = []) und (key = vk_return) dann // die Registerkarte Taste durch Eingabetaste ersetzen
Perform (WM_NEXTDLGCTL, 0, 0);
Wenn taste = vk_next dann // PageUp pagedown drücken, um die Seite "TpageControl" zu erstellen
Beginnen
wenn
PageControl.activePageIndex: = 0
anders
PageControl.activePageIndex: = pageControl.activePageIndex + 1;
Ende
sonst wenn key = vk_prior dann dann
Beginnen
Wenn pageControl.activePageIndex = 0 dann
PageControl.activePageIndex: = PageControl.PageCount - 1
anders
PageControl.activePageIndex: = pageControl.activePageIndex - 1;
Ende;
Ende;
Ende.
6 Taste Austausch
Wenn eine Operation abgeschlossen ist, werden einige Tasten ungültig, und unter welchen Umständen werden sie in die Gültigkeit wiederhergestellt? Obwohl es nur einen Absatz gibt, verursacht dies, wenn es nicht unwirksam eingestellt ist, häufig verschiedene tödliche Fehler! Da Sie nicht vorhersagen können, wie Benutzer Ihre Software betreiben, können Sie mit Rose ein Statusdiagramm zeichnen oder Word verwenden, um sie darzustellen!
7 Leistung
Wenn mehr als 100 Daten vorhanden sind, werden die Datenkomponenten wie Combobox ListBox TreeView ListView DBGrid beim Eingeben eingegeben und abfragen.
Die Unterstützung von Fuzzy -Abfragen ist nichts anderes als "%xxx%".
void __fastcall tfrmgather760 :: edt_nameKeypress (tobject *sender, char & key)
{
if (key! = vk_return)
zurückkehren;
String SSQL;
ssql = "Name als Name, Verkäufe als Umsatz, von Mitarbeitern";
ssql + = "wob
Tfrmpubdlg *pubdlg = neu tfrmpubdlg (this);
pubdlg-> executeQuery (SSQL);
pubdlg-> showmodal ();
.....
}
8 andere
Bei der Entwicklung eines Moduls werden einzelne Einheiten und DFM als gemeinsame Einheiten verwendet. Wird eine Charakterübertragungsstruktur in der Einheit machen
Tablefall
{
Zeichenfolge Name;
String -Abstellungsname;
......
}; // Die Hauptsache ist, die Konsistenz in mehr Einheiten zu behalten, insbesondere wenn sich der Tabellenname ändert
std :: vector <string> serrorarry // Unified Fehleraufforderung
Und das Delphi -ResoucString -Segment kann zur Lokalisierung von Ressourcen und leichter zu lokalisieren sein
Beim Hinzufügen und Ändern werden alle Datenprüfungen unter der Schaltfläche Speichern konzentriert
void __fastcall tform3 :: Btn_saveclick (Absender)
{
if (edt_name-> text.isempty ())
{
ShowMessage ("");
Edit_name-> setfocus ();
zurückkehren;
}
ModalResult = MROK;
}
在校的学生们大部分的毕业设计都是数据库之类的不是两层就是三层。 Sie müssen das Abschluss -Designprogramm ernsthaft ausgeben und Geld ausgeben, um Ihre Klassenkameraden zu bitten, Ihnen zu helfen, den Test durchzuführen, und mehr operative Bequemlichkeit vorschlagen. Nur wenn Sie die Tests anderer Personen bestehen, können Ihre Fähigkeit verbessert werden, und der größte Teil des Codes ist eine Ausnahmehandhabung und benutzerfreundlich! Es ist sehr einfach, ein gutes Unternehmen zu finden, wenn Sie einen Job mit Ihren Arbeiten suchen
In der Tat ist es wichtig, benutzerfreundliche Code zu schreiben, wenn sie sich mit der Entwicklung von Datenbank an der Rezeption befassen!