【课设生成器】我做了一个代码生成器

一、什么是代码生成器

我是一个已经毕业的学长,大三发现定做课程设计,可以帮自己赚取生活费,又巩固了基础知识,可以说是自身双赢了。在大四实现完全经济独立。但工作了就没什么精力做课设了,如果你对生成器感兴趣,或者想在学习的状态下赚一些零花钱,不妨通过以下视频和文章了解一下。

原本是每个定做的项目都要通过手写来实现,后来做了这个代码生成器,90%的C/C++Javaweb/Javaswing/C# + Mysql/SqlServer课设,都可以通过简单的配置,10分钟就可以完成!而且生成的代码功能已经很全面了,包含了可以配置的增删改查、登陆注册、权限、模糊查询、排序等。
在这里插入图片描述

0.视频介绍

B站演示视频:https://www.bilibili.com/video/BV14q4y137Pa?spm_id_from=333.999.0.0

我做了一个课程设计代码生成器,一键生成C、数据结构、C#、Java、数据库课设

1.做生成器的初衷

我们定做课设,内容包括C语言 C++面向对象 还有C#管理系统 JavaSwing JavaWeb系统,数据库课设,做多了以后,发现我们无非就是在做各种管理系统,他们都离不开增删改查,内容本质上来说都是一样的。而程序最擅长的就是重复性工作,有没有办法做个生成器来帮我们写代码呢?

我们只要做简单的设置,就能自动生成一个功能齐全的系统!

这样,定做课设的成本就大幅降低了,出价也可以变得更便宜!

2.生成器的功能

进行一些简单的配置,然后,保存并点击生成按钮,就OK了 !,下图是配置C语言的例子

例子1:学生信息管理系统,功能要求:对学生信息进行增删改查,可以按照名称、年龄、性别等条件查询,支持多级查询(比如年龄在某个区间且性别为男),根据姓名、年龄排序、信息保存到文件并可查看读取
在这里插入图片描述
例子2:航空公司运输记录和运费计算系统,运费自动计算,重量小于15免运费,15-25:12元每公斤,25-48:12每公斤,48-80:20每公斤,大于80:30每公斤。

那我们可以在默认值的一栏填上三则运算表达式。

在这里插入图片描述
生成结果:一共5种版本,自由选择复制。
在这里插入图片描述

Java、C#生成
C#和java的生成里面,支持一次配置,自由生成
C# / Javaswing / Javaweb / javaweb2(样式2)和两种数据库自由搭配!

生成的系统,只要导入即可,无需再修改源码和创建项目!真正的做到了一键生成所有内容
在这里插入图片描述
生成的内容示例(Java,Java的有idea版本和eclipse版本,C#的是用Visual Stdio运行的),只要将sql文件导入即可,mysql或者sqlserver脚本都会生成可以在系统中配置更改。还有数据库设计文档也一并生成了!

生成的Java内容示例:
在这里插入图片描述
生成的文档:
在这里插入图片描述

4.资源内容

到目前为止
代码生成器已经处于比较成熟的阶段了
要学会使用它
你只要看懂我视频的设计就足够了

这个系统自带很多以前定做的案例
不知道看完视频的你有没有自己的想法呢

资源包括:代码生成器+现有源码、毕设、论文 ,和代码生成器中的已经配置好的案例 一共200+项目(C、C++、C#、java、数据库)

二、代码生成器的使用

如果你不会用 ,我会远程教你启动,10几分钟即可。

接下来就说说这个生成器吧,它本身就是一个Java做的系统,为了方便操作,我们特地做了web界面。

最终我把它打包成了这几个文件启动也非常的简单:
1.双击我写的这个bat脚本
2.在浏览器访问localhost就可以访问啦

其中MY_AUTO_APP ,当你生成了一个Java \ C# 语言程序时,他会放在这个文件夹
在这里插入图片描述

1.文件目录介绍

config:包含一些系统的配置文件,比如这个系统的启动端口,连接的数据库
target:程序的主体(jar文件)
bat :两个bat文件都可以用来启动这个项目用的
其中start-service就是服务方式启动,缺点是双击后没有反应,优点是后台会一直启动。
start-terminal(推荐)是控制台启动,双击后弹出一个控制台黑框框,关掉控制台后系统就关掉了

2.启动系统

双击start-terminal.bat启动系统了,启动完成后,浏览器访问localhost

3.使用教程

基本的使用呢,我的视频都已经介绍了
下面介绍一些系统相关配置的注意事项
还有系统的一些便捷功能
避免生成的系统出现报错问题。

3.1界面

除了代码生成器这个模块,其他的功能没必要去管他
(这些就是历史原因了哈哈,本来想做一个网站的上线的…)
在这里插入图片描述

3.2 生成

在新增或者修改项目后,要记得保存,保存后下次可以复用

在这里插入图片描述

3.3 配置项

为了更好的发掘生成器的功能,我们可以灵活的运用配置项的功能。

C/C++属性配置示例:
在这里插入图片描述
C# / Javas程序配置示例:
在这里插入图片描述

通用配置
  • 命名 :系统、对象等命名时候,请避免使用特殊字符:# ¥ % & ^ ) - = + : " ' } ]【】~!? . , < > / 、

  • 中文名 用于对象名或属性名的描述,这样生成的系统注释才会齐全。例:管理员

  • 是否查询 增删改查的查找功能中,如果查询设为【是】,则该属性会作为查询条件,例:可以通过姓名来查找学生

  • 是否统计 系统查询功能中,对于查出的数据会进行自动统计,例:每天的营业额设为统计,将自动对查询出来的数据求和

  • 是否平均 系统查询功能中,对于查出的数据会进行自动平均,例:学生身高设为平均,将自动显示平均身高

  • 更新页显示 修改/更新的时候,这个字段显示,例:我想让学生学号不可修改,我就可以设为否,默认是否

  • 可更新 是否可以更新这个字段,如果设为否,C#和Java 将会设为不可修改
    在这里插入图片描述

  • 字段唯一 比如学号、身份证号码,他们是不会重复的字段,应该设为字段唯一。

  • 数据类型 C/C++的数据类型为char的时候,请在属性名后面加上长度,java和c#则不需要添加后缀[n],n表示字符数组长度
    在这里插入图片描述

  • 最大长度 是C#和Java才有的配置,只有数据类型是String才生效。类似于c语言属性名的后缀,表示这个字段最长长度,一般用默认的255即可

  • 不为空 必填,例如:姓名为必填项

  • 配置下拉框 当下拉框的有值的时候,输入框会变成自动下拉框。例如:性别为 男、女

  • 默认值 新增的时候,默认会给这个属性赋值,在C语言和其他语言中有所不同,要注意。
    例1:【字符串】例如我想名族默认是汉族:那么要填"汉族",要加双引号,类似于string family = “汉族”;填的是 = 后面的内容
    例2:【数字】数量默认是100:填100
    例3:【时间】窗体生成分为Java和C#窗体,在java和C#中都有时间类型,Java的默认时间是 new Date(),而C#的为 DateTime.Now.ToString() ,这时为了统一配置,我用通配符来代替他们。例如我要设默认时间为当前时间,则填{time.now}(这是我自己制定的规则),生成的时候,他们会判断这是java、C#项目来自动设置默认值。

  • 外键
    这一个内容要单独理解,配置简单,但是功能比较多,拿下图的学生成绩管理系统来说:
    前提是我们已经添加了学生:Student对象和课程:Course对象,现在添加这个成绩对象
    1、 看下图,课程和学生对应的外键已经填上了内容,这个意思指的是,学生成绩管理系统必须先添加学生和课程,才能添加成绩,没有学生和课程,哪来的成绩对吧?
    2、 自动设置权限,这个学生,如果【是登陆用户】,那么学生登陆后,是只能查看自己的成绩的,这个用处很多,很重要。例如:借阅系统中,我们希望读者只能看到自己的借阅记录。
    3、 便利的查询,在C#和Java中的查询框是可以设置为下拉框的,以下例子中,因为课程和学生都是外键而且他们是查询条件,所以生成的成绩管理系统,在查成绩的时候,可以通过下拉框来选择查询某个学生、课程的成绩。
    在这里插入图片描述
    在这里插入图片描述

  • 21
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
下面是三层电梯控制器的Verilog代码和测试台代码: ``` module elevator_controller ( input clk, // 时钟输入 input reset, // 复位输入 input [1:0] cur_floor, // 当前电梯所在楼层 input [1:0] dest_floor, // 电梯目标楼层 output [1:0] control // 电梯控制信号 ); // 状态定义 parameter IDLE = 2'b00; // 空闲状态 parameter UP = 2'b01; // 上升状态 parameter DOWN = 2'b10; // 下降状态 // 状态寄存器 reg [1:0] state; // 目标楼层寄存器 reg [1:0] target_floor; always @(posedge clk, posedge reset) begin if (reset) begin state <= IDLE; target_floor <= 0; end else begin case (state) IDLE: if (dest_floor != cur_floor) begin if (dest_floor > cur_floor) begin state <= UP; end else begin state <= DOWN; end target_floor <= dest_floor; end UP: if (cur_floor == target_floor) begin state <= IDLE; target_floor <= 0; end else if (cur_floor > target_floor) begin state <= DOWN; target_floor <= cur_floor; end DOWN: if (cur_floor == target_floor) begin state <= IDLE; target_floor <= 0; end else if (cur_floor < target_floor) begin state <= UP; target_floor <= cur_floor; end endcase end end // 电梯控制信号输出 assign control = (state == IDLE) ? 2'b00 : (state == UP) ? 2'b01 : 2'b10; endmodule ``` ``` module elevator_controller_tb(); // 输入和输出信号 reg clk, reset; reg [1:0] cur_floor, dest_floor; wire [1:0] control; // 实例化电梯控制器 elevator_controller dut ( .clk(clk), .reset(reset), .cur_floor(cur_floor), .dest_floor(dest_floor), .control(control) ); // 时钟信号 always begin clk = 0; #5; clk = 1; #5; end // 复位信号 initial begin reset = 1; #10; reset = 0; end // 测试用例1 initial begin cur_floor = 0; dest_floor = 0; #20; cur_floor = 1; dest_floor = 2; #20; cur_floor = 2; dest_floor = 1; #20; cur_floor = 1; dest_floor = 0; #20; $finish; end // 测试用例2 initial begin cur_floor = 2; dest_floor = 2; #20; cur_floor = 1; dest_floor = 0; #20; cur_floor = 0; dest_floor = 2; #20; cur_floor = 1; dest_floor = 2; #20; $finish; end endmodule ``` 测试台代码中,我们实例化了一个三层电梯控制器,并且生成一个时钟信号和一个复位信号。然后,我们定义了两个测试用例。在每个测试用例中,我们通过改变当前楼层和目标楼层的值来测试电梯控制器的行为。最后,我们使用$finish命令停止仿真。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学长敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值