2018-D

新建数据库 test0317,目录为考试目录,并在完成建表后备份

1、建表:

use [test0317];

create table [STD_INFO](
[std_id] int not null primary key,
[std_name] varchar(20) not null,
[std_sex] varchar(2) not null check([std_sex]='男' or [std_sex]='女')
); create table [COURSE_INFO](
[course_id] varchar(10) not null primary key,
[course_name] varchar(20) not null,
) create table [SCORES](
[std_id] int references [STD_INFO]([std_id]),
[course_id] varchar(10) references [COURSE_INFO]([course_id]),
[score] int not null check([score]>=0 and [score]<=100)
) insert into [STD_INFO] values(201833,'王二','男');
insert into [STD_INFO] values(201824,'张三','女');
update [STD_INFO] set std_id=201834 where std_name='张三'; insert into [COURSE_INFO] values('001','操作系统');
insert into [COURSE_INFO] values('002','嵌入式系统'); insert into [SCORES] values(201833,'001',70);
insert into [SCORES] values(201834,'001',90);
insert into [SCORES] values(201834,'002',20); select * from [STD_INFO];
select * from [COURSE_INFO];
select * from [SCORES]; --根据姓名查询成绩
select [STD_INFO].[std_name] from [STD_INFO];
select [COURSE_INFO].[course_name],[SCORES].[score] from [STD_INFO],[COURSE_INFO],[SCORES] where [STD_INFO].[std_name]='张三' and [STD_INFO].[std_id]=[SCORES].[std_id] and [COURSE_INFO].[course_id]=[SCORES].[course_id]; --根据课程名查询成绩
select [COURSE_INFO].[course_name] from [COURSE_INFO];
select [STD_INFO].[std_id],[STD_INFO].[std_name],[SCORES].[score] from [STD_INFO],[COURSE_INFO],[SCORES] where [COURSE_INFO].[course_name]='操作系统' and [COURSE_INFO].[course_id]=[SCORES].[course_id] and [SCORES].[std_id]=[STD_INFO].[std_id];

2、解决方案:

解决方案结构:

Form1.cs[设计]

Form1 属性:

​ MaximizeBox = False

​ MinimizeBox = False

​ Text = 2018机试

​ 事件:

​ Load = Form1_Load

listView1 属性:

​ FullRowSelect = True

​ GridLine = True

​ View = Details

​ MultiSelect = False

comboBox1 / comboBox2 属性:

​ DropDownStyle = DropDownList

button1 / button2 事件:button1_Click / button2_Click

DB.cs:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Text; namespace test0317
{
internal class DB : IDisposable
{
private SqlConnection sqlConnection;
public DB()
{
sqlConnection = new SqlConnection(@"server=.;database=test0317;Trusted_Connection=SSPI");
sqlConnection.Open();
} public DataTable GetBySql(string sql)
{
DataTable dt = new DataTable();
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(new SqlCommand(sql,sqlConnection));
sqlDataAdapter.Fill(dt);
return dt;
} public void Dispose()
{
sqlConnection.Close();
}
}
}

Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms; namespace test0317
{
public partial class Form1 : Form
{
DB db;
public Form1()
{
InitializeComponent();
db= new DB();
} private void Form1_Load(object sender, EventArgs e)
{
DataTable dt = db.GetBySql(@"select [STD_INFO].[std_name] from [STD_INFO];");
for(int i=0; i<dt.Rows.Count; i++)
{
for(int j=0;j<dt.Columns.Count; j++)
{
comboBox1.Items.Add(dt.Rows[i][j].ToString());
}
}
comboBox1.SelectedIndex = 0; dt = db.GetBySql(@"select [COURSE_INFO].[course_name] from [COURSE_INFO];");
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
comboBox2.Items.Add(dt.Rows[i][j].ToString());
}
}
comboBox2.SelectedIndex = 0;
} private void button1_Click(object sender, EventArgs e)
{
listView1.Clear();
listView1.Columns.Add("课程名", listView1.Width / 2 - 1, HorizontalAlignment.Left);
listView1.Columns.Add("成绩", listView1.Width / 2 - 1, HorizontalAlignment.Left);
DataTable dt = db.GetBySql(@"select [COURSE_INFO].[course_name],[SCORES].[score] from [STD_INFO],[COURSE_INFO],[SCORES] where [STD_INFO].[std_name]='"+comboBox1.Text+"'and [STD_INFO].[std_id]=[SCORES].[std_id] and [COURSE_INFO].[course_id]=[SCORES].[course_id]");
listView1.BeginUpdate();
for(int i=0; i < dt.Rows.Count; i++)
{
ListViewItem listViewItem = new ListViewItem();
for(int j=0; j < dt.Columns.Count;j++)
{
if (j <= 0)
{
listViewItem.Text = dt.Rows[i][j].ToString();
}
else
{
listViewItem.SubItems.Add(dt.Rows[i][j].ToString());
}
}
listView1.Items.Add(listViewItem);
}
listView1.EndUpdate();
} private void button2_Click(object sender, EventArgs e)
{
listView1.Clear();
listView1.Columns.Add("学号", listView1.Width / 3 - 1, HorizontalAlignment.Left);
listView1.Columns.Add("学生名", listView1.Width / 3 - 1, HorizontalAlignment.Left);
listView1.Columns.Add("成绩", listView1.Width / 3 - 1, HorizontalAlignment.Left);
DataTable dt = db.GetBySql(@"select [STD_INFO].[std_id],[STD_INFO].[std_name],[SCORES].[score] from [STD_INFO],[COURSE_INFO],[SCORES] where [COURSE_INFO].[course_name]='" + comboBox2.Text + "' and [COURSE_INFO].[course_id]=[SCORES].[course_id] and [SCORES].[std_id]=[STD_INFO].[std_id];");
listView1.BeginUpdate();
for (int i = 0; i < dt.Rows.Count; i++)
{
ListViewItem listViewItem = new ListViewItem();
for (int j = 0; j < dt.Columns.Count; j++)
{
if (j <= 0)
{
listViewItem.Text = dt.Rows[i][j].ToString();
}
else
{
listViewItem.SubItems.Add(dt.Rows[i][j].ToString());
}
}
listView1.Items.Add(listViewItem);
}
listView1.EndUpdate();
}
}
}

3、结果:

2018-D的更多相关文章

  1. 2018. The Debut Album

    http://acm.timus.ru/problem.aspx?space=1&num=2018 真心爱过,怎么能彻底忘掉 题目大意: 长度为n的串,由1和2组成,连续的1不能超过a个,连续 ...

  2. Math.abs(~2018),掌握规律即可!

    Math.abs(~2018) 某前端群的入门问题长姿势了,一个简单的入门问题却引发了我的思考,深深的体会到自己在学习前端技术的同时忽略遗忘了一些计算机的基础知识. 对于 JS Math对象没什么可说 ...

  3. 肖秀荣8套卷2018pdf下载|2018肖秀荣冲刺8套卷pdf下载电子版

    肖秀荣8套卷2018pdf下载|2018肖秀荣冲刺8套卷pdf下载电子版 下载链接: https://u253469.ctfile.com/fs/253469-229815828

  4. 2018年的UX设计师薪酬预测,你能拿多少?

    以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具.   一个经验丰富的设计师完全可以根据地区和专业来可以预期薪酬之间的差距,其中悬殊最高可达80K. 本 ...

  5. Hello 2018, Bye 2017

    2017年过去了,过去一年经历了太多,改变了好多好多,可以说人生进入了另一个阶段,有可能是成熟吧. 回顾2017 去年换了新工作,离开了将近工作了8年的公司,不带走一丝云彩,为其任劳任怨,最后没有任何 ...

  6. New Life With 2018

    2017年转眼过去了.对自己来说.这一大年是迷茫和认知的一年.我的第一篇博客就这样记录下自己的历程吧 一:选择 从进入这一行到现在已经一年多了,2016年11月份就像所有的应届毕业生一样,都贼反感毕业 ...

  7. 2017 年终总结 & 2018 年度计划

    不立几个 Flag,都不知道怎么作死 2017 年度计划完成情况: 1.健身时间不少于350天:  未完成 中断了22天,实际运动 343天   2.至少每个月看一本书:  及格 <切尔诺贝利的 ...

  8. [总结]-2018 w1

    不想总结 2017,过去的就过去吧,不过自己在 2017 年还是收获了很多,最重要的就是赚钱.赚钱还是需要两把刷子,所以,2018 的小目标就是学习数据分析和机器学习.希望自己在这两个领域能搞点事情. ...

  9. 2018年手机应用UI设计趋势预测

    用户需求瞬息万变,而手机软件UI设计为适应变化的用户需求,也相应的发生着变化.但是,这并不意味着用户需求和UI设计趋势就是无迹可寻的.事实上,根据前几年的手机app界面设计变化的特点,尤其是2017年 ...

  10. 2017 年的 人生 hard 模式终于结束了,2018年回归初心

    2017 年的 人生 hard 模式终于结束了,2018年回归初心 2017年对于我个人来讲, 毫不夸张的说 算是近十年来除了高考那一年,最最惊心动魄的一年了,没有之一. >>>开篇 ...

随机推荐

  1. v8 setup

    记录下笔者本人搭建v8环境的过程 环境:处于一些原因笔者选择在kali2023上搭建v8,kali上可以搭建成功但是调试脚本加载有问题,fuck kali,还是ubuntu好,笔者使用了ubuntu2 ...

  2. R 语言主成分分析(PCA)实战教程

    作者:落痕的寒假原文:https://blog.csdn.net/LuohenYJ/article/details/97950522 声明:本文章经原作者同意后授权转载. 主成分分析 Principa ...

  3. 【python基础】循环语句-continue关键字

    1.continue关键字 continue关键字的作用是:用来告诉 Python 跳过当前循环代码块中的剩余语句,然后继续进行下一轮循环. 其在while循环和for循环中的作用示意图如下 我们通过 ...

  4. CSS 图片加载提前占位 padding-top、padding-bottom

    今天聊一个图片加载提前占位的一个问题 ,内容比较适合初学者. 起因 在响应式页面当中,图片加载之前是不知道图片高度的,加载成功图片完全撑开.如果不做提前占位会把下面的内容挤下去,页面出现抖动,就像下面 ...

  5. C++面试八股文:了解auto关键字吗?

    某日二师兄参加XXX科技公司的C++工程师开发岗位第15面: 面试官:了解auto关键字吗? 二师兄:嗯,了解一些(我很熟悉). 面试官:说一说auto的用法吧? 二师兄:auto主要是为了编译器进行 ...

  6. .NET周报 【6月第3期 2023-06-18】

    国内文章 揭秘 Task.Wait https://www.cnblogs.com/eventhorizon/p/17481757.html Task.Wait 是 Task 的一个实例方法,用于等待 ...

  7. Go应用性能优化的8个最佳实践,快速提升资源利用效率!

    作者|Ifedayo Adesiyan 翻译|Seal软件 链接|https://earthly.dev/blog/optimize-golang-for-kubernetes/ 优化服务器负载对于确 ...

  8. 重新初始化k8s集群

    执行如下命令,所有节点都执行 kubeadm reset 初始化集群,仅在master(centos01)上执行 [root@centos01 opt]# kubeadm init --apiserv ...

  9. Solon Web 也支持响应式开发了?!

    "solon.web.flux" 是 solon v2.3.6 新推出的生态插件,为 solon web 提供响应式接口支持 (io.projectreactor) .为什么叫这个 ...

  10. 为什么 kubelet 不使用容器化部署?

    每日一问系列 为什么 kubelet 不使用容器化部署? 通过脚本(shell/ansible 等)在节点上部署 kubelet 服务时,涉及 kubelet 进程 service 启动配置.证书等, ...