windows系统有哪些非法用户名
时间: 2023-01-29 14:53:42 浏览: 202
在 Windows 系统中,有以下非法用户名:
1. 包含非法字符,如 / \ [ ] : ; | = , + * ? < > 。
2. 包含系统保留的关键字,如 CON、PRN、AUX、NUL、COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9、LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8、LPT9。
3. 长度超过 20 个字符。
4. 以点 (.) 开头或结尾。
5. 只包含空格或全是空格。
6. 包含 $ 字符。
建议在设置用户名时避免使用上述非法用户名。
相关问题
C++做图书馆管理系统Windows
实现一个图书馆管理系统,需要以下几个步骤:
1. 确定系统功能:图书信息的录入、查询、删除、修改等基本操作,还需要实现借书和还书功能。同时,还需要实现管理员登录和普通用户登录功能。
2. 设计系统界面:可以使用Windows窗体应用程序进行设计,设计好系统的主界面和各个子界面。
3. 编写代码:根据系统功能和界面设计,编写代码实现各个功能。
4. 数据库设计:使用SQL Server等数据库软件设计图书馆的数据库,将图书信息、用户信息、借书记录等数据存储在数据库中。
5. 进行测试:完成代码编写后,进行系统测试,测试系统的各个功能是否正常运行。
以下是一个简单的C++图书馆管理系统的代码示例:
```cpp
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 图书类
class Book
{
public:
Book(string name, string author, string publish, string ISBN, int num)
{
this->name = name;
this->author = author;
this->publish = publish;
this->ISBN = ISBN;
this->num = num;
}
string GetName()
{
return name;
}
string GetAuthor()
{
return author;
}
string GetPublish()
{
return publish;
}
string GetISBN()
{
return ISBN;
}
int GetNum()
{
return num;
}
void SetNum(int num)
{
this->num = num;
}
private:
string name; // 书名
string author; // 作者
string publish; // 出版社
string ISBN; // ISBN号
int num; // 数量
};
// 用户类
class User
{
public:
User(string name, string password, bool isAdmin)
{
this->name = name;
this->password = password;
this->isAdmin = isAdmin;
}
string GetName()
{
return name;
}
string GetPassword()
{
return password;
}
bool IsAdmin()
{
return isAdmin;
}
private:
string name; // 用户名
string password; // 密码
bool isAdmin; // 是否是管理员
};
// 图书馆类
class Library
{
public:
// 添加图书
void AddBook(Book book)
{
books.push_back(book);
}
// 删除图书
void RemoveBook(string ISBN)
{
for (int i = 0; i < books.size(); i++)
{
if (books[i].GetISBN() == ISBN)
{
books.erase(books.begin() + i);
break;
}
}
}
// 修改图书数量
void ModifyBookNum(string ISBN, int num)
{
for (int i = 0; i < books.size(); i++)
{
if (books[i].GetISBN() == ISBN)
{
books[i].SetNum(num);
break;
}
}
}
// 查询图书
vector<Book> QueryBook(string name)
{
vector<Book> result;
for (int i = 0; i < books.size(); i++)
{
if (books[i].GetName() == name)
{
result.push_back(books[i]);
}
}
return result;
}
// 添加用户
void AddUser(User user)
{
users.push_back(user);
}
// 删除用户
void RemoveUser(string name)
{
for (int i = 0; i < users.size(); i++)
{
if (users[i].GetName() == name)
{
users.erase(users.begin() + i);
break;
}
}
}
// 验证用户
bool VerifyUser(string name, string password)
{
for (int i = 0; i < users.size(); i++)
{
if (users[i].GetName() == name && users[i].GetPassword() == password)
{
return true;
}
}
return false;
}
// 获取用户类型
bool GetUserType(string name)
{
for (int i = 0; i < users.size(); i++)
{
if (users[i].GetName() == name)
{
return users[i].IsAdmin();
}
}
return false;
}
private:
vector<Book> books; // 图书列表
vector<User> users; // 用户列表
};
int main()
{
// 初始化图书馆
Library library;
// 添加图书
library.AddBook(Book("C++ Primer", "Lippman", "China Machine Press", "978-7-121-33863-8", 5));
library.AddBook(Book("Effective C++", "Scott Meyers", "China Machine Press", "978-7-111-24827-4", 3));
library.AddBook(Book("Thinking in Java", "Bruce Eckel", "China Machine Press", "978-7-115-20130-5", 2));
// 添加用户
library.AddUser(User("admin", "admin", true));
library.AddUser(User("user", "user", false));
// 登录
string name, password;
cout << "请输入用户名和密码:" << endl;
cout << "用户名:";
cin >> name;
cout << "密码:";
cin >> password;
if (library.VerifyUser(name, password))
{
bool isAdmin = library.GetUserType(name);
if (isAdmin)
{
cout << "管理员登录成功!" << endl;
// TODO:管理员操作
}
else
{
cout << "普通用户登录成功!" << endl;
// TODO:普通用户操作
}
}
else
{
cout << "用户名或密码错误!" << endl;
}
return 0;
}
```
以上代码只是一个简单的示例,可以根据需要进行修改和扩展。同时,需要注意对异常情况进行处理,例如输入非法数据、数据库连接失败等情况。
java学生成绩管理系统eclipes
### 使用Java和Eclipse开发学生成绩管理系统的教程
#### 一、项目概述
学生成绩管理系统旨在通过Java技术栈实现对学生课程成绩以及教师信息的有效管理和查询功能。此系统采用Java Web框架,具体组件包括Servlet用于处理HTTP请求响应逻辑;JSP负责页面展示;MySQL作为后台数据存储解决方案[^1]。
#### 二、环境搭建
为了顺利开展项目的编码工作,在开始之前需完成如下配置:
- **操作系统**:推荐使用Windows平台;
- **集成开发环境(IDE)**:选用Eclipse IDE来编写源码文件;
- **编程语言版本**:确保安装的是JDK 11及以上版本;
- **Web容器**:部署应用程序至Apache Tomcat 8.5运行环境中;
- **关系型数据库管理系统(RDBMS)**:连接并操作MySQL 5.1实例以保存持久化数据。
#### 三、创建新项目
启动Eclipse之后按照以下路径新建Dynamic Web Project类型的工程:
`File -> New -> Other... -> Web -> Dynamic Web Project`
输入合适的名称后点击Finish按钮确认创建。此时会在Workspace目录下自动生成相应的文件夹结构,其中包含了src/main/java存放业务类代码的位置,而WebContent则用来放置前端资源如HTML/CSS/JavaScript等静态文件。
#### 四、引入依赖库
考虑到本案例主要涉及到了Servlet API接口调用及JDBC驱动加载两项核心需求,因此建议利用Maven构建工具自动下载所需jar包到本地仓库中去。编辑pom.xml文档加入下面两段声明语句即可满足上述条件:
```xml
<dependencies>
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!-- MySQL JDBC Driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
</dependencies>
```
对于不熟悉Maven的同学也可以手动复制官方提供的最新版servlet.jar与mysql-connector-java-x.x.xx-bin.jar两个压缩包解压后的class文件放入WEB-INF/lib子目录内。
#### 五、设计实体模型
针对要管理的对象——学生及其选修科目分数记录建立对应的POJO Plain Old Java Object即普通的java bean形式的数据载体。这里给出Student.java的一个简单定义样例供参考:
```java
public class Student {
private int id;
private String name;
private List<CourseScore> courseScores;
public static class CourseScore{
private String courseName;
private double score;
// Getters and Setters omitted...
@Override
public String toString(){
return "CourseScore{" +
"courseName='" + courseName + '\'' +
", score=" + score +
'}';
}
}
// Getters and Setters omitted...
}
```
接着就是围绕这些基础单元展开更复杂的CRUD(Create Read Update Delete)增删改查操作了[^3]。
#### 六、实现基本功能模块
##### (1). 登录验证机制
通常情况下会有一个专门的身份认证环节防止非法访问者进入受保护区域内部浏览敏感资料。可以通过继承HttpServlet抽象基类重写doPost方法接收表单提交过来的用户名密码参数并与预设值对比判断合法性从而决定是否跳转至首页界面显示欢迎消息还是返回错误提示给客户端浏览器端渲染呈现出来。
##### (2). 成绩录入服务端API接口
当管理员登录成功以后就可以执行新增修改删除特定学员的成绩条目动作啦。此处重点在于掌握如何运用PreparedStatement预编译SQL语句提高效率减少注入风险的同时保证事务的一致性和隔离级别。
```java
@WebServlet("/score")
public class ScoreController extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
try(Connection conn = DriverManager.getConnection(url,user,password)){
String sql = "INSERT INTO scores VALUES (?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,Integer.parseInt(request.getParameter("student_id")));
pstmt.setString(2,request.getParameter("subject"));
pstmt.setDouble(3,Double.parseDouble(request.getParameter("grade")));
int affectedRows=pstmt.executeUpdate();
System.out.println(String.format("%d row(s) inserted.",affectedRows));
} catch(SQLException e){
throw new RuntimeException(e.getMessage());
}
}
}
```
以上仅列举了一部分可能涉及到的功能点,实际应用场景往往更加复杂多变需要综合考虑安全性性能扩展性等多个方面因素进行优化调整。
阅读全文