【橙子日记32】从零开始的毕业设计

这篇博客记录了一个图片类型的作业提交系统开发过程。包括学生提交图片功能、自动打水印、图片识别以及数据库交互。开发过程中遇到了日期类型匹配问题,已解决。最后实现了作业的展示,并规划了后续的系统完善工作,如作业与课程的增删改操作、消息模块和设置模块等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

更新时间:2021年2月17日

今天是作业模块最后一个内容:
图片类型作业:
在这里插入图片描述
这里我们是之前弄好的
文件和图片是一个性质,所以添加作业可以直接公用,只用修改作业类型就可以

现在我们主要是要弄,学生提交图片的功能
为什么要把图片类型作业分来开呢?
1:大部分作业只是一张截图
2:我们要实现自动打水印的功能
3:我们要实现图片自动识别,不能上传差距过大的图片

api:
在这里插入图片描述
进入页面跳转:
在这里插入图片描述
注意,这里我们传过去的是workid,我们后端需要student_id
在这里插入图片描述
提交数据:
在这里插入图片描述
我们后端:

  [HttpPost]
        public async Task<IActionResult> sendImg(string myimg,int id)
        {
            if (myimg != null)
            {
                DateTime dateTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                string filename = Guid.NewGuid().ToString();
                var student_workData = await _student__WorkBll.GetEntities(n => n.id == id).FirstOrDefaultAsync();
                student_workData.is_complete = 1;
                student_workData.student_file_name = filename + ".jpg";
                student_workData.time_complete = dateTime;
                student_workData.work_score = 100;
                student_workData.work_score_time = dateTime;
                Common.SaveImage.ByStringToSave(filename, myimg);
                //if (System.IO.File.Exists("./wwwroot/StudentImage1/陈淳.jpg"))
                //    if (Common.SaveImage.Compare("./wwwroot/StudentImage/" + name + ".jpg", "./wwwroot/StudentImage/陈淳.jpg") > 20)
                //    {
                //        diffImg = "2";
                //    }
                _student__WorkBll.Update(student_workData);
                return Content(JsonFactory.Json(message:"作业提交成功!"));
            }
            else
            {
                return Content(JsonFactory.Json(flag: false, message: "作业提交失败!"));
            }

        }

注释的地方为图片识别功能,目前先留个坑

效果测试:
我们切换教师账号,添加 课程为:前端的一个作业,类型为图片
在这里插入图片描述
在这里插入图片描述
添加作业
后来发现这里出问题了,由于图片类型作业,不需要上传图片!
我们后端改改:

  [HttpPost]
        [Obsolete]
        public IActionResult AddWork([FromServices] IHostingEnvironment env, IFormFile formFile, [FromForm] string work_name, [FromForm] DateTime time_start, [FromForm] DateTime time_end, [FromForm] int curriculum_id)//教师添加作业
        {
            string filename = Guid.NewGuid().ToString() + ".jpg";
            string filepub = Path.Combine(env.WebRootPath, "WorkFiles", filename);//完整目录
            string fileexit = Path.Combine(env.WebRootPath, "WorkFiles");//文件目录名
            if (formFile == null)
            { 
               //文件名:唯一标识号.jpg

                if (!Directory.Exists(fileexit))
                {
                    Directory.CreateDirectory(fileexit);
                }
                using (var stream = new FileStream(filepub, FileMode.Create))
                {
                    formFile.CopyTo(stream);
                }
            }
            work workData = new work();
                workData.curriculum_id = curriculum_id;
                workData.work_name = work_name;
                workData.time_start = time_start;
                workData.time_end = time_end;
                workData.teacher_id = teacherId;
                workData.work_file_name = filename;
                workData.work_file_route = filepub;
                var workDataResult = _workBll.Add(workData);//将作业添加到作业表中
                //要想添加学生课程关系表的话,需要知道学生id,学生id通过该课程id来查找

                var student__Curriculums = _student__CurriculumBll.GetEntities(n => n.curriculum_id == workDataResult.curriculum_id).ToList();
                List<student__work> student__Works = new List<student__work>();
                foreach (var k in student__Curriculums)
                {
                    student__work student__WorkData = new student__work();
                    student__WorkData.is_complete = 0;
                    student__WorkData.time_complete = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                    student__WorkData.student_id = k.id;
                    student__WorkData.work_id = workDataResult.id;
                    student__WorkData.work_score = -1;
                    student__Works.Add(student__WorkData);
                }

                _student__WorkBll.Add(student__Works);
            
            return Content(JsonFactory.Json(message: "作业添加成功!所有课程下的学生已发布作业!"));
        }

在这里插入图片描述
报错
这个问题是数据库的问题,datetime对应的是datetime2类型!!
这个真的是大坑
我们修改数据的时间类型即可解决
在这里插入图片描述
在这里插入图片描述
作业也加进来了
切换学生账号,开始写作业
进入后:
在这里插入图片描述
在这里插入图片描述
选择图片输出水印
在这里插入图片描述
提交
出问题了
由于传输数据太大,无法直接接收对象
我们改改:
在这里插入图片描述
在这里插入图片描述
ok
后端得到数据了,写入进文件夹中:
在这里插入图片描述
在这里插入图片描述
水印也保存了!!
查看数据库:
在这里插入图片描述
ok,完成了!!
还差最后一个东西
就是将数据展示出来:
数据展示:
在这里插入图片描述
效果:
在这里插入图片描述
ok,大功告成!

下一次,弄作业和课程的删除与修改操作

消息模块:这个东西,真的算比较复杂的。。。有点不太想弄下去了!目前没想好这么弄
设置模块:一切从简,就设置一个主题颜色得了
差不多,整个系统正在健全
目前难度最大的:统计模块
这个算真的难受,难度不大,但是极其复杂,涉及超多张表的查询连接处理

差不多,快了,加油!寒假也快过了,距离现在差不多7-8天的样子
我必须要留2到3天给开发环境
那真正弄玩的话,只能留给我5天时间(太难了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值