职工管理系统
1. 头文件
1.1 workerManager.h
系统类
1 #pragma once // 防止头文件重复包含
2 #include<iostream> // 包含输入输出流头文件
3 #include<fstream> // 文件读写头文件
4 using namespace std; // 使用标准命名空间
5 #include "worker.h"
6 #include "employee.h"
7 #include "manager.h"
8 #include "boss.h"
9
10 #define FILENAME "employee.txt"
11
12 class WorkerManager {
13 public:
14
15 // 构造函数
16 WorkerManager();
17
18 // 展示菜单
19 void Show_Menu();
20
21 // 退出系统
22 void exitSystem();
23
24 // 记录文件中人数的个数
25 int m_EmpNum;
26
27 // 员工数组的指针
28 Worker** m_EmpArray;
29
30 // 增加职工
31 void Add_Emp();
32
33 // 保存文件
34 void save();
35
36 // 标志文件是否为空
37 bool m_FileIsEmpty;
38
39 // 统计人数
40 int get_EmpNum();
41
42 // 初始化员工
43 void init_Emp();
44
45 // 显示职工
46 void Show_Emp();
47
48 // 判断职工是否存在(未删除做准备)
49 int IsExit(int id);
50
51 // 删除职工
52 void Del_Emp();
53
54 // 修改职工
55 void Mod_Emp();
56
57 // 查找职工
58 void Find_Emp();
59
60 // 排序职工
61 void Sort_Emp();
62
63 // 清空文件
64 void Clean_File();
65
66 // 析构函数
67 ~WorkerManager();
68
69
70 };
1.2 worker.h
员工基类(抽象类)
1 #pragma once
2 #include <iostream>
3 #include <string>
4
5 using namespace std;
6
7 // 职工抽象类
8 class Worker {
9 public:
10
11 // 显示个人信息
12 virtual void showInfo() = 0;
13
14 // 获取岗位信息
15 virtual string getDeptName() = 0;
16
17 int m_Id; // 职工编号
18 string m_Name; // 职工姓名
19 int m_DeptId; // 职工所在部门名称编号
20 };
1.3 employee.h
员工类
1 #pragma once
2 #include <iostream>
3 #include <string>
4 using namespace std;
5
6 #include "worker.h"
7
8 // 员工类
9 class Employee : public Worker {
10 public:
11 // 构造函数
12 Employee(int id, string name, int dId);
13
14 // 显示个人信息
15 virtual void showInfo();
16
17 // 获取职工岗位名称
18 virtual string getDeptName();
19
20 };
1.4 manager.h
经理类
1 #pragma once
2 #include <iostream>
3 #include <string>
4 using namespace std;
5
6 #include "worker.h"
7
8 // 经理类
9 class Manager: public Worker {
10 public:
11 // 构造函数
12 Manager(int id, string name, int dId);
13
14 // 显示个人信息
15 virtual void showInfo();
16
17 // 获取职工岗位名称
18 virtual string getDeptName();
19
20 };
1.5 boss.h
老板类
1 #pragma once
2 #include <iostream>
3 #include <string>
4 using namespace std;
5
6 #include "worker.h"
7
8 // 经理类
9 class Boss : public Worker {
10 public:
11 // 构造函数
12 Boss(int id, string name, int dId);
13
14 // 显示个人信息
15 virtual void showInfo();
16
17 // 获取职工岗位名称
18 virtual string getDeptName();
19
20 };
2. 源文件
2.1 workerManager.cpp
系统类
1 #include "workerManager.h"
2
3
4 WorkerManager::WorkerManager() {
5
6 ifstream ifs;
7 ifs.open(FILENAME, ios::in); // 读文件
8
9 // 1.文件不存在情况
10 if (!ifs.is_open()) {
11 cout << "文件不存在" << endl; // 测试输出
12 this->m_EmpNum = 0; // 初始化人数
13 this->m_FileIsEmpty = true; // 初始化文件为空标志
14 this->m_EmpArray = NULL; // 初始化数组指针
15 ifs.close(); // 关闭文件
16 return;
17 }
18
19 // 2.文件存在情况
20 char ch;
21 ifs >> ch;
22 if (ifs.eof()) {
23 cout << "文件为空" << endl;
24 this->m_EmpNum = 0;
25 this->m_FileIsEmpty = true;
26 this->m_EmpArray = NULL;
27 ifs.close();
28 return;
29 }
30
31 // 3.文件存在,并且记录数据
32 int num = this->get_EmpNum();
33 //cout << "职工个数为:" << num << endl; // 测试代码
34 this->m_EmpNum = num; // 更新成员属性
35
36 // 根据职工数创建数组(开辟空间)
37 this->m_EmpArray = new Worker * [this->m_EmpNum];
38 // 初始化职工(将文件中的数据,存放到数组中)
39 init_Emp();
40
41
42 }
43
44 WorkerManager::~WorkerManager() {
45 if (this->m_EmpArray != NULL) {
46 delete[] this->m_EmpArray;
47 this->m_EmpArray = NULL;
48 }
49 }
50
51 // 展示菜单
52 void WorkerManager::Show_Menu() {
53
54 cout << "***************************************************" << endl;
55 cout << "************** 欢迎使用职工管理系统 *************" << endl;
56 cout << "***************** 0.退出管理系统 ****************" << endl;
57 cout << "***************** 1.增加职工信息 ****************" << endl;
58 cout << "***************** 2.显示职工信息 ****************" << endl;
59 cout << "***************** 3.删除离职职工 ****************" << endl;
60 cout << "***************** 4.修改离职职工 ****************" << endl;
61 cout << "***************** 5.查找职工信息 ****************" << endl;
62 cout << "***************** 6.按照编号排序 ****************" << endl;
63 cout << "***************** 7.清空所有文档 ****************" << endl;
64 cout << "***************************************************" << endl;
65 cout << endl;
66
67 }
68
69 // 退出系统
70 void WorkerManager::exitSystem()
71 {
72 cout << "欢迎下次使用!" << endl;
73 system("pause");
74 exit(0); // 退出系统
75 }
76
77 // 保存文件
78 void WorkerManager::save() {
79 ofstream ofs;
80 ofs.open(FILENAME, ios::out);
81
82 for (int i = 0; i < this->m_EmpNum; i++) {
83
84 ofs << this->m_EmpArray[i]->m_Id << " "
85 << this->m_EmpArray[i]->m_Name << " "
86 << this->m_EmpArray[i]->m_DeptId << endl;
87 }
88
89 ofs.close();
90
91 }
92
93 // 增加职工
94 void WorkerManager::Add_Emp() {
95 cout << "请输入增加职工的数量:" << endl;
96 int addNum = 0;
97 cin >> addNum;
98
99 if (addNum > 0) {
100 // 计算新空间大小
101 int newSize = this->m_EmpNum + addNum; // 新空间人数 = 原来记录人数 + 新增人数
102
103 // 开辟新空间
104 Worker** newSpace = new Worker * [newSize];
105
106 // 将原空间下的内容放到新空间下
107 if (this->m_EmpArray != NULL) {
108 for (int i = 0; i < this->m_EmpNum; i++) {
109 newSpace[i] = this->m_EmpArray[i];
110 }
111 }
112
113 // 添加新数据
114 for (int i = 0; i < addNum; i++) {
115 int id; // 职工编号
116 string name; // 职工姓名
117 int dSelect; // 部门选择
118
119 cout << "请输入第" << i + 1 << "个新职工编号:" << endl;
120 cin >> id;
121
122 cout << "请输入第" << i + 1 << "个新职工姓名:" << endl;
123 cin >> name;
124
125 cout << "请选择该职工的岗位:" << endl;
126 cout << "1、普通员工" << endl;
127 cout << "2、经理" << endl;
128 cout << "3、老板" << endl;
129 cin >> dSelect;
130
131 Worker* worker = NULL;
132 switch (dSelect)
133 {
134 case 1: // 普通员工
135 worker = new Employee(id, name, 1);
136 break;
137 case 2: // 经理
138 worker = new Manager(id, name, 2);
139 break;
140 case 3: // 老板
141 worker = new Boss(id, name, 3);
142 break;
143 default:
144 break;
145 }
146
147 newSpace[this->m_EmpNum + i] = worker;
148
149 }
150
151 // 释放原有空间
152 delete[] this->m_EmpArray;
153
154 // 更改新空间的指向
155 this->m_EmpArray = newSpace;
156
157 // 更新新的个数
158 this->m_EmpNum = newSize;
159
160 // 更新职工不为空标志
161 this->m_FileIsEmpty = false;
162
163 // 提示信息
164 cout << "成功添加" << addNum << "名新职工!" << endl;
165
166 // 保存到文件中
167 this->save();
168
169 }
170 else
171 {
172 cout << "输入有误!" << endl;
173 }
174
175 // 按任意键后,清屏,返回到上级目录
176 system("pause");
177 system("cls");
178
179 }
180
181 // 获取当前职工数量
182 int WorkerManager::get_EmpNum() {
183 ifstream ifs;
184 ifs.open(FILENAME, ios::in);
185
186 int id;
187 string name;
188 int dId;
189
190 int num = 0;
191
192 while (ifs >> id && ifs >> name && ifs >> dId) {
193
194 // 记录人数
195 num++;
196 }
197 ifs.close();
198
199 return num;
200 }
201
202 // 初始化员工
203 void WorkerManager::init_Emp() {
204 ifstream ifs;
205 ifs.open(FILENAME, ios::in);
206
207 int id;
208 string name;
209 int dId;
210
211 int index = 0;
212 while (ifs >> id && ifs >> name && ifs >> dId)
213 {
214 Worker* worker = NULL;
215 // 根据不同的部门ID创建不同对象
216
217 if (dId == 1) { // 1 普通员工
218 worker = new Employee(id, name, dId);
219 }
220 else if (dId == 2) { // 2 经理
221 worker = new Manager(id, name, dId);
222 }
223 else { // 3 老板
224 worker = new Boss(id, name, dId);
225 }
226
227 // 存放在数组中
228 this->m_EmpArray[index] = worker;
229 index++;
230 }
231
232 // 关闭文件
233 ifs.close();
234 }
235
236 // 显示职工
237 void WorkerManager::Show_Emp() {
238 if (this->m_FileIsEmpty) {
239 cout << "文件不存在或记录为空!" << endl;
240 }
241 else {
242 for (int i = 0; i < m_EmpNum; i++) {
243 // 利用多态调用接口
244 this->m_EmpArray[i]->showInfo();
245 }
246 }
247
248 system("pause");
249 system("cls");
250 }
251
252 // 判断职工是否存在
253 int WorkerManager::IsExit(int id) {
254 // 按照职工编号判断职工是否存在
255 // 存在则返回职工在数组中的位置,不存在返回-1
256 int index = -1;
257
258 for (int i = 0; i < this->m_EmpNum; i++) {
259 if (this->m_EmpArray[i]->m_Id == id) {
260 index = i;
261 break;
262 }
263 }
264 return index;
265 }
266
267 // 删除职工
268 void WorkerManager::Del_Emp() {
269 if (this->m_FileIsEmpty) {
270 cout << "文件不存在或者记录为空!" << endl;
271 }
272 else
273 {
274 // 按照职工编号删除
275 cout << "请输入想要删除员工编号:" << endl;
276 int id = 0;
277 cin >> id;
278
279 int index = this->IsExit(id);
280
281 if (index != -1) { // 说明职工存在,并且要删除掉index位置上的职工
282 for (int i = 0; i < this->m_EmpNum - 1; i++) {
283 // 数据前移操作(覆盖删除)
284 this->m_EmpArray[i] = this->m_EmpArray[i + 1];
285 }
286 this->m_EmpNum--; // 更新数组中记录的人员个数
287
288 // 数据同步更新到文件中
289 this->save();
290 cout << "删除成功!" << endl;
291
292 }
293 else
294 {
295 cout << "职工不存在,删除失败!" << endl;
296 }
297
298 system("pause");
299 system("cls");
300 }
301 }
302
303 // 修改职工
304 void WorkerManager::Mod_Emp() {
305 if (this->m_FileIsEmpty) {
306 cout << "文件不存在或记录为空!" << endl;
307 }
308 else
309 {
310 cout << "请输入修改职工的编号:" << endl;
311 int id;
312 cin >> id;
313
314 int ret = this->IsExit(id);
315 if (ret != -1) {
316 // 查找到编号职工
317 delete this->m_EmpArray[ret];
318
319 int newId = 0;
320 string newName = "";
321 int dSelect = 0;
322
323 cout << "查到:" << id << "号职工,请输入信职工编号:" << endl;
324 cin >> newId;
325
326 cout << "请输入新姓名:" << endl;
327 cin >> newName;
328
329 cout << "请选择新岗位:" << endl;
330 cout << "1、普通员工" << endl;
331 cout << "2、经理" << endl;
332 cout << "3、老板" << endl;
333 cin >> dSelect;
334
335 Worker* worker = NULL;
336 switch (dSelect)
337 {
338 case 1: // 普通员工
339 worker = new Employee(newId, newName, dSelect);
340 break;
341 case 2: // 经理
342 worker = new Manager(newId, newName, dSelect);
343 break;
344 case 3: // 老板
345 worker = new Boss(newId, newName, dSelect);
346 break;
347 default:
348 break;
349 }
350
351 // 更改数据到数组中
352 this->m_EmpArray[ret] = worker;
353
354 cout << "修改成功!" << this->m_EmpArray[ret]->m_DeptId << endl;
355
356 // 保存到文件中
357
358 this->save();
359 }
360 else
361 {
362 cout << "修改失败,查无此人!" << endl;
363 }
364 }
365 system("pause");
366 system("cls");
367 }
368
369 // 查找职工
370 void WorkerManager::Find_Emp() {
371 if (this->m_FileIsEmpty) {
372 cout << "文件不存在或记录为空!" << endl;
373 }
374 else
375 {
376 cout << "请输入查找的方式:" << endl;
377 cout << "1.按职工编号查找" << endl;
378 cout << "2.按职工姓名查找" << endl;
379
380 int select = 0;
381 cin >> select;
382
383 if (select == 1) { // 按职工编号查找
384 int id;
385 cout << "请输入查找的职工编号:" << endl;
386 cin >> id;
387
388 int ret = IsExit(id);
389 if (ret != -1) {
390 cout << "查找成功!该职工信息如下:" << endl;
391 this->m_EmpArray[ret]->showInfo();
392 }
393 else {
394 cout << "查找失败,查无此人!" << endl;
395 }
396 }
397 else if(select == 2) { // 按姓名查找
398 string name;
399 cout << "请输入查找的姓名:" << endl;
400 cin >> name;
401
402 bool flag = false; // 查找到的标注
403 for (int i = 0; i < m_EmpNum; i++) {
404 if (m_EmpArray[i]->m_Name == name) {
405 cout << "查找成功,职工编号为:"
406 << m_EmpArray[i]->m_Id
407 << "号的信息如下:" << endl;
408
409 flag = true;
410
411 this->m_EmpArray[i]->showInfo();
412 }
413 }
414 if (flag == false) {
415 cout << "查找失败,查无此人!" << endl;
416 }
417 }
418 else {
419 cout << "输入选项有误!" << endl;
420 }
421 }
422 system("pause");
423 system("cls");
424 }
425
426 // 职工排序
427 void WorkerManager::Sort_Emp() {
428 if (this->m_FileIsEmpty) {
429 cout << "文件不存在或记录为空!" << endl;
430 system("pause");
431 system("cls");
432 }
433 else {
434 cout << "请选择排序方式:" << endl;
435 cout << "1.按照职工工号升序" << endl;
436 cout << "1.按照职工工号降序" << endl;
437
438 int select = 0;
439 cin >> select;
440
441 for (int i = 0; i < m_EmpNum; i++) {
442 int MinOrMax = i;
443 for (int j = i + 1; j < m_EmpNum; j++) {
444 if (select == 1) { // 升序
445 if (m_EmpArray[MinOrMax]->m_Id > m_EmpArray[j]->m_Id) {
446 MinOrMax = j;
447 }
448 }
449 else { // 降序
450 if (m_EmpArray[MinOrMax]->m_Id < m_EmpArray[j]->m_Id) {
451 MinOrMax = j;
452 }
453 }
454 }
455
456 if (i != MinOrMax) {
457 Worker* temp = m_EmpArray[i];
458 m_EmpArray[i] = m_EmpArray[MinOrMax];
459 m_EmpArray[MinOrMax] = temp;
460 }
461 }
462 cout << "排序成功,排序后的结果为:" << endl;
463 this->save();
464 this->Show_Emp();
465 }
466 }
467
468 // 情况文件
469 void WorkerManager::Clean_File() {
470 cout << "确认情况?" << endl;
471 cout << "1.确认" << endl;
472 cout << "2.返回" << endl;
473
474 int select = 0;
475 cin >> select;
476
477 if (select == 1) {
478 // 打开模式 ios::trunc 如果文件存在,删除文件,并重新加载
479 ofstream ofs(FILENAME, ios::trunc);
480 ofs.close();
481
482 // 同时保证内存清空
483 if (this->m_EmpArray != NULL) {
484 for (int i = 0; i < this->m_EmpNum; i++) {
485 if (this->m_EmpArray[i] != NULL) {
486 delete this->m_EmpArray[i];
487 }
488 }
489 this->m_EmpNum = 0;
490 delete[] this->m_EmpArray;
491 this->m_EmpArray = NULL;
492 this->m_FileIsEmpty = true;
493 }
494 cout << "清空成功!" << endl;
495 }
496 system("pause");
497 system("cls");
498 }
2.2 employee.cpp
员工类
1 #include "employee.h"
2
3 Employee::Employee(int id, string name, int dId) {
4 this->m_Id = id;
5 this->m_Name = name;
6 this->m_DeptId = dId;
7 }
8
9 void Employee::showInfo() {
10 cout << "职工编号:" << this->m_Id
11 << "\t职工姓名:" << this->m_Name
12 << "\t职工岗位:" << this->getDeptName()
13 << "\t岗位职责:完成经理交给的任务" << endl;
14 }
15
16 string Employee::getDeptName() {
17 return string("员工");
18 }
2.3 manager.cpp
经理类
1 #include "manager.h"
2
3 Manager::Manager(int id, string name, int dId) {
4 this->m_Id = id;
5 this->m_Name = name;
6 this->m_DeptId = dId;
7 }
8
9 void Manager::showInfo() {
10 cout << "职工编号:" << this->m_Id
11 << "\t职工姓名:" << this->m_Name
12 << "\t职工岗位:" << this->getDeptName()
13 << "\t岗位职责:完成老板交给的任务,并下发任务给员工" << endl;
14 }
15
16 string Manager::getDeptName() {
17 return string("经理");
18 }
2.4 Boss.cpp
老板类
1 #include "boss.h"
2
3 Boss::Boss(int id, string name, int dId) {
4 this->m_Id = id;
5 this->m_Name = name;
6 this->m_DeptId = dId;
7 }
8
9 void Boss::showInfo() {
10 cout << "职工编号:" << this->m_Id
11 << "\t职工姓名:" << this->m_Name
12 << "\t职工岗位:" << this->getDeptName()
13 << "\t岗位职责:管理公司所有事物" << endl;
14 }
15
16 string Boss::getDeptName() {
17 return string("老板");
18 }
2.5 职工管理系统.cpp
主函数
1 #include<iostream>
2 #include<string>
3
4 #include "workerManager.h"
5 //#include "employee.h"
6 //#include "manager.h"
7 //#include "boss.h"
8
9 using namespace std;
10
11 // 职工管理系统
12
13
14 int main() {
15
16 WorkerManager wm;
17
18 int choice = 0;
19
20 while (true)
21 {
22
23 // 展示主菜单
24 wm.Show_Menu();
25
26 cout << "请输入您的选择:" << endl;
27 cin >> choice;
28
29 switch (choice)
30 {
31 case 0: // 退出系统
32 wm.exitSystem();
33 break;
34 case 1: // 添加职工
35 wm.Add_Emp();
36 break;
37 case 2: // 显示职工
38 wm.Show_Emp();
39 break;
40 case 3: // 删除职工
41 wm.Del_Emp();
42 break;
43 case 4: // 修改职工
44 wm.Mod_Emp();
45 break;
46 case 5: // 查找职工
47 wm.Find_Emp();
48 break;
49 case 6: // 排序职工
50 wm.Sort_Emp();
51 break;
52 case 7: // 清空文件
53 wm.Clean_File();
54 break;
55 default:
56 system("cls");
57 break;
58 }
59 }
60
61 system("pause");
62
63 return 0;
64
65 }
参考:《黑马程序员》C++教程
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击
在我的应用程序中,我需要能够找到所有数字子字符串,然后扫描每个子字符串,找到第一个匹配范围(例如5到15之间)的子字符串,并将该实例替换为另一个字符串“X”。我的测试字符串s="1foo100bar10gee1"我的初始模式是1个或多个数字的任何字符串,例如,re=Regexp.new(/\d+/)matches=s.scan(re)给出["1","100","10","1"]如果我想用“X”替换第N个匹配项,并且只替换第N个匹配项,我该怎么做?例如,如果我想替换第三个匹配项“10”(匹配项[2]),我不能只说s[matches[2]]="X"因为它做了两次替换“1fooX0barXg
我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案
我正在处理旧代码的一部分。beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)endRubocop错误如下:Avoidstubbingusing'allow_any_instance_of'我读到了RuboCop::RSpec:AnyInstance我试着像下面那样改变它。由此beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)end对此:let(:sport_
我安装了ruby版本管理器,并将RVM安装的ruby实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby。有没有办法让emacs像shell一样尊重ruby的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el
我收到格式为的回复#我需要将其转换为哈希值(针对活跃商家)。目前我正在遍历变量并执行此操作:response.instance_variables.eachdo|r|my_hash.merge!(r.to_s.delete("@").intern=>response.instance_eval(r.to_s.delete("@")))end这有效,它将生成{:first="charlie",:last=>"kelly"},但它似乎有点hacky和不稳定。有更好的方法吗?编辑:我刚刚意识到我可以使用instance_variable_get作为该等式的第二部分,但这仍然是主要问题。
是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s
电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。 准备工作: 1、U盘一个(尽量使用8G以上的U盘)。 2、一台正常联网可使用的电脑。 3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。 4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。 U盘启动盘制作步骤: 注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt