怎么下载Microsoft Access 数据库软件

怎么下载Microsoft Access 数据库软件,第1张

1、首先它属于office的一组成部分,不是单独的。但是只有office的专业版才有这个功能。百

2、access 安装成功后,打开文件可以选择一些在线模板。

3、在拿到office2016的安装包后,一般说来原版iso镜像 ;只需要吧后缀名改成rara或者zip 解压工具解压即可 不需要刻录。

4、更具自己的系统的位数 ;可以选择 64位的  或者 32位的安装。

我这边有韩顺平的视频讲座,很基础,从最基本的开始讲的,你需要的话我给你,下面是清单:

韩顺平 循序渐进学 java 从入门到精通 第0讲-开山篇

韩顺平 循序渐进学 java 从入门到精通 第1讲-内容介绍 项目演示 原理剖析

内容介绍:本章讲解以下内容: (1)课程介绍(2)项目演示(坦克游戏,雷霆战舰,满汉楼,爆炸人)(3)java介绍(4)java开发工具介绍(5)java语言的特点(6)jdk的安装和配置演示 (7)java运行原理剖析(Hello,wrold)

韩顺平 循序渐进学 java 从入门到精通 第2讲-变量 数据类型

内容介绍:本章讲解以下内容: (1)初识变量(2)java的基本数据类型(3)定义变量、初始化、赋值(4)基本数据类型的转换 a自动转换 b强制转换 c计算中的转换

韩顺平 循序渐进学 java 从入门到精通 第3讲-运算符 流程控制

内容介绍:本章讲解以下内容: (1)java的算术运算符(2)java的关系运算符(3)java的逻辑运算符(4)java的三大流程控制-顺序控制(5)java的三大流程控制-分支控制

韩顺平 循序渐进学 java 从入门到精通 第4讲- 流程控制

内容介绍:本章讲解以下内容: (1)java的三大流程控制-分支控制(2)java的三大流程控制-循环控制(3)作业布置

韩顺平 循序渐进学 java 从入门到精通 第5讲-类 对象

内容介绍:本章讲解以下内容: (1)类的介绍(2)对象的介绍(3)类和对象关系(4)类和对象的区别和联系(5)如何定义类(6)如何创建类

韩顺平 循序渐进学 java 从入门到精通 第6讲-成员属性 成员方法

内容介绍:本章讲解以下内容: (1)类的成员属性(2)如何访问(使用)对象的成员变量(3)对象在内存的形式(4)类的成员方法的定义和使用

韩顺平 循序渐进学 java 从入门到精通 第7讲-成员方法 构造方法

内容介绍:本章讲解以下内容: (1)类的成员方法的理解(2)方法-调用过程(3)类的成员方法(函数)-注意事项(4)类的成员方法的定义和使用(5)类的构造方法(默认构造方法)(6)类的构造方法小结

韩顺平 循序渐进学 java 从入门到精通 第8讲-this 类变量

内容介绍:本章讲解以下内容: (1)this代词详讲(2)类变量详讲

韩顺平 循序渐进学 java 从入门到精通 第9讲-类方法 封装

内容介绍:本章讲解以下内容: (1)类方法详解(2)抽象(3)封装(4)四个访问修饰符 public private protected 默认(5)包

韩顺平 循序渐进学 java 从入门到精通 第10讲-访问修饰符 重载 覆盖

内容介绍:本章讲解以下内容: (1)四个访问修饰符的详解(2)继承详解(3)方法的重载

(4)方法的覆盖

韩顺平 循序渐进学 java 从入门到精通 第11讲-约瑟夫问题

内容介绍:本章讲解以下内容: (1)约瑟夫问题详解(用链表解决)

韩顺平 循序渐进学 java 从入门到精通 第12讲-多态

内容介绍:本章讲解以下内容: (1)多态详解

韩顺平 循序渐进学 java 从入门到精通 第13讲-抽象类 接口

内容介绍:本章讲解以下内容: (1)抽象类详解(2)接口的详解

韩顺平 循序渐进学 java 从入门到精通 第14讲-final 作业评讲

内容介绍:本章讲解以下内容: (1)用接口实现多态(2)实现接口 vs 继承类(3)final修饰符详解

(4)作业评讲

韩顺平 循序渐进学 java 从入门到精通 第15讲-作业 测试题

(1)作业、测试题评讲

韩顺平 循序渐进学 java 从入门到精通 第16讲-数组

(1)数组详解(2)简单数据类型的数组(3)对象数组

韩顺平 循序渐进学 java 从入门到精通 第17讲-排序

(1)排序介绍(2)冒泡排序(3)选择排序

韩顺平 循序渐进学 java 从入门到精通 第18讲-排序 查找

(1)插入排序法(2)快速排序法(3)外部排序法(4)查找介绍(5)顺序查找和二分查找

韩顺平 循序渐进学 java 从入门到精通 第19讲-多维数组

(1)多维数组讲解

韩顺平 循序渐进学 java 从入门到精通 第20讲-二进制 位运算 位移运算

内容介绍:本章讲解以下内容: (1)二进制(原码、反码、补码)(2)位运算(取反,位与,位异或,位或)(3)位移运算(算术右移,算术左移,逻辑左移)

韩顺平 循序渐进学 java 从入门到精通 第21讲-集合

内容介绍:本章讲解以下内容: (1)集合框架图,体系介绍(2)ArrayList 详解

韩顺平 循序渐进学 java 从入门到精通 第22讲-集合

内容介绍:本章讲解以下内容: (1)使用ArryaList完成雇员薪水管理系统(2)LinkedList的介绍和使用(3)Vector的介绍和使用(4)Stack(栈)的介绍和使用

韩顺平 循序渐进学 java 从入门到精通 第23讲-集合

内容介绍:本章讲解以下内容: (1)HashMap的介绍和使用(2)Hashtable的介绍和使用(3) HashMap、Hashtable的区别(4) ArrayList、Vector的区别

韩顺平 循序渐进学 java 从入门到精通 第24讲-集合补充

内容介绍:本章讲解以下内容: (1)对集合使用的补充说明

韩顺平 循序渐进学 java 从入门到精通 第25讲-泛型 异常

内容介绍:本章讲解以下内容: (1)java泛型介绍(2)java泛型举例详解(3)java泛型的优点

(4)异常的介绍和异常的分类

韩顺平 循序渐进学 java 从入门到精通 第26讲-异常

内容介绍:本章讲解以下内容: (1)异常的处理-try catch finally(2)异常的处理-throws

韩顺平 循序渐进学 java 从入门到精通 第27讲-作业评讲

内容介绍:本章讲解以下内容: (1)作业评讲(最佳裁判、学生成绩)

韩顺平 循序渐进学 java 从入门到精通 第28讲-面试题评讲

内容介绍:本章讲解以下内容: (1) 赛迪网程序员面试题评讲[最后待定]

韩顺平 循序渐进学 java 从入门到精通 第29讲-满汉楼 swing介绍

内容介绍:本章讲解以下内容: (1) 图形用户界面编程介绍(gui)(2)满汉楼餐饮系统演示

(3)awt swing swt jface关系(4)eclipse介绍(5)swing组件介绍(6)swing的窗体组件和按钮组件

韩顺平 循序渐进学 java 从入门到精通 第30讲-布局管理器

内容介绍:本章讲解以下内容: (1)布局管理器介绍(2)BorderLayout 边界布局(3)FlowLayout 流式布局(4)GridLayout 网格布局

韩顺平 循序渐进学 java 从入门到精通 第31讲-常用组件

内容介绍:本章讲解以下内容: (1)JPanle的介绍和使用(2)布局管理器的综合使用

(3)swing常用组件JTextField JPasswordField JLabel(4)swing常用组件JCheckBox JRadioButton(5)swing常用组件 JComboBox JList JScrollPane

韩顺平 循序渐进学 java 从入门到精通 第32讲-swing编程实战

内容介绍:本章讲解以下内容: (1)swing编程实战-金山词霸界面(2)swing编程实战-qq聊天界面(3)swing编程实战-qq登录界面(4)swing编程实战-记事 本界面(5)swing组件 JSplitPane JTextArea JTabbedPane (6)swing组件JMenuBar JMenu JMenuItem JToolBar

韩顺平 循序渐进学 java 从入门到精通 第33讲-绘图技术 坦克大战1

内容介绍:本章讲解以下内容: (1)坦克大战游戏演示(2)java绘图坐标系

(3)像素的概念(4)java绘图技术-原理(5)java绘图常用的方法

韩顺平 循序渐进学 java 从入门到精通 第34讲-绘图技术 坦克大战2

内容介绍:本章讲解以下内容: (1)坦克大战游戏-绘出坦克(2)作业-画蛤蟆 和 王八

韩顺平 循序渐进学 java 从入门到精通 第35讲-事件处理 坦克大战3

内容介绍:本章讲解以下内容: (1)java事件处理机制-原理(2)java事件处理机制案例详解

(3)事件源 事件 事件监听者 事件处理方法详解(4)java事件处理机制 通俗版理解

(5)让一个小球可以被控制上下左右移动(键盘监听)

韩顺平 循序渐进学 java 从入门到精通 第36讲-事件监听 坦克大战4

内容介绍:本章讲解以下内容: (1)java事件处理机制继续讲解(2)事件监听器接口

(3)事件处理机制的一些案例

韩顺平 循序渐进学 java 从入门到精通 第37讲-事件总结 坦克大战5

内容介绍:本章讲解以下内容: (1)java事件处理编程总结(2)坦克大战游戏---让自己的坦克可以自由的移动

韩顺平 循序渐进学 java 从入门到精通 第38讲-线程 坦克大战6

内容介绍:本章讲解以下内容: (1)进程的介绍(2)线程的介绍及其作用

(3)用继承Thread类的方法来开发线程(4)用实现Runnable接口的方法来开发线程

韩顺平 循序渐进学 java 从入门到精通 第39讲-线程 坦克大战7

内容介绍:本章讲解以下内容: (1)如何更好的理解线程(2)继承Thread和实现Runnable接口的区别(3)线程的实际运用 ---坦克大战游戏(30) 玩家可以发射子d

韩顺平 循序渐进学 java 从入门到精通 第40讲-线程

内容介绍:本章讲解以下内容: (1)线程使用的经验之谈(2)线程同步处理方式

(3)对象锁和线程安全(4)synchronized的具体使用

韩顺平 循序渐进学 java 从入门到精通 第41讲-坦克大战8

内容介绍:本章讲解以下内容: (1)坦克大战游戏升级(30) 玩家可以连续发射子d

(2)坦克大战游戏升级(30) 当击中敌人坦克时,敌人坦克就消失

韩顺平 循序渐进学 java 从入门到精通 第42讲-坦克大战9

内容介绍:本章讲解以下内容:

(1)坦克大战游戏升级(40) 当击中敌人坦克时,敌人坦克就消失,并出现爆炸效果

(2)坦克大战游戏升级(40) 敌人坦克可以自由移动

(3)坦克大战游戏升级(40) 敌人坦克可以移动控制在区域内

(4)坦克大战游戏升级(40) 敌人坦克可以发射子d

(5)坦克大战游戏升级(40) 敌人坦克可以连发子d

韩顺平 循序渐进学 java 从入门到精通 第43讲-io编程 坦克大战10

内容介绍:本章讲解以下内容:

(1)坦克大战游戏升级(40) 当敌人的坦克击中我的坦克时,我的坦克爆炸并消失

(2)坦克大战游戏升级(40) 如何控制敌人坦克重迭运动

(3)java io 编程( 文件编程 )初步介绍

(4)文件和文件流的基本概念

(5)java io 流类一览表

(6)文件流的分类 字节流 和 字符流的介绍

韩顺平 循序渐进学 java 从入门到精通 第44讲-io编程

内容介绍:本章讲解以下内容: (1)java 常用 io流-文件类(File)(2)演示如何得到文件信息

(3)演示如何创建文件夹,遍历文件,创建新文件

(4)FileInputStream 和 FileOutputStream类的使用案例

韩顺平 循序渐进学 java 从入门到精通 第45讲-io编程

内容介绍:本章讲解以下内容:

(1)使用FileInputStream 和 FileOutputStream完成拷贝

(2)文件字符流的使用案例 FileReader FileWriter

(3)缓冲字符流的使用案例 BufferedReader BufferedWriter

(4)打印输出流的案例 PrintWriter

韩顺平 循序渐进学 java 从入门到精通 第46讲-io编程 记事本开发

内容介绍:本章讲解以下内容: (1)java io 编程综合案例 (2)一个简单的文件记事本开发

韩顺平 循序渐进学 java 从入门到精通 第47讲-坦克大战11

内容介绍:本章讲解以下内容: (1)坦克大战游戏升级(50) 如何控制敌人坦克重迭运动

韩顺平 循序渐进学 java 从入门到精通 第48讲-坦克大战12

(1)坦克大战游戏升级(50) 可以分关

(2)坦克大战游戏升级(50) 闪烁效果

(3)坦克大战游戏升级(50) 可以在玩游戏的时候暂停和继续

(4)坦克大战游戏升级(50) 可以记录玩家的成绩

韩顺平 循序渐进学 java 从入门到精通 第49讲-坦克大战13

(1)坦克大战游戏升级(50) 可以存盘退出

(2)坦克大战游戏升级(50) 可以恢复到退出状态 接着上一局玩

韩顺平 循序渐进学 java 从入门到精通 第50讲-坦克大战14

(1)坦克大战游戏升级(50) java播放声音文件(2)播放经典的fc坦克大战游戏开始音

韩顺平 循序渐进学 java 从入门到精通 第51讲-作业评讲

内容介绍:本章讲解以下内容: (1)老猴排序-作业评讲

韩顺平 循序渐进学 java 从入门到精通 第52讲-试题评讲

内容介绍:本章讲解以下内容: (1)赛迪网初级程序员笔试题评讲

韩顺平 循序渐进学 java 从入门到精通 第53讲-数据库概念

(1)数据库的基本概念(2)数据库的基本结构(3)数据库的基本特点(4)目前主流数据库的介绍

韩顺平 循序渐进学 java 从入门到精通 第54讲-sql server安装配置卸载

(1)sql server 数据库的安装、配置、卸载

韩顺平 循序渐进学 java 从入门到精通 第55讲-sql server基本使用

(1)数据库sa 用户和普通用户的创建和密码分派(2)windows验证和混合验证的讲解

(3)企业管理器的基本使用案例

韩顺平 循序渐进学 java 从入门到精通 第56讲-查询分析器 ddl dml dql

(1)查询分析器的基本使用案例(2)简单的ddl 、dml 和 dql语句使用案例

韩顺平 循序渐进学 java 从入门到精通 第57讲-sql server 数据类型

(1)表名和列名的命名规则(2)表支持的数据类型-字符型char varchar text ntext nchar nvarchar (3)表支持的数据类型-数字类型 bit

韩顺平 循序渐进学 java 从入门到精通 第58讲-sql server 数据类型

(1)表支持的数据类型-数字类型 int bigint float numeric

(2)表支持的数据类型-日期类型 datetime timestamp

(3)表支持的数据类型-image binary

(4)表的基本 *** 作(建表,增,删,改)

韩顺平 循序渐进学 java 从入门到精通 第59讲-sql server 基本查询

(1)表的主键 和 外键(2)查询所有列,指定列,取消重复行(3)使用算术表达式,使用列的别名(4)使用where 子句(5)模糊查询(like)

韩顺平 循序渐进学 java 从入门到精通 第60讲-sql server 基本查询

(1)在where条件中使用in(2)使用is null的 *** 作符(3)使用逻辑 *** 作符号(4)使用order by字句

(5)使用列的别名排序(6)数据分组-max,min,avg,sum,count(7)group by 和 having子句

(8)对数据分组的总结

韩顺平 循序渐进学 java 从入门到精通 第61讲-sql server 复杂查询

(1)多表查询(2)自连接(3)子查询 单行子查询 多行子查询

韩顺平 循序渐进学 java 从入门到精通 第62讲-sql server 复杂查询

(1)在from子句中使用子查询(2)分页查询(3)内连接(4)外连接(左外连接 右外连接)

韩顺平 循序渐进学 java 从入门到精通 第63讲-sql server 约束

(1)维护数据的完整性(2)主键 外键 not null foreign key unique check

韩顺平 循序渐进学 java 从入门到精通 第64讲-sql server 备份恢复 jdbc-odbc

(1)使用企业管理器完成数据库的分离、附加(2)使用企业管理器完成数据库的备份和恢复

(3)使用查询分析器完成数据库的备份和恢复(4)crud介绍

(5)jdbc介绍和jdbc驱动的分类(6)jdbc-odbc桥连接 的案例详解

韩顺平 循序渐进学 java 从入门到精通 第65讲-sql server jdbc

(1)jdbc-odbc桥连案例详解(2)sql注入漏洞解析(3)使用PreparedStatement技巧

(4)Statement和PreparedStatement的区别

韩顺平 循序渐进学 java 从入门到精通 第66讲-sql server jdbc

(1)jdbc驱动直连数据库(2)jdbc的案例详解(3)在java程序中创建,删除数据库(表)

(4)在java程序中备份,恢复数据库(表)

韩顺平 循序渐进学 java 从入门到精通 第67讲-sql server 作业评讲

(1)对表 *** 作的测试题评讲(重要!)

韩顺平 循序渐进学 java 从入门到精通 第68讲-项目开发流程

(1)软件开发项目流程介绍(2)满汉楼餐饮系统简单介绍和分析

韩顺平 循序渐进学 java 从入门到精通 第69讲-学生管理系统1 项目分析

(1)学生管理系统开发流程详细介绍1使用jude作出流程图2设计数据库3功能分析

(3)数据库编程实战之一--学生管理系统1

韩顺平 循序渐进学 java 从入门到精通 第70讲-学生管理系统2

(1)数据库编程实战之一--学生管理系统2

韩顺平 循序渐进学 java 从入门到精通 第71讲-学生管理系统3 增删改

(1)数据库编程实战之一--学生管理系统3 完成对学生的增加、删除、修改

韩顺平 循序渐进学 java 从入门到精通 第72讲-学生管理系统4 model2模式

(1)数据库编程实战之一--学生管理系统4

完成对学生信息的修改

(2)提出模式的概念(3)对学生管理系统从model1模式改为model2模式

韩顺平 循序渐进学 java 从入门到精通 第73讲-学生管理系统5 dao sqlhelper

(1)数据库编程实战之一--学生管理系统5

在model2模式中对model层再次分层业务层和DAO层

(2)编写一个DAO类 SqlHelper(3)完成学生管理系统并总结

韩顺平 循序渐进学 java 从入门到精通 第74讲-满汉楼系统1 项目分析

(1)java项目实训之--满汉楼餐饮系统1

满汉楼餐饮系统设计分析

满汉楼餐饮系统使用演示

满汉楼餐饮系统设计文档说明

(2)充分理解项目开发五大流程

韩顺平 循序渐进学 java 从入门到精通 第75讲-满汉楼系统2 项目分析

(1)java项目实训之--满汉楼餐饮系统2

满汉楼餐饮系统安装与配置

满汉楼餐饮系统的 *** 作流程

韩顺平 循序渐进学 java 从入门到精通 第76讲-满汉楼系统3 实现闪屏 登录

(1)java项目实训之--满汉楼餐饮系统3

a实现登录闪屏效果b实现登录界面

韩顺平 循序渐进学 java 从入门到精通 第77讲-满汉楼系统4 菜单

(1)java项目实训之--满汉楼餐饮系统4

a实现登录界面所有b实现经理,主管,系统管理员的 *** 作主界面-菜单部分

韩顺平 循序渐进学 java 从入门到精通 第78讲-满汉楼系统5 工具栏状态栏

(1)java项目实训之--满汉楼餐饮系统5

a对主界面的布局结构进行分析

b实现经理,主管,系统管理员的 *** 作主界面-工具栏和状态栏

韩顺平 循序渐进学 java 从入门到精通 第79讲-满汉楼系统6 登录验证

(1)java项目实训之--满汉楼餐饮系统6

a编写数据层,业务层的部分类,完成用户到数据库的登录验证

b加深对model2模式的认识c编写SqlHelper工具类

韩顺平 循序渐进学 java 从入门到精通 第80讲-满汉楼系统7 窗口拆分

(1)java项目实训之--满汉楼餐饮系统7

a完成经理,主管,系统管理员的 *** 作主界面-八个可选 *** 作选项

b完成窗口的拆分显示

韩顺平 循序渐进学 java 从入门到精通 第81讲-满汉楼系统8 界面切换

(1)java项目实训之--满汉楼餐饮系统8

a完成经理,主管,系统管理员的 *** 作主界面-人事管理和登录管理切换

b完成主界面一些特效

韩顺平 循序渐进学 java 从入门到精通 第82讲-满汉楼系统9 人事管理

(1)java项目实训之--满汉楼餐饮系统9

a完成经理,主管,系统管理员的 *** 作主界面-人事管理的显示,增加,删除和修改

韩顺平 循序渐进学 java 从入门到精通 第83讲-满汉楼系统10 报表统计 uml图

(1)java项目实训之--满汉楼餐饮系统10

a完成经理,主管,系统管理员的 *** 作主界面-报表统计的显示

b如何使用jude软件设计uml的用例图,类图,和时序图(重要)

c满汉楼项目实训之-结束语

韩顺平 循序渐进学 java 从入门到精通 第84讲-网络基础

(0)java网络编程开篇名义(1)山寨版qq项目演示(2)为什么选择qq来讲解网络编程

(3)网线,网卡,无线网卡(4)协议(tcp/ip)介绍(5)ip地址介绍(6)Ip地址与包的路由传递

韩顺平 循序渐进学 java 从入门到精通 第85讲-port url socket编程原理

(1)端口port(2)url地址(3)单工、半双工和全双工概念(4)java网络编程基本原理图

(5)客户端向服务器端互发信息 (半双工通讯)

韩顺平 循序渐进学 java 从入门到精通 第86讲-半双工 双全工

(1)客户端向服务器端互发信息 (半双工通讯)

在案例一得基础上增加,可以从控制台输入信息,相互通讯

(2)客户端和服务器端,可以任意互发信息,带界面

韩顺平 循序渐进学 java 从入门到精通 第87讲-山寨qq项目1 登录界面

(1)山寨版qq天下项目实战之一(2)完成山寨版qq登录界面

韩顺平 循序渐进学 java 从入门到精通 第88讲-山寨qq项目2 好友列表界面

(1)山寨版qq天下项目实战之二(2)完成山寨版qq的好友列表界面

韩顺平 循序渐进学 java 从入门到精通 第89讲-山寨qq项目3 聊天界面 对象流

(1)山寨版qq天下项目实战之三(2)完成山寨版qq聊天界面(3)讲解如何在网络间传递对象流

韩顺平 循序渐进学 java 从入门到精通 第90讲-山寨qq项目4 登录验证

(1)山寨版qq天下项目实战之四(2)完成服务器控制界面

(3)完成客户端和服务器端得程序结构分析(4)完成用户的登录验证(到服务器去验证)

韩顺平 循序渐进学 java 从入门到精通 第91讲-山寨qq项目5 一对一的聊天

(1)山寨版qq天下项目实战之五

(2)完成鼠标移动到那个好友就高亮他,双击可以跳出聊天窗口(3)完成一对一的聊天

韩顺平 循序渐进学 java 从入门到精通 第92讲-山寨qq项目6 多对多的聊天

(1)山寨版qq天下项目实战之六(2)完成山寨版qq多对多的聊天

韩顺平 循序渐进学 java 从入门到精通 第93讲-山寨qq项目7 好友在线提示

(1)山寨版qq天下项目实战之七(2)完成山寨版qq多对多的聊天的显示

(3)完成山寨版qq如何好友在线则显示彩色头像,如果不在线则显示灰色的头像

韩顺平 循序渐进学 java 从入门到精通 第94讲-山寨qq项目8 好友在线提示

(1)山寨版qq天下项目实战之八(2)完成山寨版qq当一个好友上线,可以通知所有

在线的好友,并让他的头像显示彩色头像

(3)提出要完成的新任务

1不让同一个账号反复登录

2如果好友不在线,则不能聊天

#include<stdioh>

#include<stdlibh>

#include<conioh>

#include<stringh>

#define INITIAL_SIZE 100 /数组初始的大小/

#define INCR_SIZE 50 /数组每次增加的大小/

#define NUM_SUBJECT 4 /科目数/

#define NULL 0

struct student_info

{

char number[15]; /学号/

char name[20]; /姓名/

char gender[4]; /性别/

float score[NUM_SUBJECT]; /分别为该学生4门课的成绩/

float sum; /总分/

float average; /平均分/

int index; /名次/

};

typedef struct student_info StuInfo;

extern int numStus; /记录的学生数/

extern StuInfo records; /记录学生信息的数组/

extern char savedTag; /信息是否已保存的标志,0为已保存,1为未保存/

extern int arraySize; /数组大小/

extern char subject[];

void handle_menu(void);

int menu_select(void);

void addRecord(void);

void modifyRecord(void);

void queryInfo(void);

void removeRecord(void);

void sortInfo(void);

int saveRecords(void);

int loadRecords(void);

void newRecord(void);

void quit(void);

void showTable(void);

int findRecord(char target,int targetType,int form);

int getIndex(float sum);

void copyRecord(StuInfo src,StuInfo dest);

void average(void);

void search(void);

void shuchu(void);

void shaixuan(void);

int numStus = 0;

StuInfo records = NULL;

char savedTag = 0;

int arraySize;

char subject[]={"高数","物理","英语","PC"};

void main()

{

printf("\n");

printf("\t\n");

printf("\t 这是一个 \n");

printf("\t 学生成绩管理程序 \n");

printf("\t 可以对学生的成绩进行管理 \n");

printf("\t 欢迎使用本程序 \n");

printf("\t\n");

printf("\n");

handle_menu();

}

/菜单处理函数/

void handle_menu(void)

{

for(;;)

{

switch(menu_select())

{

case 1:

saveRecords();

break;

case 2:

addRecord();

break;

case 3:

newRecord();

break;

case 4:

removeRecord();

break;

case 5:

modifyRecord();

break;

case 6:

average();

break;

case 7:

search();

break;

case 8:

sortInfo();

break;

case 9:

shuchu();

break;

case 10:

loadRecords();

break;

case 11:

shaixuan();

break;

case 12:

quit();

}

}

}

/菜单选择函数/

int menu_select()

{

char s[2];

int cn = 0;

printf("\n");

printf("\t1 建立文件\n");

printf("\t2 增加学生记录\n");

printf("\t3 新建学生信息文件\n");

printf("\t4 删除学生记录\n");

printf("\t5 修改学生记录\n");

printf("\t6 求平均成绩\n");

printf("\t7 查找最高分\n");

printf("\t8 按总分排序\n");

printf("\t9 输出所有记录\n");

printf("\t10 读取文件\n");

printf("\t11 按平均成绩筛选\n");

printf("\t12 退出程序");

printf("\n\t 数字对应相应功能,请选择1--12:");

for(;;)

{

gets(s);

cn = atoi(s);

/处理键入的非数字键/

if(cn<1||cn>12)

{

printf("\n\t输入错误,请重新输入!\n");

printf("\t0--12:");

}

else break;

}

return cn;

}

/建立文件函数/

int saveRecords()

{

FILE fp;

char fname[30];

printf("\t您选择的是:建立文件\n");

if(numStus == 0)

{

printf("没有记录可存!\n");

return -1;

}

printf("请输入你要存入的文件名(直接回车选择文件stu_info):");

gets(fname);

if(strlen(fname) == 0)

strcpy(fname,"stu_info");

if((fp = fopen(fname,"wb")) == NULL)

{

printf("不能存入文件!\n");

return -1;

}

printf("\n存文件\n");

fwrite(records,sizeof(StuInfo)numStus,1,fp);

fclose(fp);

printf("%d条记录已经存入文件,请继续 *** 作。\n",numStus);

savedTag = 0; /更新是否已保存的标记/

return 0;

}

/增加学生记录/

void addRecord()

{

char str[10];

int j;

float mark,sum;

printf("\t增加学生记录\n");

if(numStus == 0)

printf("原来没有记录,现在建立新表\n");

else

printf("下面在当前的末尾增加新的信息\n");

while(1)

{

printf("您将要添加一组信息,确定吗?(Y/N):");

gets(str);

if(str[0] == 'n'||str[0] == 'N') /不再添加信息/

break;

if(numStus>=arraySize) /数组空间不足,需要重新申请空间/

{

records = realloc(records,(arraySize+INCR_SIZE) sizeof(StuInfo));

if(records == NULL)

{

printf("memory failed");

exit(-1);

}

arraySize = arraySize+INCR_SIZE;

}

printf("请输入学号:");

gets(records[numStus]number);

printf("请输入姓名:");

gets(records[numStus]name);

printf("请输入性别(0为女,输入其它为男):");

gets(str);

if(str[0] == '0')

strcpy(records[numStus]gender,"女");

else

strcpy(records[numStus]gender,"男");

sum = 0;

for(j=0;j<NUM_SUBJECT;j++)

{

printf("请输入%s成绩:",subject[j]);

gets(str);

mark = (float)atof(str);

records[numStus]score[j] = mark;

sum += mark;

}

records[numStus]sum = sum;

records[numStus]average = sum/NUM_SUBJECT;

records[numStus]index = getIndex(sum);

numStus++;

}

printf("现在一共有%d条信息",numStus);

savedTag = 1;

}

/新建学生信息文件/

void newRecord(void)

{

char str[5];

printf("新建学生信息文件\n");

if(numStus != 0)

{

if(savedTag == 1)

{

printf("现在已经有记录,选择处理已有记录的方法。\n");

printf("是否保存原来的记录?(Y/N):");

gets(str);

if(str[0]!='n'&&str[0]!='N')

saveRecords();

}

}

numStus = 0;

addRecord();

}

/删除学生记录/

void removeRecord()

{

char str[5];

char target[20];

int type;

int i,j;

int tmpi;

printf("删除学生记录\n");

if(numStus == 0)

{

printf("没有可供删除的记录!");

return;

}

while(1)

{

printf("\t1 按学号\n");

printf("\t2 按姓名\n");

printf("\t3 按名次\n");

printf("\t数字对应删除方式!\n");

printf("请输入如何找到欲删除的记录的方式(直接输入回车结束移除 *** 作):");

gets(str);

if(strlen(str) == 0)

break;

if(str[0] == '1')

{

printf("请输入该学生的学号:");

gets(target);

type = 0;

}

else if (str[0] == '2')

{

printf("请输入该学生的姓名");

gets(target);

type = 1;

}

else

{

printf("请输入该学生的名次:");

gets(target);

type = 2;

}

i = findRecord(target,type,0);

if(i == -1)

printf("没有符合条件的学生!\n");

while(i != -1)

{

showTable();

printf("%s\t%s\t%s",records[i]number,records[i]name,records[i]gender);

for(j=0;j<NUM_SUBJECT;j++)

{

printf("\t%1f",records[i]score[j]);

}

printf("\t%1f\t%1f\t%d\n",records[i]sum,records[i]average,records[i]index);

printf("确定要删除这个学生的信息吗?(Y/N):");

gets(str);

if(str[0] == 'Y'||str[0] == 'y')

{

numStus--;

tmpi = records[i]index;

/将后面的记录前移/

for(j=1;j<numStus;j++)

copyRecord(&records[j+1],&records[j]);

/将名次排在被删除记录后面的记录的名次减1/

for(j=0;j<numStus;j++)

{

if(records[j]index > tmpi)

records[j]index--;

}

}

/取下一个符合条件的记录/

i = findRecord(target,type,i+1);

}

}

savedTag = 1;

}

/修改学生记录/

void modifyRecord()

{

char str[5];

char target[20];

int type;

int i,j;

int tmpi;

float sum,mark;

int count = 0; /总分大于sum的人数/

printf("修改学生记录\n");

if(numStus == 0)

{

printf("没有可供修改的记录!");

return;

}

while(1)

{

printf("\t1 按学号\n");

printf("\t2 按姓名\n");

printf("\t3 按名次\n");

printf("\t数字对应修改方式!\n");

printf("请输入如何找到欲修改的记录的方式(直接输入回车结束修改 *** 作):");

gets(str);

if(strlen(str) == 0)

break;

if(str[0] == '1')

{

printf("请输入该学生的学号:");

gets(target);

type = 0;

}

else if (str[0] == '2')

{

printf("请输入该学生的姓名");

gets(target);

type = 1;

}

else

{

printf("请输入该学生的名次:");

gets(target);

type = 2;

}

i = findRecord(target,type,0);

if(i == -1)

printf("没有符合条件的学生!\n");

while(i != -1)

{

showTable();

printf("%s\t%s\t%s",records[i]number,records[i]name,records[i]gender);

for(j=0;j<NUM_SUBJECT;j++)

{

printf("\t%1f",records[i]score[j]);

}

printf("\t%1f\t%1f\t%d\n",records[i]sum,records[i]average,records[i]index);

printf("确定要修改这个学生的信息吗?(Y/N):");

gets(str);

if(str[0] == 'Y'||str[0] == 'y')

{

tmpi = records[i]index;

printf("下面请重新输入该学生的信息:\n");

printf("请输入学号:");

gets(records[numStus]number);

printf("请输入姓名:");

gets(records[numStus]name);

printf("请输入性别(0为女,输入其它为男):");

gets(str);

if(str[0] == '0')

strcpy(records[numStus]gender,"女");

else

strcpy(records[numStus]gender,"男");

sum = 0;

for (j=0;j<NUM_SUBJECT;j++)

{

printf("请输入%s成绩:",subject[j]);

gets(str);

mark = (float)atof(str);

records[numStus]score[j] = mark;

sum += mark;

}

records[numStus]sum = sum;

records[numStus]average = sum/NUM_SUBJECT;

/将原来名次排在被修改记录之后,而其小于等于/

/修改后记录的sum的记录的名次减1/

/将原来名次排在被修改记录之前或相同,而其/

/大于修改后记录的sum的记录的名次增1/

count = 0;

for (j=0;j<numStus;j++ )

{

if(j == i)

continue;

if(records[j]index>tmpi&&records[j]sum>sum)

records[j]index--;

else if (records[j]index<=tmpi&&records[j]sum<sum)

records[j]index++;

if (records[j]sum>sum)

count++;

}

records[i]index = count+1;

}

i = findRecord(target,type,i+1);

}

}

savedTag = 1;

}

/退出程序/

void quit(void)

{

char str[5];

if (savedTag == 1)

{

printf("是否保存原来的记录(Y/N)");

gets(str);

if (str[0] != 'n' && str[0] != 'N')

saveRecords();

}

free(records);

exit(0);

}

/找出总分为sum在第0至numStus-1个记录中按升序排序的位置/

int getIndex(float sum)

{

int i;

int count = 0; /总分大于sum的人数/

for (i=0; i<numStus ;i++ )

{

if(records[i]sum<sum)

{

records[i]index++; /总分小于sum的记录名次加1/

}

else if (records[i]sum > sum)

{

count++;

}

}

return count+1;

}

/查找指明定的记录/

int findRecord(char target,int targetType,int from)

{

int i;

for (i=from;i<numStus ;i++ )

{

if ((targetType==0 && strcmp(target,records[i]number)==0)||

(targetType==1 && strcmp(target,records[i]name)==0)||

(targetType==2 && atoi(target)==records[i]index))

return i;

}

return -1;

}

/打印表头/

void showTable(void)

{

int j;

printf("学号\t姓名\t性别");

for (j=0; j<NUM_SUBJECT ;j++ )

printf("\t%s",subject[j]);

printf("\t总分\t平均分\t序号\n");

}

/将scr指向的一条记录复制给dest指明向的记录/

void copyRecord(StuInfo src,StuInfo dest)

{

int j;

strcpy(dest->number,src->number);

strcpy(dest->name,src->name);

strcpy(dest->gender,src->gender);

for (j=0; j<NUM_SUBJECT ;j++ )

{

dest->score[j]=src->score[j];

}

dest->sum = src->sum;

dest->average = src->average;

dest->index = src->index;

}

/求平均成绩函数/

void average()

{

int i,kemu;

float sum;

char str[5];

float average;

printf("\t1 高数\n");

printf("\t2 物理\n");

printf("\t3 英语\n");

printf("\t4 PC\n");

printf("请输入您要计算平均成绩的科目(数字代表相应科目):");

gets(str);

if(strlen(str) == 0)

exit (0);

for ( ; ; )

{

kemu = atoi(str);

if(kemu<1||kemu>4)

{

printf("您的输入有误,请重新输入,1--4:");

gets(str);

if(strlen(str) == 0)

exit(0);

}

else

{

for(i=0;i<numStus;i++)

{

sum = sum + records[i]score[kemu-1];

}

average = sum/numStus;

break;

}

}

printf("平均分为%1f",average);

}

/查找最高分函数/

void search()

{

int i,j=0,kemu,tag=0,ind[20];

int k;

char str[5];

float max;

printf("\t1 高数\n");

printf("\t2 物理\n");

printf("\t3 英语\n");

printf("\t4 PC\n");

printf("\t5 总分\n");

printf("请输入你要查找的最高分的选项(数字代表相应选项,直接回车退出),1--5:");

for ( ; ; )

{

gets(str);

if(strlen(str) == 0)

exit (0);

kemu = atoi(str);

if(kemu<1||kemu>5)

printf("您的输入有误,请重新输入,1--5:");

else

break;

}

if(kemu>=1&&kemu<=4)

{ max = 0;

for ( i=0 ; i< numStus ;i++ )

{

if(max < records[i]score[kemu-1])

{

max = records[i]score[kemu-1];

}

}

for ( i=0; i<numStus ;i++ )

{

if( (kemu==1 && max == records[i]score[0])||

(kemu==2 && max == records[i]score[1])||

(kemu==3 && max == records[i]score[2])||

(kemu==4 && max == records[i]score[3]) )

{

for( ;j<20;j++)

{

ind[j] = i;

tag++;

break;

}

}

}

showTable();

for(j=0;j<tag;j++)

{

printf("%s\t%s\t%s",records[ind[j]]number,records[ind[j]]name,records[ind[j]]gender);

for(k=0;k<NUM_SUBJECT;k++)

{

printf("\t%1f",records[ind[j]]score[k]);

}

printf("\t%1f\t%1f\t%d\n",records[ind[j]]sum,records[ind[j]]average,records[ind[j]]index);

}

printf("\t这就是您要查找的信息\n");

}

else

{

max = 0;

for (i=0;i<numStus;i++)

{

if(max<records[i]sum)

max = records[i]sum;

}

for(i=0;i<numStus;i++)

{

if(records[i]sum == max)

for( ;j<20;j++)

{

ind[j] = i;

tag++;

break;

}

}

showTable();

for(j=0;j<tag;j++)

{

printf("%s\t%s\t%s",records[ind[j]]number,records[ind[j]]name,records[ind[j]]gender);

for(k=0;k<NUM_SUBJECT;k++)

{

printf("\t%1f",records[ind[j]]score[k]);

}

printf("\t%1f\t%1f\t%d\n",records[ind[j]]sum,records[ind[j]]average,records[ind[j]]index);

}

printf("\t这就是您要查找的信息\n");

}

return;

}

/按总分降序函数/

void sortInfo(void)

{

int i,j;

StuInfo tmps;

if(numStus == 0)

{

printf("没有可供查询的记录!");

return;

}

for(i=0;i<numStus;i++)

{

for(j=0;j<numStus-i;j++)

{

if( records[j]sum<records[j+1]sum)

{

copyRecord(&records[j],&tmps);

copyRecord(&records[j+1],&records[j]);

copyRecord(&tmps,&records[j+1]);

}

}

}

printf("排序已完成!\n");

shuchu();

savedTag = 1;

}

/输出所有记录/

void shuchu(void)

{

int i,j;

showTable();

for(i=0;i<numStus;i++)

{

printf("%s\t%s\t%s",records[i]number,records[i]name,records[i]gender);

for(j=0;j<NUM_SUBJECT;j++)

{

printf("\t%1f",records[i]score[j]);

}

printf("\t%1f\t%1f\t%d\n",records[i]sum,records[i]average,records[i]index);

}

}

/文件读取 *** 作函数/

int loadRecords()

{

FILE fp;

char fname[30];

char str[5];

if(numStus!=0 && savedTag == 0)

{

printf("\t请选择您是要覆盖现有记录(Y),还是要将\n");

printf("\t读取的记录添加到现有的记录之后(N)\n");

printf("\t直接回车则覆盖现有的记录:");

gets(str);

if(str[0]=='n'||str[0]=='N')

{

savedTag = 1;

}

else

{

if(savedTag == 1)

{

/覆盖现有记录/

printf("\t读取文件会更改原来的记录\n");

printf("是否保存原来的记录(Y/N):");

gets(str);

if(str[0]!='n'||str[0]!='N')

saveRecords();

}

numStus = 0;

}

}

printf("请输入要读取的文件名(直接回车选择文件stu_info)");

gets(fname);

if(strlen(fname)==0)

strcpy(fname,"stu_info");

if((fp=fopen(fname,"rb"))==NULL)

{

printf("打不开文件!请重新选择\n");

return -1;

}

printf("\t读文件\n");

while(!feof(fp))

{

/现在的空间不足,需要重新申请空间/

if(numStus >= arraySize)

{

records = realloc(records,(arraySize+INCR_SIZE) sizeof(StuInfo));

if(records == NULL)

{

printf("memory failed!");

exit(-1);

}

arraySize = arraySize+INCR_SIZE;

}

if(fread(&records[numStus],sizeof(StuInfo),1,fp) !=1)

break;

/按照addRecord函数的方法,更新名次/

records[numStus]index = getIndex(records[numStus]sum);

numStus++;

}

fclose(fp);

printf("现在共有%d条记录。",numStus);

return 0;

}

/平均分筛选/

void shaixuan(void)

{

float average;

int i=0,numstus=0,j;

printf("本程序给出大于等于已知平均成绩的学生的信息\n");

printf("请输入你要筛选的下限平均分:");

scanf("%f",&average);

showTable();

for (i=0 ;i< numStus;i++ )

{

if(records[i]average>=average)

{

printf("%s\t%s\t%s",records[i]number,records[i]name,records[i]gender);

for(j=0;j<NUM_SUBJECT;j++)

{

printf("\t%1f",records[i]score[j]);

}

printf("\t%1f\t%1f\t%d\n",records[i]sum,records[i]average,records[i]index);

numstus++;

}

}

printf("共有%d条记录",numstus);

}

以上就是关于怎么下载Microsoft Access 数据库软件全部的内容,包括:怎么下载Microsoft Access 数据库软件、高分求java的基础视频教程,要基础入门的。电驴和迅雷上的资源太乱了,不知道该下哪些,有没有整理的。、编程:建立一个班级成绩管理数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10070211.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存