基于C#结合SQL设计学生成绩系统系统

    • 错误集合
  • 以下为C#部分
    • 呈现效果
    • C#代码

这是数据库大作业,原本想的是用python和SQL,但遇到了很多错误,相对C#也很麻烦,因此换了C#。但还是先记录一下基于python时的错误,错误基本是在连接数据库时发生的。

错误集合

  • 需要打开对应服务器的TCP/IP 协议,而且修改后需要重启服务器!!!

详细操作步骤:

  • 需要修改IPAII的TCP端口为1433,
    详细操作步骤:
  • 需要连接服务器
  • 采用Windows身份认证登陆自己电脑上的数据库时,一定要有host

python连接数据库代码

conn = pymssql.connect(host = 'localhost',server='LENOVO-PC\LOKII',database = "S-T")

以下为C#部分

呈现效果

基本布局如下,就最基本的那种窗口体。

listview效果

datagridview效果

C#代码

C#的语言风格和C挺像的,简洁规范,不会太难,很容易上手。这个系统用的的C#控件也不多,除了button和text,也就是listview和datagridview,这两个只要弄清楚最基本的规则也差不多够用了。

每个窗体就相当于一个单独的子程序,所以需要声明全局变量,从而获得老师的登录名用于成绩展示的部分。

  • 声明全局变量

    1.先新建一个cs文件,声明全局变量

    2.在登录页将用户名保存为需要传递的字符串

    3.在别的窗体使用该字符串

//1
namespace 学生成绩系统
{class stloginname{public static string passData;}
}//2            teloginname .passData = textBox1.Text.Trim ();//保存传递的字符串查询所教课程  myForm = new 查询所教课程 ();//构建B窗体的一个实例//3string tno = "";tno = teloginname .passData;
  • 数据库连接部分,这里连接的是本地数据库,所以没有设置服务器名字。若需远程连接,需确保与要连接的数据库处于同一个局域网中。
            SqlConnection conn = new SqlConnection("server=;uid=sa;pwd=12345678;database=ScoreSearch");conn.Open();
  • 窗口跳转部分,从登录页面跳回开始页面(即成绩系统)。
            成绩系统 f = new 成绩系统();f.Owner = this;this.Hide();f.ShowDialog();Application.ExitThread();
  • 登录部分的设计,算是静态登录,不是动态。即不是给每一个登录用户在数据库里面创建一个身份,而是在表记录他们的用户名和密码。从而直接将获得的登录名、密码与表里面的进行匹配,然后直接以sa的身份登录进去。
            string loginname = textBox1.Text.Trim();   //获取文本框里输入的用户名string loginpwd = textBox2.Text.Trim();//检查输入是否为空if (String.IsNullOrEmpty(loginname) || String.IsNullOrEmpty(loginpwd)){MessageBox.Show("用户名或密码不能为空");return;}//获取表里所记录的用户名和密码并进行匹配string st1 = "select 班主任编号 from classteacher_info where (班主任编号='" + textBox1.Text + "')";SqlCommand my1 = new SqlCommand(st1, conn);SqlDataReader sdr = my1.ExecuteReader();if (sdr.HasRows){sdr.Close();string st2 = "select 班主任密码 from classteacher_info where (班主任编号='" + textBox1.Text + "')";SqlCommand my2 = new SqlCommand(st2, conn);string text1 = my2.ExecuteScalar().ToString();text1 = text1.Trim();string text2 = textBox2.Text;text2 = text2.Trim();if (text1 ==text2){MessageBox.Show("登录成功!");conn.Close();班主任操作页 f = new 班主任操作页();f.Owner = this;this.Hide();f.ShowDialog();Application.ExitThread();}else{conn.Close();MessageBox.Show("用户不存在或密码错误!");textBox1.Text = "";textBox2.Text = "";}}else{conn.Close();MessageBox.Show("用户不存在或密码错误!");textBox1.Text = "";textBox2.Text = "";}

注意,获取text输入最好trim一下,以免有空格,导致无法匹配。

  • listview操作部分,包括读取和写入
            listView1.Items.Clear();  //清空listviewstring ctno = "";ctno = ctloginname.passData;SqlConnection conn = new SqlConnection("server=;uid=sa;pwd=12345678;database=ScoreSearch");conn.Open();string st1 = "select 班主任所在专业 from classteacher_info where (班主任编号='" + ctno + "')";SqlCommand my1 = new SqlCommand(st1, conn);           //定义OleDbCommnad对象并连接数据库 string maj = my1.ExecuteScalar().ToString();string st2 = "select * from score_info where (学生专业='" + maj + "') ";SqlCommand my2 = new SqlCommand(st2, conn);           //读入学生编号和学生姓名SqlDataReader dr = my2.ExecuteReader();while (dr.Read()){//构建一个ListView的数据,存入数据库数据,以便添加到listView1的行数据中ListViewItem lt = new ListViewItem();//将数据库数据转变成ListView类型的一行数据lt.Text = dr["学生编号"].ToString();lt.SubItems.Add("");     //添加空的一列,后面再填上lt.SubItems.Add(dr["课程编号"].ToString());lt.SubItems.Add("");lt.SubItems.Add(dr["总成绩"].ToString());//将lt数据添加到listView1控件中listView1.Items.Add(lt);}dr.Close();for (int i = 0; i < listView1.Items.Count; i++)    //循环listview的每一行{string cno = null;string sno = null;ListViewItem item = listView1.Items[i];      //listview的第i行cno = cno + item.SubItems[2].Text;           //获取listview第i行第3列的文本内容sno = sno + item.SubItems[0].Text;string cn = "select 课程名称 from class_info where (课程编号='" + cno + "')";SqlCommand my3 = new SqlCommand(cn, conn);           //查询课程名称string text2 = my3.ExecuteScalar().ToString();listView1.Items[i].SubItems[3].Text = text2;string st3 = "select 学生姓名 from student_info where (学生编号='" + sno + "')";SqlCommand m3 = new SqlCommand(st3, conn);string text3 = m3.ExecuteScalar().ToString();listView1.Items[i].SubItems[1].Text = text3;}conn.Close();
  • datagridview操作部分
            textBox3.Text = "";if (dataGridView1.DataSource != null){DataTable dt = (DataTable)dataGridView1.DataSource;dt.Rows.Clear();                               //没有搜索时,datagridview为空,所以要清空一下dataGridView1.DataSource = dt;}else{dataGridView1.Rows.Clear();}string tno = "";tno = teloginname.passData;SqlConnection conn = connection();conn.Open();string tes = "select 课程编号 from class_info where 课程编号='" + comboBox1.Text.Trim() + "' and 老师编号='"+ tno + "'";SqlCommand myin = new SqlCommand(tes, conn);SqlDataReader sdr = myin.ExecuteReader();sdr.Read();if (sdr.HasRows){sdr.Close();}else{MessageBox.Show("课程编号输入错误");return;}string stselect = "select 课程名称 from class_info where 课程编号='" + comboBox1.Text.Trim() + "'";SqlCommand myinfo = new SqlCommand(stselect, conn);string text2 = myinfo.ExecuteScalar().ToString();textBox2.Text = text2;string qr = "select 平时成绩占比 from class_info where 课程编号='" + comboBox1.Text.Trim() + "'";SqlCommand my2 = new SqlCommand(qr, conn);string text3 = my2.ExecuteScalar().ToString();textBox3.Text = text3;dataGridView1.AllowUserToAddRows = false;dataGridView1.AllowUserToDeleteRows = false;       //不允许删除或添加新的一行,也可以直接在属性设置string st1 = "select 学生编号,平时成绩,考试成绩,总成绩 from score_info where (课程编号='" + comboBox1.Text.Trim() + "')";//创建SqlDataAdapter类的对象SqlDataAdapter sda = new SqlDataAdapter(st1, conn);DataSet ds = new DataSet();//DataTable dt = new DataTable();sda.Fill(ds);DataTable dtb = ds.Tables[0];//DataGridViewTextBoxColumn mg = new DataGridViewTextBoxColumn();//DG.Columns.Add(mg);dataGridView1.DataSource = dtb;//把dt的内容绑定到Gridview1里显示。dataGridView1.AutoGenerateColumns = false;dataGridView1.Columns["Column1"].DataPropertyName = dtb.Columns["学生编号"].ToString();dataGridView1.Columns["Column3"].DataPropertyName = dtb.Columns["平时成绩"].ToString();dataGridView1.Columns["Column4"].DataPropertyName = dtb.Columns["考试成绩"].ToString();dataGridView1.Columns["Column5"].DataPropertyName = dtb.Columns["总成绩"].ToString();dataGridView1.Columns["考试成绩"].Visible = false;            //展示数据dataGridView1.Columns["总成绩"].Visible = false;dataGridView1.Columns["平时成绩"].Visible = false;dataGridView1.Columns["学生编号"].Visible = false;for (int i = 0; i < dataGridView1.RowCount; i++){string sno = dataGridView1.Rows[i].Cells[0].Value.ToString();string sn = "select 学生姓名 from student_info where 学生编号='" + sno + "'";SqlCommand mn = new SqlCommand(sn, conn);string sname = mn.ExecuteScalar().ToString();dataGridView1.Rows[i].Cells[1].Value = sname ;}conn.Close();

基于C#结合SQL设计学生成绩系统系统相关推荐

  1. 期末课程设计—学生成绩查询系统

    /* *Copyright(c)2017,烟台大学计算机学院 *All right reserved. *文件名:main.cpp sqqueue.h sqqueue.cpp *作者:黄士胜 *完成日 ...

  2. 学生成绩查询java版_学生成绩查询系统,基于ssm的JAVA系统

    每天记录学习,每天会有好心情.*^_^* 今天记录的项目是学生成绩查询系统,这个项目是这么回事:介绍了在Internet/WWW环境下构建学生成绩查询系统的设计思路与方法 ,阐述了在学生成绩查询系统中 ...

  3. javaweb课程设计(简单的学生成绩查询系统)

    学生成绩查询系统 基于JDBC,c3p0数据库连接池,使用sqlserver作为数据库管理,使用三层架构的简单的学生成绩查询系统. //代码仓库见文末 登录界面 密码错误登陆拦截 主界面(教师) 设置 ...

  4. MFC课程设计 --学生成绩管理系统

    MFC课程设计 ,C++课程设计 --学生成绩管理系统 ps:因为课设完成的过程大家都不太一样,以下的代码仅供学习一下在MFC下各个控件的用法,有问题欢迎留言讨论. 实验目的 使用MFC类库编制应用程 ...

  5. android学生成绩查询代码,android学生成绩查询系统.pdf

    android学生成绩查询系统 嵌入式系统课程设计报告 学生成绩查询系统手机端 I 摘要 在 世纪的今天,互联网已深入世界的各个角落.而WAP技术的发展和无线业务的成 21 熟,为人们获取各种信息提供 ...

  6. 计算机毕业设计ssm基于H5宠物俱乐部设计与实现m2vai系统+程序+源码+lw+远程部署

    计算机毕业设计ssm基于H5宠物俱乐部设计与实现m2vai系统+程序+源码+lw+远程部署 计算机毕业设计ssm基于H5宠物俱乐部设计与实现m2vai系统+程序+源码+lw+远程部署 本源码技术栈: ...

  7. java毕业生设计学生用品采购系统计算机源码+系统+mysql+调试部署+lw

    java毕业生设计学生用品采购系统计算机源码+系统+mysql+调试部署+lw java毕业生设计学生用品采购系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 开 ...

  8. c语言课设学生管理程序,c语言程序课程设计学生成绩管理程序.doc

    c语言程序课程设计学生成绩管理程序 武汉科技大学 二〇一〇~二〇一一学年第一学期 信息科学与工程学院 课程设计报告书 课程名称: C语言课程设计 班 级: 自动化2009级2班 学 号: 姓 名: 指 ...

  9. 学生成绩查询c#语言,C#学生成绩查询系统.doc

    ????学院 毕 业 论 文(设 计) 论文(设计)题目:学生成绩查询系统 所属系别: 信息工程系 专业班级:06计算机网络技术1班 姓 名: 常 军 玲 学 号: 200608090830129 指 ...

最新文章

  1. Sping中利用HandlerExceptionResolver实现全局异常捕获
  2. 理论实践都重要,交换机安装全接触
  3. 基于Flume的美团日志收集系统(二)改进和优化
  4. 网页制作中绝对路径和相对路径的区别
  5. DB天气app冲刺二阶段第七天
  6. QNX Software Development Platform
  7. Exchange Server 2016 独立部署/共存部署 (六)—— 创建数据库副本
  8. 如何在SQL Server中比较表
  9. 一款APP其实就是各种SDK的集合体
  10. 从海康录像机取RTSP转发流,规律性的断流
  11. 2022年的编程语言排行榜
  12. 小程序新爆点,小程序能分享朋友圈了
  13. android电商平台,基于Android的电商平台通用客户端的设计与实现
  14. php mysql 排班表_要做排班表 灵活性比较强的
  15. 通用WsSocket压力测试工具
  16. 美国研究生计算机心理,美国心理学研究生大学排名一览表
  17. python制作个性签名(最后有彩蛋)
  18. SQLSERVER一些公用DLL的作用解释
  19. win7 双签名补丁,sha256证书补丁
  20. vant list组件使用的坑

热门文章

  1. android绑定交通卡,安卓手机公交卡的用法
  2. 每天计划完成打勾的app 做完一个打一个勾那种便签
  3. 随性随笔_201606
  4. 【pwnable.kr】leg
  5. Mac下ImageMagick安装(libpng)
  6. ArcGIS教程:克里金法的工作原理(二)
  7. 如何搭建 Cinder UT测试环境?
  8. [Java] lomboz eclipse 下载. 后来安装启动报错,google了好久,未果。放弃之,转Myeclipse
  9. vscode java乱码问题解决
  10. CentOS6.x设置邮件短信报警