
方法一:
1、创建一个c语言项目。然后右键头文件,创建一个Stu的头文件。
2、然后编写头文件的代码。再将数据结构的增删改查和结构体写入头文件。
3、然后在源文件中创建main源文件和Stu源文件。再main文件中写入intmian()代码。
4、然后在mian主函数中,写入while语句无限循环。再写入Init函数。
5、在Stu源文件的Init函数用printf语句,将学生管理系统输出。再创建链表的头节点head。
6、然后用switch函数对 *** 作进行判断。再执行数据结构的增删改查功能。这样一个学生管理系统的基本框架就完成了。
方法二:
1、新建一个学生实体类,用于存放学生的各项信息。
2、新建一个链表节点类,每个节点存放一个学生信息及下一个节点的引用。
3、添加一个主 *** 作类,并添加本系统的菜单方法。
4、定义链表的头节点,当前最后一个节点,以及主控制逻辑信息。
5、使用io流逐行读取存有学生信息的文本文件,对每行字符串,采用\t分割后得到一个字符串数组,数据各项即为一个学生的具体信息。然后新建一个节点加入到链表。
6、运行结果:
import java.awt.BorderLayoutimport java.awt.CardLayout
import java.awt.Container
import java.awt.Font
import java.awt.event.ActionEvent
import java.awt.event.ActionListener
import javax.swing.Icon
import javax.swing.ImageIcon
import javax.swing.JButton
import javax.swing.JFrame
import javax.swing.JLabel
import javax.swing.JMenu
import javax.swing.JMenuBar
import javax.swing.JMenuItem
import javax.swing.JPanel
import javax.swing.JToolBar
import javax.swing.SwingConstants
public class MainFrame extends JFrame implements ActionListener{
InsertPanel ip = null
SelectPanel sp = null
JPanel pframe
JButton jb1,jb2,jb3
JMenuItem jm11,jm21,jm22,jm23,jm31,jm32,jm41,jm42
CardLayout clayout
public MainFrame(String s){
super(s)
JMenuBar mb = new JMenuBar()
this.setJMenuBar(mb)
JMenu m1 = new JMenu("系统")
JMenu m2 = new JMenu("基本信息")
JMenu m3 = new JMenu("成绩")
JMenu m4 = new JMenu("奖惩")
mb.add(m1)
mb.add(m2)
mb.add(m3)
mb.add(m4)
jm11 = new JMenuItem("退出系统")
jm21 = new JMenuItem("输入")
jm22 = new JMenuItem("查询")
jm23 = new JMenuItem("更改")
jm31 = new JMenuItem("输入成绩")
jm32 = new JMenuItem("查询成绩")
jm41 = new JMenuItem("奖励")
jm42 = new JMenuItem("处分")
m1.add(jm11)
m2.add(jm21)
m2.add(jm22)
m2.add(jm23)
m3.add(jm31)
m3.add(jm32)
m4.add(jm41)
m4.add(jm42)
Icon i1 = new ImageIcon()
Icon i2 = new ImageIcon()
Icon i3 = new ImageIcon()
jb1 = new JButton(i1)
jb1.setToolTipText("输入")
jb2 = new JButton(i2)
jb2.setToolTipText("查询")
jb3 = new JButton(i3)
jb3.setToolTipText("退出")
JToolBar tb = new JToolBar("系统工具")
tb.add(jb1)
tb.add(jb2)
tb.add(jb3)
add(tb,BorderLayout.NORTH)
jm11.addActionListener(this)
jm21.addActionListener(this)
jm22.addActionListener(this)
jb1.addActionListener(this)
jb2.addActionListener(this)
jb3.addActionListener(this)
clayout = new CardLayout()
pframe = new JPanel(clayout)
add(pframe)
JPanel mainp = new JPanel(new BorderLayout())
JLabel mainl = new JLabel("学生信息管理平台",SwingConstants.CENTER)
mainl.setFont(new Font("serif",Font.BOLD,30))
mainp.add(mainl)
pframe.add(mainp,"main")
clayout.show(pframe, "main")
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == jm21 || e.getSource() == jb1){
if(ip == null){
ip= new InsertPanel()
pframe.add(ip,"insert")
}
clayout.show(pframe, "insert")
this.setTitle("输入学生信息")
}
else if(e.getSource() == jm22 || e.getSource() == jb2){
if(sp == null){
sp= new SelectPanel()
pframe.add(sp,"select")
}
clayout.show(pframe, "select")
this.setTitle("查询学生信息")
}
else if(e.getSource() == jm11 || e.getSource() == jb3){
System.exit(0)
}
}
}
第二个:
import javax.swing.JFrame
public class MainTest {
public static void main(String [] args){
MainFrame f = new MainFrame("学生信息管理平台")
f.setSize(400,300)
f.setLocation(350,250)
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
f.setVisible(true)
}
}
第二个:
import java.sql.Connection
import java.sql.DriverManager
public class MySQLConnection {
static Connection getCon(){
Connection con = null
try{
Class.forName("com.mysql.jdbc.Driver")
con = DriverManager.getConnection("jdbc:mysql://localhost/test","root","123")
}
catch(Exception e){
System.out.println("建立数据库连接遇到异常!")
}
return con
}
}
第四个:
import java.awt.BorderLayout
import java.awt.GridLayout
import java.awt.event.ActionEvent
import java.awt.event.ActionListener
import javax.swing.JButton
import javax.swing.JLabel
import javax.swing.JOptionPane
import javax.swing.JPanel
import javax.swing.JTextField
import javax.swing.SwingConstants
public class SelectPanel extends JPanel implements ActionListener{
JButton jb
JTextField jt
JTextField jt1,jt2,jt3,jt4
public SelectPanel(){
JLabel jl = new JLabel("请输入学号:",SwingConstants.CENTER)
jt = new JTextField()
jb = new JButton("确定")
JPanel jp1 = new JPanel(new GridLayout(1,3))
jp1.add(jl)
jp1.add(jt)
jp1.add(jb)
JLabel j1,j2,j3,j4
j1 = new JLabel("学号:",SwingConstants.CENTER)
j2 = new JLabel("姓名:",SwingConstants.CENTER)
j3 = new JLabel("性别:",SwingConstants.CENTER)
j4 = new JLabel("年龄:",SwingConstants.CENTER)
jt1 = new JTextField(6)
jt1.setEditable(false)
jt2 = new JTextField(6)
jt2.setEditable(false)
jt3 = new JTextField(6)
jt3.setEditable(false)
jt4 = new JTextField(6)
jt4.setEditable(false)
JPanel jp2 = new JPanel(new BorderLayout())
JPanel jp3 = new JPanel(new GridLayout(4,2))
jp2.add(new JLabel(""),BorderLayout.NORTH)
jp3.add(j1)
jp3.add(jt1)
jp3.add(j2)
jp3.add(jt2)
jp3.add(j3)
jp3.add(jt3)
jp3.add(j4)
jp3.add(jt4)
jp2.add(jp3)
this.setLayout(new BorderLayout())
add(jp1,BorderLayout.NORTH)
add(jp2)
jb.addActionListener(this)
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == jb){
String stuNo = jt.getText().trim()
Student s = new Student()
boolean b = true
try{
b = s.selectByStuNo(stuNo)
}
catch(Exception ex){
System.out.println("查询学生信息遇到异常!")
}
if(b){
jt1.setText(s.getStuNo())
jt2.setText(s.getName())
jt3.setText(s.getGender())
int a = s.getAge()
Integer i = new Integer(a)
jt4.setText(i.toString())
}
else{
JOptionPane.showMessageDialog(null, "无此学生!")
}
}
}
}
第五个:
import javax.swing.JFrame
public class SelectTest {
public static void main(String [] args){
JFrame f = new JFrame("查询学生信息")
SelectPanel p = new SelectPanel()
f.add(p)
f.setSize(400,300)
f.setLocation(300,250)
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
f.setVisible(true)
}
}
第六个:
import java.sql.Connection
import java.sql.ResultSet
import java.sql.Statement
public class Student {
String stuNo
String name
String gender
int age
public Student(){}
public Student(String stuNo,String name,String gender, int age){
this.stuNo = stuNo
this.name = name
this.gender = gender
this.age = age
}
public String getStuNo(){
return stuNo
}
public void setStuNo(String stuNo){
this.stuNo = stuNo
}
public String getName(){
return name
}
public void setName(String name){
this.name = name
}
public String getGender(){
return gender
}
public void setGender(String gender){
this.gender = gender
}
public int getAge(){
return age
}
public void setAge(int age){
this.age = age
}
public boolean insertStudent(){
boolean b = true
try{
Connection con = MySQLConnection.getCon()
Statement statement = con.createStatement()
String sql = "insert into student values('" + stuNo + "','" + name +"','" + gender + "'," + age + ")"
sql = new String(sql.getBytes("gb2312"),"ISO8859_1")
statement.executeUpdate(sql)
con.close()
}
catch(Exception e){
b = false
System.out.println("插入数据库遇到异常!")
}
return b
}
public boolean selectByStuNo(String stuNo)throws Exception{
boolean b = true
Connection con = MySQLConnection.getCon()
Statement statement = con.createStatement()
String sql = "select * from student where stuNo =" + stuNo
ResultSet rs = statement.executeQuery(sql)
if(rs != null &&rs.next()){
String no = rs.getString(1)
this.setStuNo(no)
String n = rs.getString(2)
n = new String(n.getBytes("ISO8859_1"),"gb2312")
this.setName(n)
String g = rs.getString(3)
g = new String (g.getBytes("ISO8859_1"),"gb2312")
this.setGender(g)
this.setAge(rs.getInt(4))
b = true
}
rs.close()
statement.close()
con.close()
return b
}
}
数据库你自己弄吧,我没时间弄了!初学得多动手哦
create database db
use db
create table 借阅等级信息(
借阅等级 int primary key,
最长借阅时间 int,
最大借阅数量 int,
)
insert into 借阅等级信息 values
(0, 30, 10),
(1, 60, 20),
(2, 90, 30),
(3, 120, 40)
create table 读者信息(
姓名 char(15) not null,
证件号 char(12) primary key,
借阅等级 int default 0,
累计借书 int default 0,
foreign key(借阅等级) references 借阅等级信息(借阅等级)
)
insert into 读者信息(姓名, 证件号, 借阅等级) values
('张三', '541607120165', 1),
('李四', '541707010185', 3),
('王五', '541707120165', 1),
('赵六', '541505980268', 2),
('孙七', '541407010169', 0),
('周八', '541307010489', 1)
create table 出版社信息(
出版社 varchar(20) primary key,
地址 varchar(25),
联系电话 char(7)
)
insert into 出版社信息 values
('清华大学出版社', '北京', '4979421'),
('晟威出版社', '天津', '5564130'),
('南海出版公司', '海南', '4984910'),
('上海文艺出版社', '上海', '6640239')
create table 图书信息(
索书号 char(15) primary key,
作者 char(15),
书名 char(15),
出版社 varchar(20),
出版时间 date,
foreign key(出版社)references 出版社信息(出版社)
)
insert into 图书信息 values
('b12987', '严蔚敏', '数据结构', '清华大学出版社', '2012-02-06'),
('b97894', '东野圭吾', '幻夜', '南海出版公司', '2004-08-02'),
('b16546', '吴玉华', '物理实验教程', '清华大学出版社', '2013-05-15'),
('b89490', '张雪峰', '考研指点', '晟威出版社', '2016-12-12'),
('b56400', '郏宗培', '纸上寻仙记', '上海文艺出版社', '2011-02-05')
create table 单本图书信息(
条码号 char(7) primary key check(len(条码号) = 7),
索书号 char(15),
馆藏地 varchar(40),
书刊状态 varchar(6) check(书刊状态 in ('可借', '借出', '非可借')),
历史借阅量 int default 0,
foreign key(索书号)references 图书信息(索书号)
)
insert into 单本图书信息(条码号, 索书号, 馆藏地, 书刊状态) values
('t987628', 'b97894', '三楼A8', '借出'),
('t594805', 'b97894', '二楼C7', '可借'),
('t984910', 'b89490', '五楼A2', '借出'),
('t940566', 'b12987', '负一楼D3', '借出')
create table 借阅信息(
借阅号 char(6) primary key,
借阅时间 date,
归还时间 date,
图书条码号 char(7),
借阅人证件号 char(12),
foreign key(图书条码号) references 单本图书信息(条码号),
foreign key(借阅人证件号) references 读者信息(证件号)
)
create table 评论信息(
评论号 char(8) primary key,
评分 numeric(2, 1),
内容 varchar(200),
评论时间 date,
评论者id char(12),
索书号 char(15),
foreign key(索书号)references 图书信息(索书号),
foreign key(评论者id)references 读者信息(证件号)
)
insert into 评论信息 values
('p12391', 8.9, '很有趣', '2015-06-24', '541707010185', 'b97894'),
('p98523', 7.8, '受益颇多', '2016-05-22', '541307010489', 'b89490'),
('p94606', 6.8, '完全看不懂orz', '2017-05-02', '541607120165', 'b12987')
create table 主题词信息(
ID char(8) primary key,
类别 char(15),
索书号 char(15),
foreign key(索书号)references 图书信息(索书号)
)
insert into 主题词信息 values
('z64400', '计算机', 'b12987'),
('z95410', '物理', 'b16546'),
('z98500', '考研', 'b89490'),
('z64165', '推理\悬疑', 'b97894'),
('z69850', '仙侠', 'b56400')
use db
go
create trigger trigger1
on 借阅信息
after insert
as
begin
update 读者信息 --更改读者累计借书量
set 累计借书 = 累计借书 + 1
from 读者信息, inserted
where 读者信息.证件号 = inserted.借阅人证件号
update 单本图书信息 --更改图书状态
set 单本图书信息.书刊状态 = '借出'
from inserted, 单本图书信息
where inserted.图书条码号 = 单本图书信息.条码号
update 单本图书信息
set 历史借阅量 = 历史借阅量 + 1 --更改图书历史借阅量
from inserted, 单本图书信息
where inserted.图书条码号 = 单本图书信息.条码号
end
insert into 借阅信息 values
('j13488', '2018-05-01', '2018-08-01', 't987628', '541407010169')
insert into 借阅信息 values
('j14910', '2016-12-11', '2017-01-25', 't984910', '541607120165')
insert into 借阅信息 values
('j97890', '2018-05-14', '2018-06-14', 't940566', '541607120165')
go
create view view_1(图书条码, 借阅者姓名, 编号, 借阅时间, 应还时间)
as
select 图书条码号, 姓名, 证件号, 借阅时间, 归还时间
from 借阅信息, 读者信息
where 借阅信息.借阅人证件号 = 读者信息.证件号 and 归还时间 >getdate()
go
create view view_2(图书条码, 历史总借阅量)
as
select 条码号, 历史借阅量
from 单本图书信息, 图书信息
where 单本图书信息.索书号 = 图书信息.索书号 and 书名 = '幻夜'
go
create view view_3(类别, 图书条码, 历史总借阅量)
as
select 类别, 条码号, 历史借阅量
from 单本图书信息, 图书信息, 主题词信息
where 主题词信息.索书号 = 图书信息.索书号 and 图书信息.索书号 = 单本图书信息.索书号 and 类别 = '考研'
go
create view view_4(读者编号, 条码, 图书名称, 应还日期)
as
select 借阅人证件号, 图书条码号, 书名, 归还时间
from 单本图书信息, 图书信息, 借阅信息
where 借阅信息.图书条码号 = 单本图书信息.条码号 and 单本图书信息.索书号 = 图书信息.索书号
and 归还时间 >getdate() and 借阅人证件号 = '541607120165'
go
create view view_5(读者编号, 图书条码, 图书名称, 借阅日期, 归还日期)
as
select 借阅人证件号, 图书条码号, 书名, 借阅时间, 归还时间
from 单本图书信息, 图书信息, 借阅信息
where 借阅信息.图书条码号 = 单本图书信息.条码号 and 单本图书信息.索书号 = 图书信息.索书号
and 借阅人证件号 = '541607120165'
go
create view view_6(读者编号, 图书名称, 评论时间, 评论内容)
as
select 评论者id, 书名, 评论时间, 内容
from 借阅信息, 单本图书信息, 评论信息, 图书信息
where 借阅信息.图书条码号 = 单本图书信息.条码号 and 单本图书信息.索书号 = 评论信息.索书号
and 评论信息.索书号 = 图书信息.索书号 and 评论者id = '541607120165'
go
create view view_7(出版社名称, 图书名称, 出版时间)
as
select top 100 percent 出版社信息.出版社, 书名, 出版时间
from 出版社信息, 图书信息
where 出版社信息.出版社 = 图书信息.出版社
order by 出版时间 asc
--执行
select * from view_1
select * from view_2
select * from view_3
select * from view_4
select * from view_5
select * from view_6
select * from view_7 order by 出版时间 asc
扩展资料:
数据库模型:
对象模型
层次模型(轻量级数据访问协议)
网状模型(大型数据储存)
关系模型
面向对象模型
半结构化模型
平面模型(表格模型,一般在形式上是一个二维数组。如表格模型数据Excel)
架构
数据库的架构可以大致区分为三个概括层次:内层、概念层和外层。
内层:最接近实际存储体,亦即有关数据的实际存储方式。
外层:最接近用户,即有关个别用户观看数据的方式。
概念层:介于两者之间的间接层。
数据库索引
主条目:数据库索引
数据索引的观念由来已久,像是一本书前面几页都有目录,目录也算是索引的一种,只是它的分类较广,例如车牌、身份z字号、条码等,都是一个索引的号码,当我们看到号码时,可以从号码中看出其中的端倪,若是要找的人、车或物品,也只要提供相关的号码,即可迅速查到正确的人事物。
另外,索引跟字段有着相应的关系,索引即是由字段而来,其中字段有所谓的关键字段(Key Field),该字段具有唯一性,即其值不可重复,且不可为"空值(null)"。
例如:在合并数据时,索引便是扮演欲附加字段数据之指向性用途的角色。故此索引为不可重复性且不可为空。
数据库 *** 作:事务
主条目:数据库事务
事务(transaction)是用户定义的一个数据库 *** 作序列,这些 *** 作要么全做,要么全不做,是一个不可分割的工作单位。
事务的并发性是指多个事务的并行 *** 作轮流交叉运行,事务的并发可能会访问和存储不正确的数据,破坏交易的隔离性和数据库的一致性。
网状数据模型的数据结构 网状模型 满足下面两个条件的基本层次联系的集合为网状模型。 1. 允许一个以上的结点无双亲; 2. 一个结点可以有多于一个的双亲。
参考资料来源:百度百科——数据库
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)