Giter Club home page Giter Club logo

whalemarket's Introduction

Whale Market - Winter Code

From Jiacai Cui

Email: [email protected]

1 Introduction

pic01

详细内容见:https://cui-jiacai.gitbook.io/whale-market/

pic19

2 Tutorial

2.1 功能要求总览

  • 用户功能:
    • 登陆、注册、注销
    • 买家功能
      • 查看、搜索商品
      • 购买商品
    • 卖家功能
      • 商品的发布、下架
      • 查看已发布商品
      • 修改商品信息
    • 查看历史订单(只能查看自己的订单)
    • 个人信息查看、修改
  • 管理员功能
    • 登陆、注销
    • 查看、搜索、下架商品
    • 查看所有订单
    • 查看、删除用户
  • 系统功能
    • 程序结束后再次打开程序,原本的数据不能丢失

2.2 具体功能示例

以下部分取自2021春南大程设实验课程ppt,可做基本功能的参照使用。

2.2.1 管理员功能简介

pic02

pic03

pic04

pic05

pic06

2.2.2 用户功能简介

pic07

pic08

pic09

pic10

pic11

pic12

2.2.3 数据存储示例

pic13

pic14

pic15

pic16

2.3 其他要求

pic17

2.4 阶段划分

阶段 任务
Phase1(为期7天) 设计项目,用ppt形式展示项目整体的思路和实现上的想法,并初步实现部分功能
Phase2(为期7天) 完成基本功能的实现,保证功能无错误以及程序具有一定的鲁棒性和用户友好的界面
Phase3(为期7天) 自行设计拓展功能,可以参考某宝的功能(比如与商家留言沟通,商品打分,GUI界面等等),为自己的软件设计一个用户手册。
Phase4(选做) 阅读参考代码,学习多模块项目的设计,以及一些代码设计上的巧妙之处。

为了使代码具有教学意义,我写本项目的时候覆盖到了宏定义、文件包含、函数指针、文件读写、模块通信等许多在程设基础课上一带而过的内容,还是值得一看的。

3 Reference

参考代码仓库地址:https://github.com/201220014/WhaleMarket

框架代码仓库地址:https://github.com/201220014/WhaleMarket-Framework

3.1 关于参考代码的效果

这是参考代码在命令行运行的效果:

pic18

3.2 对于参考代码的要求

在前2个阶段尽量别看,自己动手,从0开始

到最后一个阶段的时候,可以比较一下参考实现和自己的实现之间有何区别,又有何优劣之处,以及思考一下为什么我会这样设计,大抵是会有所启发的。

whalemarket's People

Contributors

201220014 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

whalemarket's Issues

关于买家充值功能

在您的功能设计里,买家并没有给自己充值的功能,导致新注册用户的购买操作总是失败。

对项目的一些疑问

首先,谢谢熊提供的tutorial,您真是电子佛祖 :)。
然后有几个问题,可能有些找茬吧,但也确实是我在完成项目过程中的疑惑:

小bug

在src/menu/menu.c的menu()函数的实现里,你用到了atoi()函数把用户输入的字符串转换成整数,但atoi()函数不能检查用户输入的字符串是否为整数。e.g.,如果我输入1,跳出while循环;如果我输入1st或者1aaa这样的字符串,依然能跳出while循环。
image

不只是这里会出现这种非法输入的问题,像涉及到用户余额、商品价格这种浮点数格式的数据,像上面那样不合法的输入也会被视为合法数据。

另外为啥用scanf()而不是fgets()接收用户的输入,它不能接收空格,这样我输入用户地址、商品描述这些信息时,输入里有个空格就报错输入非法。
image

代码的安全性

这里主要说的是src/interface/userInterface.c中定义的curUser全局变量(还有一个curGood ,同理),它在头文件include/interface/interface.h中被声明,那所有包含了这个头文件的文件都可以对这个全局变量进行修改,不管是否应该这么做,比如在src/main.c就可以这样。

我看过一些博客都不推荐这么做,大致理由如上所述。如果不用全局变量记录当前用户的话,应该就只能用函数来传递参数了,但这么做,可能就无法使用HANDLE型的函数指针数组(不同函数的参数应该很难做到统一),代码就会变得比较冗余。那对于这种可能引起的安全性问题,你有什么好的解决方案吗?

include后面的文件路径的写法

还是以src/menu/menu.c这个文件为例,如果在采用你给出的项目框架的前提下,要包含menu.h这个头文件,可以采用以下两种写法:

#include "menu/menu.h" 
#include "../../include/menu/menu.h" 

第一种写法是你给出的,很简洁;第二种是我在做这个项目的时候写的,它等于就是说,当编译menu.c时,先返回上一级文件夹,再返回上一级文件夹,最后定位到include/menu/menu.h。看着确实很画蛇添足,但在我自己的项目里不按照第二种写法,根本通不过编译(找不到路径)。我问过GPT这个问题,可能是我没有描述好,它给出的回答也是错误的。请问你可以解释一下这个路径应该怎么写,或者提供一些关于如何写“include后面的文件路径”的官方资料?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.