精华内容
下载资源
问答
  • ①收集学生基本信息。学生信息包括学号,姓名,性别,出生年月,所属班级和籍贯(用组合框)。要求:学号,姓名,所属班级不能为空;若出生年月有输入,则必须为日期型。点击提交按钮后,弹出消息框显示所填信息。 ②...
  • 【Python课程设计】学生成绩管理系统

    万次阅读 多人点赞 2020-06-30 20:14:05
    学生成绩管理系统1、需求分析2、功能设计与分析1、使用数据库对数据进行存取(1)使用PyMySQL模块操作数据库对数据进行存取(2)创建数据库school,创建数据表student_sore、teacher_login(3)使用xlrd模块从Excel...

    1、需求分析

    1. 通过类的知识实现学生成绩信息(学号、姓名、院系、三门课成绩、考试平均成绩、同学互评分、任课教师评分、综合测评总分,其中综合测评总分由:考试平均成绩70%,同学互评分10%,任课教师评分20% );
    2. 能够实现学生成绩信息的保存和读取(使用数据库对数据进行存取);
    3. 实现所有相关信息的输入、输出、查找、删除、修改等功能;
    4. 系统界面应至少实现控制台界面(使用桌面窗体界面进行交互);
    5. 通过xlrd和xlwt模块读取和写入Excel文件;

    2、功能设计与分析

    1、使用数据库对数据进行存取
    (1)使用PyMySQL模块操作数据库对数据进行存取

    先安装PyMySQL模块:pip install PyMySQL,再使用时直接导入即可:import pymysql

    (2)创建数据库school,创建数据表student_sore、teacher_login

    可以使用Navicat for MySQL创建,也可以使用预处理语句创建表,若不存在则创建,若存在则跳过;
    在这里插入图片描述

    (3)使用xlrd模块从Excel文件中读取数据到数据库

    先安装xlrd模块:pip install xlrd,再使用时直接导入即可:import xlrd
    打开一个Excel文件,通过sheet的索引获取sheet表,循环获取每个单元格的值,一行一行读取到数据库表中。
    ibG9nLmNzZG4ubmV0L3FxXzQzOTcxNTA0,size_16,color_FFFFFF,t_70)
    在这里插入图片描述

    (4)定义一个PyMySQL增删改查的工具类PyMySQLUtils
    • 1)def __init__(self) 获取连接:打开数据库的连接,使用cursor()方法获取操作游标;
      在这里插入图片描述
    • 2)def fetchall(self, sql) 查询获取多条数据:使用execute()方法执行SQL语句,使用fetchall()方法获取多条数据;
      在这里插入图片描述
    • 3)def fetchone(self, sql) 查询获取单条数据:使用execute()方法执行SQL语句,使用fetchone()方法获取单条数据;
      在这里插入图片描述
    • 4)def execute(self, sql) 添加删除更新操作:使用execute()方法执行SQL语句,提交到数据库执行,发生错误时回滚;
      在这里插入图片描述
    • 5)def close(self) 关闭连接:关闭游标,关闭数据库连接;
      在这里插入图片描述
    2、使用桌面窗体界面进行交互
    (1)使用Tkinter模块实现图形化界面GUI设计

    使用时直接导入即可:

    from tkinter import *
    from tkinter import ttk
    import tkinter.font as tkFont
    import tkinter.messagebox as messagebox
    
    (2)开始界面:教师注册、教师登录、退出系统

    class StartMenu:(销毁上一个窗口)初始化一个根窗口window;添加Label标签控件,用于单行文本显示"学生成绩管理系统";添加三个Button按钮控件,将其分别与关联函数lambda: TeacherRegister、lambda: TeacherLogin、window.destroy绑定;在主事件循环中等待用户触发事件响应。

    (3)教师注册界面:输入账号、输入密码、确认账号、确定、返回

    class TeacherRegister:(销毁上一个窗口)初始化一个根窗口window;添加Label标签控件,用于单行文本显示"教师注册页面",“输入账号”、“输入密码”、“确认账号”;添加三个Entry输入控件,用于显示用户输入文本,添加两个Button按钮控件,将其分别与关联函数register、back绑定;在主事件循环中等待用户触发事件响应。
    在这里插入图片描述

    (4)教师登录界面:账号、密码、确定、返回

    class TeacherLogin:(销毁上一个窗口)初始化一个根窗口window;添加两个Entry输入控件,用于显示用户输入文本,添加两个Button按钮控件,将其分别与关联函数login、back绑定;在主事件循环中等待用户触发事件响应。
    在这里插入图片描述

    (5)教师操作界面:添加、修改、查询、删除

    class TeacherMenu:(销毁上一个窗口)初始化一个根窗口window;添加三个Frame框架控件,用于框架分组self.frame_center、self.frame_left、frame_right;在中心区域添加ttk.Treeview树视图窗口控件,ttk.Scrollbar 滚动条控件,设置列、表头,定义储存数据的列表,从数据库获取表格内容,设置表格内容,给表头绑定函数tree_sort_column,点击可排序,给表格绑定点击事件tree_click,获取被点击的条目;在左方区域添加八个Label标签控件,用于单行文本显示;添加八个Entry输入控件,用于显示用户输入文本,添加六个Button按钮控件,将其分别与关联函数绑定;在主事件循环中等待用户触发事件响应。
    在这里插入图片描述
    在这里插入图片描述

    3、实现所有相关信息的添加、修改、查询、删除等功能
    (1)添加学生成绩信息

    insert:判断输入框中的学号在不在储存学号的列表中,在则警告"该学生成绩信息已存在!";不在则先添加输入框中的数据到数据库中,接着添加到储存储存数据的列表中,最后添加到表格内容中。
    在这里插入图片描述

    (2)修改学生成绩信息

    update:判断输入框中的学号在不在储存学号的列表中,不在则警告"该学生成绩信息不存在!";在则先根据输入框中的学号修改数据库中的数据,接着根据输入框中的学号在储存学号列表的索引删除储存数据的列表中的数据,最后删除表格内容中的数据。
    在这里插入图片描述

    (3)查询学生成绩信息

    select:判断输入框中的学号在不在储存学号的列表中,不在则警告"该学生成绩信息不存在!";在则根据输入框中的学号在储存学号列表的索引直接查询储存数据的列表中的数据,把数据设置到输入框中。
    在这里插入图片描述

    (4)删除学生成绩信息

    delete:判断输入框中的学号在不在储存学号的列表中,不在则警告"该学生成绩信息不存在!";在则先根据输入框中的学号删除数据库中的数据,接着根据输入框中的学号在储存学号列表的索引删除储存数据的列表中的数据,最后删除表格内容中的数据。
    在这里插入图片描述

    (5)清空输入框的内容

    clear:通过StringVar.set()方法直接把输入框的内容设置为空。
    在这里插入图片描述

    (6)写入到Excel文件

    先安装xlwt模块:pip install xlwt,再使用时直接导入即可:import xlwt
    新建一个Excel文件,添加一个名为sheet1的表,设置允许重写覆盖,从数据库中获取数据,循环向sheet写入数据,最后保存文件中。
    在这里插入图片描述
    在这里插入图片描述

    3、总结与体会

    4、运行结果

    (1)开始界面

    在这里插入图片描述

    (2)教师注册界面

    在这里插入图片描述
    在这里插入图片描述

    (3)教师登录界面

    在这里插入图片描述
    在这里插入图片描述

    (4)教师操作界面
    1)添加学生成绩信息

    在这里插入图片描述
    在这里插入图片描述

    2)修改学生成绩信息

    在这里插入图片描述
    在这里插入图片描述

    3)查询学生成绩信息

    在这里插入图片描述
    在这里插入图片描述

    4)删除学生成绩信息

    在这里插入图片描述
    在这里插入图片描述

    5)学生成绩信息排序

    在这里插入图片描述
    在这里插入图片描述

    6)写入到Excel文件

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    附:源代码+Excel文件+报告下载地址

    展开全文
  • vb学生成绩管理系统

    2013-06-28 08:55:24
     学生成绩管理系统 课程设计的目的  理解面向对象的软件设计基本理论,学习VB软件设计的基本方法,熟悉一般软件项目开发的基本步骤,培养运用VB解决实际问题的能力和技巧。 课程设计的主要内容和要求(包括原始...
  • 学生成绩管理系统是用工具codeblock开发的,语言类型c语言,实现功能:1、创建学生成绩库 2、学生信息显示 3、学生学号排序 4、学生成绩排序 5、添加学生信息 6、根据学号删除学生信息 7、查找学生信息 、8退出...

    学生成绩管理系统

    简介
    此学生成绩管理系统是用工具codeblock开发的,语言类型c语言,实现功能:1、创建学生成绩库 2、学生信息显示 3、学生学号排序 4、学生成绩排序 5、添加学生信息 6、根据学号删除学生信息 7、查找学生信息 、8退出程序。
    本次实验实现了c语言坐标显示和window窗体显示
    先上一下试验界面图
    在这里插入图片描述

    欢迎关注博主,博主会不定时更新学习的知识和大家共享

    想要源代码的可以关注微信公众号回复:c学生成绩管理系统
    在这里插入图片描述

    实验代码解析

    运行程序
    出现窗体程序,点击是进入成绩管理系统,点击否退出
    在这里插入图片描述

    窗体代码

    
    SetConsoleTitle("学生英语成绩管理系统");//窗口名称
    IDYES== MessageBox(NULL,"欢迎进入学生管理系统","半熟的瓜",MB_YESNO)
    
    

    显示界面的代码

    int showlist(student *head,int x,int y)
    {
        int i;
        int out;
        char str[10][40]={
            "**************************************",
            "***********1.创建学生成绩库***********",
            "***********2.学生学号排序*************",
            "***********3.学生成绩排序*************",
            "***********4.添加学生信息*************",
            "***********5.根据学号删除学生信息*****",
            "***********6.修改学生信息*************",
            "***********7.查找学生信息*************",
            "***********8.退出程序*****************",
            "**************************************"
        };
        system("cls");//清屏函数
    
        for(i=0;i<10;i++)
        {
            gotoxy(30,i);
            printf("%s\n",str[i]);
        }
        Dayinlist(head,x,y);//每个选择执行完输出新的学生信息
        printf("\n请输入你的选择(1-8):");
        scanf("%d",&out);
        return out;
    }
    

    坐标的代码

    void gotoxy(int x,int y)
    {
        COORD pos;
        pos.X=x;
        pos.Y=y;
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
    }
    

    创建学生链表的代码

    void Createlist(int n,student *head)
    {
        student *p,*pre,*q;
        pre=head;
        q=head;
        int i;
        for(i=0;i<n;i++)
        {
            p=(student *)malloc(sizeof(student));
            printf("学号  成绩:");
            scanf("%lf%lf",&p->sno,&p->Escore);
            q=head->next;
            while(q)
            {
                if(q->sno==p->sno)
                {
                    printf("添加错误,已经有此学生的信息!!\n请重新输入!\n");
                    i--;
                    free(p);//释放空间
                    break;
                }
                else
                    q=q->next;
    
            }
            if(q==NULL)
            {
                pre->next=p;//插入链表
                p->number=pre->number+1;
                pre=p;
                pre->next=NULL;
            }
        }
        printf("创建成功!");
        system("pause");
    }
    

    输出学生信息

    void Dayinlist(student *h,int x,int y)
    {
        student *p;
        p=h->next;
        if(p==NULL)
        {
            gotoxy(x,y);
            printf("没有学生信息!!\n");
        }
        else
        {
            gotoxy(x-1,y);
            printf("-------------------");
            gotoxy(x,++y);
            printf("序号");
            gotoxy(x+5,y);
            printf("|");
            gotoxy(x+6,y);
            printf("学号");
            gotoxy(x+11,y);
            printf("|");
            gotoxy(x+12,y);
            printf("英语成绩");
            while(p)
            {
                gotoxy(x,++y);
                printf("%d",p->number);
                gotoxy(x+5,y);
                printf("|");
                gotoxy(x+6,y);
                printf("%.lf",p->sno);
                gotoxy(x+11,y);
                printf("|");
                gotoxy(x+12,y);
                printf("%.2lf",p->Escore);
                //printf("%d\t%.2lf\n",p->sno,p->Escore);
                p=p->next;
            }
            gotoxy(x-1,++y);
            printf("-------------------\n");
        }
        //system("pause");//光标等待
    }
    

    学生学号选择排序

    //学生学号,选择排序
    void Sno_paixu(student *h,int n)
    {
        int i,j;
        double temp;
        student *p,*q;
        p=h->next;
        if(p==NULL)
            printf("没有学生信息!!\n");
        else
        {
            for(i=0;i<n-1;i++)
            {
                q=p->next;
                for(j=i+1;j<n;j++)
                {
                    if(q->sno<p->sno)
                    {
                        temp=p->sno;
                        p->sno=q->sno;
                        q->sno=temp;
                        temp=p->Escore;
                        p->Escore=q->Escore;
                        q->Escore=temp;
                    }
                    q=q->next;
                }
                p=p->next;
            }
            printf("排序成功!\n");
        }
        system("pause");
    
    }
    

    学生成绩冒泡排序

    //学生成绩排序,冒泡排序
    void Escore_list(student *h,int n)
    {
        int i,j;
        double temp;
        student *p,*q;
        p=h->next;
        if(p==NULL)
            printf("没有学生信息!!\n");
        else
        {
            for(i=0;i<n-1;i++)
            {
                p=h->next;
                for(j=0;j<n-i-1;j++)
                {
                    q=p->next;
                    if(q->Escore<p->Escore)
                    {
                        temp=p->sno;
                        p->sno=q->sno;
                        q->sno=temp;
                        temp=p->Escore;
                        p->Escore=q->Escore;
                        q->Escore=temp;
                    }
                    p=p->next;
                }
            }
            printf("排序成功!\n");
        }
        system("pause");
    }
    

    添加学生的信息

    //添加学生的信息
    void add_list(student *h,int *n)
    {
        int a,i;
        student *en,*p,*pre;
        pre=h;
        printf("请输入添加学生的个数:");
        scanf("%d",&a);
        *n+=a;//学生人数添加
        for(i=0;i<a;i++)
        {
            printf("学号  英语成绩:");
            en=(student *)malloc(sizeof(student));
            scanf("%lf%lf",&en->sno,&en->Escore);
            p=h->next;
            //判断添加的是否已存在
            while(p)
            {
                if(p->sno==en->sno)
                {
                    printf("添加错误,已经有此学生的信息!!\n请重新输入!\n");
                    i--;
                    free(en);//释放空间
                    break;
                }
                pre=p;
                p=p->next;
            }
            //当p==NULL说明没有此学生的信息
            if(p==NULL)
            {
                pre->next=en;
                en->number=pre->number+1;
                pre=en;
                pre->next=NULL;
            }
        }
        printf("添加完毕!!!\n");
        system("pause");
    }
    

    根据学号删除学生的信息

    //根据学号删除学生的信息
    void delete_list(student *h)
    {
        double s;
        student *p,*pre;
        pre=h;
        p=pre->next;
        printf("请输入所要删除的学生的学号:");
        scanf("%lf",&s);
        while(p)
        {
            //找到删除学生的学号
            if(p->sno==s)
            {
                pre->next=p->next;
                free(p);
                pre=pre->next;
                while(pre)
                {
                    pre->number--;
                    pre=pre->next;
                }
                break;
            }
            pre=p;
            p=p->next;
    
        }
        //没有找到所删除学生的信息
        if(p==NULL)
            printf("没有找到该学生的学号!\n");
        else
            printf("删除成功!\n");
        system("pause");
    }
    

    修改学生的信息

    //修改学生的信息
    void revise_list(student *h)
    {
        student *p;
        p=h->next;
        int a;
        double s;
        printf("请输入所要修改信息的学生的学号:");
        scanf("%lf",&s);
        while(p)
        {
            //找所要修改的学生信息
            if(p->sno==s)
            {
                printf("1、修改学号的信息\n");
                printf("2、修改成绩的信息\n请输入做要修改的属性序号:");
                while(1)
                {
                    scanf("%d",&a);
                    if(a==1)
                    {
                        printf("学号修改为:");
                        scanf("%lf",&p->sno);
                        break;
                    }
                    else if(a==2)
                    {
                        printf("成绩修改为:");
                        scanf("%lf",&p->Escore);
                        break;
                    }
                    else
                        printf("没有该属性的序号,请再输入一次:");
                }
                break;
            }
            p=p->next;
        }
        if(p==NULL)
            printf("没有该学号!\n");
        else
            printf("修改成功!\n");
        system("pause");
    }
    

    查找学生信息

    //查找学生信息
    void Select_list(student *h)
    {
        double s;
        int t,c=0;//c是标志位
        student *p;
        p=h->next;
    
        printf("1.学号查找\n");
        printf("2.成绩查找\n请输入你们所要查找的序号:");
        while(1)
        {
            scanf("%d",&t);
            if(t==1||t==2)
                break;
            else
                printf("选择错误,请再输入一次:");
        }
    
        if(t==1)
        {
            printf("请输入学号:");
            scanf("%lf",&s);
            while(p)
            {
                if(p->sno==s)
                {
                    printf("学号:%.lf成绩:%.2lf\n",p->sno,p->Escore);
                    c=1;
                }
                p=p->next;
            }
        }
        else
        {
            printf("请输入成绩:");
            scanf("%lf",&s);
            while(p)
            {
                if(p->Escore==s)
                {
                    printf("学号:%.lf成绩:%.2lf\n",p->sno,p->Escore);
                    c=1;
                }
                p=p->next;
            }
        }
        if(c==0)
            printf("没有此学生信息!!");
        system("pause");
    }
    
    展开全文
  • 系统管理员的使用权限包括:用户管理、学生信息管理、学生成绩查询,教师的使用权限包括学生信息查询、学生成绩管理、学生成绩查询,学生的使用权限仅有学生信息查询和学生成绩查询。 系统管理员帐号在创建用户表时...

    学生信息管理系统
    系统用户分三类:系统管理员、教师、学生,不同的用户有不同的使用权限。
    系统管理员的使用权限包括:用户管理、学生信息管理、学生成绩查询,教师的使用权限包括学生信息查询、学生成绩管理、学生成绩查询,学生的使用权限仅有学生信息查询和学生成绩查询。
    系统管理员帐号在创建用户表时建立,在应用程序中不能修改。教师的用户名和密码由系统管理员通过用户管理模块设定,学生信息由系统管理员通过学生信息管理模块来设定,学生成绩由教师通过学生成绩管理模块来设定。学生可通过系统登录模块用学号作为用户名进行注册,不存在的学号不能注册,注册时可设定用户密码,已注册的学生不能重新注册,也不能修改密码。学生登录系统后只可以查询本人的信息,但可查询所有学生的成绩。

    1.这是大一接触学完的数据库和C#结合一起的操作系统,较为简单
    2. 比较适合新手,过程就是不断的查询数据库和进行写入C#窗体
    简单的思维导图

    定义了六个表,一个最没有用的中间值表,其实严格是5个

    mind是中间值表,StudentAd是管理员表,然后依次是成绩表,信息表,注册信息表,教师表

    如果是我再次写,会写四个表,管理员表,成绩表,信息表,注册信息表

    正式开始主界面分为在这里插入图片描述

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Configuration;
    using System.Data.SqlClient;
    using Conmon;
    
    namespace Cshaper大作业学生信息管理系统
    {
        public partial class Form1 : Form
        {
            public int str { get; private set; }
    
            public Form1()
            {
                InitializeComponent();
            }
            private void clera()
            {
                textBox1.Clear();
                textBox2.Clear();
            }
            private void button1_Click(object sender, EventArgs e)
            {
                string conStr = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;
                string useName = textBox1.Text.Trim();
                string usepass = textBox2.Text.Trim();
                if (AdradioButton.Checked)
                {
                    //管理员登录
                    using (SqlConnection con = new SqlConnection(conStr))
                    {
                        string sql = string.Format("select * from StudentAd where Adname='{0}' and Adpass='{1}'", useName, usepass);
                        using (SqlCommand cmd = new SqlCommand(sql, con))
                        {
                            con.Open();
                           
                            using (SqlDataReader reader = cmd.ExecuteReader())
                            {
                                //判断是否有返回值
                                if (reader.HasRows) 
                                {
                                    MessageBox.Show("登录成功");
                                    this.DialogResult = DialogResult.OK;
                                    this.Close();
    
                                }
                                else
                                {
                                    MessageBox.Show("登录失败");
                                    clera();
                                    textBox1.Focus();
                                }
                            }
    
                        }
                    }
                   
                }
                else if (TeradioButton2.Checked)
                {
                    //Teacher登录
                    using (SqlConnection con = new SqlConnection(conStr))
                    {
                        string sql = string.Format("select * from Teacher where UserID='{0}' and UserPassWord='{1}'", useName, usepass);
                        using (SqlCommand cmd = new SqlCommand(sql, con))
                        {
                            con.Open();
                            using (SqlDataReader reader = cmd.ExecuteReader())
                            {
                                //判断是否有返回值
                                if (reader.HasRows)
                                {
                                    MessageBox.Show("登录成功");
                                    this.DialogResult = DialogResult.Yes;
                                    this.Close();
    
                                }
                                else
                                {
                                    MessageBox.Show("登录失败");
                                    clera();
                                    textBox1.Focus();
                                }
                            }
    
                        }
                    }
                    
                }
                else if (StradioButton3.Checked)
                {
                    //学生登录
                    using (SqlConnection con = new SqlConnection(conStr))
                    {
                        string sql = string.Format("select * from studZcxx where student_id='{0}' and student_pss='{1}'", useName, usepass);
                        using (SqlCommand cmd = new SqlCommand(sql, con))
                        {
                            con.Open();
                            using (SqlDataReader reader = cmd.ExecuteReader())
                            {
                                //判断是否有返回值
                                if (reader.HasRows)
                                {
                                    MessageBox.Show("登录成功");
    
                                    minds(useName);
                                    this.DialogResult = DialogResult.No;
                                    this.Close();
    
                                }
                                else
                                {
                                    MessageBox.Show("登录失败");
                                    clera();
                                    textBox1.Focus();
                                }
                            }
    
                        }
                    }
                }
    
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                Stzhuce stuXX = new Stzhuce();
                stuXX.ShowDialog();
            }
    
    
            //修改中间值  
            public int minds(string mins)
            {   
                int i = Convert.ToInt32(mins);
                string a1 = "update mind set mind='"+ i + "'";
                int n = SqlHelper.ExecuteNonquery(a1);
    
                return i;
            }
        }
    }
    !!这里的中间值是自己脑子发热,因为要通过学生登录了,进入学生登录页面,窗体传值又总是报错,于是直接通过数据库来写入一个中间数据表,来记录是谁进入了主页面,其实可以不用写的怎么麻烦,定义一个全局变量即可!!
    
    

    在这里插入图片描述
    管理员登录成功的界面

    写完以后我进行修改,发现其实很多语句都可以进行封装
    于是先定义了一个SqlHelper类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    
    namespace Conmon
    {
        
        public class SqlHelper
        {//读取连接字符串
            private static string conStr = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;
            /// <summary>
            /// 返回数据集合
            /// </summary>
            /// <param name="sql">要执行查询的sql语句</param>
            /// <param name="param">需要的参数</param>
            /// <returns></returns>
            public static DataTable ExecuteDataTable(string sql, params SqlParameter[] param)
            {
                DataTable dt = new DataTable();
                using (SqlConnection con = new SqlConnection(conStr))
                {
                    SqlDataAdapter adapter = new SqlDataAdapter(sql, con);
                    //添加参数
                    adapter.SelectCommand.Parameters.AddRange(param);
                    adapter.Fill(dt);
                }
                return dt;
            }
            /// <summary>
            /// 执行增删改
            /// </summary>
            /// <param name="sql">要执行的sql语句</param>
            /// <param name="param">sql语句需要的参数</param>
            /// <returns></returns>
            public static int ExecuteNonquery(string sql, params SqlParameter[] param)
            {
                int n = -1;
                using (SqlConnection con = new SqlConnection(conStr))
                {
                    using (SqlCommand cmd = new SqlCommand(sql, con))
                    {
                        con.Open();
                        cmd.Parameters.AddRange(param);
                        n = cmd.ExecuteNonQuery();
                    }
                }
                return n;
            }
            /// <summary>
            /// 执行查询,返回首行首列
            /// </summary>
            /// <param name="sql">要查询的sql语句</param>
            /// <param name="param">sql语句需要的参数</param>
            /// <returns></returns>
            public static object ExecuteScalar(string sql, params SqlParameter[] param)
            {
                object o = null;
                using (SqlConnection con = new SqlConnection(conStr))
                {
                    using (SqlCommand cmd = new SqlCommand(sql, con))
                    {
                        con.Open();
                        cmd.Parameters.AddRange(param);
                        o = cmd.ExecuteScalar();
                    }
                }
                return o;
            }
            public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] param)
            {
                SqlDataReader reader;
                SqlConnection con = new SqlConnection(conStr);
                using (SqlCommand cmd = new SqlCommand(sql, con))
                {
                    cmd.Parameters.AddRange(param);
                    con.Open();
                    //CommandBehavior.CloseConnection:如果关闭SqlDataReader,则Connection也随着关闭
                    reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                }
                return reader;
            }
        }
    }
    
    

    再写管理员类

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using Conmon;
    
    namespace Cshaper大作业学生信息管理系统
    {
        public partial class Ad : Form
        {
            public Ad()
            {
                InitializeComponent();
            }
    
    
            private void button2_Click(object sender, EventArgs e)
            {
                if (textBox1.Text=="" || textBox2.Text=="")
                {
                    MessageBox.Show("用户名和密码不能为空");
                    return;
                }
                string sql = "insert into Teacher(UserID,UserPassWord) values(@id,@word)";
    
                //Teacher
    
                SqlParameter[] p = new SqlParameter[]{
                            new SqlParameter("@id", Convert.ToString(textBox1.Text.Trim())),
    
                             new SqlParameter("@word", Convert.ToString(textBox2.Text)),
                            };
                int n = SqlHelper.ExecuteNonquery(sql, p);
                if (n > 0)
                {
                    MessageBox.Show("添加成功!");
                }
                textBox1.Text = "";
                textBox2.Text = "";
                textBox1.Focus();
    
            }
    
          
    
            private void button3_Click(object sender, EventArgs e)
            {
                string drop1 = textBox3.Text.Trim();
                string sql = "DELETE FROM Teacher WHERE UserID = '"+ drop1 + "'";
                
                int n = SqlHelper.ExecuteNonquery(sql);
                if (n > 0)
                {
                    MessageBox.Show("删除成功!");
                }
                else
                {
                    MessageBox.Show("删除失败,请确定是否存在!!!");
                }
                textBox3.Text = "";
                textBox3.Focus();
            }
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                string sql = "select * from Teacher";
                DataTable dt = SqlHelper.ExecuteDataTable(sql);
                dataGridView1.DataSource = dt;
                dataGridView1.Columns[0].HeaderCell.Value = "教师用户名";
                dataGridView1.Columns[1].HeaderCell.Value = "教师用户密码";
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                string ab1 = textBox4.Text.Trim();
                string ab2 = textBox5.Text.Trim();
                string sql = "update Teacher set UserID = '"+ab2+"' where UserID='"+ab1+"'";
                int n = SqlHelper.ExecuteNonquery(sql);
                if (n > 0)
                {
                    MessageBox.Show("修改成功!");
                }
                else
                {
                    MessageBox.Show("修改失败,请确定是否存在!!!");
                }
                //修改成功后可能要再进行修改密码,所有我们把要修改用户名的给清空
                textBox4.Text = ab2;
             
            }
    
            private void button4_Click(object sender, EventArgs e)
            {
                string ab1 = textBox4.Text.Trim();
                string ab2 = textBox6.Text.Trim();
                string sql = "update Teacher set UserPassWord = '" + ab2 + "' where UserID='" + ab1 + "'";
                int n = SqlHelper.ExecuteNonquery(sql);
                if (n > 0)
                {
                    MessageBox.Show("修改成功!");
                }
                else
                {
                    MessageBox.Show("修改失败,请确定是否存在!!!");
                }
            }
    
            private void 学生信息查询ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                StuXX stuXX = new StuXX();
                stuXX.ShowDialog();
            }
    
            private void 学生成绩查询ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                StuCJ stuXX = new StuCJ();
                stuXX.ShowDialog();
            }
        }
    }
    
    
    
    
    

    这里弹出的两个以对话框的形式弹出,附
    StuCJ()

    using Conmon;
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace Cshaper大作业学生信息管理系统
    {
        public partial class StuCJ : Form
        {
            public StuCJ()
            {
                InitializeComponent();
            }
    
            private void timer1_Tick(object sender, EventArgs e)
            {
    
                string sql = "select * from studentCJ";
                DataTable dt = SqlHelper.ExecuteDataTable(sql);
                dataGridView1.DataSource = dt;
                dataGridView1.Columns[0].HeaderCell.Value = "学号";
                dataGridView1.Columns[1].HeaderCell.Value = "姓名";
                dataGridView1.Columns[2].HeaderCell.Value = "成绩";
            }
    
            private void StuCJ_Load(object sender, EventArgs e)
            {
    
            }
        }
    }
    
    

    StuXX类

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using Conmon;
    
    namespace Cshaper大作业学生信息管理系统
    {
        public partial class StuXX : Form
        {
            public StuXX()
            {
                InitializeComponent();
            }
    
            private void StuXX_Load(object sender, EventArgs e)
            {
    
            }
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                string sql = "select * from studentXX";
                DataTable dt = SqlHelper.ExecuteDataTable(sql);
                dataGridView1.DataSource = dt;
                dataGridView1.Columns[0].HeaderCell.Value = "学号";
                dataGridView1.Columns[1].HeaderCell.Value = "姓名";
                dataGridView1.Columns[2].HeaderCell.Value = "性别";
                dataGridView1.Columns[3].HeaderCell.Value = "年龄";
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" || textBox4.Text == "")
                {
                    MessageBox.Show("不能为空");
                    return;
                }
                string a1 = textBox1.Text.Trim();
                string a2 = textBox2.Text.Trim();
                string a3 = textBox3.Text.Trim();
                string a4 = textBox4.Text.Trim();
                string sql = "insert into studentXX values('"+ a1 + "','" + a2 + "','" + a3 + "'," + a4 + ")";
                try
                {
                    int n = SqlHelper.ExecuteNonquery(sql);
                    if (n > 0)
                    {
                        MessageBox.Show("添加成功!");
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("请检查,学号唯一,姓名和学号不能为空,性别只能填男或女,年龄请认真填写");
                }
                textBox1.Text = "";
                textBox2.Text ="";
                textBox3.Text = "";
                textBox4.Text ="";
                textBox1.Focus();
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                string drop1 = textBox5.Text.Trim();
                string sql = "DELETE FROM studentXX WHERE student_id = '" + drop1 + "'";
    
                int n = SqlHelper.ExecuteNonquery(sql);
                if (n > 0)
                {
                    MessageBox.Show("删除成功!");
                    textBox5.Text = "";
                    textBox5.Focus();
                }
                else
                {
                    MessageBox.Show("删除失败,请确定是否存在!!!");
                }
            }
        }
    }
    
    

    这样我们的三分之一就完成了,后面的教师也是这样,总的来说是很简单的
    就不占太多笔墨了
    其中SQlHElpe类是需要学习的,学习完这个类其他大部分都能完成
    数据库的使用的时候注意赋值的’ '这个是很重要的,在写代码的时候,建议先拿sql语句去运行看是否有返回结果和结果是否是自己想要的,在进行带入!
    数据库里是可以运行触发器的,触发器是很重要的存在,我在写代码的时候想学生信息表和学生成绩表同步更新,最后自己使用了触发器可以解决!

    归根本质还是对数据库的操作,然后通过下图去返回结果集

    在这里插入图片描述

    加油,华为!加油,中国!
    努力学习,刻苦奋斗,做党的接班人!
    为人民服务!!
    努力写代码,刻苦去奋斗!未来是我们的

    代码已经上传到GitHub,搜索对应标题学生信息管理系统,即可
    不鼓励直接抄袭,鼓励刻苦学习

    展开全文
  • Private Sub comboCoursetype_KeyPress(KeyAscii As Integer) KeyAscii = 0 控件comboCoursetype的KeyPress事件(按下键盘) ...实例化标准解释就是用类创建对象的过程,实际上就是把抽象的类变成具体的对...

     

    下拉菜单按键失效

    Private Sub comboCoursetype_KeyPress(KeyAscii As Integer)
        KeyAscii = 0

    这段代码是做什么的呢?其实就是控件comboCoursetype的KeyPress事件(按下键盘)

    KeyAscii As Integer:是你所按的键的Ascii码的值,返回值为整数。

    下面KeyAscii=0的作用是取消按键。让你的按键操作失效。即按下的键无效。

    也就是下拉菜单只能选择不能打字。按下的任何键都无效。

     

    实例化

    不是这个窗体里面的。是突然想起来前几天遗留的问题。

    首先理解类和对象的概念,类就以一类事物的描述,对象就是一个类的具体的某一个。对象是由类实例化而来。

    实例化标准解释就是用类创建对象的过程,实际上就是把抽象的类变成具体的对象,从无到有,从虚到实,从抽象到具体的过程,就是“实例化”。(人类和我的关系,我具有人类所有的属性和方法)

    “类是一段代码。是函数(一般叫方法),变量(一般叫字段),属性(用来设置或取得字段的特殊方法)的集合。
    类的目的就是定义对象的特性。
    而类也只是一段代码而已。如何使用它还是要靠对象。这就需要实例化,其实就是在内存里分配一个特殊的变量。这个变量就包含(一般叫封装)了这个类所有能实现的功能。(这里的功能不仅指这个类里的方法,也包括属性和字段。)”

    引用自https://www.cnblogs.com/cwk/archive/2008/04/10/1146931.html

     

    判断内容是否为空

    Testtxt 是定义的布尔型函数(在模块里定义的)

    .当用这个函数打开txtCourseno.Tex后会得到返回值

    if not  then判断的是 其返回值是否为假...相当于if Testtxt=false then.当testtxt为假值的时候执行then后面的语句。

    当输入空值的时候,先用if not语句进行判断, If Not Testtxt(txtClassno.Text) Then,到模块中调用函数Testtxt.当If Trim(txt) = "" Then Testtxt = False。将False值返回给Testtxt,此时执行then后面的语句。(开始我想错了,后面设置断点之后才明白具体是怎么执行的。主要对if not then作为一个整体没有搞清楚。)

    这个问题困扰我很久,今天终于搞明白了。开心~


      1.If mrc.BOF Then——当前指针在第一条记录之前

    2.If Not mrc.BOF Then——指针未到达第一条记录

    3.If mrc.EOF Then——当前指针在最后一条记录之后

        4.If Not mrc.EOF Then——指针未到达最后一条记录

        5.If mrc.BOF AND mrc.EOF Then:没有任何记录

        6.If Not (mrc.BOF and mrc.EOF) Then:指针位于记录集中,一定有记录

    引自https://blog.csdn.net/ww130929/article/details/38259945

    缺少子程序、函数或属性

    同时发现一个问题,引用函数Msgbox里M自动变成小写msgbox(), 为什么会自动变小写,其实是因为代码里重新定义了函数msgbox,而VB会优先调用自定义函数msgbox(),VB本身的内部函数msgbox()就会失效,解决办法有两种

    1、你的整个工程中查找msgbox,找到自定义的msgbox函数,把它删除或改名(建议后者,除非你这个函数是没什么作用的),这样VB内部函数msgbox就可以使用了;
    2、指定msgbox的父对象(VBA),也可以让VB强行调用其内部函数而不是自定义函数,比如:
    b = msgbox(a)
    改为
    b = VBA.msgbox(a)

    我采用的是第一种方式,查找,发现前面定义错了msgtxt,错写成了msgbox。改好之后问题解决了,但是  msgbox仍然没有自动变成Msgbox,改成大写之后还会变成小写,不知道后面有没有影响)

     

    加载DTpicker日期控件

    VB默认的控件栏中是没有DTpicker日期控件的,添加过程:工具——部件——控件——“Microsoft  Windows Common Controls-2.6.0”——应用——确定

    展开全文
  • 菜单栏菜单栏思路: 目录,下拉菜单,图标,分割线,下层菜单(不够还可更多层...添加图标 ico后缀名的格式图标,分割线参考地址图片 http://ico.58pic.com/icon/154244.html添加对应的Id依次输入学员管理系统成绩
  • 学生管理系统 源代码

    2019-01-07 21:43:37
    1. “考试成绩管理系统用户登录”功能 具体要求: (1) 按照图示排列相应的控件,控件名称自定义,其中,界面中的图片可以不加; (2) 当输入正确的用户名和密码时,登录到主系统,如图所示,并且用户名或密码...
  • (C#+SQL)旅游管理系统

    热门讨论 2013-06-25 12:16:27
    实训项目:《旅行社管理系统》  1、系统功能分析与系统设计    2、数据库设计   数据库名称:db_travelAgency  数据表:  (1)操作员信息表(编号,姓名,密码,类别)    (2)客户信息表(编号,姓名,...
  • 基于ASP.NET在线考试系统设计

    热门讨论 2011-03-14 16:07:15
    教师类用户主要对试卷进行管理,包括创建试卷(选择题和上机题),评阅试卷(选择题系统自动评定,上机题由教师评定),评定平时成绩,试题管理(可以增加,删除,修改),还可以生成成绩单以及查询学生成绩 ...
  • 创建学生数据库StuDB,文件名和位置自定,在此数据库中创建如下三张表: 学生表(student) (  学号(sno) 普通编码定长字符类型,长度9,主码,  姓名(sname) 普通编码定长字符类型,长度10,非空,  性别(ssex...
  • 本书为上册基础篇,内容包括项目开发所需的核心知识和能力,基于.net framework 2.0,涉及“学生成绩管理系统”的需求分析和设计成果、c#基本语法、应用界面构造、对数据库的操作、创建和使用对象类、错误处理、事件...
  • 我们数据库课程设计做学生成绩管理系统。 我现在在做登录界面的代码,对应的表结构是user_name,user_pwd,status遇到了一个问题:就是只要我输入的用户名和密码正确,在combobox里面选择管理员就进入管理员页面,选择...
  • vc++ 应用源码包_1

    热门讨论 2012-09-15 14:22:12
    CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...
  • vc++ 应用源码包_2

    热门讨论 2012-09-15 14:27:40
    CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...
  • vc++ 应用源码包_4

    热门讨论 2012-09-15 14:38:35
    CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...
  • vc++ 应用源码包_3

    热门讨论 2012-09-15 14:33:15
    CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...
  • vc++ 应用源码包_5

    热门讨论 2012-09-15 14:45:16
    CCAMS系统是一种用于局域网下的CS模式的软件管理和监测系统源码 它包括客户端和服务端,客户端软件主要作用是监测本主机的活动,并将监测到的信息定时发送给服务器。服务器可以将收集到的信息以柱状图和文件列表以及...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...
  • Visual c++案例开发集锦

    2008-07-11 18:08:35
    觉得可以作为平常的参考,对初学者或许有点帮助吧 内容: 第一章 窗口的动画效果 带有工具栏的对话框 单文档启动界面 实现全屏显示 实现透明窗体 为对话框程序制作真彩色启动界面 ...学生成绩管理系统
  • 实例252 创建透明窗体 实例253 设置窗体透明度 实例254 创建字型窗体 实例255 创建T型窗体 8.6 MDI窗体应用 实例256 设计多文档界面 实例257 MDI窗体图片自适应 实例258 禁用MDI窗体控制栏中“最大化”按钮 ...
  • C#开发典型模块大全

    2014-03-12 18:11:22
    15.3.10 成绩查询 399 15.3.11 考试设置 401 15.3.12 添加试题 403 15.3.13 修改试题 406 第16章 网页浏览器模块 16.1 概述 410 16.2 关键技术 410 16.2.1 网页浏览器核心控件 410 16.2.2 网页多...
  • java源码包2

    千次下载 热门讨论 2013-04-20 11:28:17
    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...
  • java源码包3

    千次下载 热门讨论 2013-04-20 11:30:13
    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...
  • Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...
  • Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...
  • java源码包

    2015-12-01 16:29:37
    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...
  • 实例018 设计关于进销存管理系统的界面 第2章 Java基础应用 2.1 基本语法 实例019 输出错误信息与调试信息 实例020 从控制台接收输入字符 实例021 重定向输出流实现程序日志 实例022 自动类型转换与强制类型...
  • 实例018 设计关于进销存管理系统的界面 第2章 Java基础应用 2.1 基本语法 实例019 输出错误信息与调试信息 实例020 从控制台接收输入字符 实例021 重定向输出流实现程序日志 实例022 自动类型转换与强制类型...

空空如也

空空如也

1 2 3
收藏数 54
精华内容 21
关键字:

创建学生成绩管理系统窗体