一些实用的函数1.添加教师(包括判断性别是否符合,长度是否合法)

本文介绍了一个简单的教师信息管理系统中添加教师模块的实现细节。该模块能够录入新教师的基本信息,包括姓名、性别,并自动分配账号及初始密码。系统还具备基本的输入验证功能,确保数据的有效性和一致性。
void teacher_add(void) 	//添加教师
{	
	if(MAX_TEA <= teacher_count) //判断教师的最大人数是否达到最大值
	{
		puts("系统正在升级,请等待...");
		return ;
	}
	printf("请输入新教师的姓名:");
	for(;;)
	{
        my_fgets(tea[teacher_count].name,21);	
		printf("请选择性别w/m(女/男):\n");
		while(1)
		{
				stdin->_IO_read_ptr=stdin->_IO_read_end;
				int sex=getch();
				printf("%c\n",sex);
				switch(sex)	//为教师结构体的sex成员赋值
				{
					case 'm':
						tea[teacher_count].sex='m';
						break;
					case 'w':
						tea[teacher_count].sex='w';
						break;
					default:
						stdin->_IO_read_ptr=stdin->_IO_read_end;
						printf("请重新选择性别w/m:\n");//判读非法输入
						continue;	
				}
				break;	
			}
			break;	
	}
	tea[teacher_count].firstlogin = 0;          //默认教师第一次登录
	strcpy(tea[teacher_count].password,"123456");//设置默认密码
	tea[teacher_count].id = 100+teacher_count;//默认自动生成帐号
	tea[teacher_count].flag=1;
	teacher_count++;	//如果添加成功,则总教师人数加一	
	msg_show("添加教师成功!\n",1.5);
}

3.1在DBeaver的SQL编辑器执行下面sql创建用户: CREATE USER 'stu_admin'@'localhost' IDENTIFIED BY '123456'; 3.2使用该用户和密码通过命令行登录,尝试执行use student_db,注意观察返回的信息是什么?为什么? 3.3授权:在DBeaver的SQL编辑器,使用sql语句授予对student_db所有表的全部权限给用户stu_admin@localhost 3.4在命令行界面再次尝试执行 use student_db ,观察返回信息在授权前后有何差异。 4)数据备份与恢复 4.1备份数据: 在上面的MySQL命令行界面输入exit,退出登录。接着输入执行mysqldump语句备份数据,要求使用root用户,备份数据库student_db,备份到文件d:\student_db_backup.sql。备份完成后,查看备份文件里的内容是什么样的。 4.2删除数据库:在DBeaver左侧导航窗口,右击数据库 student_db,选择删除。 4.3恢复数据库:在命令行界面通过mysql命令执行sql语句导入备份文件d:\student_db_backup.sql。验证恢复情况:在DBeaver左侧导航,刷新,观察student_db 数据库是否恢复。 第二部分:数据表的设计与数据类型特性 需求:要求给学生信息管理系统设计数据库表,保存学生的相关信息。至少包括学生id、姓名name、性别gender、生日,入学日期en_date、专业major、所在学院、所选课程名称、课程的任课老师姓名、课程的上课时间等信息。 1、设计数据表并创建表 要求:1)构思需要哪些表,以符合数据库范式;2)为表的各个字段选择合适的数据类型。 根据上面的设计,编写create table的sql语句,确认sql无误后执行创建表。 2、体会MySQL数据类型特性 2.1 整数类型范围测试 使用语句CREATE TABLE test_int_types ( id TINYINT, age SMALLINT, count INT,big_num BIGINT) 创建表,尝试插入记录 (128, 32768, 2147483648, 9223372036854775808),观察发生什么,为什么?修改上述值为各整数类型的边界值、超过边界值,继续观察结果。 2.2 浮点数精度问题体验 使用语句CREATE TABLE precision_demo(f_val FLOAT(10,6), d_val DECIMAL(10,6))建表,执行INSERT INTO precision_demo VALUES (0.0001234, 0.0001234);插入数据,再执行SELECT FORMAT(f_val, 15) AS float_with_more_decimals, FORMAT(d_val, 15) AS decimal_with_more_decimals FROM precision_demo; 观察两个数的精度差异。 2.3 模仿上述的方法,测试CHAR和VARCHAR的差异点。 A、两个字段分别是CHAR(10)和VARCHAR(10),当它们存储字符串‘Mysql’时,存储的实际长度分别是多少? B、插入字符串'Hi '时(注意末尾有两个空格),它们的实际存储长度分别是多少? 2.4 理解不同日期时间类型的特性 创建一个表,有三个字段,类型分别是DATE, DATETIME, TIMESTAMP,插入当前时间(now()函数),然后将数据select出来观察他们的差异。 2.5 ENUM类型约束体验(单选) 创建一个表,其中一个字段为gender ENUM('Male', 'Female', 'Other'),插入一条gender='M' 的记录,观察结果。 再插入一条gender='male' 的记录,观察是否大小写敏感。 2.6 SET类型多选功能 自己设计一个表,包含一个SET类型的字段,插入数据,测试SET类型的多值存储特性。 第三部分:表的创建与修改,以及索引与查询优化 1、创建/删除表(CREATE/DROP TABLE) 1.1备份第二部分创建的表的DDL,之后删除第二部分创建的表。 2.1 按如下要求修改DDL,修改完成后再次执行创建表。 a、为有关联的表加上外键约束;b、学生性别只能是男或女;c、重新检查表的各个字段的数据类型是否最优。 2、修改表结构(ALTER TABLE) 2.1模拟业务变更,对表进行一系列修改(必须通过sql语句),每次修改后都在DBeaver查看修改后的表的字段情况。 A、如果第二部分创建的学生表不是students,将其改名为students。 B、添加新列contact_phone (手机号),要求带描述“手机号” C、修改列的数据类型 (将专业字段扩大长度150字符) D、重命名列 (将生日字段改为dob) E、删除生日字段(dob) F、为已存在的列(contact_phone)添加唯一约束(确保手机号唯一) 2.2执行上述sql之后,在DBeaver查看最终的建表语句(DDL)。 3、理解索引与创建索引(CREATE INDEX) 使用sql语句为 students表上频繁查询的字段创建索引。 3.1为姓名字段创建普通索引(常用于搜索和模糊匹配)。 3.2为专业和性别创建联合复合索引(常用于多条件组合查询) 4、查看与删除索引(DROP INDEX) 使用sql语句,查看已创建的索引,并了解如何删除不需要的索引。 4.1 查看 students 表上的所有索引。 4.2 删除前面建立的名字的索引。 5、使用 EXPLAIN分析查询性能(重点) 1)根据自己设计的students表结构,自己准备10条测试数据(可以直接在图形化工具录入 或 使用insert语句插入),便于分析查询性能。 2)使用 EXPLAIN命令查看SQL语句(比如SELECT * FROM students WHERE name = 'mike')的执行计划,判断是否使用了索引,阅读 EXPLAIN结果,判断查询是否使用了索引。 3)在姓名name列创建索引,再执行EXPLAIN分析,阅读 EXPLAIN结果,判断查询是否使用了索引。 4)分析一个利用复合索引(专业和性别)的查询,阅读 EXPLAIN结果,判断查询是否使用了索引。 5)分析一个查询全部男生的sql语句,阅读 EXPLAIN结果,对比前面,判断查询是否使用了索引。
10-15
<think> 首先,用户的问题是:“我想查找MATLAB中用于判断字符串长度是否相等的函数 请问MATLAB判断字符串长度是否相等的函数” 用户的核心需求是找到一个MATLAB函数判断两个字符串的长度是否相等。 现在,我需要回顾提供的引用: - 引用[1]:讨论了字符串比较函数,如strcmp、strncmp等,但它们主要用于比较字符串的内容或部分内容是否相等,而不是长度。 - 引用[2]:列出了多个字符串函数包括disp、size、strcmp、strncmp、strfind、strrep等。size函数用于判断字符串长度(size(str)),但没有直接提到判断长度是否相等的函数。 - 引用[3]:涉及字符串数组查找和字符串长度。 - 引用[4]:讨论了字符串输入、大小写转化、比较,以及isspace和isletter函数。 - 引用[5]:提供了一个自定义代码来判断字符串是否相等,其中提到了strlength函数来获取字符串长度(n1 = strlength(str1); n2 = strlength(str2);),然后比较n1和n2是否相等。 从这些引用中,关键点是: - size函数:在MATLAB中,size(str) 返回字符串str的尺寸。对于一个字符串,size(str) 可能返回一个向量,比如[1, n],其中n是字符数。 - strlength函数:引用[5]中使用了strlength(str) 来获取字符串的长度。这似乎是最直接的方法来获取字符串的字符数。 MATLAB中,strlength函数返回字符串中的字符数。例如,strlength('hello') 返回5。 要判断两个字符串的长度是否相等,用户可以直接比较strlength(str1) 和 strlength(str2)。 例如: ```matlab if strlength(str1) == strlength(str2) disp('Lengths are equal'); else disp('Lengths are not equal'); end ``` 没有内置的函数专门叫做“判断字符串长度是否相等的函数”。相反,用户需要先获取长度,然后比较。 在引用中提到的函数: - strcmp 和 strncmp 比较内容,不是长度。 - 引用[5] 展示了自定义代码,使用了 strlength 来获取长度。 总结回答: MATLAB 中没有单一的、专门的内置函数判断两个字符串的长度是否相等。但用户可以使用 strlength 函数获取每个字符串的长度,然后使用比较运算符(如 ==)进行比较。 步骤: 1. 获取字符串1长度:len1 = strlength(str1) 2. 获取字符串2的长度:len2 = strlength(str2) 3. 比较 len1 和 len2:if len1 == len2 或者在一个表达式中:if strlength(str1) == strlength(str2) 此外,size函数也可以用来获取尺寸,但strlength更直接,因为它返回标量字符数,而size返回向量。 在引用[2]中,提到 size(str)判断字符串长度,但最好用 strlength 因为它是专门为字符串设计的。 系统级指令要求: - 所有行内数学表达式用 $...$(但这里可能不是数学表达式,主要文本) - 独立公式用 $$...$$(如果需要公式) - LaTeX语法正确 - 使用中文回答 - 生成相关问题 - 在引用段落末尾添加引用标识 回答结构: - 开头直接回答问题 - 解释如何操作 - 提供代码示例 - 引用相关引用作为支持 - 最后生成相关问题 相关问题生成: 基于用户查询,相关问题可能包括1. MATLAB中如何获取字符串的长度? 2. 除了长度,如何比较字符串内容是否相等? 3. MATLAB中字符串处理的其他常用函数? 确保回答真实可靠。 </think> ### MATLAB判断字符串长度是否相等的函数 在MATLAB中,**没有单一的内置函数专门用于直接判断两个字符串的长度是否相等**。但用户可以通过组合两个函数来实现这一功能: - 使用 `strlength` 函数获取每个字符串的字符长度。 - 然后使用比较运算符(如 `==`)判断长度是否相等。 这种方法高效可靠,因为 `strlength` 是MATLAB中专门用于计算字符串长度函数,它返回一个标量值(字符串中的字符数),适用于比较操作。以下是详细的步骤和示例: #### 步骤: 1. 获取字符串1长度:`len1 = strlength(str1)` 2. 获取字符串2的长度:`len2 = strlength(str2)` 3. 比较两个长度:`len1 == len2` 如果相等,返回逻辑值 `1` (true);如果不相等,返回 `0` (false)。 #### 代码示例: ```matlab % 定义示例字符串 str1 = 'MATLAB'; str2 = 'Programming'; % 判断长度是否相等 if strlength(str1) == strlength(str2) disp('字符串长度相等'); else disp('字符串长度不相等'); end ``` 在此示例中: - `strlength('MATLAB')` 返回长度为 6(字符数)。 - `strlength('Programming')` 返回长度11。 - 执行后输出:"字符串长度不相等",因为 6 ≠ 11。 #### 其他注意事项: - **为什么不用 `size`?** 虽然引用[2]提到 `size(str)` 可用于判断字符串长度(如 `size(str)` 返回一个向量,例如 [1, n],其中 n 是字符数),但 `strlength` 更直接,因为它直接返回字符数的标量值,避免了处理向量输出的复杂性[^2]。 - **与内容比较函数的区别**:引用[1]和[2]中的函数如 `strcmp` 或 `strncmp` 用于比较字符串内容是否相等,而非长度。例如,`strcmp(s1, s2)` 检查内容是否相同;而长度比较只需关注 `strlength` 的结果[^1][^2]。 - **自定义方法**:引用[5]展示了使用 `strlength` 获取长度后进行手动比较的代码,这证实了上述方法的正确性[^5]。 总之,核心方法是结合 `strlength` 和 `==` 运算符来完成长度相等的判断。 ####
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoyu1381

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值