1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
509.
510.
511.
512.
513.
514.
515.
516.
517.
518.
519.
520.
521.
522.
523.
524.
525.
526.
527.
528.
529.
530.
531.
532.
533.
534.
535.
536.
537.
538.
539.
540.
541.
542.
543.
544.
545.
546.
547.
548.
549.
550.
551.
552.
553.
554.
555.
556.
557.
558.
559.
560.
561.
562.
563.
564.
565.
566.
567.
568.
569.
570.
571.
572.
573.
574.
575.
576.
577.
578.
579.
580.
581.
582.
583.
584.
585.
586.
587.
588.
589.
590.
591.
592.
593.
594.
595.
596.
597.
598.
599.
600.
601.
602.
603.
604.
605.
606.
607.
608.
609.
610.
611.
612.
613.
614.
615.
616.
617.
618.
619.
620.
621.
622.
623.
624.
625.
626.
627.
628.
629.
630.
631.
632.
633.
634.
635.
636.
637.
638.
639.
640.
641.
642.
643.
644.
645.
646.
647.
648.
649.
650.
651.
652.
653.
654.
#include <stdio.h>
#include <iomanip.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
//-----------------------------------------------êîíñòàíòû-----------------------------------------------------
const int N_ITEMS=7; //êîëè÷åñòâî ïóíêòîâ ìåíþ
const int L_TOV=9; //äëèíà íàçâàíèÿ äèñöèïëèíû
const int STEP=18; //êîëè÷åñòâî ñòðîê íà ñòðàíèöå
//-------------------------------------òèïû è ãëîáàëüíûå ïåðåìåííûå---------------------------------
struct date {
int day; //äåíü
int month; //ìåñÿö
int year; //ãîä
};
struct magazine {
int mag; //íàâçàíèå ìàãàçèíà
int sec; //íàçâàíèå ñåêöèè
int check; //íàçâàíèå ÷åêà
int art; //íàçâàíèå àðòèêóëà
char name[L_TOV]; //íàçâàíèå òîâàðà
int kol; //êîëè÷åñòâî òîâàðà
int cena; //öåíà
date dat; //äàòà
int tov_ob; //òîâàðîîáîðîò
};
struct elist { //ýëåìåíòû 2-ãî íàïðàâëåííîãî ñïèñêà
magazine data; //äàííûå î ìàãàçèíå
elist *left; // óêàçàòåëè íà ýëåìåíò ñëåâà
elist *right; //óêàçàòåëè íà ýëåìåíò ñïðàâà
};
unsigned int defaultmode, //òåêóùèé ðåæèì ýêðàíà
activecolor, //àêòèâíûé ïóíêò ìåíþ
inactivecolor; //íåàêòèâíûé ïóíêò ìåíþ
int key; //êîä êëàâèøè
elist *beg, //óêàçàòåëü íà ïåðâûé ýëåìåíò ñïèñêà
*fin, //óêàçàòåëü íà ïîñëåäíèé ýëåìåíò ñïèñêà
*p; //óêàçàòåëü íà òåêóùèé ýëåìåíò ñïèñêà
char name1[L_TOV]; //íàçâàíèå òîâàðà
magazine magz;
unsigned int item; //íîìåð ïóíêòà ìåíþ
unsigned int prev; //íîìåð ïðåäûäóùåãî ïóíêòà ìåíþ
//------------------------------------ïðîòîòèïû ôóíêöèé---------------------------------------------------
void add(elist* &beg, elist* &fin, magazine magz); //äîáàâëåíèå ýëåìåíòà â ñïèñîê
int load(elist* &beg,elist* &fin); //çàãðóçêà áàçû èç ôàéëà
int showbase(elist *beg); //âûâîä áàçû íà ýêðàí
void drawitem(unsigned int item, unsigned int color); //âûâîä ïóíêòîâ ìåíþ
void initmenu(unsigned int activecolor, unsigned int inactivecolor); //èíèöèàëèçàöèÿ ìåíþ
void dlgwindow(void); //îòîáðàæåíèå îêíà äèàëîãà
void stub (unsigned int item); //çàãëóøêà
void save(); //Ñîõðàíåíèå
void queryname(char *s);
void clear(void); //Î÷èñòêà ýêðàíà
elist *find(elist *p, int *s); //Ïîèñê
void message(char *message); //âûâîä ñîîáùåíèÿ
void error(char message[]); // âûâîä ñîîáùåíèÿ îøèáêè
magazine query(); //çàïðîñ ñâåäåíèé î ìàãàçèíå
void edit(elist* beg, magazine magz); //çàïðîñ ñàìîãî ìàãàçèíà
magazine query2();
void sort();//Ñîðòèðîâêà
//========================Ãëàâíàÿ ôóíêöèÿ=========================================
int main() {
int n;
defaultmode=LASTMODE; //çàïîìíèòü òåêóùèé òåêñòîâûé ðåæèì ýêðàíà
textmode(C80); //óñòàíîâèòü ðåæèì 80õ25 öâåòíîé
beg=0; fin=0; //îáíóëèòü óêàçàòåëè íà íà÷àëî è êîíåö ñïèñêà
clear();
activecolor=WHITE; //öâåò àêòèâíîãî ïóíêòà ìåíþ
inactivecolor=YELLOW; //öâåò íåàêòèâíîãî ïóíêòà
initmenu(activecolor,inactivecolor); //èíèöèàëèçàöèÿ ìåíþ
item=0;prev=0; //îáíóëèòü íîìåðà òå. è ïðåä. ïóíêòîâ ìåíþ
/*------------öèêë âûáîðà ïóíêòîâ ìåíþ----------------*/
while (1) {
key=getch(); //ââåñòè êîä íàæàòîé êëàâèøè
if (key==0) key=getch(); //åñëè ââåäåí ðàñøèðåííûé êîä
switch(key) { //ïðîâåðèòü êîä íàæàòîé êëàâèøè
/*---------------------âûïîëíåíèå ïóíêòà ìåíþ-------------------*/
case 13: //íàæàòà ENTER
switch (item) { //àíàëèç íîìåðà ïóíêòà
case 0:
showbase(beg);
break;
case 1: magz=query();
add(beg,fin,magz);
break;
case 2: //ðåäàêòèðîâàíèå çàïèñè
magz=query2();
edit(beg,magz);
break;
case 3: //óäàëåíèå çàïèñè
/*queryname(name1);
p=find(beg,name1);
if (p) { del(beg,fin,p);
gotoxy(3,4);
textcolor(LIGHTRED);
cputs("çàïèñü óäàëåíà");
gotoxy(3,6);
cputs("íàæìèòå ENTER");-
getch();
}
break; */
case 4://çàãðóçêà áàçû èç ôàéëà
load(beg,fin);
break;
case 5: //ñîõðàíåíèå áàçû â ôàéë
save();
clrscr();
puts("Ôàéë ñîõðàíåí");
break;
default: //âûõîä èç ïðîãðàììû
textmode(defaultmode);
exit(1);
};
break;
/*----------------ïåðåìåùåíèå êóðñîðà âëåâî----------------*/
case 15: case 75: //íàæàòà Shift+Tab èëè Left
prev=item;
if (item==0)
item=N_ITEMS-1;
else item--;
break;
/*--------------ïåðåìåùåíèå êóðñîðà âïðàâî-----------------*/
case 9: case 77: //íàæàòà Tab èëè Right
prev=item;
if (item==N_ITEMS-1)
item=0;
else item++;
break;
}
clear();
clrscr();
drawitem(prev,inactivecolor); //âûâîä ïðåäûäóùåãî ïóíêòà
drawitem(item,activecolor); //âûâîä âûáðàííîãî ïóíêòà
}
}
//----------------------------------Âûâîä ïóíêòîâ ìåíþ---------------------------------------------------
void drawitem(unsigned int item, unsigned int color) {
const d=12; //äëèíà ïîëÿ ïóíêòîâ ìåíþ
const char* items[N_ITEMS]={"Ïðîñìîòð","Äîáàâëåíèå","Óäàëåíèå","Ðåäàê....","Çàãðóçêà","Ñîõðàíåíèå","Âûõîä"}; //íàçâàíèå ïóíêòîâ
const int pos[N_ITEMS]={1,d,2*d,3*d,4*d,5*d,6*d}; //ïîçèöèè íà÷àëà ïîëåé ïóíêòà
window(1,1,80,2); //îêíî äëÿ îòîáðàæåíèå ïóíêòîâ
textbackground(RED); //öâåò ôîíà â îêíå êðàñíûé
textcolor(color); //öâåò áóêâ ïóíêòà
gotoxy(pos[item],1); //ïîçèöèÿ íà÷àëà ïóíêòà ìåíþ
cprintf("%s",items[item]); //îòîáðàçèòü íàçâàíèå ïóíêòîâ
}
//-----------------------------------------Èíèöèàëèçàöèÿ ìåíþ-------------------------------------------
void initmenu(unsigned int activecolor, unsigned int inactivecolor) {
unsigned int item; //íîìåð ïóíêòà ìåíþ
window(1,1,80,2); //îêíî èç äâóõ ñòðîê äëÿ âûâîäà ïóíêòîâ
textbackground(RED); //öâåò ôîíà â îêíå ñâåòëî-ñåðûé
clrscr();
/*-----------------------------------îòîáðàçèòü íàçâàíèå ïóíêòîâ ìåíþ-----------------------------*/
drawitem(0,activecolor); //àêòèâíûì öâåòîì "Ïðîñìîòð"
for(item=1;item<N_ITEMS;item++)
drawitem(item,inactivecolor); //âñå îñòàëüíûå íåàêòèâíûå
/*-------------------------------îòîáðàçèòü ãðàíèöó îêíà ìåíþ, ïîä÷åðêíóâ åãî ñíèçó---------*/
gotoxy(1,2);
textcolor(inactivecolor);
cputs("_______________________________________________________________________________");
gotoxy(1,1); //êóðñîð íà "Ïðîñìîòð";
}
//------------------------Çàãëóøêà----------------------------------------------------
void stub(unsigned int item) {
window(1,4,80,24);
textbackground(BLACK);
textcolor(WHITE);
clrscr();
cprintf("Âûçâàí ïóíêò ìåíþ %d ",item);
getch();
}
//----------------------------------Âûâîä ñîîáùåíèÿ îøèáêè---------------------------------------------
void error(char message[]) {
window(15,6,70,12); // ãðàíèöû îêíà
textbackground(RED); //öâåò ôîí
textcolor(GREEN); //öâåò òåêñòà
clrscr(); //î÷èñòêà ýêðàíà
gotoxy(15,4);
cputs(message); //âûâîä ñîîáùåíèÿ
getch();
textmode(defaultmode);
}
//---------------------------------Ââîä áàçû èç ôàéëà-------------------------------------------------------
int load(elist* &beg, elist* &fin) {
FILE *f;
int key;
char file_name[10]; //èìÿ çàãðóæàåìîãî ôàéëà
magazine magz;
dlgwindow();
window(1,6,70,12); //îêíî äëÿ ââîäà
gotoxy(1,1);
cprintf("Ââåäèòå èìÿ è òèï çàãðóæàåìîãî ôàéëà (*.*): ");
key=getch();
if (key==0) key=getch(); //åñëè ðàñøèðåííûé êîä
switch(key) {
case 27: //åñëè íàæàò ESC, òî
return -1; //âåðíóòñÿ íàçàä
}
scanf("%s",file_name);
gotoxy(1,2);
/*-----------------------------------ïðîâåðêà îòêðûòèÿ ôàéëà-------------------------------*/
f=fopen(file_name,"r+");
if (!f) { clrscr();
window(15,6,70,12);
textbackground(RED);
textcolor(BLUE);
clrscr();
gotoxy(15,4);
cprintf("Ôàéë %s íå íàéäåí",file_name);
getch();
return -1;
}
else {
/*-------------------------------------÷òåíèå çàïèñåé èç ôàéëà-----------------------------------------*/
while (!feof(f)) {
fscanf(f,"%d%d%d%d%s%d%d%d%d%d",&magz.mag,&magz.sec,&magz.check,&magz.art,&magz.name,&magz.kol,&magz.cena,&magz.dat.day,&magz.dat.month,&magz.dat.year);
add(beg,fin,magz); //äîáàâëåíèå â ñïèñîê
}
gotoxy(1,3);
textcolor(WHITE);
cprintf("Ôàéë %s çàãðóæåí",file_name);
}
textcolor(LIGHTRED);
gotoxy(1,5);
cprintf("Íàæìèòå ENTER");
getch();
fclose(f);
return 0;
}
//------------------------------------Äîáàâëåíèå ýëåìåíòà â êîíåö ñïèñêà----------------------------
void add(elist* &beg,elist* &fin, magazine magz) {
elist *p; //óêàçàòåëü íà ñîçäàâàåìûé ýëåìåíò
p=new elist; //ñîçäàíèå íîâîãî ýëåìåíòà
p->data=magz; //çàïîëíåíèå åãî èíôîðìàöèîííîé ÷àñòè
p->right=0; //çàïîëíåíèå åãî óêàçàòåëåé
p->left=fin;
if (!beg) beg=p; //åñëè ñïèñîê áûë ïóñòûì
else fin->right=p; //ïðèâÿçêà íîâîãî ýëåìåíòà ê ïîñëåäíåìó
fin=p; //îáíîâëåíèå óêàçàòåëåé íà êîíåö ñïèñêà
}
//---------------------------------î÷èñòêà ðàáî÷åãî ñòîëà------------------------------------------
void clear() {
window(1,3,80,25);
textattr(WHITE);
clrscr();
}
//---------------------Çàïðîñ ñâåäåíèé î ìàãàçèíå-----------------------
magazine query() {
char s[L_TOV]; //íàçâàíèå äèñöèïëèíû
char key;
magazine magz; //äàííûå î äèñöèïëèíå
int i; //èíäåêñ ñòðîêè
int len; //äëèíà ñòðîêè ñ íàçâàíèåì äèñöèïëèíû
dlgwindow(); //îòîáðàçèòü îêíî äèàëîãà
do {
gotoxy(2,1);
cputs("Ââåäèòå íîìåð ìàãàçèíà: ");
scanf("%s",s);
magz.mag=atof(s); }
while (!magz.mag);
do {
gotoxy(2,2);
cputs("Ââäåòèå íîìåð ñåêöèè: ");
scanf("%s",s);
magz.sec=atof(s); }
while (!magz.sec);
do {
gotoxy(2,3);
cputs("Ââåäèòå íîìåð ÷åêà: ");
scanf("%s",s);
magz.check=atof(s); }
while(!magz.check);
do {
gotoxy(2,4);
cputs("Ââåäèòå àðòèêóë òîâàðà:");
scanf("%s",s);
magz.art=atof(s); }
while(!magz.art);
do {
gotoxy(2,5);
cputs("Ââåäèòå íàçâàíèå òîâàðà: ");
scanf("%s",s);
len=strlen(s);
for (i=len;i<L_TOV-1;i++)
s[i]=' ';
s[L_TOV-1]='\0'; }
while (!len);
strcpy(magz.name,s);
do {
gotoxy(2,6);
cputs("Ââåäèòå êîëè÷åñòâî òîâàðà: ");
scanf("%s",s);
magz.kol=atof(s); }
while (!magz.kol);
do {
gotoxy(2,7);
cputs("Ââåäèòå öåíó òîâàðà: ");
scanf("%s",s);
magz.cena=atof(s); }
while (!magz.cena);
do {
gotoxy(2,8);
cputs("Ââåäèòå äåíü: ");
scanf("%s",s);
magz.dat.day=atof(s); }
while (!magz.dat.day);
do {
gotoxy(2,9);
cputs("Ââåäèòå ìåñÿö: ");
scanf("%s",s);
magz.dat.month=atof(s); }
while (!magz.dat.month);
do {
gotoxy(2,10);
cputs("Ââåäèòå ãîä: ");
scanf("%s",s);
magz.dat.year=atof(s); }
while (!magz.dat.year);
gotoxy(2,11);
textcolor(LIGHTRED);
cputs("íàæìèòå ENTER");
getch();
return magz;
}
//-------------------------------------Âûâîä áàçû íà ýêðàí-------------------------------------------------
int showbase(elist *beg){
int i; //ñ÷åò÷èê êîëè÷åñòâà ñòðîê
elist *p, //óêàçàòåëü íà òåêóùèé ýëåìåíò ñòðàíèöû
*pn; //óêàçàòåëü íà 1-ûé ýëåìåíò ñòðàíèöû
int key; //êîä íàæàòîé êëàâèøè
elist* showpage(elist *p);
elist* showtov(elist *p) ; //ïðîòîòèï ôóíêöèè âûâîäà îäíîé ñòðàíèöû
dlgwindow();
if (!beg) {//åñëè ñïèñîê ïóñò
message("Ñïèñîê ïóñò"); //òî âûâåñòè ñîîáùåíèå
return -1;
}
/*------------çàäàíèå ïàðàìåòðîâ ðàáî÷åãî îêíà------*/
window(1,4,80,24);
textcolor(WHITE);
p=beg; //óêàçàòåëü óñòàíîâèòü â íà÷àëî ñïèñêà
while (1) {
pn=p; //çàïîìíèòü óêàçàòåëü ïåðâîãî ýëåìåíòà ñòðàíèöû
/*---------------âûâåñòè ñòðàíèöó è ïîëó÷èòü íîâîå çíà÷åíèå óêàçàòåëÿ òåêóùåãî ýëåìåíòà-----------*/
p=showpage(p);
/*------------------îïðåäåëèòü êîä íàæîòîé êëàâèøè-----------*/
key=getch();
if (key==0) key=getch(); //åñëè ðàñøèðåííûé êîä
/*---------óïðàâëåíèå ïðîêðóòêîé------------------*/
switch(key) {
case 27: //íàæàòà ESC
return 0; //âûõîä èç ïðîñìîòðà
case 80: case 81: case 77: //åñëè íàæàòà Down||PgDn
if (!p) p=pn; //è ñïèñîê èñ÷åðïàí, òî
break; //îòîáðàæàòü òó æå ñòðàíèöó
case 13: sort();
/* case 32:showtow(p) */
case 72: case 73: case 75://åñëè íàæàò à Up èëè PgUp,
p=pn; //òî óêàçàòåëü â íà÷àëî ñòðàíèöû
for(i=1;(i<=STEP)&&(p);i++)
p=p->left; //íà STEP çàïèñåé ââåðõ
if(!p) p=beg; //åñëè 1-àÿ çàïèñü
break;
}
}
}
elist* showpage(elist *p) {
int i; //íîìåð ñòðîêè âûâîäà
clrscr();
gotoxy(1,1);
cprintf("╔════════╦════════╦════════╦════════╦════════╦════════╦════════╦═══════════╗");
gotoxy(1,2);
cprintf("║ magaz ║sec ║check ║art ║naz_tov ║kol ║cena ║data ║");
gotoxy(1,3);
cprintf("╠════════╬════════╬════════╬════════╬════════╬════════╬════════╬═══════════╣");
gotoxy(1,4);
i=4;
while(p) { //âûâîä ñïèñêà
cprintf("║%-8d║%-8d║%-8d║%-8d║%-8s║%-8d║%-8d║%-2d.%-2d.%-4d ║",p->data.mag,p->data.sec,p->data.check,p->data.art,p->data.name,p->data.kol,p->data.cena,p->data.dat.day,p->data.dat.month,p->data.dat.year);
p=p->right; //ïåðåõîä ê ñëåäóþùåìó ýëåìåíòó
i++; //óâåëè÷èâàåì ñ÷åò÷èê äëÿ gotoxy
gotoxy(1,i);
if (i>STEP) return p;
}
cprintf("╚════════╩════════╩════════╩════════╩════════╩════════╩════════╩═══════════╝");
return p;
}
/*elist* showtov(elist *p) {
int i2;
gotoxy(5,i+3);
cprintf("╔════════╦════════╦══════════════════════════════╗");
cprintf("║ magaz ║ sec ║tov_oborot ║");
cprintf("╠════════╬════════╬══════════════════════════════╣");
i2=i+5;
while (beg) {
beg->data.tov_ob=0;
if ((beg->data.mag!=beg->right->data.mag))
beg->data.tov_ob=beg->data.tov_ob+(beg->data.cena*beg->data.kol);
i2=i+6;
cprintf("║%-8d║%-8d║%-30d║",beg->data.mag,beg->data.sec,beg->data.tov_ob);
beg=beg->right;
i2++;
gotoxy(5,i2);
return p;
}}}*/
//----------------------îòîáðàæåíèå îêíà äèàëîãà-----------------------------------------
void dlgwindow() {
window(1,6,80,16);
textattr(LIGHTGREEN);
clrscr();
}
//---------------------------------âûâîä ñîîáùåíèÿ---------------------------------------------
void message(char message[]) {
dlgwindow();
gotoxy(32,7);
cputs(message);
getch();
}
//-------------------------------ñîõðàíåíèå â ôàéë--------------------------------
void save() {
FILE *out;
int key;
char file_name[10]; //èìÿ ñîõðàíÿåìîãî ôàéëà
dlgwindow(); //âûçîâ îêíà äèàëîãî
gotoxy(1,2);
printf("Ââåäèòå èìÿ è òèï ñîõðàíÿåìîãî ôàéëà (*.*): ");
key=getch();
if (key==0) key=getch(); //åñëè ðàñøèðåííûé êîä
switch(key) {
case 27: //åëñè íàæàò ESC, òî
return; //âûõîä
}
scanf("%s",file_name); //ñ÷èòûâàåì èìÿ ñîõðàíÿåìîãî ôàéëà
out=fopen(file_name,"w+");
while(beg) { //çàïèñü â ôàéë
fprintf(out,"%d %d %d %d %s %d %d %d %d %d\n",beg->data.mag,beg->data.sec,beg->data.check,beg->data.art,beg->data.name,beg->data.kol,beg->data.cena,beg->data.dat.day,beg->data.dat.month,beg->data.dat.year);
beg=beg->right;
}
gotoxy(1,4);
textcolor(WHITE);
cprintf("Ôàéë %s ñîõðàíåí",file_name);
gotoxy(1,7);
textcolor(LIGHTRED);
cprintf("íàæìèòå ENTER");
getch();
fclose(out);
}
void queryname(char *name1) {
int i; //èíäåêñ ñòðîêè
int len; //äëèíà ñòðîêè
char s[L_TOV]; //íàçâàíèå äèñöèïëèíû
dlgwindow(); //îòîáðàçèòü îêíî äèàëîãà
do {
gotoxy(2,2);
cputs("Òîâàð: ");
scanf("%s",s);
len=strlen(s);
for (i=len;i<L_TOV-1;i++)
s[i]=' ';
s[L_TOV-1]='\0'; }
while (!len);
strcpy(name1,s);
}
//------------Óäàëåíèå-----------------
void del(elist* &beg, elist* &fin, elist *p) {
if ((p==beg)&&(p==fin)) //óäàëåíèå åäèíñòâåííîãî ýëåìåíòà
{beg=0;fin=0;}
else
if (p==beg) //óäàëåíèå èç íà÷àëà ñïèñêà
{beg=beg->right; beg->left=0; }
else
if (p==fin) //óäàëåíèå èç êîíöà
{fin=fin->left; fin->right=0; }
else { //óäàëåíèå èç ñåðåäèíû
p->left->right=p->right; //ñâÿçàòü ïðåäûäóùèé ñî ñëåäóþùèì
p->right->left=p->left;
}
free(p);
}
//-----------------------Ñîðòèðîâêà-----------------------------
void sort() { //ñîðòèðîâêà ìåòîäîì ïóçûðüêà
magazine _data;
p=beg;
int n=0;
while (p!=0) {
n++;
p=p->right;
}
if (n==0 || n==1) return;
for (int i=0; i<=n; i++) {
p=beg;
while(p->right!=0) {
if (p->data.mag>p->right->data.mag) {
_data=p->data;
p->data=p->right->data;
p->right->data=_data;
}
p=p->right;
}
}
}
//-------------------------------Ðåäàêòèðîâàíèå ìàãàçèíà--------------------------
magazine query2() {
char s[L_TOV];
magazine magz; //äàííûå î äèñöèïëèíå
int i; //èíäåêñ ñòðîêè
int len;
dlgwindow(); //îòîáðàçèòü îêíî äèàëîãà
do {
gotoxy(2,1);
cputs("Ââåäèòå íîìåð ìàãàçèíà: ");
scanf("%s",s);
magz.mag=atof(s); }
while (!magz.mag);
do {
gotoxy(2,2);
cputs("Ââäåòèå íîìåð ñåêöèè: ");
scanf("%s",s);
magz.sec=atof(s); }
while (!magz.sec);
do {
gotoxy(2,3);
cputs("Ââåäèòå íîìåð ÷åêà: ");
scanf("%s",s);
magz.check=atof(s); }
while(!magz.check);
do {
gotoxy(2,4);
cputs("Ââåäèòå àðòèêóë òîâàðà:");
scanf("%s",s);
magz.art=atof(s); }
while(!magz.art);
do {
gotoxy(2,5);
cputs("Ââåäèòå íàçâàíèå òîâàðà: ");
scanf("%s",s);
len=strlen(s);
for (i=len;i<L_TOV-1;i++)
s[i]=' ';
s[L_TOV-1]='\0'; }
while (!len);
strcpy(magz.name,s);
do {
gotoxy(2,6);
cputs("Ââåäèòå êîëè÷åñòâî òîâàðà: ");
scanf("%s",s);
magz.kol=atof(s); }
while (!magz.kol);
do {
gotoxy(2,7);
cputs("Ââåäèòå öåíó òîâàðà: ");
scanf("%s",s);
magz.cena=atof(s); }
while (!magz.cena);
do {
gotoxy(2,8);
cputs("Ââåäèòå äåíü: ");
scanf("%s",s);
magz.dat.day=atof(s); }
while (!magz.dat.day);
do {
gotoxy(2,9);
cputs("Ââåäèòå ìåñÿö: ");
scanf("%s",s);
magz.dat.month=atof(s); }
while (!magz.dat.month);
do {
gotoxy(2,10);
cputs("Ââåäèòå ãîä: ");
scanf("%s",s);
magz.dat.year=atof(s); }
while (!magz.dat.year);
return magz;
}
//--------------------------------------Èñïðàâëåíèå çàïèñè î äèñöèïëèíå--------------------------------
void edit(elist* beg, magazine magz) {
elist *p; //óêàçàòåëü íà íàéäåííûé ýëåìåíò
dlgwindow();
p=find(beg,magz.mag); //ïîèñê äèñöèïëèíû â ñïèñêå
if (p) { //åñëè äèñöèïëèíà íàéäåíà, òî èçìåíèòü îöåíêè
magz=query2();
p->data.mag=magz.mag; //îòëè÷íûå
p->data.sec=magz.sec; //õîðîøèå
p->data.check=magz.check; //óäîâëåòâîðèòåëüíûå
p->data.artikul=magz.artikul; //íå óäîâëåòâîðèòåëüíûå
p->data.cena=magz.cena;
p->data.kol=magz.kol;
p->data.dat.day=magz.dat.day;
p->data.dat.month=magz.dat.month;
p->data.dat.year=magz.dat.year;
}
}
//---------------------------Ïîèñê ýëåìåíòà â ñïèñêå (ïî íàçâàíèþ äèñöèïëèíû)---------------------------
elist *find(elist *p,char *s) {
while(p) {
if (strcmp(s,p->data.mag)==0) //åñëè ìîäåëü íàéäåíà
return p; //òî âîçâðàòèòü óêàçàòåëü
p=p->right; //ïåðåõîä ê ñëåä. ýëåìåíòó ñïèñêà
}
gotoxy(2,6);
message("Òàêîé äèñöèïëèíû â ñïèñêå íåò");
p=0;
return p;
}