육현진

studentsadd module & list refresh module

...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
3 #database 3 #database
4 /database.json 4 /database.json
5 5
6 +#upload
7 +/upload
8 +
6 # dependencies 9 # dependencies
7 /node_modules 10 /node_modules
8 /.pnp 11 /.pnp
......
1 -[{"C:\\Users\\sally\\Desktop\\3-1\\DBproject\\project\\client\\src\\index.js":"1","C:\\Users\\sally\\Desktop\\3-1\\DBproject\\project\\client\\src\\App.js":"2","C:\\Users\\sally\\Desktop\\3-1\\DBproject\\project\\client\\src\\reportWebVitals.js":"3","C:\\Users\\sally\\Desktop\\3-1\\DBproject\\project\\client\\src\\components\\Student.js":"4"},{"size":500,"mtime":499162500000,"results":"5","hashOfConfig":"6"},{"size":3449,"mtime":1607370599142,"results":"7","hashOfConfig":"6"},{"size":362,"mtime":499162500000,"results":"8","hashOfConfig":"6"},{"size":2433,"mtime":1607363898200,"results":"9","hashOfConfig":"6"},{"filePath":"10","messages":"11","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"12"},"15hdric",{"filePath":"13","messages":"14","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"15","usedDeprecatedRules":"12"},{"filePath":"16","messages":"17","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"12"},{"filePath":"18","messages":"19","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"20","usedDeprecatedRules":"21"},"C:\\Users\\sally\\Desktop\\3-1\\DBproject\\project\\client\\src\\index.js",[],["22","23"],"C:\\Users\\sally\\Desktop\\3-1\\DBproject\\project\\client\\src\\App.js",["24","25","26"],"import React, {Component, components} from 'react';\nimport Student from './components/Student';\nimport './App.css';\nimport Paper from '@material-ui/core/Paper'\nimport Table from '@material-ui/core/Table'\nimport TableHead from '@material-ui/core/TableHead'\nimport TableBody from '@material-ui/core/TableBody'\nimport TableRow from '@material-ui/core/TableRow'\nimport TableCell from '@material-ui/core/TableCell'\nimport {withStyles} from '@material-ui/core/styles';\nimport curcularProgress from '@material-ui/core/CircularProgress';\nimport CircularProgress from '@material-ui/core/CircularProgress';\n\nconst styles = theme => ({\n root: {\n width: '100%',\n marginTop: theme.spacing.unit * 3,\n overflowX: \"auto\"\n },\n table: {\n minWidth:1000\n },\n progress:{\n margin: theme.spacing.unit * 2\n }\n})\n\nconst students = [\n {\n 'st_Code': 6666,\n 'st_Name': '육현진',\n 'st_Id': 2018102210,\n 'st_Major':'컴퓨터공학과',\n 'st_Midscore': 100,\n 'st_Finalscore': 100,\n 'st_Assignscore': 100,\n 'st_Attendscore': 100,\n 'st_Score':'A+'\n},\n{\n 'st_Code': 1111,\n 'st_Name': '김창동',\n 'st_Id': 2020021120,\n 'st_Major':'컴퓨터공학과',\n 'st_Midscore': 79,\n 'st_Finalscore': 85,\n 'st_Assignscore': 100,\n 'st_Attendscore': 90,\n 'st_Score':'A0'\n}]\n\nclass App extends Component{\n\n state = {\n students: \"\",\n completed: 0\n }\n\n componentDidMount() {\n this.timer= setInterval(this.progress,20);\n this.callApi()\n .then(res => this.setState({students: res}))\n .catch(err => console.log(err));\n }\n\n callApi=async()=>{\n const response = await fetch('/api/students');\n const body = await response.json();\n return body;\n }\n\n progress=() =>{\n const{completed}= this.state;\n this.setState({completed:completed >= 100 ?0:completed +1});\n }\n\n render(){\n\n const {classes}= this.props;\n\n return ( \n <Paper className={classes.root}>\n <Table className={classes.table}>\n\n <TableHead>\n <TableRow>\n <TableCell>코드번호</TableCell>\n <TableCell>이름</TableCell>\n <TableCell>학번</TableCell>\n <TableCell>전공</TableCell>\n <TableCell>중간</TableCell>\n <TableCell>기말</TableCell>\n <TableCell>과제</TableCell>\n <TableCell>출석</TableCell>\n <TableCell>학점</TableCell>\n </TableRow>\n </TableHead>\n \n <TableBody>\n {\n this.state.students ?\n this.state.students.map(c=>{\n return (\n <Student\n key={c.st_Code}\n st_Code={c.st_Code}\n st_Name={c.st_Name}\n st_Id={c.st_Id}\n st_Major={c.st_Major}\n st_Midscore={c.st_Midscore}\n st_Finalscore={c.st_Finalscore}\n st_Assignscore={c.st_Assignscore}\n st_Attendscore={c.st_Attendscore}\n st_Score={c.st_Score}\n />\n );\n }) : \n <TableRow>\n <TableCell colSpan=\"9\" allign=\"center\">\n <CircularProgress className={classes.progress} variant=\"determinate\" value={this.state.completed}/>\n </TableCell>\n </TableRow>\n } \n </TableBody>\n\n </Table>\n\n </Paper>\n\n );\n }\n}\n\nexport default withStyles(styles)(App);\n","C:\\Users\\sally\\Desktop\\3-1\\DBproject\\project\\client\\src\\reportWebVitals.js",[],"C:\\Users\\sally\\Desktop\\3-1\\DBproject\\project\\client\\src\\components\\Student.js",["27","28","29"],"import React from 'react';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport TableCell from '@material-ui/core/TableCell';\r\n\r\nclass Student extends React.Component{\r\n render(){\r\n return(\r\n <TableRow>\r\n <TableCell> {this.props.st_Code} </TableCell>\r\n <TableCell> {this.props.st_Name} </TableCell>\r\n <TableCell> {this.props.st_Id} </TableCell>\r\n <TableCell> {this.props.st_Major} </TableCell>\r\n <TableCell> {this.props.st_Midscore} </TableCell>\r\n <TableCell> {this.props.st_Finalscore} </TableCell>\r\n <TableCell> {this.props.st_Assignscore} </TableCell>\r\n <TableCell> {this.props.st_Attendscore} </TableCell>\r\n <TableCell> {this.props.st_Score} </TableCell>\r\n\r\n </TableRow>\r\n \r\n /*<div>\r\n \r\n <Searchscores st_Midscore={this.props.st_Midscore} \r\n st_Finalscore = {this.props.st_Finalscore}\r\n st_Assignscore = {this.props.st_Assignscore}\r\n st_Attendscore = {this.props.st_Attendscore}/>\r\n\r\n <Searchscore st_Score={this.props.st_Score}/>\r\n\r\n <Searchothers st_Midscore={this.props.st_Midscore} \r\n st_Finalscore = {this.props.st_Finalscore}\r\n st_Assignscore = {this.props.st_Assignscore}\r\n st_Attendscore = {this.props.st_Attendscore}\r\n st_Score = {this.props.st_Score}/>\r\n\r\n </div>*/\r\n\r\n )\r\n }\r\n}\r\n\r\nclass Searchscores extends React.Component{\r\n render(){\r\n return(\r\n <div>\r\n\r\n <p>{this.props.st_Midscore}</p>\r\n <p>{this.props.st_Finalscore}</p>\r\n <p>{this.props.st_Assignscore}</p>\r\n <p>{this.props.st_Attendscore}</p>\r\n\r\n </div> \r\n )\r\n }\r\n}\r\n\r\n\r\nclass Searchscore extends React.Component{\r\n render(){\r\n return(\r\n <div>\r\n <p>{this.props.st_Score}</p>\r\n </div> \r\n )\r\n }\r\n}\r\n\r\nclass Searchothers extends React.Component{\r\n render(){\r\n return(\r\n <div>\r\n <p>{this.props.st_Midscore}</p>\r\n <p>{this.props.st_Finalscore}</p>\r\n <p>{this.props.st_Assignscore}</p>\r\n <p>{this.props.st_Attendscore}</p>\r\n <p>{this.props.st_Score}</p>\r\n </div> \r\n )\r\n }\r\n}\r\n\r\nexport default Student;",["30","31"],{"ruleId":"32","replacedBy":"33"},{"ruleId":"34","replacedBy":"35"},{"ruleId":"36","severity":1,"message":"37","line":1,"column":27,"nodeType":"38","messageId":"39","endLine":1,"endColumn":37},{"ruleId":"36","severity":1,"message":"40","line":11,"column":8,"nodeType":"38","messageId":"39","endLine":11,"endColumn":24},{"ruleId":"36","severity":1,"message":"41","line":28,"column":7,"nodeType":"38","messageId":"39","endLine":28,"endColumn":15},{"ruleId":"36","severity":1,"message":"42","line":42,"column":7,"nodeType":"38","messageId":"39","endLine":42,"endColumn":19},{"ruleId":"36","severity":1,"message":"43","line":58,"column":7,"nodeType":"38","messageId":"39","endLine":58,"endColumn":18},{"ruleId":"36","severity":1,"message":"44","line":68,"column":7,"nodeType":"38","messageId":"39","endLine":68,"endColumn":19},{"ruleId":"32","replacedBy":"45"},{"ruleId":"34","replacedBy":"46"},"no-native-reassign",["47"],"no-negated-in-lhs",["48"],"no-unused-vars","'components' is defined but never used.","Identifier","unusedVar","'curcularProgress' is defined but never used.","'students' is assigned a value but never used.","'Searchscores' is defined but never used.","'Searchscore' is defined but never used.","'Searchothers' is defined but never used.",["47"],["48"],"no-global-assign","no-unsafe-negation"]
...\ No newline at end of file ...\ No newline at end of file
1 +[{"C:\\Users\\sally\\Desktop\\3-1\\DBproject\\project\\client\\src\\index.js":"1","C:\\Users\\sally\\Desktop\\3-1\\DBproject\\project\\client\\src\\App.js":"2","C:\\Users\\sally\\Desktop\\3-1\\DBproject\\project\\client\\src\\reportWebVitals.js":"3","C:\\Users\\sally\\Desktop\\3-1\\DBproject\\project\\client\\src\\components\\Student.js":"4","C:\\Users\\sally\\Desktop\\3-1\\DBproject\\project\\client\\src\\components\\StudentAdd.js":"5"},{"size":500,"mtime":499162500000,"results":"6","hashOfConfig":"7"},{"size":3848,"mtime":1607448454756,"results":"8","hashOfConfig":"7"},{"size":362,"mtime":499162500000,"results":"9","hashOfConfig":"7"},{"size":2433,"mtime":1607363898200,"results":"10","hashOfConfig":"7"},{"size":3467,"mtime":1607448276867,"results":"11","hashOfConfig":"7"},{"filePath":"12","messages":"13","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"14"},"15hdric",{"filePath":"15","messages":"16","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"17","messages":"18","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"14"},{"filePath":"19","messages":"20","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"21","usedDeprecatedRules":"14"},{"filePath":"22","messages":"23","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"C:\\Users\\sally\\Desktop\\3-1\\DBproject\\project\\client\\src\\index.js",[],["24","25"],"C:\\Users\\sally\\Desktop\\3-1\\DBproject\\project\\client\\src\\App.js",["26","27","28"],"C:\\Users\\sally\\Desktop\\3-1\\DBproject\\project\\client\\src\\reportWebVitals.js",[],"C:\\Users\\sally\\Desktop\\3-1\\DBproject\\project\\client\\src\\components\\Student.js",["29","30","31"],"import React from 'react';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport TableCell from '@material-ui/core/TableCell';\r\n\r\nclass Student extends React.Component{\r\n render(){\r\n return(\r\n <TableRow>\r\n <TableCell> {this.props.st_Code} </TableCell>\r\n <TableCell> {this.props.st_Name} </TableCell>\r\n <TableCell> {this.props.st_Id} </TableCell>\r\n <TableCell> {this.props.st_Major} </TableCell>\r\n <TableCell> {this.props.st_Midscore} </TableCell>\r\n <TableCell> {this.props.st_Finalscore} </TableCell>\r\n <TableCell> {this.props.st_Assignscore} </TableCell>\r\n <TableCell> {this.props.st_Attendscore} </TableCell>\r\n <TableCell> {this.props.st_Score} </TableCell>\r\n\r\n </TableRow>\r\n \r\n /*<div>\r\n \r\n <Searchscores st_Midscore={this.props.st_Midscore} \r\n st_Finalscore = {this.props.st_Finalscore}\r\n st_Assignscore = {this.props.st_Assignscore}\r\n st_Attendscore = {this.props.st_Attendscore}/>\r\n\r\n <Searchscore st_Score={this.props.st_Score}/>\r\n\r\n <Searchothers st_Midscore={this.props.st_Midscore} \r\n st_Finalscore = {this.props.st_Finalscore}\r\n st_Assignscore = {this.props.st_Assignscore}\r\n st_Attendscore = {this.props.st_Attendscore}\r\n st_Score = {this.props.st_Score}/>\r\n\r\n </div>*/\r\n\r\n )\r\n }\r\n}\r\n\r\nclass Searchscores extends React.Component{\r\n render(){\r\n return(\r\n <div>\r\n\r\n <p>{this.props.st_Midscore}</p>\r\n <p>{this.props.st_Finalscore}</p>\r\n <p>{this.props.st_Assignscore}</p>\r\n <p>{this.props.st_Attendscore}</p>\r\n\r\n </div> \r\n )\r\n }\r\n}\r\n\r\n\r\nclass Searchscore extends React.Component{\r\n render(){\r\n return(\r\n <div>\r\n <p>{this.props.st_Score}</p>\r\n </div> \r\n )\r\n }\r\n}\r\n\r\nclass Searchothers extends React.Component{\r\n render(){\r\n return(\r\n <div>\r\n <p>{this.props.st_Midscore}</p>\r\n <p>{this.props.st_Finalscore}</p>\r\n <p>{this.props.st_Assignscore}</p>\r\n <p>{this.props.st_Attendscore}</p>\r\n <p>{this.props.st_Score}</p>\r\n </div> \r\n )\r\n }\r\n}\r\n\r\nexport default Student;","C:\\Users\\sally\\Desktop\\3-1\\DBproject\\project\\client\\src\\components\\StudentAdd.js",[],{"ruleId":"32","replacedBy":"33"},{"ruleId":"34","replacedBy":"35"},{"ruleId":"36","severity":1,"message":"37","line":1,"column":27,"nodeType":"38","messageId":"39","endLine":1,"endColumn":37},{"ruleId":"36","severity":1,"message":"40","line":12,"column":8,"nodeType":"38","messageId":"39","endLine":12,"endColumn":24},{"ruleId":"36","severity":1,"message":"41","line":29,"column":7,"nodeType":"38","messageId":"39","endLine":29,"endColumn":15},{"ruleId":"36","severity":1,"message":"42","line":42,"column":7,"nodeType":"38","messageId":"39","endLine":42,"endColumn":19},{"ruleId":"36","severity":1,"message":"43","line":58,"column":7,"nodeType":"38","messageId":"39","endLine":58,"endColumn":18},{"ruleId":"36","severity":1,"message":"44","line":68,"column":7,"nodeType":"38","messageId":"39","endLine":68,"endColumn":19},"no-native-reassign",["45"],"no-negated-in-lhs",["46"],"no-unused-vars","'components' is defined but never used.","Identifier","unusedVar","'curcularProgress' is defined but never used.","'students' is assigned a value but never used.","'Searchscores' is defined but never used.","'Searchscore' is defined but never used.","'Searchothers' is defined but never used.","no-global-assign","no-unsafe-negation"]
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -3118,6 +3118,14 @@ ...@@ -3118,6 +3118,14 @@
3118 "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.1.tgz", 3118 "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.1.tgz",
3119 "integrity": "sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ==" 3119 "integrity": "sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ=="
3120 }, 3120 },
3121 + "axios": {
3122 + "version": "0.21.0",
3123 + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.0.tgz",
3124 + "integrity": "sha512-fmkJBknJKoZwem3/IKSSLpkdNXZeBu5Q7GA/aRsr2btgrptmSCxi2oFjZHqGdK9DoTil9PIHlPIZw2EcRJXRvw==",
3125 + "requires": {
3126 + "follow-redirects": "^1.10.0"
3127 + }
3128 + },
3121 "axobject-query": { 3129 "axobject-query": {
3122 "version": "2.2.0", 3130 "version": "2.2.0",
3123 "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", 3131 "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz",
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
7 "@testing-library/jest-dom": "^5.11.6", 7 "@testing-library/jest-dom": "^5.11.6",
8 "@testing-library/react": "^11.2.2", 8 "@testing-library/react": "^11.2.2",
9 "@testing-library/user-event": "^12.5.0", 9 "@testing-library/user-event": "^12.5.0",
10 + "axios": "^0.21.0",
10 "react": "^17.0.1", 11 "react": "^17.0.1",
11 "react-dom": "^17.0.1", 12 "react-dom": "^17.0.1",
12 "react-scripts": "4.0.1", 13 "react-scripts": "4.0.1",
......
1 import React, {Component, components} from 'react'; 1 import React, {Component, components} from 'react';
2 import Student from './components/Student'; 2 import Student from './components/Student';
3 +import StudentAdd from './components/StudentAdd';
3 import './App.css'; 4 import './App.css';
4 import Paper from '@material-ui/core/Paper' 5 import Paper from '@material-ui/core/Paper'
5 import Table from '@material-ui/core/Table' 6 import Table from '@material-ui/core/Table'
...@@ -51,11 +52,25 @@ const students = [ ...@@ -51,11 +52,25 @@ const students = [
51 52
52 class App extends Component{ 53 class App extends Component{
53 54
54 - state = { 55 + constructor(props){
55 - students: "", 56 + super(props);
56 - completed: 0 57 + this.state = {
58 + students: '',
59 + completed: 0
60 + }
57 } 61 }
58 62
63 + stateRefresh = () => {
64 + this.setState({
65 + students: '',
66 + completed: 0
67 + });
68 + this.callApi()
69 + .then(res => this.setState({students: res}))
70 + .catch(err => console.log(err));
71 + }
72 +
73 +
59 componentDidMount() { 74 componentDidMount() {
60 this.timer= setInterval(this.progress,20); 75 this.timer= setInterval(this.progress,20);
61 this.callApi() 76 this.callApi()
...@@ -79,7 +94,8 @@ class App extends Component{ ...@@ -79,7 +94,8 @@ class App extends Component{
79 const {classes}= this.props; 94 const {classes}= this.props;
80 95
81 return ( 96 return (
82 - <Paper className={classes.root}> 97 + <div>
98 + <Paper className={classes.root}>
83 <Table className={classes.table}> 99 <Table className={classes.table}>
84 100
85 <TableHead> 101 <TableHead>
...@@ -125,7 +141,11 @@ class App extends Component{ ...@@ -125,7 +141,11 @@ class App extends Component{
125 141
126 </Table> 142 </Table>
127 143
128 - </Paper> 144 + </Paper>
145 +
146 + <StudentAdd stateRefresh={this.stateRefresh}/>
147 + </div>
148 +
129 149
130 ); 150 );
131 } 151 }
......
1 +import React from 'react';
2 +import {post} from 'axios';
3 +class StudentAdd extends React.Component{
4 +
5 + constructor(props){
6 + super(props);
7 + this.state={
8 + st_Code:'',
9 + st_Name:'',
10 + st_Id:'',
11 + st_Major:'',
12 + st_Midscore:'',
13 + st_Finalscore:'',
14 + st_Assignscore:'',
15 + st_Attendscore:'',
16 + st_Score:''
17 + }
18 + }
19 +
20 + handleFormSubmit = (e) => {
21 + e.preventDefault()
22 + this.addStudent()
23 + .then((response) => {
24 + console.log(response.data);
25 + this.props.stateRefresh();
26 + })
27 + this.setState({
28 + st_Code:'',
29 + st_Name:'',
30 + st_Id:'',
31 + st_Major:'',
32 + st_Midscore:'',
33 + st_Finalscore:'',
34 + st_Assignscore:'',
35 + st_Attendscore:'',
36 + st_Score:''
37 + })
38 +
39 + }
40 +
41 + handleValueChange = (e) => {
42 + let nextState = {};
43 + nextState[e.target.name]=e.target.value;
44 + this.setState(nextState);
45 + }
46 +
47 + addStudent = () =>{
48 + const url ='/api/students';
49 + const formData=new FormData();
50 + formData.append('st_Code',this.state.st_Code);
51 + formData.append('st_Name',this.state.st_Name);
52 + formData.append('st_Id',this.state.st_Id);
53 + formData.append('st_Major',this.state.st_Major);
54 + formData.append('st_Midscore',this.state.st_Midscore);
55 + formData.append('st_Finalscore',this.state.st_Finalscore);
56 + formData.append('st_Assignscore',this.state.st_Assignscore);
57 + formData.append('st_Attendscore',this.state.st_Attendscore);
58 + formData.append('st_Score',this.state.st_Score);
59 + const config = {
60 + headers: {
61 + 'content-tupe': 'multipart/form-data'
62 + }
63 +
64 + }
65 + return post(url, formData, config);
66 + }
67 +
68 + render(){
69 + return(
70 + <form onSubmit={this.handleFormSubmit}>
71 + <h1>학생 추가</h1>
72 + 코드 번호 : <input type="text" name="st_Code" value={this.state.st_Code} onChange={this.handleValueChange}/><br/>
73 + 이름 : <input type="text" name="st_Name" value={this.state.st_Name} onChange={this.handleValueChange}/><br/>
74 + 학번 : <input type="text" name="st_Id" value={this.state.st_Id} onChange={this.handleValueChange}/><br/>
75 + 전공 : <input type="text" name="st_Major" value={this.state.st_Major} onChange={this.handleValueChange}/><br/>
76 + 중간 점수 : <input type="text" name="st_Midscore" value={this.state.st_Midscore} onChange={this.handleValueChange}/><br/>
77 + 기말 점수 : <input type="text" name="st_Finalscore" value={this.state.st_Finalscore} onChange={this.handleValueChange}/><br/>
78 + 과제 점수 : <input type="text" name="st_Assignscore" value={this.state.st_Assignscore} onChange={this.handleValueChange}/><br/>
79 + 출석 점수 : <input type="text" name="st_Attendscore" value={this.state.st_Attendscore} onChange={this.handleValueChange}/><br/>
80 + 학점 : <input type="text" name="st_Score" value={this.state.st_Score} onChange={this.handleValueChange}/><br/>
81 + <button type="submit">추가하기</button>
82 +
83 + </form>
84 + )
85 + }
86 +}
87 +
88 +export default StudentAdd;
...\ No newline at end of file ...\ No newline at end of file
...@@ -41,6 +41,11 @@ ...@@ -41,6 +41,11 @@
41 "color-convert": "^1.9.0" 41 "color-convert": "^1.9.0"
42 } 42 }
43 }, 43 },
44 + "append-field": {
45 + "version": "1.0.0",
46 + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
47 + "integrity": "sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY="
48 + },
44 "array-flatten": { 49 "array-flatten": {
45 "version": "1.1.1", 50 "version": "1.1.1",
46 "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 51 "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
...@@ -76,6 +81,43 @@ ...@@ -76,6 +81,43 @@
76 "fill-range": "^7.0.1" 81 "fill-range": "^7.0.1"
77 } 82 }
78 }, 83 },
84 + "buffer-from": {
85 + "version": "1.1.1",
86 + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
87 + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
88 + },
89 + "busboy": {
90 + "version": "0.2.14",
91 + "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz",
92 + "integrity": "sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=",
93 + "requires": {
94 + "dicer": "0.2.5",
95 + "readable-stream": "1.1.x"
96 + },
97 + "dependencies": {
98 + "isarray": {
99 + "version": "0.0.1",
100 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
101 + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
102 + },
103 + "readable-stream": {
104 + "version": "1.1.14",
105 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
106 + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
107 + "requires": {
108 + "core-util-is": "~1.0.0",
109 + "inherits": "~2.0.1",
110 + "isarray": "0.0.1",
111 + "string_decoder": "~0.10.x"
112 + }
113 + },
114 + "string_decoder": {
115 + "version": "0.10.31",
116 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
117 + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
118 + }
119 + }
120 + },
79 "bytes": { 121 "bytes": {
80 "version": "3.1.0", 122 "version": "3.1.0",
81 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 123 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
...@@ -135,6 +177,17 @@ ...@@ -135,6 +177,17 @@
135 "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 177 "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
136 "dev": true 178 "dev": true
137 }, 179 },
180 + "concat-stream": {
181 + "version": "1.6.2",
182 + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
183 + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
184 + "requires": {
185 + "buffer-from": "^1.0.0",
186 + "inherits": "^2.0.3",
187 + "readable-stream": "^2.2.2",
188 + "typedarray": "^0.0.6"
189 + }
190 + },
138 "concurrently": { 191 "concurrently": {
139 "version": "5.3.0", 192 "version": "5.3.0",
140 "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz", 193 "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz",
...@@ -152,6 +205,14 @@ ...@@ -152,6 +205,14 @@
152 "yargs": "^13.3.0" 205 "yargs": "^13.3.0"
153 } 206 }
154 }, 207 },
208 + "config": {
209 + "version": "3.3.3",
210 + "resolved": "https://registry.npmjs.org/config/-/config-3.3.3.tgz",
211 + "integrity": "sha512-T3RmZQEAji5KYqUQpziWtyGJFli6Khz7h0rpxDwYNjSkr5ynyTWwO7WpfjHzTXclNCDfSWQRcwMb+NwxJesCKw==",
212 + "requires": {
213 + "json5": "^2.1.1"
214 + }
215 + },
155 "content-disposition": { 216 "content-disposition": {
156 "version": "0.5.3", 217 "version": "0.5.3",
157 "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 218 "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
...@@ -210,6 +271,38 @@ ...@@ -210,6 +271,38 @@
210 "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 271 "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
211 "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 272 "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
212 }, 273 },
274 + "dicer": {
275 + "version": "0.2.5",
276 + "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.2.5.tgz",
277 + "integrity": "sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=",
278 + "requires": {
279 + "readable-stream": "1.1.x",
280 + "streamsearch": "0.1.2"
281 + },
282 + "dependencies": {
283 + "isarray": {
284 + "version": "0.0.1",
285 + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
286 + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
287 + },
288 + "readable-stream": {
289 + "version": "1.1.14",
290 + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
291 + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
292 + "requires": {
293 + "core-util-is": "~1.0.0",
294 + "inherits": "~2.0.1",
295 + "isarray": "0.0.1",
296 + "string_decoder": "~0.10.x"
297 + }
298 + },
299 + "string_decoder": {
300 + "version": "0.10.31",
301 + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
302 + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
303 + }
304 + }
305 + },
213 "ee-first": { 306 "ee-first": {
214 "version": "1.1.1", 307 "version": "1.1.1",
215 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 308 "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
...@@ -474,6 +567,14 @@ ...@@ -474,6 +567,14 @@
474 "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 567 "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
475 "dev": true 568 "dev": true
476 }, 569 },
570 + "json5": {
571 + "version": "2.1.3",
572 + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
573 + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
574 + "requires": {
575 + "minimist": "^1.2.5"
576 + }
577 + },
477 "locate-path": { 578 "locate-path": {
478 "version": "3.0.0", 579 "version": "3.0.0",
479 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 580 "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
...@@ -531,11 +632,39 @@ ...@@ -531,11 +632,39 @@
531 "mime-db": "1.44.0" 632 "mime-db": "1.44.0"
532 } 633 }
533 }, 634 },
635 + "minimist": {
636 + "version": "1.2.5",
637 + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
638 + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
639 + },
640 + "mkdirp": {
641 + "version": "0.5.5",
642 + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
643 + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
644 + "requires": {
645 + "minimist": "^1.2.5"
646 + }
647 + },
534 "ms": { 648 "ms": {
535 "version": "2.0.0", 649 "version": "2.0.0",
536 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 650 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
537 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 651 "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
538 }, 652 },
653 + "multer": {
654 + "version": "1.4.2",
655 + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.2.tgz",
656 + "integrity": "sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==",
657 + "requires": {
658 + "append-field": "^1.0.0",
659 + "busboy": "^0.2.11",
660 + "concat-stream": "^1.5.2",
661 + "mkdirp": "^0.5.1",
662 + "object-assign": "^4.1.1",
663 + "on-finished": "^2.3.0",
664 + "type-is": "^1.6.4",
665 + "xtend": "^4.0.0"
666 + }
667 + },
539 "mysql": { 668 "mysql": {
540 "version": "2.18.1", 669 "version": "2.18.1",
541 "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz", 670 "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz",
...@@ -564,6 +693,11 @@ ...@@ -564,6 +693,11 @@
564 "validate-npm-package-license": "^3.0.1" 693 "validate-npm-package-license": "^3.0.1"
565 } 694 }
566 }, 695 },
696 + "object-assign": {
697 + "version": "4.1.1",
698 + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
699 + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
700 + },
567 "on-finished": { 701 "on-finished": {
568 "version": "2.3.0", 702 "version": "2.3.0",
569 "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 703 "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
...@@ -848,6 +982,11 @@ ...@@ -848,6 +982,11 @@
848 "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 982 "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
849 "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 983 "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
850 }, 984 },
985 + "streamsearch": {
986 + "version": "0.1.2",
987 + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
988 + "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo="
989 + },
851 "string-width": { 990 "string-width": {
852 "version": "3.1.0", 991 "version": "3.1.0",
853 "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 992 "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
...@@ -919,6 +1058,11 @@ ...@@ -919,6 +1058,11 @@
919 "mime-types": "~2.1.24" 1058 "mime-types": "~2.1.24"
920 } 1059 }
921 }, 1060 },
1061 + "typedarray": {
1062 + "version": "0.0.6",
1063 + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
1064 + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
1065 + },
922 "unpipe": { 1066 "unpipe": {
923 "version": "1.0.0", 1067 "version": "1.0.0",
924 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1068 "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
...@@ -966,6 +1110,11 @@ ...@@ -966,6 +1110,11 @@
966 "strip-ansi": "^5.0.0" 1110 "strip-ansi": "^5.0.0"
967 } 1111 }
968 }, 1112 },
1113 + "xtend": {
1114 + "version": "4.0.2",
1115 + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
1116 + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
1117 + },
969 "y18n": { 1118 "y18n": {
970 "version": "4.0.1", 1119 "version": "4.0.1",
971 "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", 1120 "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
......
...@@ -8,8 +8,10 @@ ...@@ -8,8 +8,10 @@
8 }, 8 },
9 "dependencies": { 9 "dependencies": {
10 "body-parser": "^1.19.0", 10 "body-parser": "^1.19.0",
11 + "config": "^3.3.3",
11 "express": "4.17.1", 12 "express": "4.17.1",
12 "http-proxy-middleware": "^1.0.6", 13 "http-proxy-middleware": "^1.0.6",
14 + "multer": "^1.4.2",
13 "mysql": "^2.18.1" 15 "mysql": "^2.18.1"
14 }, 16 },
15 "devDependencies": { 17 "devDependencies": {
......
...@@ -21,6 +21,9 @@ const connection = mysql.createConnection({ ...@@ -21,6 +21,9 @@ const connection = mysql.createConnection({
21 21
22 connection.connect(); 22 connection.connect();
23 23
24 +const multer=require('multer');
25 +const upload = multer({dest:'./upload'})
26 +
24 app.get('/api/students', (req, res)=>{ 27 app.get('/api/students', (req, res)=>{
25 connection.query( 28 connection.query(
26 "SELECT * FROM dbproject.Students", 29 "SELECT * FROM dbproject.Students",
...@@ -30,4 +33,43 @@ app.get('/api/students', (req, res)=>{ ...@@ -30,4 +33,43 @@ app.get('/api/students', (req, res)=>{
30 ); 33 );
31 }); 34 });
32 35
36 +app.use('/image', express.static('./upload'));
37 +
38 +app.post('/api/students',upload.single('image'), (req, res) =>{
39 + let sql = 'INSERT INTO dbproject.Students VALUES (?,?,?,?,?,?,?,?,?)';
40 + let st_Code= req.body.st_Code;
41 + let st_Name = req.body.st_Name;
42 + let st_Id = req.body.st_Id;
43 + let st_Major = req.body.st_Major;
44 + let st_Midscore = req.body.st_Midscore;
45 + let st_Finalscore = req.body.st_Finalscore;
46 + let st_Assignscore = req.body.st_Assignscore;
47 + let st_Attendscore = req.body.st_Attendscore;
48 + let st_Score = req.body.st_Score;
49 + console.log(st_Code);
50 + console.log(st_Name);
51 + console.log(st_Id);
52 + console.log(st_Major);
53 + console.log(st_Midscore);
54 + console.log(st_Finalscore);
55 + console.log(st_Assignscore);
56 + console.log(st_Attendscore);
57 + console.log(st_Score);
58 +
59 + let params=[st_Code, st_Name,
60 + st_Id,
61 + st_Major,
62 + st_Midscore,
63 + st_Finalscore,
64 + st_Assignscore,
65 + st_Attendscore,
66 + st_Score];
67 + connection.query(sql, params,
68 + (err,rows,fields)=>{
69 + res.send(rows);
70 + console.log(err);
71 + }
72 + );
73 +});
74 +
33 app.listen(port, () => console.log(`Listening on port ${port}`)); 75 app.listen(port, () => console.log(`Listening on port ${port}`));
...\ No newline at end of file ...\ No newline at end of file
......