以下是别人编写的一个“网上购书系统”的代码。

#include<iostream>
using namespace std;
#include<fstream>
#include<stdlib.h>
#include<string>
#include<conio.h> //getch的头文件
#include <sstream>
#include <iomanip>
#include <windows.h>
#define WIDTH 20
#define space setw(WIDTH) //读取相邻数据的间隔
#define NEWLINE "\r\n"
#include"buy.h"
#include"book.h"
#include"order.h"

//函数提前声明部分

void logo1();
void logo2();
void function1();
void function2();
void function3();

//对象

book booker;
buyer buyerr;
order orderr;

//---------------------------------------------------界面流程模块----------------------------------------------------------

void interface1() //程序的第一个界面
{
cout<<"------------------------------------------------------"<<endl;
cout<<" 欢迎来到网上购书系统 "<<endl;
cout<<"------------------------------------------------------"<<endl;
cout<<" 1.管理员 "<<endl;
cout<<" 2.用户 "<<endl;
cout<<"请选择您的身份:"<<endl;
}

void interface2() //登录与注册界面
{
cout<<"------------------------------------------------------"<<endl;
cout<<" 欢迎来到网上购书系统 "<<endl;
cout<<"------------------------------------------------------"<<endl;
cout<<" 1.登录 "<<endl;
cout<<" 2.返回上一界面 "<<endl;
cout<<"请选择您要进行的操作:"<<endl;
}

void interface3() //管理员登录后界面
{
cout<<"------------------------------------------------------"<<endl;
cout<<" 欢迎来到网上购书系统 "<<endl;
cout<<"------------------------------------------------------"<<endl;
cout<<" 操作图书信息 "<<endl;
cout<<"请选择您要进行的操作:"<<endl;
}

//------------------------------------------------登录模块-----------------------------------------------------------

struct user
{
string password;
string name;
};

//管理员登录

void logo1()
{
char *password = new char [20];
string name;
cout << "用户名:"<<endl;
cin>>name;
cout <<" 密码:"<<endl;
char test;int i=0;
while((test=getch())!='\r')
{
if(test==8)//ASC2码8为退格
{
if(i>0)
{
cout << test << " " << test;
password[i--]='\0';
}
}
else
{
if(i<20)
cout << "*";
password[i]=test;
i++;
}
}
password[i]='\0';
ifstream fin;
fin.open("admis.txt",ios_base::in);
if(fin.fail())
{
cout << "文件打开失败";
}
user c;int f1;
while(fin>>c.name>>c.password)
{
if(c.name==name&&c.password==password)
{
cout << "登陆成功";
f1=1;//登录成功标志
interface3();
int m;
cin>>m;
switch(m)
{
case 1:function1();break;
case 2:function2();break;
}
}
}
if(f1==0)//f1==0登录失败
{
cout << "用户名或密码错误";
logo1();
}
}

//用户登录

void logo2()
{
char *password = new char [20];
string name;
cout << "用户名:"<<endl;
cin>>name;
cout <<" 密码:"<<endl;
char test;int i=0;
while((test=getch())!='\r')
{
if(test==8)//ASC2码8为退格
{
if(i>0)
{
cout << test << " " << test;
password[i--]='\0';
}
}
else
{
if(i<20)
cout << "*";
password[i]=test;
i++;
}
}
password[i]='\0';
ifstream fin;
fin.open("user.txt",ios_base::in);
if(fin.fail())
{
cout << "文件打开失败";
}
user c;int f1;
while(fin>>c.name>>c.password)
{
if(c.name==name&&c.password==password)
{
cout << "登陆成功";
f1=1;//登录成功标志
function3();
}
}
if(f1==0)//f1==0登录失败
{
cout << "用户名或密码错误";
logo2();
}
}

//-------------------------------------管理员添加,读取,删除和修改图书信息部分----------------------------------------------

//管理员的功能模块

void function1()
{
book booker;
const char *filename = "books.txt";
while(true)
{
cout<<"--------------------------"<<endl;
cout<<"0、查看全部信息"<<endl;
cout<<"1、新增图书信息"<<endl;
cout<<"2、删除图书信息"<<endl;
cout<<"3、修改图书信息"<<endl;
cout<<"4、查找图书信息"<<endl;
cout<<"5、返回上一界面"<<endl;
int cmd;
cin>>cmd;
system("cls");
switch(cmd)
{
case 0:booker.readt("books.txt");break;
case 1:booker.writet("books.txt");break;
case 2:booker.delt("books.txt");break;
case 3:booker.editt("books.txt");break;
case 4:booker.searcht("books.txt");break;
case 5:
{
interface3();
int m;
cin>>m;
switch(m)
{
case 1:function1();break;
case 2:function2();break;
}
}
break;
}
}
}

//----------------------------------------用户查看图书信息,购书,查看订单和结算模块-----------------------------------------

//用户功能模块

void function3()
{
const char *filename = "orders.txt";
while(true)
{
cout<<"--------------------------"<<endl;
cout<<"1、图书信息"<<endl;
cout<<"2、购书"<<endl;
cout<<"3、查看订单信息"<<endl;
//cout<<"4、结算"<<endl;
cout<<"请选择您要进行的操作:";
int cmd;
cin>>cmd;
system("cls");
switch(cmd)
{
case 1:booker.readt("books.txt");break;
case 2:orderr.options1();break; //还没成功
case 3:orderr.searcho("orders.txt");break;
//case 4:settlement();break;
}
}
}

//------------------------------------------------------主程序流程--------------------------------------------------------------

void maind()
{
interface1();
int i,j;
cin>>i;
switch(i)
{
case 1:interface2();cin>>j; //管理员
switch(j)
{
case 1:logo1();break; //登录
case 2:maind();break;
}
break;
case 2:interface2();cin>>j; //用户
switch(j)
{
case 1:logo2();break; //登录
case 2:maind();break;
}
break;
}
}

int main()
{
maind();
return 0;
}

------------------------------------------------------------------------------------

总得来说,我感觉这个代码总体上还比较完整,思路也比较清晰且函数封装的很好。

首先有一个界面流程模块,简单又清晰的展示了整个程序的界面流程。

接下去的各区域模块也划分了管理员和用户两个不同的界面,方便用户或管理员进行购物或者对物品的修改。

再然后,管理员可以添加或修改图书信息,可以实时更改图书信息以方便用户进行挑选。同时顾客可以在界面内挑选自己喜欢的书籍并选择购买,随后可以生成顾客已经挑选的图书订单,进性结算或者修改。综上所诉,该程序操作简便可以满足部分人的购书需求。

但也有一些缺点,比如在用户注册过程上有些不明确以及对图书信息内容的介绍也有点模糊,这是我感觉较为突出的薄弱项。其次我认为可以给管理员和用户增加几个功能模块。例如

1.管理员可以删除用户账户信息或者删除用户订单信息模块。

2.可以增加一个退款功能模块,如果用户突然不需要已经结算的图书了,可以申请退款,再交由管理员处理。

这样处理可能能将该系统用户体验上得到优化。以下是按照管理员添加,修改图书信息模块改写的新的功能模块用于删除用户信息或者订单信息的功能模块。

void function2() 
{
const char *filename = "users.txt";
while(true)
{
cout<<"--------------------------"<<endl;
cout<<"1、删除用户信息"<<endl;
cout<<"2、查看用户信息"<<endl;
cout<<"3、删除用户订单信息"<<endl;
cout<<"4、返回上一界面"<<endl;
int cmd;
cin>>cmd;
system("cls");
switch(cmd)
{
case 1:buyerr.dely("users.txt");break;
case 2:buyerr.ready("users.txt");break;
case 3:buyerr.searchy("users.txt");break;
case 4:
{
interface3();
int m;
cin>>m;
switch(m)
{
case 1:function1();break;
case 2:function2();break;
}
}
break;
}
}
}

以上便是我对该系统的愚见和心得。

转载于:https://www.cnblogs.com/sjhdamowang/p/10467994.html

关于《网上购书系统》相关推荐

  1. 学计算机是不是必须要买电脑,上大学了,你必须买一部电脑吗?

    有一位今年的大一新生在网上问:上大学了,必须买电脑吗? 对于这个问题,大家的看法没有大的分歧,我们总结整理一下,大致观点如下: 一,根据学生学习的需要情况. 在大学里,有些专业学习时必须用到电脑,类似 ...

  2. 菜鸟学编程,用x86二手本学习嵌入式编程(硬件编程)

    最近一直忙着上课,一直忙着写论文,一直忙着准备考试,但是脑子没有停止思考. 下学是结合个人的学习经历,给希望学习软件的菜鸟一点点帮助. 1:菜鸟也想学编程 大部分同学从大学开始接触软件编程,但其实有一 ...

  3. 小孩多大适合学编程机器人

    小孩多大适合学编程机器人?小孩的学习一直以来都是家长们非常关心和重视的一件事情.很多的家长在培养孩子的学习的时候,在选择学习课程的时候,可以说是非常的用心的.就拿现在很多的家长想要孩子去学习机器人编程 ...

  4. 关于《学编程,还有必要上大学吗? 》

    这两天登录CSDN,下面的广告弹出链接写着<学编程,还有必要上大学吗?>原来是篇针对<收回你的偏见,软件培训机构更能出人才>和<90后高中生学编程月薪过万,刺痛了谁?&g ...

  5. 电路板必须用c语言编程吗,上大学才知道绿油油的板子叫PCB,如何成为一名电子工程师...

    原标题:上大学才知道绿油油的板子叫PCB,如何成为一名电子工程师 本文为十周年征文来稿,活动还在就行中欢迎烧友们拉到文章底部了解参加 对活动有疑问欢迎联系小助手(微信:XM1007721171) 我是 ...

  6. @大学生,送给步入大学生活的你,高速学编程。

    大学生怎样学习编程,学哪个编程语言好? 上大学后学哪门编程语言好?大学生学哪个编程语言好就业?学哪个编程语言工资高?新手如何自学编程?哪个编程语言开发的软件多?大公司都招聘哪些编程语言人才? 相信很多 ...

  7. 大学java怎么算学得好_为什么现在大学里很多计算机系的大学生,学编程的时候总学不好...

    小编发现如今在大学校园里,总是会出现一种现象,就是现在大学里很多计算机系的大学生,学编程的时候总学不好,这到底是为什么呢?因为看不懂?因为不认真?相信很多同学也会感到疑惑,那小编就一起来分析一下吧,同 ...

  8. 大学如何开始学编程?

    大学如何开始学编程? 作为编程初学者每个人一开始都很迷茫不知如何学习,学习也没动力,其实大家都是一样的,但这并不意味着你会成为一个糟糕的 程序猿(媛).学习编程关键是要找到一种合适的语言,坚持学习,学 ...

  9. 3.4 学编程不拘于语言,学语言不限于平台——《逆袭大学》连载

    返回到[全文目录] 目录 3.4 学编程不拘于语言,学语言不限于平台 编程语言 软件和硬件--计算机要作为一个整体看待 语言的江湖 语言不是回事 多平台上的精彩 3.4 学编程不拘于语言,学语言不限于 ...

  10. 学编程会拉低数学成绩,巴黎大学跟踪1500个小学生得出结论

    "怎么培养数学逻辑思维?来点编程试试?" 大概这是很多人的既有认知,毕竟感觉程序员们的数学都挺好的. 巴特,反转来了. 来自巴黎大学的研究人员发现,小学生改用编程课学数学后,对成绩 ...

最新文章

  1. MySQL中改变相邻学生座位_力扣——换座位(数据库的题
  2. GT Transceiver中的重要时钟及其关系(5)QPLL的工作原理介绍
  3. 核弹级漏洞log4shell席卷全球!危及苹果腾讯百度网易,修改iPhone名称就可触发...
  4. JavaCSV之写CSV文件
  5. [BZOJ 1076][SCOI2008]奖励关(期望+状压Dp)
  6. Hulu兰华峰:专注平衡用户体验和成本
  7. SAP Commerce Extension Module
  8. lucene创建索引_Lucene概述第一部分:创建索引
  9. [hadoop] kettle spoon 基础使用 (txt 内容抽取到excel中)
  10. java微信服务商支付,Java 微信支付之APP支付服务端 (二)
  11. 玩游戏提示计算机性能过低,如果玩游戏的fps低怎么办?八个问题和九个解决方案...
  12. 威联通架设php网站_如何架设PHP服务器
  13. php 查询 判断 语句,关于php的判断语句
  14. 算法(三):图解广度优先搜索算法
  15. 乘2取整法_关于十进制小数转二进制是“乘2取整,顺序排列”,请问为什么要这么做?这样做有什么根据?最好举上例子...
  16. HDU-6396-Swordsman(文件输入+优先队列)
  17. ubuntu12.04/14.04/16.04 安装搜狗输入法 解决shift按键不能切换英文输入
  18. Java随机获取男主角 女主角名字
  19. 图片base64编码的前端展示及后端解码,编码
  20. torch.bmm() 与 torch.matmul()

热门文章

  1. Codeforces 32C.Flea
  2. 编码器如何推流给虎牙直播平台
  3. 山型组合数c语言,(人教版)高中数学选修2-3课件:组合与组合数公式自主学习...
  4. zTree简单暴力修改图标样式
  5. [研一上]人脸属性迁移文献梳理(1)
  6. Java里用Frame框架写流星雨
  7. html文件上传协议,模拟HTML表单上传文件(RFC 1867)
  8. SDUT最短路径问题 1867————最短路
  9. 解决sudo: no valid sudoers sources found, quitting
  10. 【Chapter 1】架构的结构