diff --git a/README.en.md b/README.en.md deleted file mode 100644 index 5cd88052014bc152e84f073336c49cab99b9e0ef..0000000000000000000000000000000000000000 --- a/README.en.md +++ /dev/null @@ -1,36 +0,0 @@ -# 21届7班node作业 - -#### Description -{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**} - -#### Software Architecture -Software architecture description - -#### Installation - -1. xxxx -2. xxxx -3. xxxx - -#### Instructions - -1. xxxx -2. xxxx -3. xxxx - -#### Contribution - -1. Fork the repository -2. Create Feat_xxx branch -3. Commit your code -4. Create Pull Request - - -#### Gitee Feature - -1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md -2. Gitee blog [blog.gitee.com](https://blog.gitee.com) -3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) -4. The most valuable open source project [GVP](https://gitee.com/gvp) -5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) -6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md deleted file mode 100644 index 2354532e654753c37b3e14c7c8547a4b525c26f3..0000000000000000000000000000000000000000 --- a/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# 21届7班node作业 - -#### 介绍 -{**以下是 Gitee 平台说明,您可以替换此简介** -Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 -无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} - -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 -5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git "a/\346\210\264\344\275\263\350\276\211/20230215-\346\250\241\345\235\227\347\232\204\344\275\277\347\224\250/module.js" "b/\346\210\264\344\275\263\350\276\211/20230215-\346\250\241\345\235\227\347\232\204\344\275\277\347\224\250/module.js" new file mode 100644 index 0000000000000000000000000000000000000000..bfe359d93123b8af84fbc19702deaaa593608723 --- /dev/null +++ "b/\346\210\264\344\275\263\350\276\211/20230215-\346\250\241\345\235\227\347\232\204\344\275\277\347\224\250/module.js" @@ -0,0 +1,23 @@ +//作业:写个加减乘除的模块(尽量少写暴露,要考虑复用性),供外部使用. 作业每个分支要建一个目录(自己名字) +class method { + constructor(a,b){ + this.a = a; + this.b = b; + } + add(){ + return this.a + this.b; + } + subtract(){ + return this.a - this.b; + } + multiply(){ + return this.a * this.b; + } + divide(){ + if(this.b==0){ + return "除数不能为零"; + } + return this.a / this.b; + } +} +module.exports = method; \ No newline at end of file diff --git "a/\346\210\264\344\275\263\350\276\211/20230215-\346\250\241\345\235\227\347\232\204\344\275\277\347\224\250/\344\275\234\344\270\232.js" "b/\346\210\264\344\275\263\350\276\211/20230215-\346\250\241\345\235\227\347\232\204\344\275\277\347\224\250/\344\275\234\344\270\232.js" new file mode 100644 index 0000000000000000000000000000000000000000..43611eb9c172a940c2a29fb90af4d5086d76cf93 --- /dev/null +++ "b/\346\210\264\344\275\263\350\276\211/20230215-\346\250\241\345\235\227\347\232\204\344\275\277\347\224\250/\344\275\234\344\270\232.js" @@ -0,0 +1,9 @@ +//作业:写个加减乘除的模块(尽量少写暴露,要考虑复用性),供外部使用. 作业每个分支要建一个目录(自己名字) +let obj = require("./module"); + +var add = new obj(10,5); + +console.log('加法结果为:'+add.add()); +console.log('减法结果为:'+add.subtract()); +console.log('乘法结果为:'+add.multiply()); +console.log('除法结果为:'+add.divide()); \ No newline at end of file diff --git "a/\346\210\264\344\275\263\350\276\211/20230216-\346\226\207\344\273\266\347\232\204\345\206\231\345\205\245\344\273\245\345\217\212\350\257\273\345\217\226/file.js" "b/\346\210\264\344\275\263\350\276\211/20230216-\346\226\207\344\273\266\347\232\204\345\206\231\345\205\245\344\273\245\345\217\212\350\257\273\345\217\226/file.js" new file mode 100644 index 0000000000000000000000000000000000000000..c9e49a9cfb722746191f737f36a3159f2b36e787 --- /dev/null +++ "b/\346\210\264\344\275\263\350\276\211/20230216-\346\226\207\344\273\266\347\232\204\345\206\231\345\205\245\344\273\245\345\217\212\350\257\273\345\217\226/file.js" @@ -0,0 +1,51 @@ +//文件读取需要使用fs模块,fs node自带的 +let fs = require("fs"); +//异步读取文件 +// fs.readFile('./weekend.txt', (error, data) => { +// console.log(error); +// console.log(data);//data 是 Buffer 类型 +// console.log(data.toString());//1 +// }); +// console.log("我在前面还是后面输出");// + +//同步读取文件 +// let data = fs.readFileSync("./sports.txt"); +// console.log(data.toString()); +// console.log("会不会先输出"); + +//假设读取文件 100毫秒,一个函数执行5毫秒,异步方式执行这个代码,总的耗时是多少 100毫秒,同步方式 105毫秒 + +//文件写入 + +//同步文件写入,有这个Sync就是同步 + +// 作业:生成100个文件,每个文件存入一个1到1000的随机数字,再取出最大值的那个文件,值也要取出来,再取出最小的那个. +var arr=[]; +for(let i=1;i<=10;i++){ + var a = Math.floor(Math.random()*1001); + fs.writeFileSync("./D"+i,""+a); + arr.push(a); + fs.readFile("./D"+i,(error,data)=>{ + var num = data.toString(); + console.log("该文件夹后缀为:"+i+",数值为:"+num); + }) +} +var max=arr[0]; +var maxhz=1; +for(let ii=0;iimax){ + max=arr[ii]; + maxhz=ii+1; + } +} + +var min=arr[0]; +var minhz=1; +for(let iii=0;iii{ + startTime = data.toString().substring(10,23); + console.log("同步文件写入的开始时间戳为:"+startTime); +}); +fs.readFile("./files/999",(error,data)=>{ + endTime = data.toString().substring(10,23); + console.log("同步文件写入的结束时间戳为:"+endTime); +}); +setTimeout(() => { + console.log("方法二同步创建1000个文件消耗的的时间为:"+(endTime-startTime)+"ms") +}, 2000); + +// 异步写入 +setTimeout(() => { + var t1=new Date().getTime(); + var num =0; + for(let j=0;j<1000;j++){ + var nowDate = new Date(); + var fileName = "./files/D"+j; + fs.writeFile(fileName,"写入文件的时间戳为:"+nowDate.getTime()+"ms,写入文件的时间为:"+nowDate.toLocaleString(),(error,data)=>{}); + num++; + if(num ==1000){ + var t2=new Date().getTime(); + console.log("异步创建1000个文件消耗的时间为:"+(t2-t1)+"ms"); + } + } +}, 2500); \ No newline at end of file diff --git "a/\346\210\264\344\275\263\350\276\211/20230220-\345\206\231\345\205\245\346\226\207\344\273\266\346\265\201/file.js" "b/\346\210\264\344\275\263\350\276\211/20230220-\345\206\231\345\205\245\346\226\207\344\273\266\346\265\201/file.js" new file mode 100644 index 0000000000000000000000000000000000000000..02b2a11aa0c5ac0eefdfb3e05c91616b018f5d47 --- /dev/null +++ "b/\346\210\264\344\275\263\350\276\211/20230220-\345\206\231\345\205\245\346\226\207\344\273\266\346\265\201/file.js" @@ -0,0 +1,50 @@ +//作业:使用open write close的形式去创建一个大文件, +// 内容从指定的文本中随机取一些(每次取得长度内容可以不一样), +// 计算出这个大文件出现最多的字符(要使用流的形式). +let fs = require("fs"); + +var str = "qwertyuiopasdfghjklzxcvbnm"; + +let fd = fs.openSync("./zuoye.txt","a"); +for(let i = 0;i<1000;i++){ + var str11 = suiJi(Math.ceil(Math.random()*str.length));//ceil向上取整 + fs.writeFileSync(fd,str11); +} +fs.closeSync(fd); + +var rs = fs.createReadStream("./zuoye.txt",'utf-8'); +var max=0; +var char=""; +var o={}; +rs.on('data',function(chunk){ + for(var k=0;kmax){ + max=o[key]; + char=key; + } + } + console.log("该大文件的内容为:"+chunk); +}) + +rs.on('end',function(){ + console.log("该大文件出现最多的字符为:"+char+",次数为:"+max+"次"); +}) + + +///随机获取n个字符 +function suiJi(n){ + var str1 = ""; + for(let j=0;j{ + console.log(data); + // connection.end(); +}) + +//新增数据 +let insertsql = "insert into user(`user_id`,`user_name`,`user_year`,`user_sex`,`user_createTime`) values(null,'张三','18','女',now());"; +connection.query(insertsql,(err,data)=>{ + console.log(data); +}) + +//修改数据 +let updatesql = "update user set `user_name`='小明',`user_updateTime`=now() where user_id=1;"; +connection.query(updatesql,(err,data)=>{ + console.log(data); +}) + +//删除数据 +let deletesql = "delete from user where `user_id`=3;"; +connection.query(deletesql,(err,data)=>{ + console.log(data); + +}) +connection.query(sql,(err,data)=>{ + console.log(data); +}) +connection.end(); diff --git "a/\346\210\264\344\275\263\350\276\211/20230223-node\346\225\260\346\215\256\345\272\223/db.js" "b/\346\210\264\344\275\263\350\276\211/20230223-node\346\225\260\346\215\256\345\272\223/db.js" new file mode 100644 index 0000000000000000000000000000000000000000..7cc82c3828806f741cadbfb0427e58c85a542a4a --- /dev/null +++ "b/\346\210\264\344\275\263\350\276\211/20230223-node\346\225\260\346\215\256\345\272\223/db.js" @@ -0,0 +1,50 @@ +//实现分页,能实现男女个数和总数的统计,能统计出(小于18) 和 18-45 和 45岁以上的人数(可以的话一条sql,分组,如果不能行就写多个sql统计) +let mysql = require("mysql"); +let connection = mysql.createConnection({host:'localhost',user:'root',password:'root',port:'3306',database:'class7'}); +connection.connect(); + +let name = "小明"; +let sex = "男"; +let year = "17"; + +let name1 = "张三"; +let sex1 = "男"; +let year1 = "18"; + + +let name2 = "李四"; +let sex2 = "男"; +let year2 = "19"; + +let name3 = "王五"; +let sex3 = "女"; +let year3 = "20"; + +let name4 = "老六"; +let sex4 = "男"; +let year4 = "45"; + +let name5 = "小七"; +let sex5 = "女"; +let year5 = "48"; + +let insertsql = "insert into user(`user_name`,`user_sex`,`user_year`) values(?,?,?)"; +connection.query(insertsql,[name,sex,year],()=>{}) +connection.query(insertsql,[name1,sex1,year1],()=>{}) +connection.query(insertsql,[name2,sex2,year2],()=>{}) +connection.query(insertsql,[name3,sex3,year3],()=>{}) +connection.query(insertsql,[name4,sex4,year4],()=>{}) +connection.query(insertsql,[name5,sex5,year5],()=>{}) + +//实现分页,能实现男女个数和总数的统计,能统计出(小于18) 和 18-45 和 45岁以上的人数(可以的话一条sql,分组,如果不能行就写多个sql统计) +let selectsql = "select `user_sex` as `性别`,count(*) as `个数`,count(user_id) as `总人数` from user group by user_sex;" +connection.query(selectsql,(err,data)=>{ + console.log(data); +}); + +//统计出(小于18) 和 18-45 和 45岁以上的人数 +let selectsqlall = "select type,count(*) as `个数` from (select if(user_age<18,'小于18岁',if(user_age between 18 and 45,'18岁到45岁之间','45岁以上')) as type from user) as a group by type;" +connection.query(selectsqlall,(err,data)=>{ + console.log(data) +}) +connection.end(); \ No newline at end of file diff --git "a/\346\210\264\344\275\263\350\276\211/20230225-\346\234\237\347\272\246\345\274\202\346\255\245\345\207\275\346\225\260/file.js" "b/\346\210\264\344\275\263\350\276\211/20230225-\346\234\237\347\272\246\345\274\202\346\255\245\345\207\275\346\225\260/file.js" new file mode 100644 index 0000000000000000000000000000000000000000..9ce720e9c405ef5e6be54e5f7cb7cb8f476682df --- /dev/null +++ "b/\346\210\264\344\275\263\350\276\211/20230225-\346\234\237\347\272\246\345\274\202\346\255\245\345\207\275\346\225\260/file.js" @@ -0,0 +1,25 @@ +//作业:第一个能不能使用promise的异步函数,封装下数据库的查询,二 把sequelize 配置完成,至少能查询一个表去看看sequelize的文档 +let mysql = require('mysql'); +let connection = mysql.createConnection({host:'localhost',user:'root',password:'root',port:3306,database:"class7"}); +connection.connect(); + +function method(sql){ + return new Promise((resolve,reject)=>{ + connection.query(sql,(err,data)=>{ + if(err!=null){ + reject(err); + }else{ + resolve(data); + } + }) + }) +}; + +async function d(sql){ + let connect = await method(sql); + console.log(connect); +} + +d("select * from user"); + +connection.end(); \ No newline at end of file diff --git "a/\346\210\264\344\275\263\350\276\211/20230227-\346\225\260\346\215\256\345\272\223\345\210\206\351\241\265\346\237\245\350\257\242/config.js" "b/\346\210\264\344\275\263\350\276\211/20230227-\346\225\260\346\215\256\345\272\223\345\210\206\351\241\265\346\237\245\350\257\242/config.js" new file mode 100644 index 0000000000000000000000000000000000000000..8d60033f378067ce4b6f08a087e75aa5c8305540 --- /dev/null +++ "b/\346\210\264\344\275\263\350\276\211/20230227-\346\225\260\346\215\256\345\272\223\345\210\206\351\241\265\346\237\245\350\257\242/config.js" @@ -0,0 +1,8 @@ +let data = { + host:"localhost", + user:'root', + password:'root', + port:3306, + database:'class7' +} +module.exports = data; \ No newline at end of file diff --git "a/\346\210\264\344\275\263\350\276\211/20230227-\346\225\260\346\215\256\345\272\223\345\210\206\351\241\265\346\237\245\350\257\242/db.js" "b/\346\210\264\344\275\263\350\276\211/20230227-\346\225\260\346\215\256\345\272\223\345\210\206\351\241\265\346\237\245\350\257\242/db.js" new file mode 100644 index 0000000000000000000000000000000000000000..ed863a1c3eeab44ba55750f53add4718a21dd3ff --- /dev/null +++ "b/\346\210\264\344\275\263\350\276\211/20230227-\346\225\260\346\215\256\345\272\223\345\210\206\351\241\265\346\237\245\350\257\242/db.js" @@ -0,0 +1,94 @@ +// 作业:创建一个学生表,里面有班级字段,里面最好有自己班上同学姓名, +// 其它班级的姓名随机写,有个字段存储游戏的分值,先实现随机的数值写入, +// 查询出各班级前三名的学生 + +//引入配置文件 +let config = require('./config'); + +let mysql = require('mysql2') +//引入 +const {Sequelize, Model, DataTypes, json } =require('sequelize'); + +//初始化对象 +const sequelize = new Sequelize(config.database,config.user,config.password,{ + //申明下使用的数据库 + dialect:'mysql', + host:config.host, + port:config.port, + loggin:true,//日志 + timezon:"+08:00",//东八区 + define:{ + timestamps:true, + underscored:true, + deleteAt:false + } +}); + +//创建对象,构建模型 +class student extends Model{} +student.init({ + stuId:{ + type:DataTypes.INTEGER, + allowNull:false, + primaryKey:true, + autoIncrement:true, + }, + stuName:{ + type:DataTypes.STRING + }, + stuClass:{ + type:DataTypes.STRING + }, + stuScore:{ + type:DataTypes.STRING + } +},{ + sequelize, + modelName:"student", + tableName:"student", +}); + +async function useAsync(){ + student.sync(); + let stu =await student.findAll(); + console.log("异步函数查询的结果:"+JSON.stringify(stu,null,4)) +} +useAsync(); + +setTimeout(function(){ + let num1 = Math.floor(Math.random()*101); + let stu1 = new student({stuName:'陈妙娟',stuClass:7,stuScore:num1}); + stu1.save(); + + let num2 = Math.floor(Math.random()*101); + let stu2 = new student({stuName:'王全业',stuClass:7,stuScore:num2}); + stu2.save(); + + let num3 = Math.floor(Math.random()*101); + let stu3 = new student({stuName:'邓富钰',stuClass:7,stuScore:num3}); + stu3.save(); + } +,3000) + +let connection = mysql.createConnection({host:'localhost',user:'root',password:'root',port:'3306',database:'class7'}) +connection.connect(); + +let max7="select * from student where stu_class=7 order by stu_sore desc limit 3"; +connection.query(max7,(err,date)=>{ + console.log(err); + console.log(date) +}) + +let max6="select * from student where stu_class=6 order by stu_sore desc limit 3"; +connection.query(max6,(err,date)=>{ + console.log(err); + console.log(date) +}) + +let max5="select * from student where stu_class=5 order by stu_sore desc limit 3"; +connection.query(max5,(err,date)=>{ + console.log(err); + console.log(date) +}) + +connection.end(); \ No newline at end of file diff --git "a/\346\210\264\344\275\263\350\276\211/20230302-express\346\241\206\346\236\266/html/class.html" "b/\346\210\264\344\275\263\350\276\211/20230302-express\346\241\206\346\236\266/html/class.html" new file mode 100644 index 0000000000000000000000000000000000000000..1cae33fc8e36de8f588bb4c2809fa9cda43f2989 --- /dev/null +++ "b/\346\210\264\344\275\263\350\276\211/20230302-express\346\241\206\346\236\266/html/class.html" @@ -0,0 +1,84 @@ + + + + + + + 班级成绩排行 + + + + +

班级成绩

+
+ + / + + + \ No newline at end of file diff --git "a/\346\210\264\344\275\263\350\276\211/20230302-express\346\241\206\346\236\266/zuoye.js" "b/\346\210\264\344\275\263\350\276\211/20230302-express\346\241\206\346\236\266/zuoye.js" new file mode 100644 index 0000000000000000000000000000000000000000..5252b1a2ff4a8bf15caaae1d2f3b691b05bc4f70 --- /dev/null +++ "b/\346\210\264\344\275\263\350\276\211/20230302-express\346\241\206\346\236\266/zuoye.js" @@ -0,0 +1,26 @@ +// 利用express 想想怎么结合数据库,去实现学生(贪吃蛇的排名列表),能把学生的分数,班级 +// 在班上排名显示出来,还能实现分页 +let express = require('express'); +let fs = require("fs"); +let mysql = require('mysql2') +const app = express(); + +app.get("/class",(request,response)=>{ + fs.readFile('./html/class.html',(err,data)=>{ + response.end(data) + }); +}) + +app.get('/class/api',(request,response)=>{ + response.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'}); + let connection = mysql.createConnection({host:'localhost',user:'root',password:'root',database:'class7'}) + connection.connect(); + let page = request.query.page ? request.query.page:1; + let sql = 'select * from user limit '+ (page-1)*3+',3'; + connection.query(sql,(err,data)=>{ + response.end(JSON.stringify(data)) + }) + connection.end(); +}) + +app.listen(8080); \ No newline at end of file