Tải bản đầy đủ (.docx) (13 trang)

thảo luận cơ sở lập trình đề tài về kho vật tự

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (91.16 KB, 13 trang )

ĐỀ TÀI 1: (2 bài làm)
Xây dựng bài toán kho vật tự (20 vat)
> 1. Sắp xếp tăng dần theo tên hàng có trong kho và in ra kết qủa sắp xếp
> 2. Tìm kiếm 1 mặt hàng xem trong kho có còn không ? Nếu còn thì số lượng là
bao nhiêu?
> 3. Thống kê theo tên hàng các số lượng còn tồn ở trong kho ( vd: xh 1lan
->in ra)
Chương trình chạy bằng Dev C++ 5.3.04 :)

Cách 1:
#include <stdio.h>
#include<conio.h>
#include<string.h>
void main()
int i = 0, j, n = 20, temp;
struct hanghoa
{
int stt;
char ten[30];
int soluong;
} hang[20];
void nhap (int stt, char ten[so], int soluong)
{
printf (“\n nhap mat hang thu %d: ”, stt);
printf(“ tenhang : ”);
fflush(stdin);
gets(ten);
printf(“\n soluong : ”);
scanf(“%d”, soluong);
}
void in (int stt, char ten[30], int soluong)


{
printf(“\n %3d%30s%4d ”, stt, ten, soluong);
}
void sapxep()
{
struct hanghoa tam;
for ( i = 0; i <= n – 1; i++)
for (j = 0; j <= n – 1; j++)
if (strcmp( hang[j].ten, hang[j+1].ten) > 0)
{
temp = hang[j].stt, hang[j].stt = hang[j+1].stt; hang[j]
tam = hang[j];
hang[j] = hang[j+1];
hang[j+1] = tam;
}
}
void timkiem()
{
char tenhang[30];
int p=0, found=0;
printf (“\n nhap ten hang can tim kiem:”);
gets(tenhang);
if(strlen(tenhang))
while(i<n)
if(strcmp(hang[i].ten, tenhang)==0)
{ printf(“\n %3d%30s%4d”, stt, ten, soluong);
found=1;
break;
}
else i++;

if(!found)
printf(“\n khong tim thay!”);
}
void sapxepsl()
{
Struct hanghoa tam;
For(i=0; i<=n; i++)
For(j=0; j<=n; j++)
If(hang[j].soluong>hang[j+1].soluong)
{ temp=hang[j].stt; hang[j]=hang[j+1].stt; hang[j+1].stt=temp;
Tam=hang[j];
Hang[j]=hang[j+1];
Hang[j+1]=tam;
}
}
void main()
{
int menu;
printf(“\n nhan 0 de nhap hang”);
printf(“\n nhan 1 de in danh sach hang hoa”);
printf(“\n nhan 2 de tim kiem mot hang hoa”);
Printf(“\n nhan 3 de xem thong ke”);
scanf(“%d”, menu);
switch(menu)
{
case 0: for (i=0; i<=n; i++)
{
hang[i].stt=I;
nhap(hang[i].stt, hang[i].ten, hang[i].soluong)
} break;

case 1: sapxep();
For(i=0; i<=n, i++)
{ in(hang[i].stt, hang[i].ten, hang[i].soluong);
} break;
case 2: timkiem();
break;
case 3: sapxepsl()
for(i=0; i<=n; i++)
{
in(hang[i].stt, hang[i].ten, hang[i].soluong);
} break;
}
getch()
}
Cách 2:
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#define max 20
using namespace std;
struct doVat{
//char tenHang[max];
string tenHang;
int soLuong;
int giaHang;
};
//ham nay la ham doc d lieu de cho vao mang do vat
int docDuLieu(doVat d[]);
//ham nay la ham bat dau nhap so lieu de ghi vao file

void nhapVaoKhoHang (int n);
void xapXepTheoTen ();
void inDanhSachHang (doVat d[],int n);
int timKiemHang (string tenVat);
void thongKeHang ();
int main ()
{
int i;
char c;
string tenVat;
int giaHang;
doVat d[max];
int n;
// vong do while de quan ly cai menu de minh nhap
do{
cout<<"Ban hay chon cac tuy chon bang cach nhan cac so tuong ung
voi "<<"\n"<<"0:nhap vao danh sach kho hang "<<"\n"<<"1:hien thi danh sach do
vat theo ten"<<"\n"<<"2:thong ke hang"<<"\n"<<"3:tim kiem do vat trong
kho"<<"\n\n";
cout<<"Moi ban nhap so tuong ung voi tuy chon:";
cin>>i;
cout<<"\n";
switch (i)
{
case 0:
cout<<"Dau tien moi ban nhap vao so lieu cac do vat
trong kho :";
cout<<"ban hay nhap vao so do vat ma ban muon quan ly
trong kho: ";
cin>>n;

nhapVaoKhoHang (n);
case 1:
xapXepTheoTen();
break;
case 2:
thongKeHang();
break;
case 3:
cout<<"nhap vao ten vat can tim kiem :";
cin>>tenVat;
if (timKiemHang (tenVat)==0)
cout<<"hang khong co trong kho";
else
cout<<"do vat "<<tenVat<<" co
"<<timKiemHang(tenVat)<<" vat trong kho"<<endl;
break;
}
cout<<"ban co muon tiep tuc khong chon (y) neu co,va (n) neu khong
muon:";
cin>>c;
cout<<"\n";
}while (c=='y');
}
void nhapVaoKhoHang (int n)
{
string a;
int b,c;
ofstream out_stream;//tao mot luong de ghi file
out_stream.open("D:\\dovat.txt");//mo file dovat.txt de ghi so lieu
out_stream <<n<<endl;//ghi vao file do vat.txt so vat ma ban muon quan ly

for (int i=0;i<n;i++)
{
cout<<"nhap vao so lieu cua do vat thu: "<<i+1<<endl;
cout<<"ten do vat:";
cin>>a;
out_stream<<a<<"\t"; //ghi vao file ten do vat kieu string
cout<<"so luong :";
cin>>b;
out_stream<<b<<"\t"; //ghi vao file so luong do vat
cout<<"gia la:";
cin>>c;
out_stream<<c<<"\n"; //ghi vao file gia cua do vat
cout<<"\n";
}
out_stream.close();//sau khi da nhap du so lieu cua n vat ta dong file
}
//ham docdulieu nay thuc chat la doc tu file ra so lieu roi cho vao mang dovat d de
thuc hien cac thao tac can thiet
int docDuLieu(doVat d[])
{
int so_do_vat,so_luong,gia_hang;
string a;
ifstream in_stream;//tao mot luong de doc file
in_stream.open("D:\\dovat.txt");
in_stream>>so_do_vat;//dau tien doc so luong do vat
for (int i=0;i<so_do_vat;i++)
{
in_stream>>a;//tiep theo doc ten do vat
d[i].tenHang=a;//gan ten do vat vao do vat thu i
in_stream>>so_luong>>gia_hang;

d[i].soLuong=so_luong;//doc so luong do vat
d[i].giaHang=gia_hang;//doc gia hang
}
return so_do_vat;//tra ve so do vat de dung cho cac ham sau
}
void xapXepTheoTen ()
{
doVat d[max];
int n=docDuLieu(d);
for (int i=0;i<n;i++)//dung xap xep noi bot de xap xep do vat
for (int j=i+1;j<n;j++)
{
if ((d[i].tenHang>d[j].tenHang))//2 string nen co the so
sanh binh thuong
{
doVat t;//trong if nay la ham swap doi cho neu sai
vi tri
t=d[i];
d[i]=d[j];
d[j]=t;
}
}
inDanhSachHang(d,n);
}
int timKiemHang (string tenVat)
{
doVat d[max];
int n=docDuLieu(d);
for (int i=0;i<n;i++)
{

if ((d[i].tenHang==tenVat))
//neu ma ten hang trung voi ten vat thi ta xet tiep xem hang do con co
trong kho hay khong
{
if (d[i].soLuong==0)// neu so luong bang 0
return 0; //neu khong co tra ve 0 luon
return d[i].soLuong;//neu co tra ve so luong vat
}
}
//khong tim thay do vat nao cung tra ve 0
return 0;
}

void inDanhSachHang (doVat d[],int n)
{
cout<<"TEN HANG \t \t SO lUONG \t \t GiA HANG \n";
for (int i=0;i<n;i++){
cout<<d[i].tenHang<<"\t \t \t "<<d[i].soLuong<<"\t \t
\t"<<d[i].giaHang<<endl;
}
}
void thongKeHang ()
{
doVat d[max]; int n=docDuLieu(d);
cout<<"TEN HANG \t \t SO lUONG \t \t GiA HANG \n";
for (int i=0;i<n;i++){
if (d[i].soLuong!=0)// neu so luong không bang 0 in ra danh sach
cout<<d[i].tenHang<<"\t \t \t "<<d[i].soLuong<<"\t \t
\t"<<d[i].giaHang<<endl;
}

}

×