Benshark esteve envolvido no desenvolvimento do programa em janeiro de 2003 e trabalha há 19 meses. Entre eles, o trabalho intermitentemente é tudo por causa das coisas de má qualidade desenvolvidas pela própria falta de experiência, o que leva a dificuldades de emprego e emprego! Agora Bensha atingiu a capacidade de um programador qualificado.
De um modo geral, a tarefa de desenvolvimento para programadores recém -graduados é apenas um módulo em um subprojeto em um projeto. Um módulo possui quase 5-6 formas com um volume de código de cerca de 2.000 linhas. De fato, essa quantidade de tarefas não é tão boa quanto o design da graduação, por isso deve ser capaz de ser concluído, mas o tempo de desenvolvimento é relativamente pequeno, cerca de 6 a 12 dias úteis, em vez de 1-2 meses na escola, e Também existem colegas de classe para ajudar. Portanto, é proficiente nas ferramentas de desenvolvimento dos desenvolvedores, sintaxe, estruturas e bibliotecas. Além disso, você pode entender o mecanismo de operação da plataforma do sistema e os requisitos de algoritmo e saber o que está acontecendo. É necessário que os programadores possam trabalhar ativamente e não passivamente. Pode tomar a iniciativa para encontrar informações, pedir a colegas e pedir aos colegas que prestem assistência com tarefas desconhecidas.
本鲨主要从事数据库系统前台的开发任务,因此主要使用数据库常用组件来说明下,其实数据系统的前台的任务是最繁重而总是遭受到用户的指责。
Geralmente, as etapas de desenvolvimento deste tubarão são:
0 Entenda os requisitos da tarefa
1. Implemente a função primeiro
2 解决功能的异常处理
3 实现用户友好性
4 解决用户友好性
O problema de desempenho será deixado ao usuário para resolvê -lo se o volume de dados for grande no futuro! Atualmente, é importante acompanhar a tarefa. Os seguintes componentes são comumente usados
TEDIT TCOMBOBOX TlistView ttreeview tCheckListBox tlabel tdbgrid Timage tmemo tbutton tdbchart tpanel tMaskedit tdateTimepicker tpagecontrol
1. Code style. Only during the interview will your code style have an impact on the interviewer. The style is for people to see and naturally meets the aesthetic conditions. Although many companies have completed a set of style standards, I think it is boring .
2 Configurações de atributo de componentes
1 tlabel: AutoSize = Flase;
2 Tedit Definir o valor máximo do valor de entrada padrão do método de entrada
3 TCOMBOBOX Se apenas a seleção for permitida, estilo: = CSDROPDOWNLIST;
Ao adicionar dados aos seus itens
Fontcombo-> itens-> BeginUpdate ();
Fontcombbo-> itens-> add ("xxx");
Fontcombbo-> itens-> endupdate ();
Não importa quanta data tlistView ttreeview tdbgird possui funções de bloqueio de dados semelhantes.
4 TtreeView Se você não modificar o texto do nó, precisar
5 TlistView ViewStyle vsReGORTONLY ROWSELECT = TRUE;
6 tpageControl pageControl1.activePageIndex: = 0;
7 tdateTimepicker dateFormat: = dflong se o tempo for copiado para editar
Edit.Text: = DateTimeFormate ("AAAYYY-MM-DD", DATETIMEPINKER1.DATE)
8 TButton 要设置Cancel ModalResult Hint
3 Componentes com o mesmo layout da interface devem ser colocados juntos e alinhados com os arredores, para cima, para baixo, esquerda e direita. Container de pais e, finalmente, dê -o às pessoas.
Detalhes do layout da interface
1): Use os botões de quadro para quadros que completem as mesmas funções ou similares, e os botões comumente usados devem suportar atalhos.
2): Elementos que completam a mesma função ou tarefa são colocados em uma posição centralizada para reduzir a distância do movimento do mouse.
3): Divida os blocos locais da interface de acordo com a função, inclua -os com uma caixa de estrutura e tenha uma descrição ou título de função.
4):界面要支持键盘自动浏览按钮功能,即按Tab键的自动切换功能。
5):界面上首先应输入的和重要信息的控件在Tab顺序中应当靠前,位置也应放在窗口上较醒目的位置。
6): É melhor não exceder 10 controles na mesma interface.
7): A interface de paginação deve suportar a alternância rápida entre as páginas e as teclas de atalho de combinação comumente usadas Ctrl+Tab
8): O botão padrão deve suportar Enter e selecionar operações, ou seja, depois de pressionar Enter, as operações correspondentes do botão padrão são executadas automaticamente.
9): Depois que o controle gravável detecta informações ilegais, a descrição deve ser fornecida e o foco pode ser obtido automaticamente.
10): A ordem das teclas da guia e a ordem dos controles devem ser consistentes.
11): As caixas de seleção e as caixas de opções são organizadas uma após a outra, de acordo com o fundo alto da probabilidade de seleção.
12):复选框和选项框要有默认选项,并支持Tab选择。
13):选项数相同时多用选项框而不用下拉列表框。
14):界面空间较小时使用下拉框而不用选项框。
15): Quando o número de opções for chamado pequeno, use a caixa de opções, use a caixa de listagem suspensa.
16): O software com um forte profissionalismo deve usar termos profissionais relevantes, enquanto a interface universal defende o uso de palavras universais.
4 códigos
1 Inspeção funcional: verifique se todas as funções e restrições exigidas pelos requisitos são implementadas
2 Verificação de limite: Execute verificações de limite em funções como entrada de diferentes tipos de dados ou dados de diferentes faixas
3 Verificação de acesso ilegal: teste se existe um erro ilegal de acesso à memória. A mensagem de erro de referência para determinar se ela pertence a esse tipo de erro é semelhante:
"... não encontrado", "Lista de índice de limites ...", "Acesso violação no endereço ..."
4: Verificação de orientação de informações rápidas: insira qualquer caractere à vontade, incluindo caixas de edição, caixas de tabela e caixas de seleção, incluindo caracteres em inglês e chinês, testem se os erros de acesso ilegal serão causados e se os caracteres inaceitáveis serão usados e dicas a serem guiadas.
5单元化检查:检查本单元内的单元头说明, 各个函数说明,注解说明是否正确。 Instruções de citação: Existe alguma citações extras
// Especialmente, se o arquivo de cabeçalho C ++ contiver desnecessário, problemas desnecessários ocorrerão para outras unidades.
De fato, eles são chamados testes de colarinho branco e conteúdo de teste de unidade. Se você deseja escrever o código de teste de acordo com o livro de teste, acho que todo desenvolvedor não quer! Mas não funcionará, é fácil cometer erros e dificultar a entrega. Portanto, é muito necessário entender os métodos de teste, esses métodos
Há introduções à engenharia de software nas universidades e os designers de software também devem ser feitos. Sempre que você escrever um programa, você terá cuidado ao considerar quais erros podem ocorrer em diferentes situações! Embora as variáveis a serem usadas ao implementar a função estejam vazias? O valor é válido? Está transbordando? Você limpa o espaço da variável?是否大小写的要求? Existem espaços na frente e depois?
Esses julgamentos devem primeiro ser escritos na função e no início do processo!
se (TreeView-> selecionado == null) // A variável estará vazia?
então retorne;
std :: vecotr <int> intarray; // está transbordando?
if (Intarray <= 0)
Então retorne;
if( i< ListView.Items->Count) // 是否溢出越界?
Edit-> text = listView-> itens-item [i] .Caption;
Edit-> text.trim (); // Existe algum espaço antes e depois?
char a [10];
memcpy (a, "/0", 10); // você limpa o espaço da variável?
a [9] = 'i';
// A pessoa que usa sua função grava um loop para chamar sua variável de função trará o último valor As condições do julgamento do chamador perderão seu efeito!
if (name.trim () == "Delphi") então name = "bcb";
switch () {case to quebra;
5 Dados padrão, avisos, posicionamento e simpatia
Quando a interface é exibida, os dados serão exibidos por padrão.
ComboBox1.ItemIndex: = 0;
De um modo geral, novas adições e modificações serão editadas em um único par usando uma interface. Quando a nova adição é concluída, todos os componentes devem ser posicionados no recorde recém -adicionado e o mesmo é verdadeiro para modificação. Ao excluir, localize o próximo registro.
ListView e DBIRD para ter a função de classificar clique no título para subir/baixo até a data da carta numérica
ListView e DBGIRD Quando o foco de dados selecionado é movido no botão, qual linha está atualmente selecionada? !
void __fastCall tfrmgather760 :: lvdatacustomdrawItem (tcustomlistView *remetente, item tlistitem *, tcustomdrawState State, bool & defaultDraw) // Este código desenhará um fundo amarelo na linha selecionada
{
if (remetente-> selecionado! = nulo)
if (item-> index == remetente-> selected-> índice)
{
Remeter-> tela-> pincel-> color = clyellow;
Remeter-> canvas-> font-> color = clblue;
}
}
Para operações que geralmente excedem 2 segundos, deve estar na função.
Tcursor OldCursor;
OldCursor = Screen-> Cursor;
Tela-> cursor = crsqlwait;
tentar{ . . . . . . } __ Finalmente {Screen-> cursor = OldCursor;}
Procedimento TForm1.FormKeyDown (remetente: TOBJECT; VAR Tecla: Word; Shift: TSHIFTSTATE);
Começar
if (shift = []) e (key = vk_return) então // substitua a tecla de guia por enter
Executar (wm_nextdlgctl, 0, 0);
Se key = vk_next, então // pressione a página da página para fazer a página do switch tpageControl
Começar
Se PageControl.ActivePageIndex = PageControl.PageCount - 1 então
PageControl.ActivePageIndex: = 0
outro
PageControl.ActivePageIndex: = PageControl.ActivePageIndex + 1;
fim
else if Key = VK_PRIOR then
Começar
Se PageControl.ActivePageIndex = 0 então
PageControl.ActivePageIndex: = PageControl.PageCount - 1
outro
PageControl.ActivePageIndex: = PageControl.ActivePageIndex - 1;
fim;
fim;
fim.
Intercâmbio de 6 botões
Sempre que uma operação for concluída, alguns botões se tornarão inválidos e, em que circunstâncias serão restauradas à validade? Embora exista apenas um parágrafo, se não for definido ineficaz, muitas vezes causará vários erros fatais! Como você não pode prever como os usuários operarão seu software, você pode usar o Rose para desenhar um diagrama de status ou usar o Word para representá -lo!
7 性能
Quando existem mais de 100 dados, os componentes de exibição de dados, como o ComboBox ListBox TreeView ListView DBGRID, são inseridos e consultas ao entrar.
Suportar consultas difusas nada mais é do que '%xxx%'.
void __fastCall tfrmgather760 :: edt_namekeypress (tabjas *remetente, char & key)
{
if (key! = vk_return)
retornar;
String ssql;
SSQL = "Selecione o nome como nome, vendas como vendas, do funcionário";
ssql + = "onde nome como '%" + minúsculo (edt_name-> text.trim ()) + "%'";
Tfrmpubdlg *pubdlg = novo tfrmpubdlg (this);
Pubdlg-> ExecuteQuery (SSQL);
pubdlg-> showModal ();
.....
}
8 outros
Ao desenvolver um módulo, unidades individuais e DFM são usadas como unidades comuns. Fará uma estrutura de transmissão de caracteres na unidade
Nome de tabela de estruturas
{
Nome da string;
String filedName;
......
};
STD :: Vector <string> SERRORARRY // Prompt de erro unificado
E o segmento Delphi Resoucstring pode ser com recursos e mais fácil de localizar
Ao adicionar e modificar, todas as verificações de dados estão concentradas no botão Salvar
void __fastCall tform3 :: btn_saveclick (remetente)
{
if (edt_name-> text.isempty ())
{
ShowMessage ("");
Edit_name-> setFocus ();
retornar;
}
ModalResult = mrOk;
}
在校的学生们大部分的毕业设计都是数据库之类的不是两层就是三层。 Você deve fazer o programa de design de graduação seriamente e gastar dinheiro para pedir aos seus colegas para ajudá -lo a fazer o teste e propor mais conveniência operacional.只有通过别人的测试,使用你的能力才会提高,代码大多数是异常处理和用户友好性!你带着作品去找工作会非常容易找到好的公司
De fato, quando envolvido no desenvolvimento da recepção do banco de dados, o importante é escrever um código fácil de usar!