精华内容
下载资源
问答
  • 问题描述:我想生成一个唯一的学生学号。我想要的格式是年份的最后两位数字,再加上5位数字。例如:2000001、2000002、2000003 等。以下是我的php代码:$pre=substr(strval(date("Y")),2);$num=1;include"dbh.inc....

    如何在PHP中生成学生证学号?怎么避免使用goto函数?

    问题描述:

    我想生成一个唯一的学生证学号。我想要的格式是年份的最后两位数字,再加上5位数字。例如:2000001、2000002、2000003 等。

    以下是我的php代码:$pre = substr(strval(date("Y")),2);

    $num = 1;

    include "dbh.inc.php";

    $sql_cmd = "SELECT id FROM students WHERE id=?;";

    $stmt = $conn->stmt_init();

    if ($stmt) {

    $prepare = $stmt->prepare($sql_cmd);

    if ($prepare) {

    bind:

    $studentid = $pre . str_repeat('0', (4 - strlen($num)) ) . strval($num);

    $bind = $stmt->bind_param('s', $studentid);

    if ($bind) {

    $result = $stmt->execute();

    if ($result) {

    $num++;

    goto bind;

    }

    else {

    // insert student here using $studentid

    }

    }

    }

    }

    我觉是上面代码需要改进:

    1.使用goto,我不想用这个函数.

    2.每次代码开始,绑定,执行等在每个循环中查询数据库带来很大的性能开销,显然很慢。

    是否有更好的方法呢?

    回答:

    1.可以在MySQL端生成新的学生证ID。include "dbh.inc.php";

    $sql =

    "SELECT CONCAT("

    . "DATE_FORMAT(CURDATE(), '%y'), "

    . "LPAD(COALESCE(MAX(RIGHT(id, 5)) + 1, 1), 5, '0')"

    . ") AS new_id "

    . "FROM students";

    $result = $conn->query($sql);

    if ($result) {

    if ($row = $result->fetch_assoc()) {

    // insert student here using $row['new_id']

    }

    }

    2.使用触发器,在插入数据时创建触发器。DELIMITER //

    CREATE TRIGGER students_tr_bi BEFORE INSERT ON students

    FOR EACH ROW

    BEGIN

    SET NEW.id = (

    SELECT CONCAT(

    DATE_FORMAT(CURDATE(), '%y'),

    LPAD(COALESCE(MAX(RIGHT(id, 5)) + 1, 1), 5, '0')

    ) FROM students

    );

    END//

    DELIMITER ;

    -- Usage:

    INSERT INTO students (name) VALUES ('John');

    展开全文
  • ![图片说明]...!... 我只写出了一部分,具体代码如下: SELECT SCORE.CNO,MAX(DEGREE)最高分 FROM SCORE,COURSE WHERE SCORE.CNO=COURSE.CNO GROUP BY SCORE.CNO ...而且怎么写,也得不到我想要的结果。
  • 展开全部study(sno,cno,score)查询62616964757a686964616fe78988e69d8331333433643634至少选修了两门课程的学生学号:π1(σ(1=4Λ2!=5)(study x study))。select sno(学生的学号) from sc(学生选课表)group by sno ...

    展开全部

    study(sno,cno,score)查询62616964757a686964616fe78988e69d8331333433643634至少选修了两门课程的学生学号:π1(σ(1=4Λ2!=5)(study x study))。

    select sno(学生的学号) from sc(学生选课表)

    group by sno having count(*)>1

    select a.学号,b.姓名,a.cnt as 选修门数 from

    (select 学号,count(1) as as cnt from 选课表 group by 学号

    having count(1)=(select count(1) from 课程表)) a,

    学生表 b where a.学号=b.学号;

    e19056239d17e051de6c0f0294320f5d.png

    扩展资料:

    设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的差由属于R而不属于S的所有元组组成。其结果关系仍为n目关系。记作:

    R-S={t|t∈R∧t∉S}

    设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的交由既属于R又属于S的元组组成。其结果关系仍为n目关系。记作:

    R∩S={t|t∈R∧t∈S}

    这里的笛卡尔积严格地讲是广义笛卡尔积(Extended Cartesian Product)。在不会出现混淆的情况下广义笛卡尔积也称为笛卡尔积。

    两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1×k2个元组。

    展开全文
  • 从S(学号,姓名,年龄,生日)表和SC(学号,课程号,成绩)表中查询出没有选择课程号为1001的课程的所有学生学号和姓名。 请问这个查询SQL语句该怎么写?
  • 1.题目与要求1.1问题提出 设计学生成绩管理系统,有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统1.2本系统涉及的知识点 结构体数组、...按学号查询学生记...

    1.题目与要求

    1.1问题提出

    设计学生成绩管理系统,有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统

    1.2本系统涉及的知识点

    结构体数组、结构体指针、数组、循环、函数、分支、指针

    1.3 功能要求

    1、成绩录入:输入学生的学号、姓名及三门课的成绩;

    2、成绩查询:(至少一种查询方式)。按学号查询学生记录,或查询不及格学生的记录;

    3、成绩统计:计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序后输出;对学生单科成绩排序,输出学生姓名与该科成绩;

    4、退出系统:退出整个系统(即主菜单);

    1.4 根据所选菜单编写相应代码:

    1)输入学生的信息,利用循环赋值的方式,给结构体数组赋值。

    2)输出平均分函数ave:首先定义double型数组,利用循环赋值的方式,计算出三门课的成绩的平均值放入数组中,利用循环的方式,输出相关值及平均值。

    3)按学号查询成绩函数search:首先输入要查询的学号,与结构体中的学号进行比较,如果相等输出这个学生的信息,另外输出没有查到相关结果。

    4)按平均分排序后输出函数average:首先另外一个定义结构体数组、结构体指针变量,计算三门课程的平均值存到结构体成员aver中,利用循环的方式,进行平均分排序,输出相应的学生信息。

    5)对学生单科成绩排序后输出函数grade:首先另外一个定义结构体数组、结构体指针变量,通过选择k的值来选择按分数几排序,利用循环的方式,进行单科成绩排序(从大到小),输出学生姓名及该课的成绩。

    6)退出程序。

    551ea0f97726d2c3b8521c8bfa51c490.png

    2、附录:程序清单

    #include <stdio.h>

    #include<stdlib.h>

    typedef struct student

    {

    int num;

    char name[13];

    int score[3];

    double aver;

    }STU;

    void ave(STU s[],int n)

    { double a[1000];

    int i;

    for(i=0;i<n;i++)

    a[i]=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3.0;

    printf("学号t姓名tt分数1t分数2t分数3t平均分n");

    for(i=0;i<n;i++)

    printf("%dt%stt%dt%dt%dt%.1fn",s[i].num,s[i].name,s[i].score[0],s[i].score[1],s[i].score[2],a[i]);

    }

    void search(STU s[],int n, int a)

    {

    int i,k=0;

    for(i=0;i<n;i++)

    {

    if(s[i].num==a)

    { printf("学号t姓名t分数1t分数2t分数3tn");

    printf("%dt%st%dt%dt%dn",s[i].num,s[i].name,s[i].score[0],s[i].score[1],s[i].score[2]);

    k=k+1;

    break;

    }

    }

    if(k==0)

    printf("t没有查询到相关信息");

    }

    void average(STU s[],int n)

    { int i,j;

    STU ss[10000];

    STU *p=ss;

    for(i=0;i<n;i++)

    s[i].aver=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3.0;

    for(i=0;i<n;i++)

    ss[i]=s[i];

    for(i=0;i<n-1;i++)

    {

    for(j=i+1;j<n;j++)

    {

    if(ss[i].aver<ss[j].aver)

    {

    STU temp=*(p+i);

    *(p+i)=*(p+j);

    *(p+j)=temp;

    }

    }

    }

    printf("学号t姓名t平均分n");

    for(i=0;i<n;i++)

    printf("%dt%st%.1fn",(p+i)->num,(p+i)->name,(p+i)->aver);

    }

    void grade(STU s[],int n)

    {int i,j,k;

    STU ss[10000];

    STU *p=ss;

    for(i=0;i<n;i++)

    ss[i]=s[i];

    printf("请输入k的值查询,k=0时按分数1,k=1时按分数2,k=2时按分数3:");

    scanf("%d",&k);

    for(i=0;i<n-1;i++)

    {

    for(j=i+1;j<n;j++)

    {

    if(ss[i].score[k]<ss[j].score[k])

    {

    STU temp=*(p+i);

    *(p+i)=*(p+j);

    *(p+j)=temp;

    }

    }

    }

    printf("姓名t分数n");

    for(i=0;i<n;i++)

    printf("%st%dn",(p+i)->name,(p+i)->score[k]);

    }

    main()

    { int N,i;

    STU s[10000];

    int num1;

    int menu;

    printf("请输入学生个数:");

    scanf("%d",&N);

    for(i=0;i<N;i++)

    {

    printf("请输入学号 姓名 分数1 分数2 分数3n");

    scanf("%d%s%d%d%d",&s[i].num,s[i].name,&s[i].score[0],&s[i].score[1],&s[i].score[2]);

    }

    printf("nn");

    printf("*************学生成绩管理系统*************nn");

    printf("1--------输出平均分n");

    printf("2--------按学号查询成绩n");

    printf("3--------按平均分排序后输出n");

    printf("4--------对学生单科成绩排序后输出n");

    printf("5--------退出程序n");

    printf("nn");

    while(1)

    {

    printf("n请输入菜单号:");

    scanf("%d",&menu);

    switch(menu)

    {

    case 1: ave(s,N);break;

    case 2: printf("请输入要查询的学号:");

    scanf("%d",&num1);

    search(s,N,num1);

    break;

    case 3: average(s,N);break;

    case 4: grade(s,N);break;

    case 5: exit(0);

    default:

    printf("菜单号输入错误n");

    break;

    }

    }

    }

    3、运行过程

    bf2afd80e9f40ed92cc442a593047e10.png

    98896e3f0a5118775fcbcc7c33a0f263.png

    c0d639ffcfe625620e626fcdd8f11647.png

    c2f0a5a0712c4957b138437eeabdbf9a.png

    509ad3fb4fafc809d92bea9348c0e1ee.png

    e6536f66f56f64950cafe326201e76c4.png
    展开全文
  • 查询学生信息用的网页,mysql的数据库,里面包括学生学号,姓名,身份证号,班级。怎样实现学生输入身份证号后显示出学生的其他相关信息,求p代码,而且mysql需要设置主键之类的么
  • 建立Java程序,根据用户输入的学号,程序能够从给定的数据文件里提取数据,给出此学生的姓名、选修课程名称、成绩。将下边给定的表格数据转化为数据库,利用JDBC实现连接。表结构和部分数据如下:Student表(sage为...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    一个实验报告。应该是java入门。可是我真不懂。

    建立Java程序,根据用户输入的学号,程序能够从给定的数据文件里提取数据,给出此学生的姓名、选修课程名称、成绩。将下边给定的表格数据转化为数据库,利用JDBC实现连接。表结构和部分数据如下:

    Student表(sage为smallint,其他均为varchar类型)

    学号Sno 姓名Sname 性别Ssex 年龄Sage 所在系Sdept

    2011001 李勇 男 20 CS

    2011002 刘晨 女 19 IS

    2011003 王敏 女 18 MA

    2011004 张立 男 19 IS

    Course表(CCredit为smallint,其他均为varchar类型)

    课程号Cno 课程名Cname 先行课Cpno 学分Ccredit

    1 数据库 5 4

    2 数学 2

    3 信息系统 1 4

    4 操作系统 6 3

    5 数据结构 7 4

    6 数据处理 2

    SC表(sno,cno为varchar,grade为real类型)

    学号Sno 课程号Cno 成绩Grade

    2011001 1 92

    2011001 2 85

    2011001 3 88

    2011002 2 90

    展开全文
  • struct student { char sno[8]; //学号 char name[20]; //姓名 char sex; //性别 int age; //年龄 double score;...用单链表链接多个学生信息 但在学生排序查询时不知道怎么把整个结构体移动 求教
  • 我有一张学生表:班级,学号,姓名,数学成绩,语文成绩,历史成绩,班费等等110541101A1234121102B454756220782201c4568742202d565678我想按照学号前两位查出数据班级学号数学总成绩...我有一张学生表: 班级 ,...
  • 学生学籍查询窗体知识点

    热门讨论 2020-12-06 21:00:33
    查询窗体中有三种查询方式,分别是按学号、课程、姓名查询,但是用户在查询时却会出现4种情况,那就是单一方式查询、两种方式同时查询、三种方式同时查询和没有选择查询方式,dd(4)正是代表了这四种情况。...
  • 知识总览一.表的加法union连接会删除重复的部分union all连接所有列...解决SQL实际问题的案例及三步走分析方法问题1:查询所有学生学号,姓名,选课数及总成绩:第一步,翻译成大白话:1)学号,姓名(student)2...
  • 一、课程中的练习(code如下)-- 练习:汇总分析-- 编号0002课程总成绩select * from ...-- 选了课的学生的成绩select COUNT(distinct 学号)as num_of_students from course;-- 练习:分组-- 各科最高分与最低分se...
  • 这个简单的学生信息系统调试时怎么不能进行查询成绩!!求大佬教教我!!!谢谢 代码如下: ``` #include #include #include using namespace std; struct student { char name[20];//姓名 double...
  • 对于每个样例,第一行为学生人数n(n不超过20),接下来n行每行4个整数分别表示学号、姓名、性别和年龄,最后一行表示查询学号。 输出描述: 输出m行,每行表示查询学生信息,格式参见样例。 ...
  • 3)根据学号查询成绩:输入学号查询学生的各门成绩 4)根据姓名查询成绩:输入姓名,查询学生的各门成绩 5)输出文件内容:屏幕输出显示所有学生的成绩 6) 成绩排序:对某门成绩或总分进行快速排序,显示、保存 7)...
  • 索引到底是怎么加速查询的?事实上,在你还没有执行 create index 语句的时候,MySQL 就已经创建索引了。让我们从建表开始吧。聚簇索引执行建表语句:CREATE TABLE `student` ( `id` BIGINT UNSIGNED AUTO_...
  • System.out.println("查询学号为:" + cs.getString(2)); 当student表中存在sno为:2020001的学生时,能查到sno; 如果不存在sno为:2020999时,执行发生异常,报错: 严重: null java.sql.SQLException: ...
  • cout输入需要删除的学生学号"; cin>>num; if(p=Findnum(num)) { p->Next->Display(); cout是否删除该学生信息?(y/n)"; cin>>n; if(n=='y'||n=='Y') { temp=p->Next; p->Next=p->...
  • 我使用的是LISTCONTROL做信息列表显示 已经完成了添加/删除信息 但是不懂怎么查询功能 我想要在(FIND)的DIALOG里面输入_学号 _然后点击按钮 就能够在_编辑框_弹出他的其他信息(姓名、性别、成绩等等)是调用回...
  • 检索选修了所有3学分课程(ccredit=3)的学生学号(SNO): 课程信息Course表: <p><img alt="" height="167" src="https://img-ask.csdnimg.cn/upload/1604591549045.png" width="351" /></p> 选课信息SC...
  • //根据姓名进行折半查找,使用递归,返回学生学号和成绩。 int Search_Dname(SqList &L,char a[],int low,int high) { low=1; high=L.length; int mid=(low+high)/2; if(strcmp(a,L.elem[mid].name)==0) return ...
  • 在“成绩管理”数据库中,查询所有目前年龄是22岁的学生信息:学号、姓名和年龄,正确的命令组是()。A.CREATE VIEW AGE_LIST AS;SELECT 学号,姓名,YEAR(DATE())-YEAR(出生日期)AS年龄FROM学生SELECT 学号,姓名,...
  • #include #include #include #include #include using namespace std; const int MAX=50; int count=0;...老师让做学生系统管理,查询方法两种按学号和姓名来,但是要怎么改啊?改了好久都不行。。。
  • 多表查询(联表查询)

    2019-04-08 08:45:57
    我也不知道怎么说好说简单不是很简单,说很难又不是很难,就是比如一个查询学校的功能需求,你要计算出一个学校包括了什么比如:学校名称,专业,年级,班级,学生,老师 这个时候你可以去数据库把他们连起来, PS:...
  • 在这里,只要输入学号就可以出现该学生的所有信息。在学生信息出现界面,还可以进行修改学生信息,本文主要是实现查找功能。 package com.sys.view; import javax.swing.JDialog; import java.awt....
  • 怎么查的? 数据的准备如下: [sql] view plain copy create table STUDENT( STU_ID int primary KEY, STU_NAME char(10) not null, STU_AGE smallint unsigned not null, STU_SEX char(2) not null ); ...
  • 这是数据库表: student_id 学生ID course_id 课程ID score 分数 查询课程ID为“1”比课程ID为“2”成绩高的所有学生学号,SQL语句怎么写?
  • -- 查询参加 数据库结构-1 考试的同学信息:学号,学生姓名,科目名,分数 -- 查询的结果根据 成绩降序排序 SELECT s.`studentno`,`studentname`,`subjectname`,`studentresult` FROM `student` AS s INNER JOIN `res
  • 我想从文本文件中查寻我想要的学生资料,要怎么做?我只会写把全部学生的资料都显示出来。。。。注册的学科要怎么显示全部的?我只能做出来一个。。。。这是我文本文件中的资料:学号 姓名 出生日期 性别 国家 电话 ...
  • 文章目录 这里做一个 sql 编写根据个人经验做的一个小总结 ...题目:要求查询语文成绩大于平均成绩的学生学号(假如成绩表有学生号和课程号为联合主键,其中还有成绩列字段,课程表有课程号和课程名,课程...

空空如也

空空如也

1 2 3 4 5
收藏数 98
精华内容 39
关键字:

学生学号怎么查询