目录
- /**
- * +----------------------------------------------------------------------
- * | 应用公共文件
- * +----------------------------------------------------------------------
- * .::::.
- * .::::::::. | Author: xxx
- * ::::::::::: | EMAIL: XXXXXXXXXX@qq.com
- * ..:::::::::::' | EMAIL: XXXXXXXXXX
- * '::::::::::::' | WECHAT: xxx
- * .:::::::::: | DATETIME: 20XX/XX/XX
- * '::::::::::::::..
- * ..::::::::::::.
- * ``::::::::::::::::
- * ::::``:::::::::' .:::.
- * ::::' ':::::' .::::::::.
- * .::::' :::: .:::::::'::::.
- * .:::' ::::: .:::::::::' ':::::.
- * .::' :::::.:::::::::' ':::::.
- * .::' ::::::::::::::' ``::::.
- * ...::: ::::::::::::' ``::.
- * ```` ':. ':::::::::' ::::..
- * '.:::::' ':'````..
- * +----------------------------------------------------------------------
- */
-
- // 定义插件目录
- define('ADDON_PATH', Env::get('root_path') . 'addons' . DIRECTORY_SEPARATOR);
-
- // 闭包自动处理插件钩子业务
- Hook::add('app_init', function () {
- // 获取开关
- $autoload = true;
- // 配置自动加载时直接返回
- if ($autoload) return;
- // 非正时表示后台接管插件业务
- // 当debug时不缓存配置
- $config = config('app_debug') ? [] : (array)cache('addons');
- if (empty($config)) {
- //读取插件通过文件夹的形式来读取
- $hooks = get_addon_list();
- foreach ($hooks as $hook) {
- //是否开启该插件,只有开启的插件才加载
- if($hook['status']==1)
- $config['hooks'][$hook['name']] = explode(',', $hook['addons']);
- }
- cache('addons', $config);
- }
- config('addons', $config);
- });
-
- /**
- * 过滤数组元素前后空格 (支持多维数组)
- * @param $array 要过滤的数组
- * @return array|string
- */
- function trim_array_element($array){
- if(!is_array($array))
- return trim($array);
- return array_map('trim_array_element',$array);
- }
-
- /**
- * 将数据库中查出的列表以指定的 值作为数组的键名,并以另一个值作为键值
- * @param $arr
- * @param $key_name
- * @return array
- */
- function convert_arr_kv($arr,$key_name,$value){
- $arr2 = array();
- foreach($arr as $key => $val){
- $arr2[$val[$key_name]] = $val[$value];
- }
- return $arr2;
- }
-
- /**
- * 验证输入的邮件地址是否合法
- */
- function is_email($user_email)
- {
- $chars = "/^([a-z0-9+_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,6}\$/i";
- if (strpos($user_email, '@') !== false && strpos($user_email, '.') !== false) {
- if (preg_match($chars, $user_email)) {
- return true;
- } else {
- return false;
- }
- } else {
- return false;
- }
- }
-
- /**
- * 验证输入的手机号码是否合法
- */
- function is_mobile_phone($mobile_phone)
- {
- $chars = "/^13[0-9]{1}[0-9]{8}$|15[0-9]{1}[0-9]{8}$|18[0-9]{1}[0-9]{8}$|17[0-9]{1}[0-9]{8}$/";
- if (preg_match($chars, $mobile_phone)) {
- return true;
- }
- return false;
- }
-
- /**
- * 邮件发送
- * @param $to 接收人
- * @param string $subject 邮件标题
- * @param string $content 邮件内容(html模板渲染后的内容)
- * @throws Exception
- * @throws phpmailerException
- */
- function send_email($to,$subject='',$content=''){
- $mail = new PHPMailer\PHPMailer\PHPMailer();
- $arr = Db::name('config')->where('inc_type','smtp')->select();
- $config = convert_arr_kv($arr,'name','value');
-
- $mail->CharSet = 'UTF-8'; //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
- $mail->isSMTP();
- $mail->SMTPDebug = 0;
- //调试输出格式
- //$mail->Debugoutput = 'html';
- //smtp服务器
- $mail->Host = $config['smtp_server'];
- //端口 - likely to be 25, 465 or 587
- $mail->Port = $config['smtp_port'];
-
- if($mail->Port == '465') {
- $mail->SMTPSecure = 'ssl';
- }// 使用安全协议
- //Whether to use SMTP authentication
- $mail->SMTPAuth = true;
- //发送邮箱
- $mail->Username = $config['smtp_user'];
- //密码
- $mail->Password = $config['smtp_pwd'];
- //Set who the message is to be sent from
- $mail->setFrom($config['smtp_user'],$config['email_id']);
- //回复地址
- //$mail->addReplyTo('replyto@example.com', 'First Last');
- //接收邮件方
- if(is_array($to)){
- foreach ($to as $v){
- $mail->addAddress($v);
- }
- }else{
- $mail->addAddress($to);
- }
-
- $mail->isHTML(true);// send as HTML
- //标题
- $mail->Subject = $subject;
- //HTML内容转换
- $mail->msgHTML($content);
- return $mail->send();
- }
-
- function string2array($info) {
- if($info == '') return array();
- eval("\$r = $info;");
- return $r;
- }
- function array2string($info) {
- if($info == '') return '';
- if(!is_array($info)){
- $string = stripslashes($info);
- }
- foreach($info as $key => $val){
- $string[$key] = stripslashes($val);
- }
- $setup = var_export($string, TRUE);
- return $setup;
- }
- //文本域中换行标签输出
- function textareaBr($info) {
- $info = str_replace("\r\n","
",$info); - return $info;
- }
-
- // 无限分类-栏目
- function tree_cate($cate , $lefthtml = '|— ' , $pid=0 , $lvl=0 ){
- $arr=array();
- foreach ($cate as $v){
- if($v['parentid']==$pid){
- $v['lvl']=$lvl + 1;
- $v['lefthtml']=str_repeat($lefthtml,$lvl);
- $v['lcatname']=$v['lefthtml'].$v['catname'];
- $arr[]=$v;
- $arr= array_merge($arr,tree_cate($cate,$lefthtml,$v['id'], $lvl+1 ));
- }
- }
- return $arr;
- }
-
- //组合多维数组
- function unlimitedForLayer ($cate, $name = 'sub', $pid = 0) {
- $arr = array();
- foreach ($cate as $v) {
- if ($v['parentid'] == $pid) {
- $v[$name] = unlimitedForLayer($cate, $name, $v['id']);
- $v['url'] = getUrl($v);
- $arr[] = $v;
- }
-
- }
- return $arr;
- }
-
- //传递一个父级分类ID返回当前子分类
- function getChildsOn ($cate, $pid) {
- $arr = array();
- foreach ($cate as $v) {
- if ($v['parentid'] == $pid) {
- $v['sub'] = getChilds($cate, $v['id']);
- $v['url'] = getUrl($v);
- $arr[] = $v;
- }
- }
- return $arr;
- }
-
- //传递一个父级分类ID返回所有子分类
- function getChilds ($cate, $pid) {
- $arr = array();
- foreach ($cate as $v) {
- if ($v['parentid'] == $pid) {
- $v['url'] = getUrl($v);
- $arr[] = $v;
- $arr = array_merge($arr, getChilds($cate, $v['id']));
- }
- }
- return $arr;
- }
-
- //传递一个父级分类ID返回所有子分类ID
- function getChildsId ($cate, $pid) {
- $arr = [];
- foreach ($cate as $v) {
- if ($v['parentid'] == $pid) {
- $arr[] = $v;
- $arr = array_merge($arr, getChildsId($cate, $v['id']));
- }
- }
- return $arr;
- }
- //格式化分类数组为字符串
- function getChildsIdStr($ids,$pid=''){
- $result='';
- foreach ($ids as $k=>$v){
- $result.=$v['id'].',';
- }
- if($pid){
- $result = $pid.','.$result;
- }
- $result = rtrim($result,',');
- return $result;
- }
-
- //传递一个子分类ID返回所有的父级分类
- function getParents ($cate, $id) {
- $arr = array();
- foreach ($cate as $v) {
- if ($v['id'] == $id) {
- $arr[] = $v;
- $arr = array_merge(getParents($cate, $v['parentid']), $arr);
- }
- }
- return $arr;
- }
-
- //URL设置
- function getUrl($v){
- //判断是否直接跳转
- if(trim($v['url'])!==''){
-
- }else{
- //判断是否跳转到下级栏目
- if($v['is_next']==1){
- $is_next = Db::name('cate')->where('parentid',$v['id'])->order('sort ASC,id DESC')->find();
- if($is_next){
- $v['url'] = getUrl($is_next);
- }
- }else{
- $moduleurl = Db::name('module')->where('id',$v['moduleid'])->value('name');
- if($v['catdir']){
- $v['url'] = url(request()->module().'/'.$v['catdir'].'/index', 'catId='.$v['id']);
- }else{
- $v['url'] = url(request()->module().'/'.$moduleurl.'/index', 'catId='.$v['id']);
- }
- }
- }
- return $v['url'];
- }
-
- //获取详情URL
- function getShowUrl($v){
- if($v){
- //$home_rote[''.$v['catdir'].'-:catId/:id'] = 'home/'.$v['catdir'].'/index';
- $cate = Db::name('cate')->field('id,catdir,moduleid')->where('id',$v['catid'])->find();
- $moduleurl = Db::name('module')->where('id',$cate['moduleid'])->value('name');
- if($cate['catdir']){
- $url = url(request()->module().'/'.$cate['catdir'].'/info', ['catId'=>$cate['id'],'id'=>$v['id']]);
- }else{
- $url = url(request()->module().'/'.$moduleurl.'/info', ['catId'=>$cate['id'],'id'=>$v['id']] );
- }
- }
- return $url;
- }
-
- //获取所有模版
- function getTemplate(){
- //查找设置的模版
- $system = Db::name('system')->where('id',1)->find();
- $path = './template/home/'.$system['template'].'/'.$system['html'].'/';
- $tpl['list'] = get_file_folder_List($path , 2, '*_list*');
- $tpl['show'] = get_file_folder_List($path , 2, '*_show*');
- return $tpl;
- }
-
- /**
- * 获取文件目录列表
- * @param string $pathname 路径
- * @param integer $fileFlag 文件列表 0所有文件列表,1只读文件夹,2是只读文件(不包含文件夹)
- * @param string $pathname 路径
- * @return array
- */
- function get_file_folder_List($pathname,$fileFlag = 0, $pattern='*') {
- $fileArray = array();
- $pathname = rtrim($pathname,'/') . '/';
- $list = glob($pathname.$pattern);
- foreach ($list as $i => $file) {
- switch ($fileFlag) {
- case 0:
- $fileArray[]=basename($file);
- break;
- case 1:
- if (is_dir($file)) {
- $fileArray[]=basename($file);
- }
- break;
-
- case 2:
- if (is_file($file)) {
- $fileArray[]=basename($file);
- }
- break;
-
- default:
- break;
- }
- }
-
- return $fileArray;
- }
-
- function changeFields($list,$moduleid){
- $info = [];
- foreach ($list as $k=>$v){
- $url = getShowUrl($v);
- $list[$k] = changeField($v,$moduleid);
- $info[$k] = $list[$k];//定义中间变量防止报错
- $info[$k]['url'] = $url;
- }
- return $info;
- }
- function changefield($info,$moduleid){
- $fields = Db::name('field')->where('moduleid','=',$moduleid)->select();
- foreach ($fields as $k=>$v){
- $field = $v['field'];
- if($info[$field]){
- switch ($v['type'])
- {
- case 'textarea'://多行文本
- break;
- case 'editor'://编辑器
- $info[$field]=($info[$field]);
- break;
- case 'select'://下拉列表
- break;
- case 'radio'://单选按钮
- break;
- case 'checkbox'://复选框
- $info[$field]=explode(',',$info[$field]);
- break;
- case 'images'://多张图片
- $info[$field]=json_decode($info[$field],true);
- break;
- default:
- }
- }
-
- }
-
- return $info;
- }
-
- /**
- * 判断当前访问的用户是 PC端 还是 手机端 返回true 为手机端 false 为PC 端
- * 是否移动端访问访问
- * @return boolean
- */
- function isMobile()
- {
- // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
- if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
- return true;
-
- // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
- if (isset ($_SERVER['HTTP_VIA']))
- {
- // 找不到为flase,否则为true
- return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
- }
- // 脑残法,判断手机发送的客户端标志,兼容性有待提高
- if (isset ($_SERVER['HTTP_USER_AGENT']))
- {
- $clientkeywords = array ('nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel','lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm','operamini','operamobi','openwave','nexusone','cldc','midp','wap','mobile');
- // 从HTTP_USER_AGENT中查找手机浏览器的关键字
- if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])))
- return true;
- }
- // 协议法,因为有可能不准确,放到最后判断
- if (isset ($_SERVER['HTTP_ACCEPT']))
- {
- // 如果只支持wml并且不支持html那一定是移动设备
- // 如果支持wml和html但是wml在html之前则是移动设备
- if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))))
- {
- return true;
- }
- }
- return false;
- }
-
- /**
- * 获得本地插件列表
- * @return array
- */
- function get_addon_list()
- {
- $results = scandir(ADDON_PATH);
- $list = [];
- foreach ($results as $name) {
- if ($name === '.' or $name === '..')
- continue;
- if (is_file(ADDON_PATH . $name))
- continue;
- $addonDir = ADDON_PATH . $name . DIRECTORY_SEPARATOR;
- if (!is_dir($addonDir))
- continue;
-
- if (!is_file($addonDir . ucfirst($name) . '.php'))
- continue;
-
- //这里不采用get_addon_info是因为会有缓存
- //$info = get_addon_info($name);
- $info_file = $addonDir . 'info.ini';
- if (!is_file($info_file))
- continue;
-
- $info = Config::parse($info_file, '', "addon-info-{$name}");
- //$info['url'] = addon_url($name);
- $list[$name] = $info;
- }
- return $list;
- }
-
- /**
- * 判断文件或文件夹是否可写
- * @param string $file 文件或目录
- * @return bool
- */
- function is_really_writable($file)
- {
- if (DIRECTORY_SEPARATOR === '/') {
- return is_writable($file);
- }
- if (is_dir($file)) {
- $file = rtrim($file, '/') . '/' . md5(mt_rand());
- if (($fp = @fopen($file, 'ab')) === FALSE) {
- return FALSE;
- }
- fclose($fp);
- @chmod($file, 0777);
- @unlink($file);
- return TRUE;
- } elseif (!is_file($file) OR ($fp = @fopen($file, 'ab')) === FALSE) {
- return FALSE;
- }
- fclose($fp);
- return TRUE;
- }
-
- /**
- * 插件更新配置文件
- *
- * @param string $name 插件名
- * @param array $array
- * @return boolean
- * @throws Exception
- */
- function set_addon_fullconfig($name, $array)
- {
- $file = ADDON_PATH . $name . DIRECTORY_SEPARATOR . 'config.php';
- if (!is_really_writable($file)) {
- throw new Exception("文件没有写入权限");
- }
- if ($handle = fopen($file, 'w')) {
- fwrite($handle, " . "return " . var_export($array, TRUE) . ";\n");
- fclose($handle);
- } else {
- throw new Exception("文件没有写入权限");
- }
- return true;
- }
- /**
- * 插件更新ini文件
- *
- * @param string $name 插件名
- * @param array $array
- * @return boolean
- * @throws Exception
- */
- function set_addon_fullini($name, $array)
- {
- $file = ADDON_PATH . $name . DIRECTORY_SEPARATOR . 'info.ini';
- if (!is_really_writable($file)) {
- throw new Exception("文件没有写入权限");
- }
- $str = '';
- foreach($array as $k=>$v){
- $str .= $k." = ".$v."\n";
- }
-
- if ($handle = fopen($file, 'w')) {
- fwrite($handle, $str);
- fclose($handle);
- } else {
- throw new Exception("文件没有写入权限");
- }
- return true;
- }
-
1.基于ssm的甘肃旅游系统 |
2.基于SSM的旅游企业财务管理系统 |
3.基于SSM的疫情防疫项目(带爬虫) |
4.基于springboot的人力资源管理系统 |
5.基于SSM的民生置业有限公司信息管理系统 |
6.基于ssm的在线挂号小程序系统 |
7.基于Java(spring boot框架)新冠疫苗预约管理系统 |
8.基于SSM的校园小助手系统 |
9.基于springboot的点餐小程序系统 |
10.基于ssm的健康食谱推荐小程序 |
11.基于ssm的健康食谱小程序 |
12.基于ssm的二手汽车拍卖系统小程序 |
13.基于ssm的二手汽车拍卖系统app |
14.基于springboot的客户关系管理系统 |
15.基于SSM的校园活动管理小程序 |
16.基于SSM的个人健康饮食管理小程序系统 |
17.基于ssm的微信小程序水果商城 |
18.基于微信小程序的一起运动吧活动管理系统 |
19.基于springboot的微信小程序的在线商城系统(根据收藏类别推荐+点击率推荐) |
20.基于SSM新闻网站 |
21.基于ssm的在线租房网站 |
22.基于springboot的中学校园管理微信小程序 |
23.基于Springboot学生在线考试系统 |
24.基于SSM的网上奶茶购买平台 |
25.基于springboot的高校社团管理系统(多用户角色) |
26.基于springboot个性化学习推荐网站 |
27.基于微信小程序的西藏特产在线商城系统 |
28.基于SSM的微信小程序的查寝系统 |
29.基于ssm的微信小程序的口袋故事系统 |
30.基于SSM的小区物业管理系统 |
31.基于SSM的小程序任务调度管理信息系统 |
32.基于SSM的团员信息管理系统 |
33.基于SSM框架的法律学习小程序 |
34.基于springboot的学校监考小程序 |
35.基于SSM的超市财务管理系统 |
36.基于springboot的学生宿舍管理系统 |
37.基于SSM的课程设计管理系统 |
38.基于SSM的课设管理小程序 |
39.基于springboot的果蔬交易与物流微信小程序 |
40.基于ssm的果蔬交易与物流微信小程序 |
41.基于SSM的红色文化展示小程序系统 |
42.基于SSM的小区物业管理系统 |
43.基于javaweb的机械博物馆展品管理系统 |
44.基于springboot的实验室设备管理系统 |
45.基于SSM企业人力资源管理系统 |
46.基于springboot的实验室物资管理小程序 |
47.基于springboot的高校选课系统 |
48.基于SSM小程序蔬菜水果零食销售系统 |
49.基于SSM的园第二课堂小程序 |
50.基于ssm的全球地震数据信息管理系统 |
51.基于ssm的足球联赛管理系统 |
52.基于SSM的小程序的人工智能类竞赛管理系统 |
53.基于SSM的智慧医疗问诊小程序 |
54.基于SSM的微信小程序直播在线教育平台 |
55.基于springboot+爬虫的新闻网站系统 |
56.基于SSM的自驾游小程序 |
57.基于SSM的高校宿舍管理小程序系统 |
58.基于SSM的微信小程序在线学习平台 |
59.基于Android的防疫信息管理系统 |
60.基于springboot的患者术后康复的小程序 |
61.基于ssm微信小程序的校园换物系统 |
62.基于SSM微信小程序的智慧党史系统 |
63.基于SSM的家庭理财系统 |
64.基于SSM的高校学籍信息管理系统 |
65.基于SSM微信小程序的航班查询和订票系统 |
66.基于ssm的医院挂号系统 |
67.基于SSM的在线阅读系统 |
68.基于SSM的疫情社区物资配送系统 |
69.基于ssm的加油服务系统小程序系统 |
70.基于ssm的XX学院校友录小程序系统 |
71.基于ssm的药店管理系统微信小程序系统 |
72.基于ssm的装潢应用系统小程序系统 |
73.基于ssm的学生公寓生活管理系统 |
74.基于ssm的计算机维修服务微信小程序 |
75.基于ssm的微信音乐播放器小程序 |
76.基于ssm的中医药配方小程序 |
77.基于ssm的二手交易微信小程序 |
78.基于ssm的的家教信息小程序管理系统 |
79.基于ssm的鲜花销售小程序系统 |
80.基于ssm的预约挂号小程序系统 |
81.基于ssm的在线考试小程序系统 |
82.基于ssm的慢性疾病管理微信小程序 |
83.基于springboot的在线考试系统小程序 |
84.基于springboot的批发零售业商品管理小程序系统 |
85.基于ssm的图书借阅到期提醒小程序系统 |
86.基于springboot的服装企业人事管理小程序系统 |
87.基于nodejs的电商管理系统 |
88.基于nodejs的知识分享网站 |
89.基于nodejs的宠物医生预约平台 |
90.基于nodejs的外卖平台 |
91.基于nodejs的大学生心理咨询微信小程序 |
92.基于nodejs的房屋租赁管理系统 |
93.基于nodejs的拼车网站 |
94.基于nodejs的博客系统 |
95.基于nodejs的家政服务微信小程序 |
96.基于nodejs的物物交换平台 |
97.基于php的实验室安全系统 |
98.基于php的单招志愿采集系统 |
99.基于php的网上买卖管理系统 |
100.基于php的XX学院兼职小程序系统 |
101.基于php的计算机信息管理学院网站 |
102.基于python+Django图书馆智能推荐系统python3.85版本 |
103.基于Python的个性化电影推荐的算法 |
104.基于python+django图书推荐系统 |
105.基于Python的个性化电影推荐的算法 |
106.基于django的爬虫新闻网站系统 |
107.基于Python的人事档案管理系统 |
108.基于python的汽车销售系统 |
109.基于python的《C语言程序设计》课程案例库研究 |
110.基于python的飞机票销售系统 |
111.基于python的旧衣物捐赠系统 |
112.基于python的超市进销存 |
113.基于python的在线办公系统 |
114.基于python的大学生职业推荐平台 |
115.基于python的个性化服装系统 |
116.基于python的酒店住房管理系统 |
117.基于python的三甲妇幼保健院网站 |
118.基于python的大学生生活信息交互平台 |
119.基于python的学生兼职平台系统 |
120.基于python的主机硬件配置推荐系统 |
121.基于python的本地健康宝微信小程序 |
122.基于python的鲜花销售小程序 |
123.基于JSP的网上订餐管理系统 |
124.基于jAVAWeb停车场管理系统 |
125.基于SSM幼儿园信息管理系统 |
126.基于Springboot电影订票系统 |
127.基于ssm人力资源考勤系统 |
128.基于javaweb作业管理系统 |
129.基于javaweb校园二手物品交易 |
130.基于javaweb的停车场管理系统 |
131.基于javaweb学生选课系统 |
132.基于SSM实现的人力资源管理系统 |
133.基于javaweb项目疫情宿舍管理 |
134.基于SSM的图书商城系统 |
135.基于ssm的微信小程序家教系统 |
136.基于ssm的旅游管理系统travel |
137.基于SSM的微信小程序图书借阅系统 |
138.基于web的微信小程序家政预约系统 |
139.基于web的微信小程序菜谱系统 |
140.基于web的微信小程序服装商城系统 |
141.基于web的微信小程序校园活动管理系统 |
142.基于web的微信小程序记事本系统 |
143.基于ssm的基于微信小程序的农产品销售系统 |
144.基于ssm的微信小程序旅游服务系统 |
145.基于springboot的微信小程序在线考试管理系统 |
146.基于ssm的微信小程序电影院购票系统 |
147.基于ssm的微信小程序房屋交易系统 |
148.基于ssm的微信小程序培训机构管理系统 |
149.基于web的微信小程序电影购票系统 |
150.基于ssm的酒店管理系统 |
151.基于javaweb点餐系统 |
152.基于javaweb宿舍管理系统 |
153.基于springboot的信息化管理系统 |
154.基于SSM的美妆商城系统 |
155.基于javaweb学生成绩管理系 |
156.基于SSM的新闻发布系统 |
157.基于SSM实现的小区物业管理系统 |
158.基于SSH的城市公交查询系统 |
159.基于S2SH的人力资源管理系统 |
160.基于S2SH酒店点餐收款系统 |
161.基于JSP的在线调查问卷系统 |
162.基于JSP的网上订餐管理系统 |
163.基于JSP实现的飞机票售票管理系统 |
164.基于SSM农场信息管理系统 |
165.基于javaweb花店管理系统 |
166.基于javaweb药房库存管理系统 |
167.基于SSM的甜品店系统 |
168.基于S2SH的药膳馆会员管理系统 |
169.基于javaweb的学籍管理系统 |
170.基于web的网上书城系统 |
171.基于web的学生成绩系统 |
172.基于SSH的客运站网上售票系统 |
173.基于S2SH校园论坛系统 |
174.基于javaweb旅游管理系统 |
175.基于SSH的旅游管理系统 |
176.基于SSM垃圾分类管理系统 |
177.基于ssm宠物销售系统 |
178.基于javaweb的在线人才招聘系统 |
179.基于S2SH小区物业系统 |
180.基于ssm人事管理系统 |
181.基于web的淘淘商城系统 |