Skip to content

Musicminion/SJTU-SE2321-Web-Application-Development

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 

Repository files navigation

SJTU-SE2321-Web-Application-Development

互联网应用开发技术 2022春 完结撒花,感谢陪伴~ (^_^)

image

课程仓库列表

  • 注意: 以下仓库仅供学习和参考,禁止用来盈利或者其他商业途径,同时请勿转载!
  • 注意: 复制、下载下面表格仓库的任何内容即代表您同意使用规约(参见仓库使用规约
  • 注意: 书籍封面图片我用的是阿里云的存储桶,所以如果想运行代码的话,或者想要自己也用类似的方法或者代码,需要自行付费存储桶服务。同时,代码里面的图片主机地址和密钥,需要对应的进行修改,如有疑问,请提出issues
  • 效果: 如要查看效果图,请前往: 效果展示
说明 链接地址
后端代码 【后端代码】: https://github.com/Musicminion/eBookBackend
前端代码 【前端代码】: https://github.com/Musicminion/EBook
数据库脚本 【SQL文件】: https://github.com/Musicminion/SJTU-SE2321-Web-Application-Development/tree/main/sql
课件 【PPT】: https://github.com/Musicminion/SJTU-SE2321-Web-Application-Development-PPT
课程样例 【Example】: https://github.com/Musicminion/SJTU-SE2321-Web-Application-Development-Example

答辩回忆录

答辩次数 第一次 [3.26] 第二次 [5.15] 第三次 [6.19] 第四次 [7.9] 平时作业 10次 总分
分数 15 20 22 30 10 97
满分 15 20 25 30 10 100
时间线 约第五周 约第十一周 约第十八周 约第二十一周 约每周都有 答辩结束之后

第一次答辩:

很简单的一次答辩,只需要按照评分标准,几个基本的页面必须要有的,然后要有一个书籍搜索功能,书籍可以在前端把数据写死,然后搜索,难度不大。

第二次答辩:

涉及到数据库,登录的功能、购物车的东西,其实数据库那一部分老师讲的非常的多,就应该少将一点,然后讲Java后端,最后有多的时间讲数据库。数据库只要有一个基本的概念都能做的很好的功能,感觉等到答辩前再做和早就动工做差别不大,没有必要用SQL语句一点一点的搜索,直接用ORM映射,参考老师给的书店样例,基本看一眼就能学会。

第三次答辩:

助教会提问,从这次开始得分就不算简单了,助教会根据演示的功能提问,会包含一些上课讲的,所以上课就该好好听。基本会问分层的功能、用途、接口与实现分离的好处,还有java、JavaScript的差别、抽查一个具体的功能点然后完成解释具体的实现,每个层的功能是否明确。

第四次答辩:

WJS太棒了!!!虽然所有的功能都已经实现了,但是他只要求我演示了两个功能。答辩的时候问的一些也是课程上面讲过的,比较基础的问题,有一个稍微比较难的我没答上了,助教还给我耐心的讲,还安慰我说不要担心,这个可能很多人都答不上来的。当然也没有扣分!好耶!!完结撒花,感谢陪伴!

友情提醒

  • 尽早开始做,不要最后一天答辩前开始通宵做大作业,健康第一hhh
  • 数据库部分老师讲的很多,其实数据库讲一半就可以开始做自己的了
  • 多看老师的官方的样例,看着基本就能学会ORM映射,不要等老师讲完再做,因为讲完可能也不会做
  • 老师讲了很多,当然也有很大一部分知识的在于自学,由于课时限制,chp不可能面面俱到讲完
  • 软工大二下压力很大,当然再次强调健康第一!不要通宵!合理安排时间!当然也不要做copyCat
  • 环境不要乱倒腾,不然答辩前什么环境出问题了程序都不能演示
  • 不是做完了所有功能就能满分的,助教在第三次、第四次的时候会进行提问!包括但不限于上课教学的内容
  • 平时作业10次基本都是交了就有分,为什么还是有人忘记提交作业了......
  • 前端和后端的代码加上一共大约10000行,前端7000+左右,后端2000+左右,很多样式表都是自己手写的,实属编写不易,所以请勿直接抄袭

仓库使用规约

  1. 任何情况下,不允许在其他网站(例如CSDN、Gitee等第三方网站)转载,
  2. 任何情况下,特别针对课件PPT,不允许转载/转售第三方,例如百度文库
  3. 禁止商用销售,并且下载的内容仅允许自己代码学习使用
  4. 不允许直接抄袭本开源的代码,并且作为个人的作品提交为自己的大作业
  5. 不要在此仓库的基础上进行二次开发,然后作为商业用途
  6. 有任何Bug、互联网课程答辩方面的疑问,功能不会实现的,欢迎提出 issues,看到了一定会回复的!
  7. 想问我助教的评分习惯之类的,请邮件[看我主页sjtu邮箱],如果我遇到过我一定会比较详细的回复一下需要注意的地方

功能难点

理解stateprops

  • state是状态,表示在页面可能会动态刷新的元素
  • props是只读的属性,一般是来源于父组件,然后呈现出来的死数据
  • 写组件代码之前,一定要思考是用state,还是props,比如书籍展示卡片就是props,页面计价器就是state
  • 函数setState是设置状态,这个过程是异步的,也就是说这个函数后面,不能利用 this.state.XXX 获取刚才更新的state数据
  • 关于把一个 js 对象或者数组作为 state,或者把state里面的一个数组增加元素、删除元素,可以自行百度

前端后端连通

  • 前端是React,把所有的请求汇集到Ajax的POST或者Get请求
  • 后端的@RequsetMaping负责监听端点API
  • 基本参考老师下发的bookstore-All样例,里面的登录样例,然后就能跑通前后端
  • 顺便说一句,跑通前后端连通的第一次真的很惊喜!

数据库设计

  • 请一定想好数据库的设计,在后端代码开始之前,比如某一列的名字、类型
  • 否则一旦想要修改某一列的名字或者属性,会很麻烦!

前端计价器

  • 例如想要在前端实现一个计价器,用户调整数量,总价对应变化,这是个考验state的绝佳位置!
  • 在购物车结算页面,有不同商品的行,调整不同行的商品数量,对应的小计、总计金额会变,这个是考验父子组件通讯、state的绝佳位置!

前端表格

  • 表格是个好东西,用户管理要用表格,商品查询、订单展示都要用表格
  • 表格数据要来自后端,具体参考Antdesign的官方API,这个要花比较多的时间捣鼓。
  • 不要想着一步登天,上来就用函数组件或者Antdesign的pro-Table,pro的还是有点花时间学的,除非本来技术比较精湛
  • 表格写会了,基本上大作业80-90%就会了,毕竟大作业十有八九离不开这个的表格
  • 分页值得一学,虽然不要求,有前端和后端分页的区别可能会考

后端下订单

  • 下订单的时候,涉及到的操作是很多的
  • 书籍的销量、库存要变
  • 订单表格、订单项目表格对应的数据需要改变
  • 后端下单前要检查库存,库存够再下单
  • 整体作为一个事务提交,便于回滚

后端统计

  • 考验你SQL基本功的时候到了
  • 首先筛选时间,要指定某个时间段的范围
  • 然后 GroupBy 用户,sum(XXX)进行求和,统计金额
  • 不会级联的话,就用服务层进行汇总数据
  • 基本上把第一个统计热销榜做出来了,后面的功能就非常简单了
  • 时间戳Date类型的比较可能需要多调试一下,具体可以参考我的代码 难点之统计实现

About

SJTU 互联网应用开发技术 课程大作业

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published