这个是我本科时的毕业项目, 做的是一个以word在线阅读的核心技术的作业管理系统。功能比较简单,就是老师布置作业(教师端),学生完成作业提交(用户端)的这么一件事。其核心功能就是word在线阅读, 将word(后缀为.doc和docx)文档上传到服务器, 然后转换成html格式 这样就可以实现在线啊阅读。当然大学刚毕业那会儿, 对整体项目掌握的很不好, 技术也不是很成熟,这个项目的很多功能也没完成,现在再去看以前的代码,倒是一种蛮好笑的事。
功能比较简单(但全部功能至今都没完成), 主要分为这几块:
- 文档阅读: 用户可以上传
word
文档,这样就可以在这个项目直阅读(主要即使将doc
转换成html
格式), 同时支持搜索和评论, 下载等; - 作业布置: 科目的老师对负责的班级布置作业(该功能做完成基础的,没有全部完成), 支持上传材料文件;
- 学生个人中心: 通过登陆(原本设想是, 学生不可注册, 只能通过学号登录, 这块做的不好),可以看到自己上传的文档, 老师布置的作业,以及自己提交作业情况;
- 作业评分: 也是教师端的功能, 教师在学阅读学生上传的
doc
文档, 之后可以评分,或者评语(这个在学生端是看得到的)。 - 辅导员管理: 就是管理班级以及学生;
- 科目管理: 就是给每个班级每个学期安排科目和科任教师。
- 管理员部分: 就是分配辅导员的, 并为其安排辅导员的。
关于科目, 学期课程, 科任教师,这个功能压根就没想做 后来指导老师这么要救了, 我就做了,记得逻辑较为复杂,而且还大改了数据库结构, 我可是薅了很多头发, 吐了半斤血才设计出来。(真想把那指导老师抓起来打 哈哈 不能那么暴力)
做这个项目的时候,本来的做法是将课本的案例拿来做一遍,然后再扩展(用的还是三层架构,总之是很老的技术, 在web届都不知道被淘汰多久了), 后来做到一半听好友讲有个ajax技术, 后来就去了解了,之后就逐渐去了解了JQery
, 异步更新等(没错,大学学的东西,都是渣渣, 很多技术都是从大神那听说的,之后才去了解从此走上了码农这条不归路)。
项目的雏形就是典型的asp.net
三层架构,从这个项目还是可以看出来的,后来引入了ajax
, 就将前后端进行分离, 之后又有点借鉴mvc
的思想, 所以项目就变得很不伦不类(太多值得吐槽的地方)。
关于word
转html
这项技术是完全抄网上的案例, 但实现的效果不好, 很多word文件出现乱码或者转换后与原来偏差太大的问题。我不知道asp.net有没有像laravel
那样有composer
那种包管理工具,以至于自己想要什么功能,只能百度案例,然后将源码复制过来修改修改就能用了。(关于类似laravel
那种需要什么功能,直接下载插件的做法,那时候真不知道,连我的指导老师也不知道,其实我对asp.net
了解的太少了,后来就转PHP
阵营了,PHP大法好!!!)。
关于前端(全班做web项目的同学 估计就我是将前后端分离的, 这里自豪一下), 那时候还是用极为传统的静态网页+JQ实现动态的做法, 根本就不知道组件化这么个东西(这个vue
做得很好,我也是毕业很久指导才指导这么个东西), 也更不知道npm
和webpack
这些流行的前端技术(好吧,大学感觉活在解放前, 这么些名词都是在毕业后很久才听说的,惭愧)。
关于代码,那时候跟友人讨论利用中文编程(就是类似利用易语言
那种), 就想,我的项目也用中文编码吧(因为我英语很渣,所以将左右方法和类名都用中文命名), 我贴出一段代码给大家看看:
#region 打开数据库连接
private void 打开()
{
if (连接 == null)
{
连接 = new SqlConnection(ConfigurationManager.AppSettings["连接字段"]);
}
try
{
if (连接.State == System.Data.ConnectionState.Closed)
连接.Open();
}
catch (SqlException E)
{
this.关闭();
throw new Exception(E.Message);
}
}
...
#endregion
#region 执行参数命令文本
public DataSet 执行参数命令文本(string 参数名, SqlParameter[] 参数, string 表名)
{
SqlDataAdapter 适配器 = 创建适配器(参数名, 参数);
DataSet 资料组 = new DataSet();
适配器.Fill(资料组, 表名);
this.关闭();
return 资料组;
}
#endregion
...
#region 注册会员信息
public int 注册会员(会员管理 管理)
{
SqlParameter[] 参数 ={
数据.输入参数("@昵称",SqlDbType.VarChar,20,管理.昵称),
数据.输入参数("@密码",SqlDbType.VarChar,50,管理.密码),
数据.输入参数("@姓名",SqlDbType.VarChar,20,管理.姓名),
数据.输入参数("@手机号",SqlDbType.VarChar,11,管理.手机号),
数据.输入参数("@班级编号",SqlDbType.Int,0,管理.班级编号)
};
return (数据.执行参数修改("insert into 用户(昵称,密码,头像位置,手机号,班级编号,姓名) values (@昵称,@密码,'../images/userhead/default.jpg',@手机号,@班级编号,@姓名)", 参数));
}
#endregion
后来就后悔了,因为中英文切换太累了!现在看起来蛮搞笑的。
1)继续完善项目未完成的功能(太多功能没完成,我都怀疑我的毕业设计是怎么过的);
2)前端引入vue
技术进行组件化管理;
3)当然不出意外的话,我这辈子可能都不会改这个项目了,因为我已经抛弃了C#
, 投向PHP
阵营(PHP大法好 PHP大法棒!!!)。
关于这个项目,起初是大四的时候(我读的是3+2本科),帮同届的小姐姐指导毕业设计(这里吐槽下那位小姐姐,真不知道她大学四年学了些什么,这么简单的代码都不会!后来干脆就帮她完成了大大大大部分的功能, 哎...现在我开始后悔了,活该自己单身...)!后来在我大四的下学期的时候, 就把这个项目适当改改,拿去参加学校的软件大赛(真不要脸, 拿别人的毕业设计去参赛!!!啦啦啦 打我呀,哈哈,就这么不要脸;再后来,就是大五的时候,轮到自己做毕业设计,就继续把这个项目拿出来改改, 花了四个月时候,加了很多功能,薅很无数头发,吐了N吨血,熬了无数个通宵(其实最后答辩的时候,老师只看论文 对我的项目不感兴趣!)
关于做毕业设计,可能才是我大学时间过得最充实的时刻,学了很对知识,蛮有成就感(一朝入码农, 从此节操视路人)
当然谁感兴趣的话,可以把这个项目继续拿去改改!但是禁止用于商业用途(当然不会有人那么无聊拿那么烂的代码拿去商业用途)。