佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1065|回复: 5

有会Pro C/C++ 的吗?

[复制链接]
发表于 18-12-2013 12:31 AM | 显示全部楼层 |阅读模式
请问各位高手们~有会Pro C/C++ 的吗??
想问问问题~~

void addInv()
{
                EXEC SQLBEGIN DECLARE SECTION;
                charID2[11],invNo[11],invno[11],invDate[11],cusID[6],code[6],empID[6],adID[6],catogery[51],name[51];
                double total,invAmount, price;
                int invQtn,totalrep=0;
                EXEC SQLEND DECLARE SECTION;
                fnConnectDB();
                char ans[10]="";
                char a[10]="";
                char answer;
re:           
                system("cls");
                cout<<"\n\t=====================================================\n";
                cout<<"\n\t                Invoice Detail\n\n";
                cout<<"\t=====================================================\n\n";
                cout<<"\n\tInvoice Number\t : ";
                input(invNo);
                cout<<"\tDate Issue\t : ";
                input(invDate);   
                cout<<"\n\tStaff ID\t : ";
                input(empID);
                cout<<"\tAdmin ID\t : ";
                input(adID);
                cout<<"\n\tCustomer ID\t : ";
                input(cusID);
                cout<<"\n\tItem List : \n";
                EXEC SQLOPEN viewItemcursor;
                EXEC SQLWHENEVER NOT FOUND DO break;
                while(1)
                {
                                EXECSQL FETCH viewItemcursor INTO :code,:name,:price;
                                cout<<"\n\n\tItem code\t: "<<code<<endl;
                                cout<<"\tEquipment Name\t: "<<name<<endl;
                                cout<<"\tPrice per unit\t: "<<price<<endl;
                }
                EXEC SQLWHENEVER NOT FOUND CONTINUE;
                EXEC SQLCLOSE viewItemcursor;
loop2:     
                cout<<"\t";
                system("pause");
                cout<<"\tItem Code SOLD\t\t : ";
                input(code);
                if(sqlca.sqlcode==0)
                {
                                EXECSQL SELECT price into :price from Item WHERE code=:code;
                                cout<<"\n\tPrice\t : RM"<<price;
                                cout<<"\tQuantity\t : ";
                                cin>>invQtn;
                                cout<<"\tTotal Price\t : RM";
                                invAmount=price*invQtn;
                                cout<<invAmount;
                }
                else
                {
                                cout<<"invalid ID"<<endl;
                                addInv();
                }
loop:
                cout<<"\n\n\tDo you want to save this record ?[y/n]:";
                input(ans);
                if(ans[0]=='y'||ans[0]=='Y')
                {               
                                if(sqlca.sqlcode==0)
                                {
                                EXECSQL INSERT INTO InvoiceVALUES(:invNo,:cusID,:code,:empID,:adID,:invDate,:invQtn,:invAmount);
                                EXECSQL COMMIT;
                                cout<<"\n\tthe record was succesfully save\n\n";
                                totalrep++;
                                
                                cout<<"\tDo you want to add other item to this invoice?[y/n]";
                                cin>>answer;
                                if(answer=='Y'||answer=='y')
                                                goto loop2;
                                else
                                {
                                                EXECSQL SELECT SUM(invAmount) INTO :total FROM Invoice WHERE invNo=:invNo;
                                                EXECSQL SELECT invNo,cuusID,code,empID,adID,invDate,invQtn,invAmount INTO:invNo,:cusID,:code,:empID,:adID,:invDate,:invQtn,:invAmount from Invoice WHEREinvNo=:invNo;
                                cout<<"\t----------------------------------------------------------------------";  
                                cout<<"\n\tInvoice No : "<<invNo;
                                cout<<"\t\t\tDate : "<<invDate;
                                cout<<"\n\tEmployee ID : "<<empID<<"\t\t\tAdmin ID : "<<adID;
                                cout<<"\n\tCustomer ID : "<<cusID;
                                cout<<"\n\t----------------------------------------------------------------------";
                                cout<<"\n\tItems:\n";
                                cout<<"\n\tNo.\tItem Code\tPrice perCarton\tQuantity\tAmount ";
                                for(inti=0;i<totalrep;i++)
                                                cout<<"\n\t"<<i+1<<".\t"<<code<<"\t\t\t"<<price<<"\t\t"<<invQtn<<"\t\t"<<invAmount;
                                cout<<"\n\t\t\t\t\t\tTotal : "<<total;
                                cout<<"\n\t----------------------------------------------------------------------";
                                cout<<"\n\n\tPress 1 to continue add new rentaltransaction,\n\telse Press 2 back to transaction menu\n\t>>";
                                  input(a);
                                  if (a[0]=='1')
                                                  goto re;
                                  else if (a[0]==27)
                                                  InvoiceMenu();
                                  else if (a[0]=='2')
                                                  InvoiceMenu();
                                else
                                {
                                                cout<<"\n\n\n\terror occur, fail to save\n\t";
                                                addInv();
                                }
                                }
                                }
                }
                else if (ans[0]=='n' || ans[0]=='N')
                {
                                cout<<"\n\tthe record is not save";
                                cout<<"\n\n\n\tPress :";
                                cout<<"\n\t1. Continue add new rental transaction,\n\telsePress 2 back to transaction menu\n\t>>";
                                  input(a);
                                  if (a[0]=='1')
                                                  goto re;
                                  else if (a[0]==27)
                                                  InvoiceMenu();
                else if (ans[0]==27)
                                InvoiceMenu();
                }
                else
                {
                                cout<<"\nwrong input\n";
                                system("pause");
                                goto loop;
                }
                fnCloseDBConnection();
                 system("pause");
     InvoiceMenu();
}

我的c++出现的item,两个都是一样的,但是database又没有问题哦.. @@..


inv2.png
ex.png
回复

使用道具 举报


ADVERTISEMENT

发表于 20-12-2013 09:59 AM | 显示全部楼层
说真的,可能是我孤陋寡闻,我还是第一次看到像楼主这样的Programming Structure。。。

Label & GOTO 真的不是很好的 Coding Style 啊。。。

正在努力消化楼主的Code,能不能理解出什么我不能担保,如果有收获再来发帖。。。
回复

使用道具 举报

发表于 20-12-2013 10:11 AM | 显示全部楼层
初步分析,你的问题出在这里:

  1. for(inti=0;i<totalrep;i++)
  2.     cout<<"\n\t"<<i+1<<".\t"<<code<<"\t\t\t"<<price<<"\t\t"<<invQtn<<"\t\t"<<invAmount;
复制代码
在你的loop里面,你根本没有Update code,price,invQtn 和 invAmount,所以不论你有多少行,print 出来都是同样的东西。
回复

使用道具 举报

发表于 20-12-2013 11:15 AM | 显示全部楼层
兔子叔果然不是盖的
回复

使用道具 举报

发表于 20-12-2013 12:51 PM | 显示全部楼层
嗯,兔子叔不是屋子,所以不是盖的,而是肉体凡胎长出来的。。。
回复

使用道具 举报

 楼主| 发表于 27-12-2013 01:51 PM | 显示全部楼层
geekman 发表于 20-12-2013 10:11 AM
初步分析,你的问题出在这里:在你的loop里面,你根本没有Update code,price,invQtn 和 invAmount,所以不 ...

嗯嗯.. 真是抱歉哦~~
嗯,这一个部分有错哦~
不过另一个错误是因为SELECT 只是能选一个,所以用cursor 才能call 出多过一个...
很谢谢你哦~
感激不尽~
回复

使用道具 举报

Follow Us
您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 12-9-2025 07:42 AM , Processed in 0.143325 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表