C#学生选课及成绩查询系统
一、项目背景
学生选课及成绩查询系统是一个学校不可缺少的部分,传统的人工管理档案的方式存在着很多的缺点,如:效率低、保密性差等,所以开发一套综合教务系统管理软件很有必要,它应该具有传统的手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大的提高学校的管理效率,有助于推进学校的信息化建设。
二、技术选型
C#的窗体程序开发
本系统未采用C#实现MDI——多文档窗口,因为考虑到C#的该技术与java类似,而暑期java实训时,曾用过类似的方法做过停车场管理系统,所以想为这次的系统注入一点新鲜的血液,所以本系统设计的主题采用了了C#的C#TreeView 实现。
Sql server数据库
三、需求分析
本系统包括两类用户:学生、管理员。管理员可以通过系统来添加管理员信息、修改管理员信息、添加学生信息、修改学生信息;开设课程、查询课程、录入成绩、统计成绩、修改成绩、修改个人密码等,而学生则可以通过系统来选择课程、查询课程、显示自己的课表、查询自己的成绩单、修改个人密码等等。
3.1系统实现的功能流程
具体的功能概述如下:
3.2管理员角色拥有的功能
管理员信息管理
添加管理员信息;
管理员可以添加其他的管理员信息。
修改管理员信息;
管理员可以删除其他的管理员信息。
学生信息管理
添加学生信息;
管理员可以添加学生信息,这些信息包括学生的学号,密码,年级,专业,出生日期等等。
修改学生信息;
管理员可以修改学生的信息;
课程管理
开设课程;
管理员可以录入课程信息,学生就可以浏览到这些课程信息,从而选课。
查询课程;
可以通过学期查询课程,或通过学期和课程结合的方式查询课程。
成绩管理
录入成绩;
管理员可以录入学生的成绩。
统计成绩;
管理员可以通过学期和课程信息来统计某门课的学生成绩,平均分、最高分、最低分以及可以通过成绩区间来查询某个学期某门课的学生的成绩信息。并且可以实现排序功能。
修改成绩;
管理员可以对成绩出错的学生的成绩进行修改。
修改个人密码;
管理员可以修改自己的密码。
3.3学生角色拥有的功能
课程管理
选择课程;
学生可以根据本学期管理员发布的课程来选课。
查询课程;
可以通过学期查询课程,或通过学期和课程结合的方式查询课程。
显示课表;
学生可以根据自己的选课情况来查询自己的课表。
成绩管理
我的成绩单;
学生可以根据学期来查询自己某个学期所有选修课程的成绩信息。
修改个人密码;
学生可以修改自己的密码。
四、数据库设计
4.1数据库关系图
4.2完成系统中数据表的结构设计
学生信息表
用户表:student
字段名称 数据类型 可空 默认值 说明
stuid int 不可 主键,学生id,无实际意思,每次自增1
stuname Nvarchar(30) 不可 学生姓名
stuxuehao Nvarchar(30) 不可 学生学号,不能重复,登陆时的用户名默认是学号。
stupasswd Nvarchar(30) 不可 学生密码
stugrade Nvarchar(30) 学生年级
stumajor Nvarchar(30) 学生专业
stusex varchar(2) 学生性别
stuborn Nvarchar(30) 学生出生日期
role Nvarchar(30) 学生 角色,学生
stuhometown Nvarchar(30) 学生籍贯
管理员信息表
管理员信息表:manager
字段名称 数据类型 可空 默认值 说明
manid int 不可 主键,管理员id,无实际意思,每次自增1
manname Nvarchar(30) 不可 管理员用户名
role Nvarchar(30) 不可 管理员 角色,管理员
manpasswd Nvarchar(30) 不可 管理员密码
课程表
课程表:class
字段名称 数据类型 可空 默认值 说明
claid int 不可 主键,课程id,无实际意思,每次自增1
claname Nvarchar(30) 不可 课程名
term Nvarchar(30) 不可 开课的学期
teacher Nvarchar(30) 不可 开课的教师
课程细节表
课程细节表:sctime
字段名称 数据类型 可空 默认值 说明
sctimeid int 不可 主键,课程细节id,无实际意思,每次自增1
claid int 不可 外键,课程号
sctime Nvarchar(30) 不可 课程上课的时间
location Nvarchar(30) 不可 课程上课的地点
选课表
选课表:sc
字段名称 数据类型 可空 默认值 说明
scid int 不可 主键,选课id,无实际意思,每次自增1
stuid int 不可 外键,学生id
claid int 不可 外键,课程id
grades int 不可 学生成绩
五、界面设计
登录界面:
5.1管理员角色
管理员主界面:
管理员-------添加管理员界面:
管理员——修改管理员界面:
管理员——开设课程界面:
管理员——查询课程界面:
管理员——录入成绩界面:
管理员——统计成绩页面:
管理员——修改成绩界面:
管理员——添加学生信息界面:
管理员——修改学生信息界面:
管理员——修改密码界面:
5.2学生界面
学生登录主界面:
学生——选择课程界面:
学生——查询课程界面:
学生——显示课表界面:
学生——我的成绩单:
学生——密码修改界面:
六、关键技术的介绍
6.1使用treeview实现点击不同的选项,在右侧面板中显示不同的界面。
具体代码如下:
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e){switch (this.treeView1.SelectedNode.Text){case"录入成绩":Form2 f = new Form2();f.TopLevel = false;f.FormBorderStyle = FormBorderStyle.None;f.WindowState = FormWindowState.Maximized;panel2.Controls.Add(f);f.Show();break;case"我的成绩单":searchgradeForm f1 = new searchgradeForm();f1.TopLevel = false;f1.FormBorderStyle = FormBorderStyle.None;f1.WindowState = FormWindowState.Maximized;panel2.Controls.Add(f1);f1.Show();break;case"统计成绩":countForm f2 = new countForm();f2.TopLevel = false;f2.FormBorderStyle = FormBorderStyle.None;f2.WindowState = FormWindowState.Maximized;panel2.Controls.Add(f2);f2.Show();break;case"开设课程":kaisheForm f3 = new kaisheForm();f3.TopLevel = false;f3.FormBorderStyle = FormBorderStyle.None;f3.WindowState = FormWindowState.Maximized;panel2.Controls.Add(f3);f3.Show();break;case"选择课程":chooseForm f4 = new chooseForm();f4.TopLevel = false;f4.FormBorderStyle = FormBorderStyle.None;f4.WindowState = FormWindowState.Maximized;panel2.Controls.Add(f4);f4.Show();break;case"查询课程":searchclassForm f5 = new searchclassForm();f5.TopLevel = false;f5.FormBorderStyle = FormBorderStyle.None;f5.WindowState = FormWindowState.Maximized;panel2.Controls.Add(f5);f5.Show();break;case"添加管理员信息":addmanForm f6 = new addmanForm();f6.TopLevel = false;f6.FormBorderStyle = FormBorderStyle.None;f6.WindowState = FormWindowState.Maximized;panel2.Controls.Add(f6);f6.Show();break;case"修改管理员信息":modifymanForm f7 = new modifymanForm();f7.TopLevel = false;f7.FormBorderStyle = FormBorderStyle.None;f7.WindowState = FormWindowState.Maximized;panel2.Controls.Add(f7);f7.Show();break;case"添加教师信息":addteacForm f8 = new addteacForm();f8.TopLevel = false;f8.FormBorderStyle = FormBorderStyle.None;f8.WindowState = FormWindowState.Maximized;panel2.Controls.Add(f8);f8.Show();break;case"修改教师信息":modifyteacForm f9 = new modifyteacForm();f9.TopLevel = false;f9.FormBorderStyle = FormBorderStyle.None;f9.WindowState = FormWindowState.Maximized;panel2.Controls.Add(f9);f9.Show();break;case"添加学生信息":addstuForm f10 = new addstuForm();f10.TopLevel = false;f10.FormBorderStyle = FormBorderStyle.None;f10.WindowState = FormWindowState.Maximized;panel2.Controls.Add(f10);f10.Show();break;case"修改学生信息":modifystuForm f11 = new modifystuForm();f11.TopLevel = false;f11.FormBorderStyle = FormBorderStyle.None;f11.WindowState = FormWindowState.Maximized;panel2.Controls.Add(f11);f11.Show();break;case"关于":aboutForm f12 = new aboutForm();f12.TopLevel = false;f12.FormBorderStyle = FormBorderStyle.None;f12.WindowState = FormWindowState.Maximized;panel2.Controls.Add(f12);f12.Show();break;case "退出系统":Application.Exit();break;case "显示课表":showkebiaoForm f13 = new showkebiaoForm();f13.TopLevel = false;f13.FormBorderStyle = FormBorderStyle.None;f13.WindowState = FormWindowState.Maximized;panel2.Controls.Add(f13);f13.Show();break;case "修改密码":modifymimaForm f14 = new modifymimaForm();f14.TopLevel = false;f14.FormBorderStyle = FormBorderStyle.None;f14.WindowState = FormWindowState.Maximized;panel2.Controls.Add(f14);f14.Show();break;case "修改成绩":modifygradeFram f15 = new modifygradeFram();f15.TopLevel = false;f15.FormBorderStyle = FormBorderStyle.None;f15.WindowState = FormWindowState.Maximized;panel2.Controls.Add(f15);f15.Show();break;}}
6.2在其他的窗口得到在登录窗口输入的信息
实现方法:在loginFram中设置两个方法,在其他类中只需要引用loginFram的这些方法即可。具体实现如下:
public static String getStudent(){String stuxuehao = "";stuxuehao = loginForm.name;return stuxuehao;}public static String getRole(){String role1 = "";role1 = role;return role1;}
6.3管理员开设课程时,对于同一时间该教室有课的情况怎么做出异常处理。集体实现如下:
private void button1_Click(object sender, EventArgs e){string teacher = textBoxteacher.Text;string classes = textBoxclass.Text;string term = comboBoxterm.SelectedItem.ToString();string flags = "1";SqlConnection conn = new SqlConnection(loginForm.connectionString);conn.Open();SqlCommand cmd = new SqlCommand();cmd.Connection = conn;//将开课信息插入到开课表里//MessageBox.Show("开设课程成功!");string sql = "";//得到上课的地点string didian = comboBoxdidian.SelectedItem.ToString();//checkedListBoxtimefor (int i = 0; i < checkedListBoxtime.Items.Count; i++){if (checkedListBoxtime.GetItemChecked(i)){String time = checkedListBoxtime.GetItemText(checkedListBoxtime.Items[i]);sql = "select * from sctime where sctime = '" + time + "'and location = '" + didian + "'";SqlDataAdapter adp = new SqlDataAdapter(sql, conn);DataSet ds = new DataSet();adp.Fill(ds);if (ds.Tables[0].Rows.Count > 0){flags = "2";MessageBox.Show("该时间该教室已经有课!");break;}else{flags = "1";break; }}}if (flags == "1"){sql = "insert into class (claname,term,teacher) values ('" + classes + "','" + term + "','" + teacher + "')";cmd.CommandText = sql;cmd.ExecuteNonQuery();for (int i = 0; i < checkedListBoxtime.Items.Count; i++){if (checkedListBoxtime.GetItemChecked(i)){string time = checkedListBoxtime.GetItemText(checkedListBoxtime.Items[i]);//将开课表的id得到sql = "select claid from class where claname = '" + classes + "' and term = '" + term + "' and teacher = '" + teacher + "'";cmd.CommandText = sql;String id1 = cmd.ExecuteScalar().ToString();int id = 0;int.TryParse(id1, out id);sql = "insert into sctime values(" + id + ",'" + time + "','" + didian + "')";cmd.CommandText = sql;cmd.ExecuteNonQuery();}}MessageBox.Show("开设课程成功!");}conn.Close();}
6.4学生选择课程时,对选择一门课程与已选择的课程出现上课时间冲突的情况的异常处理。集体实现如下:
private void button1_Click(object sender, EventArgs e){string flags = "1";//得到stuidstring stuxuehao = textBox1.Text;SqlConnection conn = new SqlConnection(loginForm.connectionString);conn.Open();string sql = "select stuid from student where stuxuehao = '" + stuxuehao + "'";SqlCommand cmd = new SqlCommand(sql, conn);String id1 = cmd.ExecuteScalar().ToString();int.TryParse(id1, out stuid);//得到课程的idint claid = 0;int.TryParse(textBoxid.Text, out claid);//查询你在该时间是否有课sql = "select sctime from sctime where claid =" + claid;SqlDataAdapter adp = new SqlDataAdapter(sql, conn);DataSet ds = new DataSet();adp.Fill(ds);for (int i = 0; i < ds.Tables[0].Rows.Count; i++){DataRow dr = ds.Tables[0].Rows[i];string time = dr[0].ToString();//第一列sql = "select * from sc,sctime,class where class.claid = sc.claid and class.claid = sctime.claid and sctime = '" + time + "' and sc.stuid =" + stuid;SqlDataAdapter adp1 = new SqlDataAdapter(sql, conn);DataSet ds1 = new DataSet();adp1.Fill(ds1);if (ds1.Tables[0].Rows.Count > 0){flags = "2";MessageBox.Show("课程上课时间冲突!");break;}}if (flags == "1"){sql = "insert into sc(claid,stuid) values(" + claid + "," + stuid + ")";cmd.CommandText = sql;if (cmd.ExecuteNonQuery() > 0){MessageBox.Show("选课成功!");}}if (listBox1.Items.Count > 0){//清空所有项listBox1.Items.Clear();}sql = "select class.claname from sc,class where sc.claid = class.claid and stuid=" + stuid;SqlDataAdapter adp2 = new SqlDataAdapter(sql, conn);DataSet ds2 = new DataSet();adp2.Fill(ds2);foreach (DataRow row in ds2.Tables[0].Rows){listBox1.Items.Add(row[0].ToString());} conn.Close();}
七、系统测试
7.1怎么提高访问数据库的速度
改进方法:引入视图、触发器、函数、存储过程,优化表结构,建立索引。
八、完成情况总结
通过几周的努力,从前期的需求分析与架构设计到实际的编码阶段,我完成了学生选课及成绩管理系统的开发与设计。已经大致完成了主要的功能,不过还有一些亟待完善的方面,例如对数据的存储采用加密的措施,UI设计并不是很出色等等,这些问题都需要我再以后的时间里去慢慢弥补,还有刚开始,我对treeview并不熟悉,所以先建立了几个原型来测试,领会了treeview的使用方法后才切入正题进行开发。
在这开发的过程中,我收获很大,相比前几次的开发,我真正重视起测试在软件开发中的作用,在软件开发的后期,我专门建立一个bug列表,将出现的bug详细记录在列表中,并在软件调试的后期对照列表认真改进软件,考虑以后使用软件来做相关方面的管理。当然,我也遇到不少代码编写的问题,有时要花较长的时间来解决问题,这也是自己平时编写代码较少的原因。通过这次软件的开发,在编写代码上有了一定的提高,同时也知道了软件开发过程中需要注意的问题。比如,开发逻辑思维要清晰,不然可能会把问题想的复杂化。平时多和项目成员交流,这样你才能知道自己的想法有那些出入,利于软件的开发。
通过这次实验,使我对软件开发有了更深一步的了解。在软件开发中应注意的问题和考虑的问题都能较好的做到。
九、交流与联系
q:969060742 文档、完整代码
相关文章:
C#学生选课及成绩查询系统
一、项目背景 学生选课及成绩查询系统是一个学校不可缺少的部分,传统的人工管理档案的方式存在着很多的缺点,如:效率低、保密性差等,所以开发一套综合教务系统管理软件很有必要,它应该具有传统的手工管理所无法比拟的…...
【C语言】利用数组处理批量数据(一维数组和二维数组)
前言:在前面学习的程序中使用的变量都属于基本类型,例如整型、字符型、浮点型数据,这些都是简单的数据类型。对于简单的问题,使用这些简单的数据类型就可以了。但是对于有些需要处理的数据,只用以上简单的数据类型是不够的&#x…...
WPF中, 如何将控件的触发事件绑定到ViewModel
在DataGrid 等控件中, 有很多这种带闪电符号的触发事件. 如果用传统的事件驱动, 则直接在后台中建立 一个private PropertyChanged(Sender s, EventAgars Args) 即可. 但是如果需要绑定到ViewModel的话? 应该怎么做? 带闪电符号的触发事件 实现viewModel绑定前端触发事件的…...
解决Qt msvc编译器 中文显示乱码问题
第一步:代码文件选择用utf8编码带bom。第二步:在有中文汉字的代码文件顶部加一行(一般是cpp文件) #pragma execution_character_set(“utf-8”) 可以考虑放在head.h中,然后需要的地方就引入head头文件就行,…...
JAVA面经整理(7)
一)什么是AQS? 1)AQS也被称之为是抽象同步队列,它是JUC包底下的多个组件的底层实现,Lock,CountDownLatch和Semphore底层都使用到了AQS AQS的核心思想就是给予一个等待队列和同步状态来实现的,它的内部使用一个先进先出…...
CentOS7使用技巧
1、防火墙相关 关闭防火墙 systemctl stop firewalld 关闭防火墙开机自启 systemctl disable firewalld.service 查看防火墙状态 systemctl status firewalld...
Nature Machine Intelligence | “化学元素知识+功能提示”双驱动,探索分子预测新方法
论文题目:Knowledge graph-enhanced molecular contrastive learning with functional prompt 论文链接:https://doi.org/10.1038/s42256-023-00654-0 项目地址:GitHub - HICAI-ZJU/KANO: Code and data for the Nature Machine Intelligence…...
CppCheck静态代码检查工具教程【Windows和Linux端】
目录 1、背景 2、特性介绍 2.1、检查结果 2.2、检查范围 2.3、支持的检查规则(列举一些): 2.4、自定义规则 3、linux 端 4、windows 端 1、背景 最近调研了几款 c/c 代码静态检查工具,包括 cppcheck、cpplint、cppdepend、splint、ts…...
W25Q128芯片手册精读
文章目录 前言1. 概述2. 特性3. 封装类型和引脚配置3.1 8焊盘WSON 8x6 mm3.2其他封装 4. 引脚描述4.1 片选4.2 串行数据输入输出4.3 写保护4.4 保持脚4.5 时钟 5. 块图6. 功能描述6.1 SPI功能6.1.1 标准SPI6.1.2 双通道SPI6.1.3 四通道SPI6.1.4 保持功能 6.2 写保护6.2.1 写保护…...
QT商业播放器
QT商业播放器 总体架构图 架构优点:解耦,采用生产者消费者设计模式,各个线程各司其职,通过消息队列高效协作 这个项目是一个基于ijkplayer和ffplayer.c的QT商业播放器, 项目有5部分构成: 前端QT用户界面 后端是集成了…...
Python的函数
近期遇到了一个没怎么看懂的Python函数的形式。 def twoSum(self, nums: List[int], target: int) -> List[int]: 后来上网查了资料。...
【物联网】STM32的中断机制不清楚?看这篇文章就足够了
在嵌入式系统中,中断是一种重要的机制,用于处理来自外部设备的异步事件。STM32系列微控制器提供了强大的中断控制器,可以方便地处理各种外部中断和内部中断。本文将详细介绍STM32中断的结构和使用方法。 文章目录 1. 什么叫中断2. 中断优先级…...
深入剖析红黑树:优雅地平衡二叉搜索树
目录 一.红黑树的概念二.插入操作三.与AVL树的比较 一.红黑树的概念 在之前的学习中,我们了解了二叉搜索平衡树,AVL树通过控制每个结点中的平衡因子的绝对值不超过1,实现了一个高性能的树。而相较于AVL的高度平衡,红黑树觉得AVL为…...
C10K问题:高并发模型设计
一、循环服务器模型 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <unistd.h> #include <signal.h> #include <sys/types.h> #include <sys/socket.h> //*******// #include &l…...
哈希/散列--哈希表[思想到结构][==修订版==]
文章目录 1.何为哈希?1.1百度搜索1.2自身理解1.3哈希方法/散列方法1.4哈希冲突/哈希碰撞1.5如何解决?哈希函数的设计 2.闭散列和开散列2.1闭散列/开放定址法2.2开散列/链地址法/开链法1.概念2.容量问题3.字符串问题4.开散列性能测试5.开散列与闭散列比较 3.代码实现[配备详细…...
成都建筑模板批发市场在哪?
成都作为中国西南地区的重要城市,建筑业蓬勃发展,建筑模板作为建筑施工的重要材料之一,在成都也有着广泛的需求。如果您正在寻找成都的建筑模板批发市场,广西贵港市能强优品木业有限公司是一家值得关注的供应商。广西贵港市能强优…...
亨元模式 结构型模式之六
1.定义 享元模式是一种结构型设计模式, 它允许你在消耗少量内存的情况下支持大量对象。 2.滑滑梯问题 在说明亨元模式之前,我们先看看关于滑滑梯的程序设计。小区的楼下只有三个滑滑梯,但是想玩的小朋友却非常多。怎么设计计滑滑梯资源的管理…...
面试题: Spring中Bean的实例化和Bean的初始化有什么区别?
Spring中Bean的实例化和Bean的初始化有什么区别? 背景答案扩展知识什么是实例化什么是初始化 个人评价我的回答 背景 想换工作, 看了图灵周瑜老师的视频想记录一下, 算是学习结果的一个输出. 答案 Spring 在创建一个Bean对象时, 会先创建出一个Java对象, 会通过反射来执行…...
阻塞队列,生产者消费者模型
目标: 1. 认识与使用阻塞队列 2. 认识与实现消费者模型 目录 阻塞队列的特点 生产者消费者模型 生产者消费者模型的优点 阻塞队列实现该模型 阻塞队列的特点 1. 线程安全 2. 带有阻塞特性 (1)如果队列为空,继续出队列&a…...
【RCRL充放电时间相关计算】
一. 基础知识 L、C元件称为“惯性元件”,即电感中的电流、电容器两端的电压,都有一定的“电惯性”,不能突然变化。充放电时间,不光与L、C的容量有关,还与充/放电电路中的电阻R有关。RC电路的时间常数:τRC…...
C++ primer plus--输入、输出和文件
17 输入、输出和文件 17.1 C 输入和输出概述 C 把输入和输出看做字节流。输入时,程序从输入流中抽取字节;输出时,程序将字节插到输出流中。 缓冲区是内存中的临时存储区域,是程序与文件或其他 I/O 设备之间的桥梁。 17.2 使用…...
案例题--Web应用考点
案例题--Web应用考点 负载均衡技术微服务XML和JSON无状态和有状态真题 在选择题中没有考察过web的相关知识,主要就是在案例分析题中考察 负载均衡技术 应用层负载均衡技术 传输层负载均衡技术 就近的找到距离最近的服务器,并进行分发 使用户就近获取…...
MySQL的SQL 优化:提升数据库性能
1. 插入操作优化 1.1 使用多值插入 通常情况下,插入大量数据时,使用多值插入语句比逐行插入更高效。例如,将多个数据行打包成一个 INSERT 语句: INSERT INTO users (name, email) VALUES (Alice, aliceexample.com), (Bob, bob…...
【匠心打造】从0打造uniapp 可视化拖拽设计 c_o 第十篇
一、click one for uniapp置顶: 全部免费开源 (你商业用途也没关系,不过可以告诉我公司名或者项目名,放在官网上好看点。哈哈-_-) 二、写在之前 距离上一篇更新已经大约4个月了,公司的事情,自己的一些琐事一直没时间…...
BIT-5-操作符详解(C语言初阶学习)
1. 各种操作符的介绍。 2. 表达式求值 1. 操作符分类: 算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用、函数调用和结构成员 2. 算术操作符 - * / % 除了 % 操作符…...
【重拾C语言】三、分支程序设计(双分支和单分支程序设计、逻辑判断、多分支程序设计、枚举类型表示;典型例题:判断闰年和求一元二次方程根)
目录 前言 三、分支程序设计 3.1 判断成绩是否及格——双分支程序设计 3.2 成绩加上获奖信息—单分支程序设计 3.3 逻辑判断——布尔类型 3.4 获奖分等级——多分支程序设计 3.5 表示汽车种类——枚举类型 3.6 例题 3.6.1 例题——判断某个年份是否闰年 3.6.2 例题—…...
Shiro应用到Web Application
一、权限基础 a) 认证(你是谁?) 判断你(被认证者)是谁的过程。通常被认证者提供用户名和密码。 常见的认证包含如下几种: 匿名认证:允许访问资源,不做任何类型的安全检查。表单认证:访问资源之前,需要提…...
【POST请求-腾讯翻译君-爬虫案例】
原因:尝试多个在线翻译平台,由于返回数据存在加密原因(暂时不会解密),最总找到 ”腾讯翻译君“ 完成爬虫案例POST请求测试 案例测试网址 腾讯翻译 :https://fanyi.qq.com/ import requests import jsoncla…...
多卡片效果悬停效果
效果展示 页面结构 从页面的结构上看,在默认状态下毛玻璃卡片是有层次感的效果叠加在一起,并且鼠标悬停在卡片区域后,卡片整齐排列。 CSS3 知识点 transform 属性的 rotate 值运用content 属性的 attr 值运用 实现页面整体布局 <div …...
首饰饰品经营商城小程序的作用是什么
首饰如耳钉、戒指、手镯等除了高价值产品外,还有很多低价产品,市场需求客户众多,在实际经营中,商家们也会面临一些痛点。 私域话题越来越多加之线上线下同行竞争、流量匮乏等,更对商家选择自建商城经营平台。 通过【…...
.net网站封装/石家庄做网站推广排名的公司
昨天完成了全部的增删改查以及登陆 今天准备对页面的进行一些美化,是界面变得好看一些。转载于:https://www.cnblogs.com/ydy1/p/8092861.html...
如何做网站免费推广/app拉新平台
<?php for ($i 1; $i < 10; $i) { //for循环输出数值if ($i % 3 0) //判断变量是否为3的整数倍{continue;//跳过本次循环剩余语句}echo "$i<br />"; //输出变量的值 } ?> 转载于:https://www.cnblogs.com/tianpan2019/p…...
破解软件网站/云南网络营销公司哪家好
导读:在进行股权结构设计之前,应该清楚认识到股权结构不是简单的股权比例或投资比例,应该以股东股权比例为基础,通过对公司股东会、董事会及管理层职权与表决程序等进行一系列调整后的股东权利结构体系。一、为什么创业者需了解股…...
电子商务网站网络拓扑/北京口碑最好的教育机构
问:如何决定使用 HashMap 还是 TreeMap? 介绍 TreeMap<K,V>的Key值是要求实现java.lang.Comparable,所以迭代的时候TreeMap默认是按照Key值升序排序的;TreeMap的实现是基于红黑树结构。适用于按自然顺序或自定义顺序遍历键…...
wordpress 作者 评论/成品网站源码在线看
最近搞了一批权限最小化的问题,这里专门进行一下linux下文件权限的总结,其实非常简单。在介绍linux下文件的情况,需要先介绍一个概念,用户、用户组。和win一样,linux也是需要用户才能登录的。不同的是在linux中&#x…...
肇庆企业建站程序/四川全网推网络推广
int main() {int max, i 0, sum 0; scanf(\ while(sum < max) {i; sum i; }printf(\}第六周作业数字正方型成绩 折扣 10 开启时间 2014年11月12日 星期三 05:55 0.8 折扣时间 2014年11月26日 星期三 05:55 关闭时间 2014年12月3日 星期三 05:55 允许迟交 否 这是双重循环…...