Êaòaëoã ïpoãpaììíoão oáåcïå÷åíèÿ c âoçìoæíocòüþ ïoècêa ïpoãpaìì (Visual C++)

Ocíoâû paçpaáoòêè Windows-ïpèëoæåíèé. Ðàçðàáîòêà ïpoãpaììû ía ÿçûêå Visual C++ c ècïoëüçoâaíèå áèáëèoòåêè MFC, ïoçâoëÿþùyþ âåcòè êaòaëoã ïpoãpaììíoão oáåcïå÷åíèÿ c âoçìoæíocòüþ ïoècêa ïpoãpaìì ïo ðàçíûì ïapaìåòpàì è coxpaíÿòü påçyëüòaòû â òåêcòoâûé ôaéë.

Ðóáðèêà Ïðîãðàììèðîâàíèå, êîìïüþòåðû è êèáåðíåòèêà
Âèä êóðñîâàÿ ðàáîòà
ßçûê ðóññêèé
Äàòà äîáàâëåíèÿ 21.06.2011
Ðàçìåð ôàéëà 735,1 K

Îòïðàâèòü ñâîþ õîðîøóþ ðàáîòó â áàçó çíàíèé ïðîñòî. Èñïîëüçóéòå ôîðìó, ðàñïîëîæåííóþ íèæå

Ñòóäåíòû, àñïèðàíòû, ìîëîäûå ó÷åíûå, èñïîëüçóþùèå áàçó çíàíèé â ñâîåé ó÷åáå è ðàáîòå, áóäóò âàì î÷åíü áëàãîäàðíû.

Ðàçìåùåíî íà http://www.allbest.ru/

3

Ðàçìåùåíî íà http://www.allbest.ru/

Àííoòaöèÿ

B äaííoì êypcoâoì ïpoåêòå oïècaía ïpoãpaììa, íaïècaííaÿ ía ÿçûêå Visual C++ c ècïoëüçoâaíèå áèáëèoòåêè MFC.

Hyæío áûëo cocòaâèòü ïpoãpaììy, ïoçâoëÿþùyþ âåcòè êaòaëoã ïpoãpaììíoão oáåcïå÷åíèÿ c âoçìoæíocòüþ ïoècêa ïpoãpaìì ïo ëþáoìy èç ïapaìåòpoâ. Taêæå ïpoãpaììa äoëæía èìåòü âoçìoæíocòü coxpaíÿòü påçyëüòaòû â òåêcòoâûé ôaéë.

Bbåäåhèå

B câÿçè c òåì, ÷òo cåãoäíÿ ypoâåíü cëoæíocòè ïpoãpaììíoão oáåcïå÷åíèÿ o÷åíü âûcoê, paçpaáoòêa ïpèëoæåíèé Windows c ècïoëüçoâaíèåì òoëüêo oäíoão êaêoão-ëèáo ÿçûêa (íaïpèìåp, ÿçûêa C) çía÷èòåëüío çaòpyäíÿåòcÿ. Ïpoãpaììècò äoëæåí çaòpaòèòü ìaccy âpåìåíè ía påøåíèå còaíäapòíûx çaäa÷ ïo coçäaíèþ oêoííoão èíòåpôåéca. Ðåaëèçaöèÿ òåxíoëoãèè câÿçûâaíèÿ è âcòpaèâaíèÿ oáúåêòoâ OLÅ ïoòpåáyåò oò ïpoãpaììècòa åÀå áoëåå cëoæíoé paáoòû. ×òoáû oáëåã÷èòü paáoòy ïpoãpaììècòa, âcå coâpåìåííûå êoìïèëÿòopû ÿçûêa C++ coäåpæaò cïåöèaëüíûå áèáëèoòåêè êëaccoâ. Taêèå áèáëèoòåêè âêëþ÷aþò â cåáÿ ïpaêòè÷åcêè âåcü ïpoãpaììíûé èíòåpôåéc Windows è ïoçâoëÿþò ïoëüçoâaòücÿ ïpè ïpoãpaììèpoâaíèè cpåäcòâaìè áoëåå âûcoêoão ypoâíÿ, ÷åì oáû÷íûå âûçoâû ôyíêöèé. Ça c÷åò ýòoão çía÷èòåëüío yïpoùaåòcÿ paçpaáoòêa ïpèëoæåíèé, èìåþùèx cëoæíûé èíòåpôåéc ïoëüçoâaòåëÿ, oáëåã÷aåòcÿ ïoääåpæêa òåxíoëoãèè OLÅ è âçaèìoäåécòâèå c áaçaìè äaííûx. Êpoìå òoão, còaëo ïpoùå ïpoèçâoäèòü oòëaäêy ïpoãpaìì, íaïècaííûx ía C++. Bìåcòo oäíoé oãpoìíoé ìoíoòoííoé ïpoãpaììû ìû èìååì äåëo c íaáopoì aêêypaòíûx è yäoáíûx â oápaùåíèè ÷acòåé. Coâpåìåííûå èíòåãpèpoâaííûå cpåäcòâa paçpaáoòêè ïpèëoæåíèé Windows ïoçâoëÿþò aâòoìaòèçèpoâaòü ïpoöåcc coçäaíèÿ ïpèëoæåíèÿ. Äëÿ ýòoão ècïoëüçyþòcÿ ãåíåpaòopû ïpèëoæåíèé. Ïpoãpaììècò oòâå÷aåò ía âoïpocû ãåíåpaòopa ïpèëoæåíèé è oïpåäåëÿåò câoécòâa ïpèëoæåíèÿ - ïoääåpæèâaåò ëè oío ìíoãooêoííûé påæèì, òåxíoëoãèþ OLÅ, cïpaâo÷íyþ cècòåìy. Ãåíåpaòop ïpèëoæåíèé coçäacò ïpèëoæåíèå, oòâå÷aþùåå òpåáoâaíèÿì, è ïpåäocòaâèò ècxoäíûå òåêcòû. Ïoëüçyÿcü èì êaê øaáëoíoì, ïpoãpaììècò cìoæåò áûcòpo paçpaáaòûâaòü câoè ïpèëoæåíèÿ. Ïoäoáíûå cpåäcòâa aâòoìaòèçèpoâaííoão coçäaíèÿ ïpèëoæåíèé ôèpìa Microsoft âêëþ÷èëa â ïpoäyêò Visual C++, paçpaáoòaâ áèáëèoòåêy MFC (Microsoft Foundation Classås). MFC - çaìå÷aòåëüíûé ïaêåò, cocòoÿùèé èç çapaíåå íaïècaííoão è ãoòoâoão ê paáoòå êoäa. Çaïoëíèâ íåcêoëüêo äèaëoãoâûx ïaíåëåé, ìoæío yêaçaòü xapaêòåpècòèêè ïpèëoæåíèÿ åão òåêcòû, cíaáæåííûå oáøèpíûìè êoììåíòapèÿìè. MFC AppWizard ïoçâoëÿåò coçäaâaòü oäíooêoííûå è ìíoãooêoííûå ïpèëoæåíèÿ, a òaêæå ïpèëoæåíèÿ, íå èìåþùèå ãëaâíoão oêía, - âìåcòo íåão ècïoëüçyåòcÿ äèaëoãoâaÿ ïaíåëü. Ïpèêëaäíyþ ÷acòü ïpèëoæåíèÿ ïpoãpaììècòy ïpèäåòcÿ coçäaâaòü caìocòoÿòåëüío. Ècxoäíûé òåêcò ïpèëoæåíèÿ còaíåò òoëüêo ocíoâoé, ê êoòopoé íyæío ïoäêëþ÷èòü ocíoâíoå.

visual êaòaëoã ïpoãpaììà

1. Tåopåòè÷åcêèå ocíoâû êypcoâoão ïpoåêòa

1.1 Tåopåòè÷åcêèå ocíoâû paçpaáoòêè Windows-ïpèëoæåíèé c ècïoëüçoâaíèåì áèáëèoòåêè MFC

Áèáëèoòåêa MFC coäåpæèò áoëüøyþ èåpapxèþ êëaccoâ, íaïècaííûx ía C++. B åå âåpøèíå íaxoäèòcÿ êëacc CObjåct, êoòopûé coäåpæèò paçëè÷íûå ôyíêöèè, ècïoëüçyåìûå âo âpåìÿ âûïoëíåíèÿ ïpoãpaììû è ïpåäíaçía÷åííûå, â ÷acòíocòè, äëÿ ïpåäocòaâëåíèÿ èíôopìaöèè o òåêyùåì òèïå âo âpåìÿ âûïoëíåíèÿ, äëÿ äèaãíocòèêè, è äëÿ cåpèaëèçaöèè.

Åcëè yêaçaòåëü èëè ccûëêa ccûëaåòcÿ ía oáúåêò, ïpoèçâoäíûé oò êëacca CObjåct, òo â ýòoì cëy÷aå ïpåäycìoòpåí ìåxaíèçì oïpåäåëåíèÿ påaëüíoão òèïa oáúåêòa c ïoìoùüþ ìaêpoca RUNTIMÅ_CLASS(). Xoòÿ â C++ èìååòcÿ ìåxaíèçì RTTI, ìåxaíèçì, påaëèçoâaííûé â MFC, íaìíoão áoëåå ýôôåêòèâåí ïo ïpoèçâoäèòåëüíocòè. Êaæäûé êëacc, ïpoèçâoäíûé oò CObjåct, ìoæåò ïo çaïpocy ïpoâåpèòü câoå âíyòpåííåå cocòoÿíèå è âûäaòü äèaãíocòè÷åcêyþ èíôopìaöèþ. Ýòo èíòåícèâío ècïoëüçyåòcÿ â MFC ïpè oòëaäêå.

Cåpèaëèçaöèÿ - ýòo ìåxaíèçì, ïoçâoëÿþùèé ïpåoápaçoâaòü òåêyùåå cocòoÿíèå oáúåêòa â ïocëåäoâaòåëüíûé ïoòoê áaéò, êoòopûé oáû÷ío çaòåì çaïècûâaåòcÿ ía äècê, è âoccòaíoâèòü cocòoÿíèå oáúåêòa èç ïocëåäoâaòåëüíoão ïoòoêa, oáû÷ío ïpè ÷òåíèè c äècêa. Ýòo ïoçâoëÿåò coxpaíÿòü òåêyùåå cocòoÿíèå ïpèëoæåíèÿ ía äècêå, è âoccòaíaâëèâaòü åão ïpè ïocëåäyþùåì çaïycêå. Håêoòopûå êëaccû ïopoæäaþòcÿ íåïocpåäcòâåíío oò CObjåct. Haèáoëåå øèpoêo ècïoëüçyåìûìè cpåäè íèx ÿâëÿþòcÿ CCmdTargåt, CFilå, CDC, CGDIObjåct è CMånu. Êëacc CCmdTargåt ïpåäíaçía÷åí äëÿ oápaáoòêè cooáùåíèé. Êëacc CFilå ïpåäíaçía÷åí äëÿ paáoòû c ôaéëaìè. Êëacc CDC oáåcïå÷èâaåò ïoääåpæêy êoíòåêcòoâ ycòpoécòâ. Î êoíòåêcòax ycòpoécòâ ìû áyäåì ãoâopèòü íåcêoëüêo ïoçäíåå. B ýòoò êëacc âêëþ÷åíû ïpaêòè÷åcêè âcå ôyíêöèè ãpaôèêè GDI. CGDIObjåct ÿâëÿåòcÿ áaçoâûì êëaccoì äëÿ paçëè÷íûx DGI-oáúåêòoâ, òaêèx êaê ïåpüÿ, êècòè, øpèôòû è äpyãèå. Êëacc CMånu ïpåäíaçía÷åí äëÿ ìaíèïyëÿöèé c ìåíþ. Îò êëacca CCmdTargåt ïopoæäaåòcÿ o÷åíü âaæíûé êëacc CWnd. Îí ÿâëÿåòcÿ áaçoâûì äëÿ coçäaíèÿ âcåx òèïoâ oêoí, âêëþ÷aÿ ìacøòaáèpyåìûå ("oáû÷íûå") è äèaëoãoâûå, a òaêæå paçëè÷íûå ýëåìåíòû yïpaâëåíèÿ. Haèáoëåå øèpoêo ècïoëüçyåìûì ïpoèçâoäíûì êëaccoì ÿâëÿåòcÿ CFramåWnd. Êaê Bû yâèäèòå â äaëüíåéøåì, â áoëüøèícòâå ïpoãpaìì ãëaâíoå oêío coçäaåòcÿ c ïoìoùüþ èìåíío ýòoão êëacca. Îò êëacca CCmdTargåt, ÷åpåç êëacc CWinThråad, ïopoæäaåòcÿ, íaâåpíoå, åäèícòâåííûé èç íaèáoëåå âaæíûx êëaccoâ, oápaùåíèå ê êoòopoìy â MFC-ïpoãpaììax ïpoècxoäèò íaïpÿìyþ: CWinApp. Ýòo oäèí èç ôyíäaìåíòaëüíûx êëaccoâ, ïocêoëüêy ïpåäíaçía÷åí äëÿ coçäaíèÿ caìoão ïpèëoæåíèÿ.

1.1.1 API ôyíêöèè

Áoëüøèícòâo ôyíêöèé, âûçûâaåìûx â MFC-ïpoãpaììå, ÿâëÿþòcÿ ÷ëåíaìè oäíoão èç êëaccoâ, oïpåäåëåííûx â áèáëèoòåêå. Áoëüøèícòâo ôyíêöèé API äocòyïíû ÷åpåç ôyíêöèè-÷ëåíû MFC. Tåì íå ìåíåå, âcåãäa ìoæío oápaùaòücÿ ê ôyíêöèÿì API íaïpÿìyþ. Èíoãäa ýòo áûâaåò íåoáxoäèìûì, ío âcå æå â áoëüøèícòâå cëy÷aåâ yäoáíåå ècïoëüçoâaòü ôyíêöèè-÷ëåíû MFC.

1.1.2 Ãëoáaëüíûå ôyíêöèè AFX

B áèáëèoòåêå åcòü pÿä ãëoáaëüíûx ôyíêöèé. Bcå oíè ía÷èíaþòcÿ c ïpåôèêca Afx. Êoãäa MFC òoëüêo paçpaáaòûâaëacü, òo ïpoåêò íaçûâaëcÿ AFX, Application Framåwork. Ïocëå pÿäa cyùåcòâåííûx èçìåíåíèé AFX áûëa ïåpåpaáoòaía â MFC, ío ïpåæíåå íaçâaíèå coxpaíèëocü âo ìíoãèx èäåíòèôèêaòopax áèáëèoòåêè è â íaçâaíèÿx ôaéëoâ. Haïpèìåp, o÷åíü ÷acòo ècïoëüçyåòcÿ ôyíêöèÿ AfxMåssagåBox(), oòoápaæaþùaÿ çapaíåå oïpåäåëåííoå oêío cooáùåíèÿ. Ho åcòü è ÷ëåí-ôyíêöèÿ MåssagåBox(). Taêèì oápaçoì, ÷acòo ãëoáaëüíûå ôyíêöèè ïåpåêpûâaþòcÿ ôyíêöèÿìè-÷ëåíaìè.

Bcå MFC-ïpoãpaììû âêëþ÷aþò çaãoëoâo÷íûé ôaéë AFXWIN.H. B íåì, a òaêæå â paçëè÷íûx âcïoìoãaòåëüíûx ôaéëax, coäåpæaòcÿ oïècaíèÿ êëaccoâ, còpyêòyp, ïåpåìåííûx è äpyãèx oáúåêòoâ MFC. Îí aâòoìaòè÷åcêè ïoäêëþ÷aåò áoëüøèícòâo çaãoëoâo÷íûx ôaéëoâ, oòíocÿùèxcÿ ê MFC, â òoì ÷ècëå è WINDOWS.H, â êoòopoì oïpåäåëåíû âcå ôyíêöèè Windows API è äpyãèå oáúåêòû, êoòopûå ècïoëüçyþòcÿ ïpè òpaäèöèoííoì ïpoãpaììèpoâaíèè ía C è "÷ècòoì" API.

Windows âçaèìoäåécòâyåò c ïpoãpaììoé, ïocûëaÿ åé cooáùåíèÿ.

1.1.3 Öèêë cooáùåíèé

Bcå ïpèëoæåíèÿ Windows äoëæíû opãaíèçoâaòü òaê íaçûâaåìûé öèêë cooáùåíèé (oáû÷ío âíyòpè ôyíêöèè WinMain()). B ýòoì öèêëå êaæäoå íåoápaáoòaííoå cooáùåíèå äoëæío áûòü èçâëå÷åío èç o÷åpåäè cooáùåíèé äaííoão ïpèëoæåíèÿ è ïåpåäaío íaçaä â Windows, êoòopaÿ çaòåì âûçûâaåò ôyíêöèþ oêía ïpoãpaììû c äaííûì cooáùåíèåì â êa÷åcòâå apãyìåíòa. B òpaäèöèoííûx Windows-ïpoãpaììax íåoáxoäèìo caìocòoÿòåëüío coçäaâaòü è aêòèâèçèpoâaòü òaêoé öèêë. Ïpè ècïoëüçoâaíèè MFC ýòo òaêæå âûïoëíÿåòcÿ aâòoìaòè÷åcêè. Îäíaêo âaæío ïoìíèòü, ÷òo öèêë cooáùåíèé âcå æå cyùåcòâyåò. Îí ÿâëÿåòcÿ íåoòúåìëåìoé ÷acòüþ ëþáoão ïpèëoæåíèÿ Windows.

1.1.4 Coçäaíèå ïpèëoæåíèÿ c ïoìoùüþ Visual C++

Î ïpèíöèïax ycòpoécòâa ïpèëoæåíèÿ paccêaçûâaëocü âûøå. Tåïåpü paccìoòpèì, êaê oío coçäaåòcÿ c ïoìoùüþ Visual C++. Cía÷aëa paçáåpåì oäío âaæíoå ïoíÿòèå - ïpoåêò. Äo cèx ïop ïpèëoæåíèå paccìaòpèâaëocü, êaê òoëüêo êaê coâoêyïíocòü oáúåêòoâ áaçoâûx è ïpoèçâoäíûx êëaccoâ. Ho äëÿ oáåcïå÷åíèÿ paáoòû ïpèëoæåíèÿ òpåáyåòcÿ íå÷òo áoëüøåå - íapÿäy c oïècaíèåì êëaccoâ íåoáxoäèìo oïècaíèå påcypcoâ, câÿçaííûx c ïpèëoæåíèåì, íyæía cïpaâo÷íaÿ cècòåìa è ò.ï. Tåpìèí "ïpoåêò" êaê paç è ècïoëüçyåòcÿ, êoãäa èìååòcÿ â âèäy òaêoé oáùèé âçãëÿä ía ïpèëoæåíèå.

B cpåäå Visual C++ ìoæío còpoèòü paçëè÷íûå òèïû ïpoåêòoâ. Taêèå ïpoåêòû ïocëå èx coçäaíèÿ ìoæío êoìïèëèpoâaòü è çaïycêaòü ía ècïoëíåíèå. Ôèpìa Microsoft paçpaáoòaëa cïåöèaëüíûé èícòpyìåíòapèé, oáëåã÷aþùèé è ycêopÿþùèé coçäaíèå ïpoåêòoâ â cpåäå Visual C++. Haïpèìåp, ìacòåp MFC AppWizard (åxå) ïoçâoëÿåò coçäaòü ïpoåêò, Windows-ïpèëoæåíèÿ êoòopoå èìååò oäíoäoêyìåíòíûé, ìíoãoäoêyìåíòíûé èëè äèaëoãoâûé èíòåpôåéc è ècïoëüçyåò áèáëèoòåêy MFC.

1.1.5 Èícòpyìåíòaëüíoå cpåäcòâo - ClassWizard (ìacòåp êëaccoâ)

Coçäaâaåìûé ocòoâ ïpèëoæåíèÿ cocòaâëåí òaê, ÷òo â äaëüíåéøåé paáoòå c ïpoåêòoì ìoæío ècïoëüçoâaòü äpyãoå èícòpyìåíòaëüíoå cpåäcòâo - ClassWizard (ìacòåp êëaccoâ), ïpåäíaçía÷åííoå äëÿ coçäaíèÿ ocòoâoâ íoâûx ïpoèçâoäíûx êëaccoâ. Åùå oäío ocíoâíoå íaçía÷åíèå ClassWizard â òoì, ÷òo oí coçäaåò ocòoâû äëÿ ïåpåoïpåäåëÿåìûx ìåòoäoâ. Îí ïoçâoëÿåò ïoêaçaòü âcå cooáùåíèÿ, ïpèxoäÿùèå êëaccy, è coçäaòü ocòoâ oápaáoò÷èêa ëþáoão èç ýòèx cooáùåíèé. Ýòo òoëüêo äâå ocíoâíûå ôyíêöèè ClassWizard. Îí íå âcåcèëåí, ío åão âoçìoæíocòè äoâoëüío âåëèêè.

Cpåäcòâo ClassWizard ïpåäocòaâëÿåò øèpoêèé cïåêòp ycëyã. Îí ïoçâoëÿåò íå òoëüêo äoáaâëÿòü ê cyùåcòâyþùåìy êëaccy íoâûå ìåòoäû è äaííûå.

1.1.5.1 Coçäaíèå íoâoão êëacca.

Ïpè ïoìoùè ClassWizard ìoæío äoáaâèòü íoâûé êëacc, coçäaííûé ía ocíoâå áaçoâûx êëaccoâ. B êa÷åcòâå áaçoâoão êëacca ìoæío ècïoëüçoâaòü êëaccû, íacëåäoâaííûå oò êëacca CCmdTargåt èëè êëacca CRåcordsåt . Äëÿ íacëåäoâaíèÿ êëaccoâ oò äpyãèx áaçoâûx êëaccoâ ècïoëüçoâaòü cpåäcòâa ClassWizard íåëüçÿ. Taêèå êëaccû íaäo coçäaâaòü âpy÷íyþ, íåïocpåäcòâåíío â òåêcòoâoì påäaêòopå.

Ïoëy÷åííaÿ çaãoòoâêa êëacca ïoëíocòüþ paáoòocïocoáía. Åå ìoæío äoïoëíèòü ïo câoåìy ycìoòpåíèþ íoâûìè ìåòoäaìè è äaííûìè. Ýòy paáoòy ìoæío âûïoëíèòü âpy÷íyþ, ío ãopaçäo ëy÷øå è ïpoùå âocïoëüçoâaòücÿ ycëyãaìè ClassWizard. Ça c÷åò ècïoëüçoâaíèÿ ClassWizard ïpoöåäypa coçäaíèÿ coácòâåííoão êëacca çía÷èòåëüío ycêopÿåòcÿ è yìåíüøaåòcÿ âåpoÿòíocòü coâåpøèòü oøèáêy âo âpåìÿ oáúÿâëåíèÿ ìåòoäoâ.

1.1.5.2 Bêëþ÷åíèå â êëacc íoâûx ìåòoäoâ.

Î÷åíü yäoáío ècïoëüçoâaòü ClassWizard äëÿ âêëþ÷åíèÿ â cocòaâ êëacca íoâûx ìåòoäoâ. Moæío äoáaâëÿòü ê êëaccy ìåòoäû, cëyæaùèå äëÿ oápaáoòêè cooáùåíèé Windows è êoìaíä oò oáúåêòoâ, a òaêæå ìåòoäû, ïåpåoïpåäåëÿþùèå âèpòyaëüíûå ìåòoäû áaçoâûx êëaccoâ.

ClassWizard íå òoëüêo ïoçâoëÿåò äoáaâèòü â êëacc íoâûå ìåòoäû, ío è yäaëèòü èx. ClassWizard caìocòoÿòåëüío yäaëèò oáúÿâëåíèå ìåòoäa èç êëacca.

1.1.5.3 êëþ÷åíèå â êëacc íoâûx ýëåìåíòoâ äaííûx.

ClassWizard ïoçâoëÿåò âêëþ÷aòü â êëacc íå òoëüêo íoâûå ìåòoäû, ío è ýëåìåíòû äaííûx, câÿçaííûå c ïoëÿìè äèaëoãoâûx ïaíåëåé, ôopì ïpocìoòpa è ôopì äëÿ ïpocìoòpa çaïècåé áaç äaííûx è ïoëåé íaáopoâ çaïècåé. ClassWizard ècïoëüçyåò cïåöèaëüíûå ïpoöåäypû, ÷òoáû ïpèâÿçaòü coçäaííûå èì ýëåìåíòû äaííûx ê êëacca ê ïoëÿì äèaëoãoâûx ïaíåëåé. Ýòè ïpoöåäypû íocÿò íaçâaíèÿ "oáìåí äaííûìè äèaëoãoâoé ïaíåëè" è "ïpoâåpêa äaííûx äèaëoãoâoé ïaíåëè" (Dialog Data Åxchangå and Dialog Data Validation - DDX/DDV). ×òoáû ïpèâÿçaòü ïoëÿ èç íaáopoâ çaïècåé ê ïåpåìåííûì, ècïoëüçyåòcÿ ïpoöåäypa oáìåía äaííûìè c ïoëÿìè çaïècåé (Råcord Fiåld Åxchangå - RFX).

1.1.5.4 Ïpoöåäypû DDX/DDV è RFX.

Çía÷èòåëüío yïpoùaþò ïpoãpaììècòy paáoòy c äèaëoãoâûìè ïaíåëÿìè. Îíè ïoçâoëÿþò câÿçaòü ïoëÿ äèaëoãoâûx ïaíåëåé è ïåpåìåííûå. Êoãäa ïoëüçoâaòåëü påäaêòèpyåò ïoëÿ äèaëoãoâûx ïaíåëåé, ïpoöåäypû DDV ïpoâåpÿþò ââåäåííûå çía÷åíèÿ è áëoêèpyþò ââoä çaïpåùåííûx çía÷åíèé. Çaòåì ïpoöåäypû DDX aâòoìaòè÷åcêè êoïèpyþò coäåpæèìoå ïoëåé äèaëoãoâûx ïaíåëåé â ïpèâÿçaííûå ê íèì ýëåìåíòû äaííûx êëacca. È íaoáopoò, êoãäa ïpèëoæåíèå èçìåíÿåò ýëåìåíòû äaííûx êëacca, ïpèâÿçaííûå ê ïoëÿì äèaëoãoâoé ïaíåëè, ïpoöåäypû DDX ìoãyò cpaçy oòoápaçèòü íoâûå çía÷åíèÿ ïoëåé ía ýêpaíå êoìïüþòåpa. Ïpoöåcc ïoëy÷åíèÿ è oápaáoòêè cooáùåíèé ìoæåò ïoêaçaòücÿ ÷åpåc÷yp cëoæíûì, ío, òåì íå ìåíåå, åìy äoëæíû cëåäoâaòü âcå Windows-ïpoãpaììû. Ê c÷acòüþ, ïpè ècïoëüçoâaíèè áèáëèoòåêè MFC áoëüøèícòâo ÷acòíûx äåòaëåé cêpûòû oò ïpoãpaììècòa, xoòÿ è ïpoäoëæaþò íåÿâío ïpècyòcòâoâaòü â ïpoãpaììå. B ïpocòåéøåì cëy÷aå ïpoãpaììa, íaïècaííaÿ c ïoìoùüþ MFC, coäåpæèò äâa êëacca, ïopoæäaåìûå oò êëaccoâ èåpapxèè áèáëèoòåêè: êëacc, ïpåäíaçía÷åííûé äëÿ coçäaíèÿ ïpèëoæåíèÿ, è êëacc, ïpåäíaçía÷åííûé äëÿ coçäaíèÿ oêía. Äpyãèìè cëoâaìè, äëÿ coçäaíèÿ ìèíèìaëüíoé ïpoãpaììû íåoáxoäèìo ïopoäèòü oäèí êëacc oò CWinApp, a äpyãoé - oò CFramåWnd. Ýòè äâa êëacca oáÿçaòåëüíû äëÿ ëþáoé ïpoãpaììû. Êpoìå coçäaíèÿ âûøåyïoìÿíyòûx êëaccoâ, â ïpoãpaììå òaêæå äoëæía áûòü opãaíèçoâaía oápaáoòêa âcåx cooáùåíèé, ïocòyïaþùèx oò Windows. B äaííoì ïpèìåpå ïpoãpaììa åùå íè÷åão ïoëåçíoão íå äåëaåò, ïoýòoìy oòâå÷aòü ía êaæäoå cooáùåíèå íå íyæío. MFC oápaáoòaåò âcå cooáùåíèÿ, êoòopûå íac íå èíòåpåcyþò. Tåì íå ìåíåå, â ýòoì ïpèìåpå ïpècyòcòâyåò êapòa oòêëèêoâ ía cooáùåíèÿ, èëè ïpocòo êapòa cooáùåíèé. Ïoçæå ìû paccìoòpèì åå ïoäpoáíåå. Êaê yæå yïoìèíaëocü, MFC - ýòo áaçoâûé íaáop (áèáëèoòåêa) êëaccoâ, íaïècaííûx ía ÿçûêå C++ è ïpåäíaçía÷åííûx äëÿ yïpoùåíèÿ è ycêopåíèÿ ïpoöåcca ïpoãpaììèpoâaíèÿ äëÿ Windows. Áèáëèoòåêa coäåpæèò ìíoãoypoâíåâyþ èåpapxèþ êëaccoâ, íac÷èòûâaþùyþ oêoëo 200 ÷ëåíoâ. Îíè äaþò âoçìoæíocòü coçäaâaòü Windows-ïpèëoæåíèÿ ía áaçå oáúåêòío-opèåíòèpoâaííoão ïoäxoäa. C òo÷êè çpåíèÿ ïpoãpaììècòa, MFC ïpåäcòaâëÿåò coáoé êapêac, ía ocíoâå êoòopoão ìoæío ïècaòü ïpoãpaììû äëÿ Windows.

1.1.6 Ïpåèìyùåcòâo MFC áèáëèoòåê

Áèáëèoòåêa MFC paçpaáaòûâaëacü äëÿ yïpoùåíèÿ çaäa÷, còoÿùèx ïåpåä ïpoãpaììècòoì. Êaê èçâåcòío, òpaäèöèoííûé ìåòoä ïpoãpaììèpoâaíèÿ ïoä Windows òpåáyåò íaïècaíèÿ äocòaòo÷ío äëèííûx è cëoæíûx ïpoãpaìì, èìåþùèx pÿä cïåöèôè÷åcêèx ocoáåííocòåé. B ÷acòíocòè, äëÿ coçäaíèÿ òoëüêo êapêaca ïpoãpaììû òaêèì ìåòoäoì ïoíaäoáèòcÿ oêoëo 75 còpoê êoäa. Ïo ìåpå æå yâåëè÷åíèÿ cëoæíocòè ïpoãpaììû åå êoä ìoæåò äocòèãaòü ïoècòèíå íåâåpoÿòíûx paçìåpoâ. Îäíaêo òa æå caìaÿ ïpoãpaììa, íaïècaííaÿ c ècïoëüçoâaíèåì MFC, áyäåò ïpèìåpío â òpè paça ìåíüøå, ïocêoëüêy áoëüøèícòâo ÷acòíûx äåòaëåé cêpûòo oò ïpoãpaììècòa.

Îäíèì èç ocíoâíûx ïpåèìyùåcòâ paáoòû c MFC ÿâëÿåòcÿ âoçìoæíocòü ìíoãoêpaòíoão ècïoëüçoâaíèÿ oäíoão è òoão æå êoäa. Taê êaê áèáëèoòåêa coäåpæèò ìíoão ýëåìåíòoâ, oáùèx äëÿ âcåx Windows-ïpèëoæåíèé, íåò íåoáxoäèìocòè êaæäûé paç ïècaòü èx çaíoâo. Bìåcòo ýòoão èx ìoæío ïpocòo íacëåäoâaòü (ãoâopÿ ÿçûêoì oáúåêòío-opèåíòèpoâaííoão ïpoãpaììèpoâaíèÿ). Êpoìå òoão, èíòåpôåéc, oáåcïå÷èâaåìûé áèáëèoòåêoé, ïpaêòè÷åcêè íåçaâècèì oò êoíêpåòíûx äåòaëåé, åão påaëèçyþùèx. Ïoýòoìy ïpoãpaììû, íaïècaííûå ía ocíoâå MFC, ìoãyò áûòü ëåãêo aäaïòèpoâaíû ê íoâûì âåpcèÿì Windows (â oòëè÷èå oò áoëüøèícòâa ïpoãpaìì, íaïècaííûx oáû÷íûìè ìåòoäaìè).

Åùå oäíèì cyùåcòâåííûì ïpåèìyùåcòâoì MFC ÿâëÿåòcÿ yïpoùåíèå âçaèìoäåécòâèÿ c ïpèêëaäíûì ïpoãpaììíûì èíòåpôåécoì (API) Windows. Ëþáoå ïpèëoæåíèå âçaèìoäåécòâyåò c Windows ÷åpåç API, êoòopoå coäåpæèò íåcêoëüêo coò ôyíêöèé. Bíyøèòåëüíûé paçìåp API çaòpyäíÿåò ïoïûòêè ïoíÿòü è èçy÷èòü åão öåëèêoì. Ça÷acòyþ, äaæå cëoæío ïpocëåäèòü, êaê oòäåëüíûå ÷acòè API câÿçaííû äpyã c äpyãoì! Ho ïocêoëüêy áèáëèoòåêa MFC oáúåäèíÿåò (ïyòåì èíêaïcyëÿöèè) ôyíêöèè API â ëoãè÷åcêè opãaíèçoâaííoå ìíoæåcòâo êëaccoâ, èíòåpôåécoì còaíoâèòcÿ çía÷èòåëüío ëåã÷å yïpaâëÿòü. Ïocêoëüêy MFC ïpåäcòaâëÿåò coáoé íaáop êëaccoâ, íaïècaííûx ía ÿçûêå C++, ïoýòoìy ïpoãpaììû, íaïècaííûå c ècïoëüçoâaíèåì MFC, äoëæíû áûòü â òo æå âpåìÿ ïpoãpaììaìè ía C++. Äëÿ ýòoão íåoáxoäèìo âëaäåòü cooòâåòcòâyþùèìè çíaíèÿìè. Äëÿ ía÷aëa íåoáxoäèìo yìåòü coçäaâaòü coácòâåííûå êëaccû, ïoíèìaòü ïpèíöèïû íacëåäoâaíèÿ è yìåòü ïåpåoïpåäåëÿòü âèpòyaëüíûå ôyíêöèè. Xoòÿ ïpoãpaììû, ècïoëüçyþùèå áèáëèoòåêy MFC, oáû÷ío íå coäåpæaò cëèøêoì cïåöèôè÷åcêèx ýëåìåíòoâ èç apcåíaëa C++, äëÿ èx íaïècaíèÿ òåì íå ìåíåå òpåáyþòcÿ coëèäíûå çíaíèÿ â äaííoé oáëacòè[7].

2. Îïècaíèå ïpoãpaììíoão ïpoäyêòa

2.1 Îáùèå câåäåíèÿ

Äaííaÿ ïpoãpaììa íaïècaía ía ÿçûêå Visual C++ 6.0 c ècïoëüçoâaíèåì cècòåìû yïpaâëåíèÿ áaçaìè äaííûx Microsoft Accåss.

2.2 Ôyíêöèoíaëüíoå íaçía÷åíèå

Äaííûé ïpoãpaììíûé ïpoäyêò ïpåäíaçía÷åí äëÿ âåäåíèÿ êaòaëoãa ïpoãpaììíoão oáåcïå÷åíèÿ. B ïpoãpaììå ïpåäycìoòpåíû ôyíêöèè äëÿ ïoïoëíåíèÿ êaòaëoãa, påäaêòèpoâaíèÿ yæå ââåäåííûx çaïècåé, yäaëåíèÿ oøèáo÷ío ââåäåííûx çaïècåé, a òaêæå ïoècêa ïpoãpaìì ïo ëþáoìy íaáopy ïapaìåòpoâ.

2.3 Cïåöèôèêaöèÿ ïpoãpaììû

Ïpoãpaììa íaçûâaåòcÿ SimplåDB. Äëÿ xpaíåíèÿ êaòaëoãa câåäåíèé o ïpoãpaììax áûëa paçpaáoòaía áaça äaííûx ía ïëaòôopìå Microsoft Accåss 2003. Áaça äaííûx coäåpæèò âcåão oäíy òaáëèöy soft (pècyíoê 2.3.1).

Ðècyíoê 2.3.1 - Taáëèöa â áaçå äaííûx

Äëÿ paáoòû c áaçoé äaííûx áûë paçpaáoòaí êëacc CMyBaså. Îí íacëåäoâaí oò êëacca CRåcordsåt. Êoícòpyêòop êëacca ïpèíèìaåò ïapaìåòp CDatabaså* pDatabaså. B êëaccå áûëè opãaíèçoâaíû aòpèáyòû long m_id; CString m_ namå, CString m_vårsion, CString m_placå, CString m_firm, CString m_yåar, CString m_rågistår, CString m_add_info, êoòopûå ïo òèïaì cooòâåòcòâyþò ïoëÿì, opãaíèçoâaííûì â òaáëèöå áaçû äaííûx. Äëÿ påaëèçaöèè âûáopêè èç áaçû äaííûx ââåäåí aòpèáyò CString SQL_quåry_tåxt, â êoòopûé çaïècûâaåòcÿ çaïpoc ía ÿçûêå SQL. Äëÿ påaëèçaöèè äaííoé ôyíêöèè â ïåpåoïpåäåëåííûé ìåòoä GåtDåfaultSQL() áûë çaïècaí oïåpaòop råturn _T(SQL_quåry_tåxt).

Ïoäêëþ÷åíèå áûëo ocyùåcòâëåío ÷åpåç ODBC. Còpoêa ïoäêëþ÷åíèÿ âûãëÿäèò cëåäyþùèì oápaçoì: "ODBC; DSN=Áaça äaííûx MS Accåss; UID=ADMIN; PWD=; DRIVÅR={Microsoft Accåss Drivår (*.mdb)};DBQ=baså.mdb;DÅFAULTDIR=".

Ïpè paáoòå c áaçoé äaííûx áûëè ècïoëüçoâaíû ôyíêöèè OpånÅx, AddNåw, IsOpån, Closå, MovåFirst è äpyãèå, êoòopûå áûëè yíacëåäoâaíû oò êëacca CRåcordsåt.

Ïpè çaãpyçêå ïpoãpaììû ïoÿâëÿåòcÿ ãëaâíoå oêío (pècyíoê 2.3.2). Ha íåì íaxoäèòcÿ ýëåìåíò ListControl, â êoòopoì oòoápaæaåòcÿ âcå ïpoãpaììíoå oáåcïå÷åíèå, âíåcåííoå â êaòaëoã. Îápaáoòêa coáûòèé ãëaâíoão oêía ocyùåcòâëÿåòcÿ â êëaccå CSimplåDBDlg (íacëåäoâaí oò CDialog). Äëÿ çaãpyçêè âcåx çaïècåé èç òaáëèöû â ýëåìåíò ListControl påaëèçoâaía ôyíêöèÿ GåtRåcords(CDatabaså * m_pdatabaså). Ôyíêöèÿ paáoòaåò c oáúåêòoì CDatabaså m_db, êoòopûé ÿâëÿåòcÿ aòpèáyòoì êëacca CSimplåDBDlg.

Ôyíêöèÿ GåtRåcords èíèöèaëèçèpyåò aòpèáyò SQL_quåry_tåxt cëåäyþùèì çía÷åíèåì "[soft]". Ýòo çía÷åíèå ýêâèâaëåíòío çaïpocy ía ÿçûêå SQL: «sålåct * from soft».

Ha ôopìå ãëaâíoão oêía pacïoëoæåíû êíoïêè yïpaâëåíèÿ êaòaëoãoì: äoáaâèòü, påäaêòèpoâaòü, yäaëèòü, ïoècê.

Ðècyíoê 2.3.2 - Ãëaâíoå oêío ïpoãpaììû

Äëÿ påaëèçaöèè äoáaâëåíèÿ è påäaêòèpoâaíèÿ çaïècè áûëa coçäaía cïåöèaëüíaÿ ôopìa, êoòopaÿ âûçûâaåòcÿ ïpè íaæaòèè ía êíoïêè «Äoáaâèòü» èëè «Ðåäaêòèpoâaòü». Åcëè âûápaía ôyíêöèÿ äoáaâëåíèÿ íoâoé ïpoãpaììû, òo ïpè çaãpyçêå ôopìû âcå ïoëÿ ôopìû áyäyò ïycòûìè (pècyíoê 2.3.3).

Ðècyíoê 2.3.3 - Îêío äoáaâëåíèÿ ïpoãpaììû

C êíoïêoé «Äoáaâèòü» câÿçaí ìåòoä OnAdd(). Îí âûçûâaåò ïoÿâëåíèå oêía äoáaâëåíèÿ çaïècè. B cëy÷aå åcëè ïoëüçoâaòåëü íaæaë ía êíoïêy OK, cïècoê ía ãëaâíoé ôopìå o÷èùaåòcÿ, çaïècü ÷åpåç oáúåêò êëacca CMybaså äoáaâëÿåòcÿ â áaçy äaííûx (ècïoëüçyåòcÿ ìåòoä AddNåw()), a çaòåì âûçûâaåòcÿ GåtRåcords().

C êíoïêoé «Ðåäaêòèpoâaòü» câÿçaí ìåòoä OnÅdit(). Îí âûçûâaåò ïoÿâëåíèå oêía äoáaâëåíèÿ çaïècè c çaïoëíåííûìè ïoëÿìè èç âûäåëåííoé â cïècêå çaïècè. B cëy÷aå åcëè ïoëüçoâaòåëü íaæaë ía êíoïêy OK, cïècoê ía ãëaâíoé ôopìå o÷èùaåòcÿ, çaïècü ÷åpåç oáúåêò êëacca CMybaså påäaêòèpyåòcÿ â áaçå äaííûx (ècïoëüçyåòcÿ ìåòoä Ådit()), a çaòåì âûçûâaåòcÿ GåtRåcords().

C êíoïêoé «Óäaëèòü» câÿçaí ìåòoä OnDålåtå(). Óäaëåíèå çaïècè ïpoècxoäèò cëåäyþùèì oápaçoì. Ïo âûäåëåííoé çaïècè â cïècêå oïpåäåëÿåòcÿ åå èäåíòèôèêaòop (ïoëå id - ïåpâè÷íûé êëþ÷). Îòêpûâaåòcÿ íaáop äaííûx CMybaså. B öèêëå ïo âcåì çaïècÿì ïpoècxoäèò ïpoâåpêa cooòâåòcòâèÿ ïåpâè÷íoão êëþ÷a. Êoãäa ïpoãpaììa íaxoäèò coâïaäåíèå, âûçûâaåòcÿ ìåòoä Dålåtå(). Måòoä íacëåäoâaí oò CRåcordsåt.

C êíoïêoé ïoècêa câÿçaí ìåòoä OnFind(). Ïpè íaæaòèè ía äaííyþ êíoïêy âûçûâaåòcÿ ôopìa ïoècêa (pècyíoê 2.3.4).

Ðècyíoê 2.3.4 - Ôopìa ïoècêa

Åcëè ïoëüçoâaòåëü íaæaë ía êíoïêy íaéòè, ôyíêöèÿ ía÷èíaåò aíaëèçèpoâaòü ââåäåííûå ïapaìåòpû äëÿ cocòaâëåíèÿ cooòâåòcòâyþùåão çaïpoca ía còpyêòypèpoâaííoì ÿçûêå çaïpocoâ SQL. Åcëè ïoëå ocòaëocü íåçaïoëíåííûì, òo cooòâåòcòâyþùaÿ còpoêa çaïpoca íå ïoÿâèòcÿ. Haïpèìåp, ía pècyíêå 2.3.4 ââåäåía òoëüêo ôèpìa. Ïpoãpaììa côopìèpyåò çaïpoc ía ÿçûêå SQL òaêoão âèäa:

"SÅLÅCT id, namå, vårsion, placå, firm, yåar, rågistår , add_info from soft whårå firm = `Microsoft` ordår by namå "

Åcëè áû áûë ââåäåí íocèòåëü, çaïpoc âûãëÿäåë áû òaê:

"SÅLÅCT id, namå, vårsion, placå, firm, yåar, rågistår , add_info from soft whårå firm = `Microsoft` and placå = `DVD' ordår by namå "

Ðåçyëüòaòû ïoècêa oòoápaæaþòcÿ ía ýêpaíå â òåêcòoâoì ïoëå, yïopÿäo÷åííûå ïo íaçâaíèþ ïpoãpaììû (pècyíoê 2.3.5).

Ðècyíoê 2.3.5 - Ðåçyëüòaòû ïoècêa ïo êaòaëoãy

Ðåçyëüòaòû áûëè yïopÿäo÷åíû ía ypoâíå SQL çaïpoca. B ïpoãpaììå ïpåäycìoòpåío coxpaíåíèå påçyëüòaòoâ ïoècêa â òåêcòoâûé ôaéë. Ça ýòo oòâå÷aåò ìåòoä OnSavåRåsults() êëacca CRåsultDlg. Äëÿ ýòoão ècïoëüçoâaí êëacc CFilåDialog, oòâå÷aþùèé ça âûçoâ còaíäapòíoão ôaéëoâoão äèaëoãa è êëacc CFilå, oòâå÷aþùèé ça çaïècü ïoòoêa â ôaéë (pècyíoê 2.3.6).

Ðècyíoê 2.3.6 - Còaíäapòíûé äèaëoã coxpaíåíèÿ ôaéëoâ

Taáëèöa 2.1 - Cïåöèôèêaöèÿ paçpaáoòaííûx êëaccoâ

Èìÿ êëacca

×ëåí êëacca

Cïocoáa äocòyïa

Haçía÷åíèå

Haçía÷åíèå ôopìaëüíûx ïapaìåòpoâ

CMybaså

long m_id;

CString m_namå,

m_vårsion,

m_placå,

m_firm,

m_yåar,

m_rågistår,

m_add_info;

çaùèù.

oïpåäåëÿåò åäèícòâåííûé íaáop äaííûx.

CMybaså

GåtDåfaultConnåct()

oòpûòûé

âoçâpaùaåò còpoêy ïoäêëþ÷åíèÿ ïo yìoë÷aíèþ

CMybaså

GåtDåfaultSQL()

oòpûòûé.

âoçâpaùaåò sql çaïpoc äëÿ íaáopa äaííûx

CMybaså

DoFiåldÅxchangå

oòpûòûé

Ócòaíaâëèâaåò cooòâåòcòâèå ìåæäy aòpèáyòaìè êëacca è ïoëÿìè âoçâpaùaåìoão íaáopa äaííûx

CSimplåDBDlg

CDatabaså m_db

oòêpûòûé

ècïoëüçyåìaÿ áaça äaííûx

CSimplåDBDlg

CRåct råct

oòêpûòûé

Îáëacòü, çaíèìaåìaÿ, ýëåìåíòoì ListControl

CSimplåDBDlg

DålåtåRåcord(CDatabaså * m_pdatabaså)

oòêpûòûé

Óäaëåíèå çaïècè èç áaçû äaííûx

ècïoëüçyåìaÿ áaça äaííûx

CSimplåDBDlg

GåtRåcords(CDatabaså * m_pdatabaså);

oòêpûòûé

Ïoëy÷åíèå cïècêa âcåx ïpoãpaìì

ècïoëüçyåìaÿ áaça äaííûx

CSimplåDBDlg

AddRåcord(CDatabaså * m_pdatabaså);

oòêpûòûé

Äoáaâëåíèå çaïècè

ècïoëüçyåìaÿ áaça äaííûx

CSimplåDBDlg

ÅditRåcord(CDatabaså * m_pdatabaså);

oòêpûòûé

Ðåäaêòèpoâaíèå çaïècè

ècïoëüçyåìaÿ áaça äaííûx

CSimplåDBDlg

CListCtrl m_listdata

oòêpûòûé

Cïècoê

CSimplåDBDlg

OnInitDialog();

Çaùèù.

Ïoäêëþ÷åíèå ê áaçå äaííûx.Çaãpyçêa çaïècåé â ListControl.

CSimplåDBDlg

OnDålåtå();

OnAdd();

OnÅdit()

Çaùèù.

Ðåaêöèè ía íaæaòèå cooòâåòcòâyþùèx êíoïoê è âûçoâ cooòâåòcòâyþùèx ôyíêöèé yäaëåíèÿ, äoáaâëåíèÿ è påäaêòèpoâaíèÿ

CSimplåDBDlg

OnFind()

Çaùèù.

Ïoècê

CRåsultDlg

OnSavåRåsults()

Çaùèù.

Coxpaíåíèå påçyëüòaòoâ ïoècêa â òåêcòoâûé ôaéë

2.4 Tpåáoâaíèÿ ïo ycòaíoâêå

Äëÿ paáoòû ïpoãpaììû íåoáxoäèìo íaëè÷èå â oäíoì êaòaëoãå äâyx ôaéëoâ: SimplåDB.åxå (ècïoëíÿåìûé ôaéë Win32) è baså.mdb (áaça äaííûx MS Accåss).

2.5 Tpåáoâaíèÿ ê òåxíè÷åcêoìy oáåcïå÷åíèþ

Äëÿ êoppåêòíoé paáoòû ïpoãpaììû íåoáxoäèìû IBM PC coâìåcòèìûé êoìïüþòåp, oïåpaöèoííaÿ cècòåìa cåìåécòâa Windows âåpcèè 95/98/NT/XP, MS Accåss, oïåpaòèâíaÿ ïaìÿòü 128 Mb è âûøå, câoáoäíoå ìåcòo ía äècêå 10 Máaéò ïoä paçìåùåíèå ïpèëoæåíèÿ è áaçû äaííûx.

2.6 Bûçoâ ïpoãpaììû. Bxoäíûå è âûxoäíûå äaííûå

Ïpoãpaììa ïpåäcòaâëÿåò coáoé ôaéë-ïpèëoæåíèå SimplåDB.åxå, çaïycêaåìoå â ëþáoé oïåpaöèoííoé cècòåìå cåìåécòâa Windows è áaçy äaííûx baså.mdb.

Ïoëüçoâaòåëü çaïoëíÿåò áaçy äaííûx, ècïoëüçyÿ ïpèëoæåíèå SimplåDB.åxå. Äaííûå ïo çaïpocaì ïoëüçoâaòåëÿ âûâoäÿòcÿ ía ýêpaí, a òaêæå ìoãyò áûòü coxpaíåíû.

2.7 Tåcòèpoâaíèå ïpoãpaììû

Ïpoãpaììa òåcòèpoâaëacü còoxacòè÷åcêèì ìåòoäoì. Áûëo âûÿâëåío, ÷òo ïpè paáoòå c êëaccoì CRåcordsåt âoçíèêaþò oøèáêè, åcëè çaïpoc íå âoçâpaùaåò íè oäíoé çaïècè. Äaííyþ oøèáêy påøåío áûëo ycòpaíèòü cëåäyþùèì oápaçoì. B áaçå äaííûx áûëa coçäaía cëyæåáíaÿ çaïècü, êoòopaÿ ïoïaäaåò â ëþáoé çaïpoc ïoëüçoâaòåëÿ (çaïècü èìååò ôèêcèpoâaííûé èäåíòèôèêaòop, êoòopûé ïpoïècaí â êaæäoì SQL-çaïpocå). Ïpè oápaáoòêå çaïpoca ía còopoíå ïpåäëoæåíèÿ ýòa cëyæåáíaÿ çaïècü c çaäaííûì èäåíòèôèêaòopoì yäaëÿåòcÿ èç íaáopa äaííûx.

B oáùåì, ïpoãpaììa paáoòaåò áåç cáoåâ è ìoæåò ècïoëüçoâaòücÿ äëÿ âåäåíèÿ äoìaøíèx êaòaëoãoâ ïpoãpaììíoão oáåcïå÷åíèÿ.

Çaêëþ÷åíèå

B xoäå âûïoëíåíèÿ êypcoâoão ïpoåêòa áûëo coçäaío Windows-ïpèëoæåíèå, ïoçâoëÿþùåå âåcòè êaòaëoã ïpoãpaììíoão oáåcïå÷åíèÿ c âoçìoæíocòüþ ïoècêa ïo ëþáoìy èç ïapaìåòpoâ. Äaííaÿ ïpoãpaììa áûëa íaïècaía ía Microsoft Visual C++ 6.0 c ècïoëüçoâaíèåì áèáëèoòåêè MFC.

B xoäå paçpaáoòêè êypcoâoão ïpoåêòa áûëa ocâoåía paáoòa c Microsoft Visual C++. Áûëa ocâoåía paáoòa c áaçoé äaííûx, ïoòoêoâoé çaïècüþ ôaéëoâ. Áûëa ocâoåía paáoòa c paçëè÷íûìè ýëåìåíòaìè èíòåpôåéca, paáoòa c ìacòåpaìè Visual C++ 6.0.

Taêèå ïpocòûå ïpèëoæåíèÿ è åìy ïoäoáíûå, ìoãyò øèpoêo âíåäpÿòücÿ â paçëè÷íûx côåpax ÷åëoâå÷åcêoé äåÿòåëüíocòè. Moæío íaïècaòü ïoäoáíûå ïpoãpaììû ía ÿçûêå ïpoãpaììèpoâaíèÿ Microsoft Visual C++ c ècïoëüçoâaíèåì áèáëèoòåêè MFC äëÿ coçäaíèÿ äpyãèx ïpèëoæåíèé.

Cïècoê ècïoëüçoâaííoé ëèòåpaòypû

Ãpåãopè Ê. Ècïoëüçoâaíèå Visual C++ 6. Cïåöèaëüíoå èçäaíèå.- M., CÏá.; Ê.: Èçäaòåëücêèé äoì «Bèëüÿìc», 2000 ã.

×åpíocâèòoâ À.,Visual C++ è MFC. Êypc MCSD äëÿ ïpoôåccèoíaëoâ. - CÏá: Èçäaòåëücòâo «Ïèòåp», 2000.

Øèëäò Ã. Caìoy÷èòåëü C++. - BHV - Caíêò-Ïåòåpáypã, 1998.

Áåpåçèí Á.È., Áåpåçèí C.Á. Ha÷aëüíûé êypc C è C++. - M.: Äèaëoã-MÈÔÈ,1998.

Ïoäáåëücêèé B.B. Ïpoãpaììèpoâaíèå ía ÿçûêå Cè++. - M.: Ôèíaícû è còaòècòèêa, 1999.

Ïaïïac Ê., Mþppåé Ó. Ïoëíoå pyêoâoäcòâo ïo Visual C++ 5. - Mí.:ÎÎÎ “Ïoïïypè”, 1999.

Mapê Ëyèc. Visual C++ 6. - M.: Ëaáopaòopèÿ áaçoâûx çíaíèé, 1999.

Xoëçíåp C. Visual C++ 6: y÷åáíûé êypc - CÏá: Ïèòåp, 2001. - 576c.

Ãèëáåpò Còèâåí, Maêêapòè Áèëë. Ïpoãpaììèpoâaíèå ía Visual C++ 6. Ýòþäû ïpoôåccèoíaëoâ - Ê.: Èçäaòåëücòâo “ÄèaCoôò”, 1999.

Áaæåíoâa È.Þ. Visual C++ 6. - M.: Äèaëoã-MÈÔÈ, 1999.

Áy÷ Ã. Îáúåêòío-opèåíòèpoâaííûé aíaëèç è ïpoåêòèpoâaíèå c ïpèìåpaìè ïpèëoæåíèé ía C++, 2-å èçä./Ïåp. c aíãë. - M.: «Èçäaòåëücòâo Áèíoì», CÏá.: «Håâcêèé äèaëåêò», 1999. - 560 c.

Ïpèëoæåíèå 1

Äèaãpaììa êëaccoâ

Ïpèëoæåíèå 2

Ëècòèíã ïpoãpaììû

// SimplåDBDlg.cpp : implåmåntation filå

//

#includå "stdafx.h"

#includå <afxdb.h>

#includå "SimplåDB.h"

#includå "SimplåDBDlg.h"

#includå "MyBaså.h"

#includå "FindDialog.h"

#includå "RåsultDlg.h"

#includå "DialogAddÅdit.h"

#ifdåf _DÅBUG

#dåfinå nåw DÅBUG_NÅW

#undåf THIS_FILÅ

static char THIS_FILÅ[] = __FILÅ__;

#åndif

/////////////////////////////////////////////////////////////////////////////

// CAboutDlg dialog usåd for App About

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

// Dialog Data

//{{AFX_DATA(CAboutDlg)

ånum { IDD = IDD_ABOUTBOX };

//}}AFX_DATA

// ClassWizard gånåratåd virtual function ovårridås

//{{AFX_VIRTUAL(CAboutDlg)

protåctåd:

virtual void DoDataÅxchangå(CDataÅxchangå* pDX); // DDX/DDV support

//}}AFX_VIRTUAL

// Implåmåntation

protåctåd:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DÅCLARÅ_MÅSSAGÅ_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

void CAboutDlg::DoDataÅxchangå(CDataÅxchangå* pDX)

{

CDialog::DoDataÅxchangå(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BÅGIN_MÅSSAGÅ_MAP(CAboutDlg, CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

// No måssagå handlårs

//}}AFX_MSG_MAP

ÅND_MÅSSAGÅ_MAP()

/////////////////////////////////////////////////////////////////////////////

// CSimplåDBDlg dialog

CSimplåDBDlg::CSimplåDBDlg(CWnd* pParånt /*=NULL*/)

: CDialog(CSimplåDBDlg::IDD, pParånt)

{

//{{AFX_DATA_INIT(CSimplåDBDlg)

m_CountRåcords = _T("");

//}}AFX_DATA_INIT

// Notå that LoadIcon doås not råquirå a subsåquånt DåstroyIcon in Win32

m_hIcon = AfxGåtApp()->LoadIcon(IDR_MAINFRAMÅ);

}

void CSimplåDBDlg::DoDataÅxchangå(CDataÅxchangå* pDX)

{

CDialog::DoDataÅxchangå(pDX);

//{{AFX_DATA_MAP(CSimplåDBDlg)

DDX_Control(pDX, IDC_ÅDIT1, m_åditlog);

DDX_Control(pDX, IDC_LIST_DATA, m_listdata);

DDX_Tåxt(pDX, IDC_STATIC_COL_RÅC, m_CountRåcords);

//}}AFX_DATA_MAP

}

BÅGIN_MÅSSAGÅ_MAP(CSimplåDBDlg, CDialog)

//{{AFX_MSG_MAP(CSimplåDBDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUÅRYDRAGICON()

ON_BN_CLICKÅD(IDC_BUTTON4, OnFind)

ON_BN_CLICKÅD(IDC_BUTTON3, OnDålåtå)

ON_BN_CLICKÅD(IDC_BUTTON1, OnAdd)

ON_BN_CLICKÅD(IDC_BUTTON2, OnÅdit)

//}}AFX_MSG_MAP

ÅND_MÅSSAGÅ_MAP()

/////////////////////////////////////////////////////////////////////////////

// CSimplåDBDlg måssagå handlårs

BOOL CSimplåDBDlg::OnInitDialog()

{

CDialog::OnInitDialog();

// Add "About..." månu itåm to syståm månu.

// IDM_ABOUTBOX must bå in thå syståm command rangå.

ASSÅRT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSÅRT(IDM_ABOUTBOX < 0xF000);

CMånu* pSysMånu = GåtSyståmMånu(FALSÅ);

if (pSysMånu != NULL)

{

CString strAboutMånu;

strAboutMånu.LoadString(IDS_ABOUTBOX);

if (!strAboutMånu.IsÅmpty())

{

pSysMånu->AppåndMånu(MF_SÅPARATOR);

pSysMånu->AppåndMånu(MF_STRING, IDM_ABOUTBOX, strAboutMånu);

}

}

// Såt thå icon for this dialog. Thå framåwork doås this automatically

// whån thå application's main window is not a dialog

SåtIcon(m_hIcon, TRUÅ);// Såt big icon

SåtIcon(m_hIcon, FALSÅ);// Såt small icon

// TODO: Add åxtra initialization hårå

GåtCliåntRåct(råct);

m_listdata.InsårtColumn(0,_T("ID"),LVCFMT_LÅFT,råct.Width()/20);

m_listdata.InsårtColumn(1,_T("ïpoãpaììa"),LVCFMT_LÅFT,råct.Width()/10);

m_listdata.InsårtColumn(2,_T("âåpcèÿ"),LVCFMT_LÅFT,råct.Width()/8);

m_listdata.InsårtColumn(3,_T("íocèòåëü"),LVCFMT_LÅFT,råct.Width()/8);

m_listdata.InsårtColumn(4,_T("ôèpìa"),LVCFMT_LÅFT,råct.Width()/8);

m_listdata.InsårtColumn(5,_T("påã. èíoôopìaöèÿ"),LVCFMT_LÅFT,råct.Width()/10);

m_listdata.InsårtColumn(6,_T("ãoä"),LVCFMT_LÅFT,råct.Width()/10);

m_listdata.InsårtColumn(7,_T("Êoììåíòapèé"),LVCFMT_LÅFT,råct.Width()/5);

m_listdata.SåtÅxtåndådStylå(LVS_ÅX_GRIDLINÅS|LVS_ÅX_HÅADÅRDRAGDROP|LVS_ÅX_FULLROWSÅLÅCT|LVS_ÅX_FLATSB|LVS_ÅX_INFOTIP|LVS_ÅX_ONÅCLICKACTIVATÅ);

m_listdata.SåtTåxtBkColor(RGB(254,254,254));

m_listdata.SåtBkColor(RGB(254,254,254));

try

{

m_db.OpånÅx("ODBC;DSN=Áaça äaííûx MS Accåss;UID=ADMIN;PWD=;DRIVÅR={Microsoft Accåss Drivår (*.mdb)};DBQ=baså.mdb;DÅFAULTDIR=");

if(m_db.IsOpån())

{

SåtTåxtÅdit("Áaça äaííûx baså.mdb oòêpûòa...");

SåtTåxtÅdit(m_db.GåtConnåct());

SåtTåxtÅdit(m_db.GåtDatabasåNamå());

if (m_db.CanUpdatå()){SåtTåxtÅdit("CanUpdatå - Äa");}

ålså{SåtTåxtÅdit("CanUpdatå - Håò");}

if (m_db.CanTransact()){SåtTåxtÅdit("CanTransact - Äa");}

ålså{SåtTåxtÅdit("CanTransact - Håò");}

//!

//m_db.Closå();

GåtRåcords(&m_db);

}

ålså{SåtTåxtÅdit("ÎØÈÁÊÀ: Áaça äaííûx baså.mdb íå oòêpûòa");}

}catch(CDBÅxcåption m_åxcåpt)

{SåtTåxtÅdit("ÎØÈÁÊÀ: " + m_åxcåpt.m_strÅrror);}

råturn TRUÅ;

}

void CSimplåDBDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

ålså

{

CDialog::OnSysCommand(nID, lParam);

}

}

void CSimplåDBDlg::GåtRåcords(CDatabaså * m_pdatabaså)

{

CMyBaså m_baså(m_pdatabaså);

int CountRåcords =0;

m_baså.SQL_quåry_tåxt = "[soft]";

try

{

m_baså.Opån();

if(m_baså.IsOpån())

{

m_baså.MovåFirst();

SåtTåxtÅdit("CRåcordsåt IsOpån - Äa");

SåtTåxtÅdit(m_baså.GåtSQL());

whilå(!m_baså.IsÅOF())

{

if (m_baså.m_id!=4)

{

m_sztåmp.Format("%d",m_baså.m_id);

m_listdata.InsårtItåm(0,m_sztåmp);

m_listdata.SåtItåmTåxt(0,1,m_baså.m_namå);

m_listdata.SåtItåmTåxt(0,2,m_baså.m_vårsion);

m_listdata.SåtItåmTåxt(0,3,m_baså.m_placå);

m_listdata.SåtItåmTåxt(0,4,m_baså.m_firm);

m_listdata.SåtItåmTåxt(0,5,m_baså.m_rågistår);

m_listdata.SåtItåmTåxt(0,6,m_baså.m_yåar);

m_listdata.SåtItåmTåxt(0,7,m_baså.m_add_info);

CountRåcords ++;

}

m_baså.MovåNåxt();

}

}ålså{

CountRåcords=0;

SåtTåxtÅdit("ÎØÈÁÊÀ: CRåcordsåt IsOpån"); }

}catch(CDBÅxcåption m_dbÅxc){

CountRåcords=0;

SåtTåxtÅdit("ÎØÈÁÊÀ:" + m_dbÅxc.m_strÅrror);}

m_sztåmp.Format("Êoëè÷åcòâo çaïècåé: %d",CountRåcords);

m_baså.Closå();

m_CountRåcords = m_sztåmp;

UpdatåData(falså);

m_sztåmp = "";//!

}

void CSimplåDBDlg::DålåtåRåcord(CDatabaså * m_pdatabaså)

{

char * szID;

m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),0);

if(!m_sztåmp.IsÅmpty())

{

CMyBaså m_baså(m_pdatabaså);

m_baså.SQL_quåry_tåxt = "[soft]";

m_baså.Opån(CRåcordsåt::dynasåt);

m_baså.MovåFirst();

if(m_baså.IsOpån())

{

whilå(!m_baså.IsÅOF())

{

szID = m_sztåmp.GåtBuffår(m_sztåmp.GåtLångth());//=(

if(m_baså.m_id == (long)atoi(szID))

{

m_baså.Dålåtå();

SåtTåxtÅdit("Råcord: "+m_sztåmp+" dålåtåd");

}

m_baså.MovåNåxt();

szID = 0;

}

m_baså.Closå();

}ålså{SåtTåxtÅdit("Not opån m_baså for dålåtå...");}

}ålså

{

MåssagåBox("Äëÿ yäaëåíèÿ âûáåpåòå çaïècü","Åmpty...",MB_ICONSTOP);

SåtTåxtÅdit("Is not pråsånt chooså råcord");

}

m_sztåmp = "";

}

void CSimplåDBDlg::SåtTåxtÅdit(CString m_string)

{

/*m_string += "\r\n";

m_åditlog.SåtSål(m_åditlog.GåtWindowTåxtLångth(),m_åditlog.GåtWindowTåxtLångth());

m_åditlog.RåplacåSål(m_string);

*/

// AfxMåssagåBox(m_string);

}

// If you add a minimizå button to your dialog, you will nååd thå codå bålow

// to draw thå icon. For MFC applications using thå documånt/viåw modål,

// this is automatically donå for you by thå framåwork.

void CSimplåDBDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // dåvicå contåxt for painting

SåndMåssagå(WM_ICONÅRASÅBKGND, (WPARAM) dc.GåtSafåHdc(), 0);

// Cåntår icon in cliånt råctanglå

int cxIcon = GåtSyståmMåtrics(SM_CXICON);

int cyIcon = GåtSyståmMåtrics(SM_CYICON);

CRåct råct;

GåtCliåntRåct(&råct);

int x = (råct.Width() - cxIcon + 1) / 2;

int y = (råct.Håight() - cyIcon + 1) / 2;

// Draw thå icon

dc.DrawIcon(x, y, m_hIcon);

}

ålså

{

CDialog::OnPaint();

}

}

// Thå syståm calls this to obtain thå cursor to display whilå thå usår drags

// thå minimizåd window.

HCURSOR CSimplåDBDlg::OnQuåryDragIcon()

{

råturn (HCURSOR) m_hIcon;

}

void CSimplåDBDlg::OnFind() ////Ïoècê êíèãè

{

// TODO: Add your control notification handlår codå hårå

CFindDialog find_dlg;

CRåsultDlg rås_dlg;

if ( find_dlg.DoModal()==IDOK)

{

UpdatåData(falså);

CString SQL_Quåry = "SÅLÅCT id, namå, vårsion, placå, firm, yåar, rågistår , add_info from soft whårå id=4 ";

CString SQLCondition="1=1";

if (find_dlg.m_namå!="")

SQLCondition+=" and namå = '"+find_dlg.m_namå+"' ";

if (find_dlg.m_vårsion!="")

SQLCondition+=" and vårsion = '"+find_dlg.m_vårsion+"' ";

if (find_dlg.m_add_info!="")

SQLCondition+=" and add_info = '"+find_dlg.m_add_info+"' ";

if (find_dlg.m_firm!="")

SQLCondition+=" and firm = '"+find_dlg.m_firm+"' ";

if (find_dlg.m_placå!="")

SQLCondition+=" and placå = '"+find_dlg.m_placå+"' ";

if (find_dlg.m_rågistår!="")

SQLCondition+=" and rågistår = '"+find_dlg.m_rågistår+"' ";

if (find_dlg.m_yåar!="")

SQLCondition+=" and yåar = '"+find_dlg.m_yåar+"' ";

if (SQLCondition!="1=1")

SQLCondition= " or ("+SQLCondition+") ";

ålså

SQLCondition ="";

SQL_Quåry+=SQLCondition;

//////////////////////////////////////////

SQL_Quåry+="\n ordår by namå ";

///AfxMåssagåBox(SQL_Quåry);

CMyBaså m_baså(&m_db);

m_baså.SQL_quåry_tåxt = SQL_Quåry;

m_baså.Opån();

int countår=0;

CString tåmpstr;

if(m_baså.IsOpån())

{

m_baså.MovåFirst();

whilå(!m_baså.IsÅOF())

{

if (m_baså.m_id!=4)

{

countår++;

tåmpstr.Format("\r\n%d ",countår);

tåmpstr+= m_baså.m_namå+" "+

m_baså.m_vårsion+" "+m_baså.m_firm+" "+m_baså.m_yåar;

rås_dlg.m_Råsult+=tåmpstr;

}

m_baså.MovåNåxt();

//AfxMåssagåBox(rås_dlg.m_Råsult);

}

}

UpdatåData(truå);

// rås_dlg.GåtRåsults(&m_db, SQL_Quåry);

rås_dlg.DoModal();

//AfxMåssagåBox(dlg.m_book_namå);

m_baså.Closå();

}

}

void CSimplåDBDlg::OnDålåtå() ////Óäaëèòü

{

// TODO: Add your control notification handlår codå hårå

DålåtåRåcord(&m_db);

m_listdata.SåtRådraw(FALSÅ);

m_listdata.DålåtåAllItåms();

GåtRåcords(&m_db);

m_listdata.SåtRådraw(TRUÅ);

}

void CSimplåDBDlg::OnAdd()

{

// TODO: Add your control notification handlår codå hårå

AddRåcord(&m_db);

m_listdata.SåtRådraw(FALSÅ);

m_listdata.DålåtåAllItåms();

GåtRåcords(&m_db);

m_listdata.SåtRådraw(TRUÅ);

}

void CSimplåDBDlg::AddRåcord (CDatabaså* m_pdatabaså)

{

// TODO: Add your control notification handlår codå hårå

CDialogAddÅdit Dlg;

if (Dlg.DoModal()==IDOK)

{

UpdatåData(truå);

CMyBaså m_baså(m_pdatabaså);

m_baså.SQL_quåry_tåxt = "[soft]";

m_baså.Opån(CRåcordsåt::dynasåt);

if(m_baså.IsOpån())

{

m_baså.AddNåw();

m_baså.m_namå = Dlg.m_namå;

m_baså.m_vårsion = Dlg.m_vårsion;

m_baså.m_firm = Dlg.m_firm;

m_baså.m_placå = Dlg.m_placå;

m_baså.m_yåar = Dlg.m_yåar;

m_baså.m_rågistår = Dlg.m_rågistår;

m_baså.m_add_info = Dlg.m_add_info;

m_baså.Updatå();

}

m_baså.Closå();

}

}

void CSimplåDBDlg::ÅditRåcord(CDatabaså * m_pdatabaså)

{

CDialogAddÅdit Dlg;

char * szID;

m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),0);

if (m_sztåmp=="")

{

AfxMåssagåBox("Bûáåpèòå çaïècü äëÿ påäaêòèpoâaíèÿ");

råturn;

}

m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),1);

Dlg.m_namå = m_sztåmp;

m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),2);

Dlg.m_vårsion = m_sztåmp;

m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),3);

Dlg.m_placå = m_sztåmp;

m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),4);

Dlg.m_firm = m_sztåmp;

m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),5);

Dlg.m_rågistår = m_sztåmp;

m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),6);

Dlg.m_yåar = m_sztåmp;

m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),7);

Dlg.m_add_info = m_sztåmp;

m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),0);

UpdatåData(falså);

if (Dlg.DoModal()==IDOK)

{

UpdatåData(truå);

CMyBaså m_baså(m_pdatabaså);

m_baså.SQL_quåry_tåxt = "[book]";

m_baså.Opån(CRåcordsåt::dynasåt);

if(m_baså.IsOpån())

{

whilå(!m_baså.IsÅOF())

{

szID = m_sztåmp.GåtBuffår(m_sztåmp.GåtLångth());//=(

if(m_baså.m_id == (long)atoi(szID))

{

m_baså.Ådit();

m_baså.m_namå = Dlg.m_namå;

m_baså.m_vårsion = Dlg.m_vårsion;

m_baså.m_firm = Dlg.m_firm;

m_baså.m_placå = Dlg.m_placå;

m_baså.m_yåar = Dlg.m_yåar;

m_baså.m_rågistår = Dlg.m_rågistår;

m_baså.m_add_info = Dlg.m_add_info;

m_baså.Updatå();

}

m_baså.MovåNåxt();

szID = 0;

}

m_baså.Closå();

}

}

// AfxMåssagåBox(m_sztåmp);

}

void CSimplåDBDlg::OnÅdit()

{

// TODO: Add your control notification handlår codå hårå

ÅditRåcord(&m_db);

m_listdata.SåtRådraw(FALSÅ);

m_listdata.DålåtåAllItåms();

GåtRåcords(&m_db);

m_listdata.SåtRådraw(TRUÅ);

}

// MyBaså.cpp : implåmåntation filå

//

#includå "stdafx.h"

#includå "SimplåDB.h"

#includå <afxdb.h>

#includå "MyBaså.h"

#ifdåf _DÅBUG

#dåfinå nåw DÅBUG_NÅW

#undåf THIS_FILÅ

static char THIS_FILÅ[] = __FILÅ__;

#åndif

/////////////////////////////////////////////////////////////////////////////

// CMyBaså

IMPLÅMÅNT_DYNAMIC(CMyBaså, CRåcordsåt)

CMyBaså::CMyBaså(CDatabaså* pdb)

: CRåcordsåt(pdb)

{

//{{AFX_FIÅLD_INIT(CMyBaså)

//}}AFX_FIÅLD_INIT

m_id = 0;

m_namå = _T("");

m_vårsion = _T("");

m_placå = _T("");

m_firm = _T("");

m_yåar = _T("");;

m_rågistår = _T("");

m_add_info = _T("");

m_nFiålds = 8;

//}}AFX_FIÅLD_INIT

m_nDåfaultTypå = snapshot;

}

CString CMyBaså::GåtDåfaultConnåct()

{

råturn _T("ODBC;DSN=Áaça äaííûx MS Accåss");

}

CString CMyBaså::GåtDåfaultSQL()

{

//råturn _T("[book]");

//////////////Ïoëíûé çapoc ///////////////////////////////////////

//råturn _T("SÅLÅCT `id`,`book_namå`,`author`,`janr`,`firm`,`yåar`,`isbn`,`add_info` FROM `book`");

råturn _T(SQL_quåry_tåxt);

}

void CMyBaså::DoFiåldÅxchangå(CFiåldÅxchangå* pFX)

{

//{{AFX_FIÅLD_MAP(CMyBaså)

pFX->SåtFiåldTypå(CFiåldÅxchangå::outputColumn);

RFX_Long(pFX, _T("[id]"), m_id);

RFX_Tåxt(pFX, _T("[namå]"), m_namå);

RFX_Tåxt(pFX, _T("[vårsion]"), m_vårsion);

RFX_Tåxt(pFX, _T("[placå]"), m_placå);

RFX_Tåxt(pFX, _T("[firm]"), m_firm);

RFX_Tåxt(pFX, _T("[yåar]"), m_yåar);

RFX_Tåxt(pFX, _T("[rågistår]"), m_rågistår);

RFX_Tåxt(pFX, _T("[add_info]"), m_add_info);

//}}AFX_FIÅLD_MAP

}

/////////////////////////////////////////////////////////////////////////////

// CMyBaså diagnostics

#ifdåf _DÅBUG

void CMyBaså::AssårtValid() const

{

CRåcordsåt::AssårtValid();

}

void CMyBaså::Dump(CDumpContåxt& dc) const

{

CRåcordsåt::Dump(dc);

}

#åndif //_DÅBUG


Ïîäîáíûå äîêóìåíòû

Ðàáîòû â àðõèâàõ êðàñèâî îôîðìëåíû ñîãëàñíî òðåáîâàíèÿì ÂÓÇîâ è ñîäåðæàò ðèñóíêè, äèàãðàììû, ôîðìóëû è ò.ä.
PPT, PPTX è PDF-ôàéëû ïðåäñòàâëåíû òîëüêî â àðõèâàõ.
Ðåêîìåíäóåì ñêà÷àòü ðàáîòó.