30/09/2018, 16:56
Cần giúp sửa lỗi chương trình "quản lý bán hàng"
Em năm 2 mới học lập trình C++. dưới đây là code về 1 chương trinh “quản lí bán hàng” , e có chạy trên DEVC 5.9.2 và báo lỗi mà e không biết sửa như thế nào , mong anh chị giúp đỡ
CHƯƠNG TRÌNH QUẢN LI BÁN HANG
#include<iostream>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iomanip>
#include <vector>
using namespace std;
class lich { //lop ngay thang nam
public: unsigned int d,m,y;
public:
lich(unsigned int n=0,unsigned int t=0,unsigned int nam=0){ //ham tao
d=n;m=t;y=nam; }
void xuat(){ //ham xuat thoi gian ra man hinh
cout<<setw(2)<<d<<"/"<<setw(2)<<m<<"/"<<setw(4)<<y;}
void vao(){ //ham nhap thoi gian tu ban phim
char a,b;
do{cin>>d>>a>>m>>b>>y;
if((d>31)||(m>12)) cout<<"Nhap sai -> nhap lai"<<endl;
}while((d>31)||(m>12));}
};
int operator ==(lich &a,lich &b) { /*dinh nghia toan tu bang giua 2 doi tuong cua lop lich*/
if (a.y==b.y&&a.m==b.m&&a.d==b.d) return 1;
else return 0;
};
class hanghoa { //khai bao lop hang hoa
char* ten;
lich time;
int giatien;
public :
void nhapinfo() { //ham nhap thông tin hang hoa
cout<<endl<<"ten hang hoa : ";
cin.getline(ten,'
');
cout<<endl<<"thoi gian mua : ";
time.vao();
cout<<endl<<"gia tien : ";
cin>>giatien;
}
void xuatinfo() { //ham xuat thong tin hang hoa ra man hinh
cout.setf(ios::left);
cout<<setw(20)<<ten<<" ";
time.xuat();
cout<<" "<<setw(8)<<giatien<<endl;
}
friend class soghichep; // cho class soghichep la class ban cua class hang hoa
// lam nhu the de co the truy cap vao cac phan rieng tu cua class hang hoa
};
struct Node { //kai bao cau truc danh sach
hanghoa value;
Node* next;
};
class soghichep { //khai bao lop so ghi chep
Node* H; //con tro danh sach
char ch;
public:
void nhapds(); //ham nhap thong tin cho danh sach moc noi cac hang hoa
void bosung(); //ham bo sung thông tin cho danh sách moc noi cac hang hoa
int size(); //ham lay so luong hàng hóa có trong danh sách
void xuatds() ; //hàm xuat danh sách ra màn hinh
void sapxepgiatien() ; //hàm sap xep danh sách theo thu tu giam dan cua giá tien
void sapxepten() ; //hàm sap xep danh sách theo tên
void sapxeptime(); //hàm sap xep danh sách theo thoi gian truoc sau
void muatrongngay(); //tim kiem các hàng hóa mua trong ngày duoc nhap tu bàn phím
void ghitep(char *ttep); //hàm ghi danh sách vào mot tep
void doctep(char *ttep); //doc tu tep có san
};
//Phan dinh nghia hàm trong class soghichep
void soghichep::nhapds() { //hàm nhap thông tin cho danh sách móc noi các hàng hóa
Node* A,B;
A = new Node;
A->value.nhapinfo();
A->next=NULL;
H=A;
do{
cout<<endl<<"Nhan c/k (c-Co hoac k-Khong) "<<endl;cin>>ch;cin.ignore();
if(ch=='k') break;
B = new Node;
B->value.nhapinfo();
A->next=B;
B->next=NULL;
A=B;}while (1);
}
//nhap DS theo kieu FIFO (vào truoc ra truoc) và bo sung dan các phan tu vào cuoi DS
void soghichep::bosung() {//hàm b? sung thông tin cho danh sách móc n?i các hàng hóa
PNode A;
A=new Node;
A->value.nhapinfo();
A->next=H;
H=A;
}
//Moi lan bo sung se có mot phan tu duoc thêm vào dau danh sách
int soghichep::size() { //hàm lay so luong hàng hóa có trong danh sách
PNode A=H;;
int n=0;
while (A!= NULL) {
n++;
A=A->next;}
return n;
} //su dung thuat toán duyet danh sách
void soghichep::xuatds() { //hàm xuat danh sách ra màn hinh
PNode A;
A=H;
cout<<"Danh sach hang hoa co trong so ghi chep : "<<endl;
if (H!=NULL)
do
{
A->value.xuatinfo();
A=A->next;
}while (A!= NULL);
} //Su dung thuat toán duyet danh sách
void soghichep::sapxepgiatien() { //hàm sap xep danh sách theo thu tu giam dan cua giá tien
PNode A,B;
hanghoa td;
for(int i=0;i<size()-1;i++) { //Su dung thuat toán sap xep noi bot
//có size()-1 lan duyet DS
A=H;
for (int j=0;j<size()-1-i;j++) { //moi lan duyet qua danh sách, phan tu MIN ve cuoi danh sach
B=A->next;
if (A->value.giatien < B->value.giatien) {
td=A->value;
A->value=B->value;
B->value=td;
};
A=B;
}; // sap xep theo thu tu giam dan
};
}
void soghichep::sapxepten() { //hàm sap xep danh sách theo tên
PNode A,B; // tuong tu nhu sapxepgiatien()
hanghoa td;
for(int i=0;i<size()-1;i++) {
A=H;
for (int j=0;j<size()-1-i;j++) {
B=A->next;
if (strcmp(A->value.ten,B->value.ten)>0) {
td=A->value;
A->value=B->value;
B->value=td;
};
A=B;
}; //sap xep theo ABC
};
}
void soghichep::sapxeptime() { //ham sap xep danh sach theo thoi gian truoc sau
PNode A,B; // tuong tu nhu sapxepgiatien()
hanghoa td;
for(int i=0;i<size()-1;i++) {
A=H;
for (int j=0;j<size()-1-i;j++) {
B=A->next;
int d=0;
if (A->value.time.y<B->value.time.y)d=1;
else if(A->value.time.y==B->value.time.y)
if (A->value.time.m<B->value.time.m) d=1;
else if(A->value.time.m==B->value.time.m)
if (A->value.time.d<B->value.time.d) d=1;
if (d==1) {
td=A->value;
A->value=B->value;
B->value=td;
};
A=B;
}; //hang hoa nào mua som nhat xep truoc
};
}
void soghichep::muatrongngay(){ //tim kiem các hàng hóa mua trong ngày duoc nhap tu bàn phím
lich ngay;int k=0;
PNode A;
A=H;
cout<<endl<<" nhap ngay de tim san pham: "<<endl;
ngay.vao();
cout<< " san pham " << endl;
if (H!=NULL) //Duyet lan luot tung phan tu cho den het danh sách
do {
if ( A->value.time == ngay ) {A->value.xuatinfo();k++;}
A=A->next;
} while (A!= NULL);
cout <<endl<< " co " << k << " san pham mua trong ngay"<<" ";ngay.xuat();
//in so luong hàng hóa mua trong ngày do ra màn hinh
}
void soghichep::ghitep(char *ttep) { //hàm ghi danh sách vào mot tep
ofstream f(ttep);
PNode A;
A=H;
int n=size();
f <<n<<endl ; //dong dau là so luong phan tu cua danh sách
for (int i=1; i<=n;++i) { //ghi vào tep moi phan tu chiem 3 dong
f.setf(ios::left);
f <<A->value.ten<<endl;
f<<A->value.time.d<<"/"<<A->value.time.m<<"/"<<A->value.time.y<<endl;
f<<A->value.giatien<<endl;
A=A->next;
}
f.close();
cout<<"Da ghi tep xong";
}
void soghichep::doctep(char *ttep) { //ham doc tu tep có san
ifstream f;
f.open(ttep);
if (f.bad()) { //neu không mo duoc tep thi dung tat ca viec doc tep
cout << "
Tep " << ttep << " khong ton tai";
getch();
exit(1);
}
char ch1,ch2;
int n;
f>>n;
f.ignore();
PNode A,B;
A=new Node; //neu mo thành công thi doc danh sách nhu nhap du lieu cho các bien
f.getline(A->value.ten,'
');
f>>A->value.time.d;
f>>ch1>>A->value.time.m;
f>>ch2>>A->value.time.y;
f>>A->value.giatien;
A->next=NULL;
H=A;
for (int i=1;i<n;i++) {
B=new Node;
f.ignore();
f.getline(B->value.ten,'
');
f>>B->value.time.d;
f>>ch1>>B->value.time.m;
f>>ch2>>B->value.time.y;
f>>B->value.giatien;
A->next=B;
B->next=NULL;
A=B;
}
f.close();
cout<<"Da load xong" ;
};
int main()
{
int x;
soghichep a;
while(1) {
cout.setf(ios::left); //in MENU ra màn hinh
cout<<endl<<"Nhan cac so tuong ung de chon cac muc tuong ung "<<endl;
cout<<"1.Nhap danh sach hang hoa da mua vao so ghi chep"<<endl;
cout<<"2.Bo sung them hang hoa vua mua vao so ghi chep"<<endl;
cout<<"3.Lay so luong hang hoa co trong danh sach"<<endl;
cout<<"4.Xuat nhung hang hoa da ghi trong SGC ra man hinh"<<endl;
cout<<"5.Sap xep cac hang hoa theo ten"<<endl;
cout<<"6.Sap xep cac hang hoa theo thoi gian"<<endl;
cout<<"7.Sap xep cac hang hoa theo gia tien"<<endl;
cout<<"8.Tim nhung HH mua trong ngay cho truoc"<<endl;
cout<<"9.Ghi DS hang hoa vao tep"<<endl;
cout<<"10.Load noi dung tu tep co san"<<endl;
cout<<"0.Thoat khoi chuong trinh"<<endl;
cin>>x; //nhap x -so thu tu cua thao tác
cout.unsetf(ios::left);
switch(x) {
case 1: cout<<"Nhap danh sach Hang hoa ; "<<endl; cin.ignore() ; a.nhapds();
a.ghitep("Soghichep.txt") ;
cout<<endl<<" Danh sach duoc luu vao file Soghichep.txt"<<endl;
cout<<"an phim bat ki de tiep tuc"; getch(); break;
case 2: a.doctep("Soghichep.txt") ; cin.ignore(); a.bosung();
cout<<"Neu muon luu lai thi hay dung thao tac 9"<<endl;
cout<<"an phim bat ki de tiep tuc";getch(); break;
case 3: cout<<"So luong phan tu cua danh sach la: "<<a.size(); cout<<endl<<"an phim bat ki de tiep tuc";
getch(); break;
case 4: a.xuatds(); cout<<"an phim bat ki de tiep tuc"; getch();break;
case 5: a.sapxepten(); cout<<"Danh sach sau khi sap xep : "<<endl; a.xuatds();
cout<<"an phim bat ki de tiep tuc"; getch(); break;
case 6: a.sapxeptime() ; cout<<"Danh sach sau khi sap xep : "<<endl; a.xuatds();
cout<<"an phim bat ki de tiep tuc"; getch();break;
case 7: a.sapxepgiatien(); cout<<"Danh sach sau khi sap xep : "<<endl; a.xuatds();
cout<<"an phim bat ki de tiep tuc"; getch(); break;
case 8: a.muatrongngay(); cout<<endl<<"an phim bat ki de tiep tuc"; getch();break;
case 9: a.ghitep("Soghichep.txt"); cout<<endl<<"an phim bat ki de tiep tuc"<<endl; getch();break;
case 10: a.doctep("Soghichep.txt"); cout<<endl<<"an phim bat ki de tiep tuc"<<endl; getch();break;
default: cout<<"thoat";
}
if(x==0) break;}
system("pause");
}
Bài liên quan
chưa nhìn hết nhưng thấy cái sai
sửa như nào nhỉ bạn , mà mình gà lm , bạn nói rõ hơn nó ở phần nào dk k