软件开发与创新课程第一次作业——对于网上订书系统的一些改进

这篇博客是我自己软件开发与创新课程的第一次的作业。

1)博客介绍

  本文中网上订书系统源码来自室友在大二上c++课程的大作业。所以本文分析和改进所运用的编程语言以C++为主。

  此外,由于小编自己仍处于学习中,仅是大二的一名初学者,博客中若是有什么错误,望各位大佬在评论中不吝指出。

2)原网上订书系统代码分析

 

  1 #include <string>
  2 #include <fstream>
  3 #include <iostream>
  4 #include <windows.h>
  5 using namespace std;
  6 
  7 /*普通人标识为1,会员标识为2,贵宾为3*/
  8 long int orderid = 00000000;//全局变量,订单号 
  9 bool readbuyer = false;//全局变量,控制buyer数据库的开启关闭 
 10 bool readbook = false; //全局变量,控制book数据库的开启关闭 
 11 class buyer {
 12 protected:
 13     string name;
 14     int buyerID;        //唯一识别号(号码不可重复) 
 15     string address;
 16     double pay;
 17 public:
 18     buyer();
 19     buyer(string n, int b, string a, double p = 0);
 20     string getbuyname();
 21     string getaddress();
 22     int getid();
 23     double getpay();
 24     virtual void display() = 0;
 25     virtual void setpay(double = 0) = 0;
 26     virtual void setbuyerinfo() = 0;
 27 };
 28 class member :public buyer {
 29 protected:
 30     int leaguer_grade;
 31 public:
 32     member(string n, int b, int l, string a, double p) :buyer(n, b, a, p)
 33     {
 34         leaguer_grade = l;
 35         if (!readbuyer)
 36             setbuyerinfo();
 37     }
 38     void setbuyerinfo();
 39     void display();
 40     void setpay(double p);
 41 };
 42 class honoured_guest :public buyer {
 43     double discount_rate;
 44 public:
 45     honoured_guest(string n, int b, double r, string a, double p) :buyer(n, b, a, p)
 46     {
 47         discount_rate = r;
 48         if (!readbuyer)
 49             setbuyerinfo();
 50     }
 51     void setbuyerinfo();
 52     void display();
 53     void setpay(double p);
 54 };
 55 class layfolk :public buyer {
 56 public:
 57     layfolk(string n, int b, string a, double p) :buyer(n, b, a, p)
 58     {
 59         if (!readbuyer)setbuyerinfo();
 60     }
 61     void setbuyerinfo();
 62     void display();
 63     void setpay(double p);
 64 };
 65 
 66 /*全局变量*/
 67 layfolk* normalman[20] = { NULL };
 68 member* memberman[20] = { NULL };
 69 honoured_guest* guestman[20] = { NULL };
 70 int normalnow = 0, membernow = 0, guestnow = 0;
 71 
 72 buyer::buyer()
 73 {
 74     name = "";
 75     buyerID = 0;
 76     address = "";
 77     pay = 0;
 78 }
 79 buyer::buyer(string n, int b, string a, double p)
 80 {
 81     name = n;
 82     buyerID = b;
 83     address = a;
 84     pay = p;
 85 }
 86 double buyer::getpay()
 87 {
 88     return pay;
 89 }
 90 string buyer::getaddress()
 91 {
 92     return address;
 93 }
 94 string buyer::getbuyname()
 95 {
 96     return name;
 97 }
 98 int buyer::getid()
 99 {
100     return buyerID;
101 }
102 void member::setbuyerinfo()
103 {
104     ofstream fout("buyerinfo.dat", ios::app | ios::out);
105     if (!fout)
106     {
107         cout << "Cannot open buyerinfo.dat !(error 1)\n";
108         exit(1);
109     }
110     fout << '\n' << 2 << ' ' << buyerID << ' ' << name << ' ' << address << ' ' << leaguer_grade;
111     fout.close();
112 }
113 void member::display()
114 {
115     cout << "姓名:" << name << '\t';
116     cout << "ID:" << buyerID << '\t';
117     cout << "会员级别:" << leaguer_grade << '\n';
118     cout << "地址:" << address << '\n' << '\n';
119 }
120 void member::setpay(double p)
121 {
122     switch (leaguer_grade)
123     {
124     case 1:
125         pay = 0.95 * p + pay;
126         break;
127     case 2:
128         pay = 0.90 * p + pay;
129         break;
130     case 3:
131         pay = 0.85 * p + pay;
132         break;
133     case 4:
134         pay = 0.80 * p + pay;
135         break;
136     case 5:
137         pay = 0.70 * p + pay;
138         break;
139     default:
140         cout << "\n会员级别错误!(error 2)\n\n";
141         system("pause");
142         exit(2);
143         break;
144     }
145 }
146 
147 void honoured_guest::setbuyerinfo()
148 {
149     ofstream fout("buyerinfo.dat", ios::app | ios::out);
150     if (!fout)
151     {
152         cout << "Cannot open buyerinfo.dat !(error 1)\n";
153         exit(1);
154     }
155     fout << '\n' << 3 << ' ' << buyerID << ' ' << name << ' ' << address << ' ' << discount_rate;
156     fout.close();
157 }
158 void honoured_guest::display()
159 {
160     cout << "姓名:" << name << '\t';
161     cout << "ID:" << buyerID << '\t';
162     cout << "贵宾折扣:" << discount_rate * 100 << '%' << '\n';
163     cout << "地址:" << address << '\n' << '\n';
164 }
165 void honoured_guest::setpay(double p)
166 {
167     pay = (1 - discount_rate) * p + pay;
168 }
169 void layfolk::setbuyerinfo()
170 {
171     ofstream fout("buyerinfo.dat", ios::app | ios::out);
172     if (!fout)
173     {
174         cout << "Cannot open buyerinfo.dat !(error 1)\n";
175         system("pause");
176         exit(1);
177     }
178     fout << '\n' << 1 << ' ' << buyerID << ' ' << name << ' ' << address;
179     fout.close();
180 }
181 void layfolk::display()
182 {
183     cout << "姓名:" << name << '\t';
184     cout << "ID:" << buyerID << '\t';
185     cout << "普通用户" << '\n';
186     cout << "地址:" << address << '\n' << '\n';
187 }
188 void layfolk::setpay(double p)
189 {
190     pay = p + pay;
191 }
192 
193 class book {
194 protected:
195     string book_ID;
196     string book_name;
197     string author;
198     string publishing;
199     double price;
200 public:
201     book();
202     book(string b_id, string b_n, string au, string pu, double pr);
203     void display();
204     string getbook_ID();
205     string getbook_name();
206     string getauthor();
207     string getpublishing();
208     double getprice();
209     void setbookinfo();
210     friend void showallbooks();
211 };
212 
213 book* bbook[20] = { NULL };//全局变量 
214 int booknow = 0;//全局变量
215 
216 book::book()
217 {
218     book_ID = "";
219     book_name = "";
220     author = "";
221     publishing = "";
222     price = 0;
223 }
224 book::book(string b_id, string b_n, string au, string pu, double pr)
225 {
226     book_ID = b_id;
227     book_name = b_n;
228     author = au;
229     publishing = pu;
230     price = pr;
231     if (!readbook)
232         setbookinfo();
233 }
234 void book::setbookinfo()
235 {
236     ofstream ffout("bookinfo.dat", ios::app | ios::out);
237     if (!ffout)
238     {
239         cout << "Cannot open bookinfo.dat !(error 3)\n";
240         system("pause");
241         exit(3);
242     }
243     ffout << '\n' << book_ID << ' ' << book_name << ' ' << author << ' ' << publishing << ' ' << price;
244     ffout.close();
245 }
246 void showallbooks()
247 {
248     int i;
249     string b_ID;
250     string b_name;
251     string au;
252     string pu;
253     double pr;
254     ifstream ffin("bookinfo.dat", ios::in);
255     if (!ffin)
256     {
257         cout << "Cannot open bookinfo.dat !(error 4)\n";
258         system("pause");
259         exit(4);
260     }
261     cout << "库中所有图书列表:\n\n";
262     for (i = 1; ffin.eof() == 0; i++)
263     {
264         ffin >> b_ID >> b_name >> au >> pu >> pr;
265         cout << i << "";
266         cout << "书号:" << b_ID << '\t';
267         cout << "书名:" << b_name << '\t';
268         cout << "作者:" << au << '\n';
269         cout << "出版社:" << pu << '\t';
270         cout << "定价:" << pr << '\n';
271     }
272     ffin.close();
273     cout << "\n\n";
274 }
275 
276 void book::display()
277 {
278     cout << "书号:" << book_ID << '\t';
279     cout << "书名:" << book_name << '\t';
280     cout << "作者:" << author << '\n';
281     cout << "出版社:" << publishing << '\t';
282     cout << "定价:" << price << '\n';
283 }
284 string book::getbook_ID()
285 {
286     return book_ID;
287 }
288 string book::getbook_name()
289 {
290     return book_name;
291 }
292 string book::getauthor()
293 {
294     return author;
295 }
296 string book::getpublishing()
297 {
298     return publishing;
299 }
300 double book::getprice()
301 {
302     return price;
303 }
304 
305 void savenoworder()//存当前订单号,关闭应用后下次开启可继续用 
306 {
307     ofstream ffout("intro_order.dat", ios::trunc | ios::out);
308     if (!ffout)
309     {
310         cout << "Cannot open intro_order.dat !(error 6)\n";
311         system("pause");
312         exit(6);
313     }
314     ffout << orderid;
315     ffout.close();
316 }
317 
318 long int createorder(buyer* nowbuyer, book** choosebook, int howmanybook)            //存订单 
319 {
320     int i;
321     ofstream fout("orderinfo.dat", ios::app | ios::out);
322     if (!fout)
323     {
324         cout << "Cannot open orderinfo.dat !(error 5)\n";
325         system("pause");
326         exit(5);
327     }
328     fout << '\n' << nowbuyer->getid() << ' ' << nowbuyer->getbuyname() << ' ' << nowbuyer->getaddress();
329     for (i = 0; i < howmanybook; i++)
330     {
331         book* chb;
332         chb = *(choosebook + i);
333         fout << '\n' << '\t' << chb->getbook_ID() << ' ' << chb->getbook_name();
334     }
335     fout << "\n\t" << orderid;
336     fout.close();
337     orderid++;
338     savenoworder();
339     return orderid - 1;
340 }
341 
342 void startorder()
343 {
344     ifstream ffin("intro_order.dat", ios::in);
345     if (!ffin)
346     {
347         cout << "未找到起始订单号文件,\
348         \n请手动在主程序所在目录下创建intro_order.dat文件,\
349         \n并写入orderinfo.dat文件末位订单号+1的八位数字。\n";
350         system("pause");
351         exit(7);
352     }
353     ffin >> orderid;
354 }
355 
356 int initbuyerinfo()        //每次打开程序后先读取文件中的买家信息并写入类 
357 {
358     ifstream fffin("buyerinfo.dat", ios::in);
359     if (!fffin)
360         return 0;
361 
362     readbuyer = true;            //写入模式,屏蔽库
363 
364     int t;                //存买家身份 
365     string na;
366     int bu;
367     string ad;
368     int le;        //如会员则赋值
369     double di;  //如贵宾则赋值 
370     for (; fffin.eof() == 0;)
371     {
372         fffin >> t;
373         switch (t)
374         {
375         case 1:
376             fffin >> bu >> na >> ad;
377             normalman[normalnow] = new layfolk(na, bu, ad, 0);
378             normalnow++;
379             break;
380         case 2:
381             fffin >> bu >> na >> ad >> le;
382             memberman[membernow] = new member(na, bu, le, ad, 0);
383             membernow++;
384             break;
385         case 3:
386             fffin >> bu >> na >> ad >> di;
387             guestman[guestnow] = new honoured_guest(na, bu, di, ad, 0);
388             guestnow++;
389             break;
390         default :
391             cout << "\n\n读取buyerinfo.dat时遇到未知等级信息。\n\n";
392             system("pause");
393             exit(9);
394         }
395     }
396     readbuyer = false;            //写入模式结束,开启库 
397     return 1;
398 }
399 
400 int initbookinfo()        //每次打开程序后先读取文件中的书籍信息并写入类 
401 {
402     ifstream fffin("bookinfo.dat", ios::in);
403     if (!fffin)
404         return 0;
405 
406     readbook = true;            //写入模式,屏蔽库
407 
408     string b_ID;
409     string b_name;
410     string au;
411     string pu;
412     double pr;
413     for (; fffin.eof() == 0;)
414     {
415         fffin >> b_ID >> b_name >> au >> pu >> pr;
416         bbook[booknow] = new book(b_ID, b_name, au, pu, pr);
417         booknow++;
418     }
419     readbook = false;            //写入模式结束,开启库 
420     return 1;
421 }
422 
423 class show {
424 public:
425     void showwelcome();
426     void showaddbuyer();
427     void showaddbook();
428     void showbuybook();
429 };
430 show nn;//全局变量,显示界面 
431 void show::showwelcome()
432 {
433     system("cls");
434     int i;
435     cout << "*----------------------------------------------------------------*" << "\n\n";
436     cout << "           欢迎使用葛宝书籍交易平台1.0" << "\n\n";
437     cout << "                1、买书" << "\n";
438     cout << "            2、添加书籍信息" << "\n\n";
439     cout << "*----------------------------------------------------------------*" << "\n\n";
440     cout << "请输入:";
441     cin >> i;
442     if (i == 1)
443         nn.showbuybook();
444     else if (i == 2)
445         nn.showaddbook();
446     else
447     {
448         cout << "输入错误";
449         system("pause");
450         nn.showwelcome();
451     }
452 }
453 void show::showbuybook()
454 {
455     system("cls");
456     int choose = 0, i = 0, j, howmanybook = 0;
457     book** choosebook = new book * [20];
458     for (j = 0; j < 20; j++)
459         choosebook[j] = NULL;
460 
461     showallbooks();
462     cout << "\n\n请选择要购买的书籍(按 0 结束选择):" << endl;
463     cin >> choose;
464     if (choose == 0)
465     {
466 
467         nn.showwelcome();
468     }
469     else {
470         for (; choose != 0;)
471         {
472             if (choose - 1 <= booknow)
473             {
474                 choosebook[i++] = bbook[choose - 1];
475                 cout << "选择成功!继续选择。(按 0 结束选择)" << endl;
476                 cin >> choose;
477             }
478             else
479             {
480                 cout << "输入错误!\n";
481                 system("pause");
482                 nn.showwelcome();
483             }
484         }
485         system("cls");
486         cout << "\n\n" << "请确认您选的图书:" << endl;
487         for (i = 0; choosebook[i] != NULL; i++)
488         {
489             cout << i + 1 << "";
490             cout << "书号:" << choosebook[i]->getbook_ID() << '\t';
491             cout << "书名:" << choosebook[i]->getbook_name() << '\t';
492             cout << "作者:" << choosebook[i]->getauthor() << '\n';
493             cout << "出版社:" << choosebook[i]->getpublishing() << '\t';
494             cout << "定价:" << choosebook[i]->getprice() << '\n';
495             howmanybook++;
496         }
497         for (;;) {
498             cout << "\n\n确认按 1 ,取消按 0:";
499             cin >> i;
500             if (i == 1)
501             {
502                 cout << "\n\n是否为新用户(1是,0否):";
503                 cin >> i;
504                 if (i == 0)
505                 {
506                     int nowid, t = 0;
507                     buyer* nowbuyer = NULL;
508                     cout << "\n\n请输入ID卡号(4位号码):";
509                     cin >> nowid;
510                     switch (nowid / 1000)
511                     {
512                     case 1:
513                         for (i = 0; normalman[i] != NULL; i++)
514                         {
515                             if (normalman[i]->getid() == nowid)
516                             {
517                                 t = 1;
518                                 nowbuyer = normalman[i];
519                                 break;
520                             }
521                         }
522                         break;
523                     case 2:
524                         for (i = 0; memberman[i] != NULL; i++)
525                         {
526                             cout << "test";
527                             if (memberman[i]->getid() == nowid)
528                             {
529                                 t = 1;
530                                 nowbuyer = memberman[i];
531                                 break;
532                             }
533                         }
534                         break;
535                     case 3:
536                         for (i = 0; guestman[i] != NULL; i++)
537                         {
538                             if (guestman[i]->getid() == nowid)
539                             {
540                                 t = 1;
541                                 nowbuyer = guestman[i];
542                                 break;
543                             }
544                         }
545                         break;
546                     default:
547                         cout << "\n卡号输入有误!" << endl;
548                     }
549                     if (t == 1)
550                     {
551                         system("cls");
552                         cout << "\n\n尊敬的" << nowbuyer->getbuyname() << "顾客您好!\n\n";
553                         cout << "您的订单信息:\n\n";
554                         for (i = 0; i < howmanybook; i++)
555                         {
556                             cout << i + 1 << "";
557                             cout << "书号:" << choosebook[i]->getbook_ID() << '\t';
558                             cout << "书名:" << choosebook[i]->getbook_name() << '\t';
559                             cout << "作者:" << choosebook[i]->getauthor() << '\n';
560                             cout << "出版社:" << choosebook[i]->getpublishing() << '\t';
561                             cout << "定价:" << choosebook[i]->getprice() << '\n';
562                             nowbuyer->setpay(choosebook[i]->getprice());
563                         }
564                         Sleep(1000);
565                         if (nowbuyer->getpay() < 0)
566                         {
567                             cout << "\n\n结算异常!终止交易!(exit 8)\n\n";
568                             system("pause");
569                             exit(8);
570                         }
571                         cout << "\n\t您需要支付:" << nowbuyer->getpay() << "\n\n";
572                         Sleep(3000);
573                         long int xx;
574                         xx = createorder(nowbuyer, choosebook, howmanybook);
575                         cout << "订单创建中………";
576                         Sleep(5000);
577                         cout << "\n\n\t支付成功!\n\n";
578                         system("pause");
579                         system("cls");
580                         cout << "\n\n您的购书信息:\n\n";
581                         cout << "\t姓名:" << nowbuyer->getbuyname() << ' ' << "收货地址:" << nowbuyer->getaddress() << "\n\n";
582                         cout << "\t购书信息:\n\n";
583                         for (i = 0; i < howmanybook; i++)
584                         {
585                             cout << i + 1 << "";
586                             cout << "书号:" << choosebook[i]->getbook_ID() << '\t';
587                             cout << "书名:" << choosebook[i]->getbook_name() << '\t';
588                             cout << "作者:" << choosebook[i]->getauthor() << '\n';
589                             cout << "出版社:" << choosebook[i]->getpublishing() << '\t';
590                             cout << "定价:" << choosebook[i]->getprice() << '\n';
591                             nowbuyer->setpay(choosebook[i]->getprice());
592                         }
593                         cout << "\n\t订单号:" << xx << "\n\n";
594                         t = 0;
595                         howmanybook = 0;
596                         nowid = 0;
597                     }
598                     else
599                     {
600                         int x;
601                         cout << "\n查无此卡号!\n" << endl;
602                         cout << "返回按 0:";
603                         cin >> x;
604                         nn.showwelcome();
605                         t = 0;
606                         howmanybook = 0;
607                         nowid = 0;
608                     }
609                 }
610                 else
611                 {
612                     howmanybook = 0;
613                 }
614                 system("pause");
615                 break;
616             }
617             else if (i == 0)
618             {
619                 cout << "取消订单成功!" << endl;
620 
621                 delete[]choosebook;
622                 system("pause");
623                 break;
624             }
625             else
626                 cout << "输入有误!" << endl;
627         }
628         nn.showwelcome();
629     }
630 }
631 
632 void show::showaddbook()
633 {
634     string b_ID;
635     string b_name;
636     string au;
637     string pu;
638     double pr;
639     system("cls");
640     cout << "欢迎进入图书信息录入系统\n\n";
641     cout << "\t请输入书籍 ISBN 号:";
642     cin >> b_ID;
643     cout << "\n\t请输入书籍名称:";
644     cin >> b_name;
645     cout << "\n\t请输入书籍作者:";
646     cin >> au;
647     cout << "\n\t请输入书籍出版社:";
648     cin >> pu;
649     cout << "\n\t请输入定价:";
650     cin >> pr;
651     bbook[booknow++] = new book(b_ID, b_name, au, pu, pr);
652     cout << "\t创建中………请稍等\n";
653     Sleep(500);
654     cout << "\n\t创建成功\n!";
655     system("pause");
656     nn.showwelcome();
657 }
658 
659 int main()
660 {
661     int i;
662     book* c[2];
663     buyer* b[4];
664     startorder();
665     if (!initbuyerinfo())
666     {
667         normalman[normalnow++] = new layfolk("林小茶", 1001, "北京", 0);
668         guestman[guestnow++] = new honoured_guest("王瑶瑶", 3001, 0.6, "上海", 0);
669         memberman[membernow++] = new member("赵红艳", 2001, 5, "广州", 0);
670         normalman[normalnow++] = new layfolk("林小北", 1002, "南京", 0);
671     }
672     b[0] = normalman[0];
673     b[1] = memberman[0];
674     b[2] = guestman[0];
675     b[3] = normalman[1];
676 
677     if (!initbookinfo())
678     {
679         bbook[booknow++] = new book("7-302-04504-6", "C++程序设计", "谭浩强", "清华", 25);
680         bbook[booknow++] = new book("7-402-03388-9", "数据结构", "许卓群", "北大", 20);
681     }
682     c[0] = bbook[0];
683     c[1] = bbook[1];
684     nn.showwelcome();
685     return 0;
686 }
源码

 

  原作者先是建立了readbuyer、readbook两个全局变量来控制buyer、book两个数据库的开启和关闭,实际上就是控制文件的读写。之后便是建立了book类和buyer类来记录和控制用户、书籍的数据。

 

  为了便于区分用户的会员等级,计算订单费用,建立了buyer类的三个子类:member类(普通用户)、honoured_guest类(会员)、layfolk类(贵宾)。还通过normalman、memberman、guestman三个数组来存储用户的数据,并用normalmow、membernow、guestnow三个整型变量来记录各种类型用户的个数。

  此外,值得一提的就是为了便于记录设立了三个dat文件来存储书籍、用户、订单的信息,使用了setbuyerinfo、setbookinfo、savenoworder、createorder、startorder等函数具体操控信息的生成和读写。这样文件读写的方式可以更加简洁直观地管理员知晓系统中的数据,方便管理及后续的账单生成等操作的进行。至于,室友生成的是dat文件,而不是txt文件,还是要解释一下,在我的理解和查阅的资料中来说,本系统下生成txt文件还是dat文件本质上没有什么差别,只是dat是以二进制格式存入数据的,txt是以文本格式(ASCII码)存入的罢了。具体生成什么文件,在本系统中仅仅是习惯问题而已。

 总体上来说,系统总体上功能齐全,界面简单直接,是一份优秀的大作业。但今天把它那出来总归还是有可以改进的地方的。

3) 存在的问题

 

 我们从上图中不难看出该系统中存在缺少创建新用户的功能。仅仅是在前端显示时做了一个假的框架。

4)改进方案

 我们可以先以函数的方式创建一个“添加新用户”的新功能,并将这个函数拼接在“买书”这个功能下方补全功能。

 改进后添加的showaddbuyer函数:

 1 void show::showaddbuyer()
 2 {
 3     string nam, addr;
 4     int i;
 5     int level = 1;
 6     double rate = 0.0;
 7     system("cls");
 8     cout << "欢迎进入添加用户系统:\n\n";
 9     cout << "请输入用户姓名:";
10     cin >> nam;
11     cout << "\n请输入用户收货地址:";
12     cin >> addr;
13     cout << "\n请选择用户类型(普通用户 1,会员 2, 贵宾 3):";
14     cin >> i;
15     switch (i)
16     {
17     case 1:
18         normalman[normalnow++] = new layfolk(nam, 1001 + normalnow, addr, 0);
19         cout << "\t创建中………请稍等\n";
20         Sleep(500);
21         cout << "\t创建成功!\n";
22         cout << "\t您的卡号:\t" << 1000 + normalnow << "\t请妥善保管,遗失概不负责。\n\n";
23         break;
24     case 2:
25         cout << "\n会员等级:";
26         cin >> level;
27         memberman[membernow++] = new member(nam, 2001 + membernow, level, addr, 0);
28         cout << "\t创建中………请稍等\n";
29         Sleep(500);
30         cout << "\t创建成功!\n";
31         cout << "\t您的卡号:\t" << 2000 + membernow << "\t请妥善保管,遗失概不负责。\n\n";
32         break;
33     case 3:
34         cout << "\n贵宾折扣(小数形式):";
35         cin >> rate;
36         guestman[guestnow++] = new honoured_guest(nam, 3001 + guestnow, 1 - rate, addr, 0);
37         cout << "\t创建中………请稍等\n";
38         Sleep(500);
39         cout << "\t创建成功!\n";
40         cout << "\t您的卡号:\t" << 3000 + guestnow << "\t请妥善保管,遗失概不负责。\n\n";
41         break;
42     default:
43         cout << "\n\t选择错误!\n";
44         system("pause");
45         nn.showwelcome();
46     }
47     system("pause");
48     nn.showwelcome();
49 }
函数完整代码

   之后将showaddbuyer函数添加在showbuybook这个函数下方

 

 这样一来,整个系统的功能就相对完整,在顾客一端注册账户、买书,订单生成都可以实现,功能齐全,管理员角度来说,添加书籍、查看各种数据的方式也相对简便,订单也简洁明了。

5)改进效果

界面截图

 

 

posted on 2021-03-07 12:21  r=a(1-sinα)  阅读(213)  评论(0)    收藏  举报