首先,在ubuntu里安装数据库
apt-get install mysql-server
然后输入你的超级用户密码,等待一段时间完成下载。
之后我们还需要下载两个东西:
apt-get install mysql-client
apt-get install libmysqlclient-dev
这里有个问题,为什么安装了mysql-server之后还要安装mysql-client呢?
- mysql-server是核心,mysql-client只是一个交互界面。
无论是通过shell命令,还是通过接口操作,我们并没有直接操作数据库核心,是通过mysql-client和mysql-server交互的。
另外,我们还下载了数据库接口的依赖库。编译的时候要加上库的位置:
-I/usr/include/mysql -lmysqlclient
(第一个是大写的I,第二个是小写的L)
在编写代码之前,我们要在后台先创建好我们的数据库和表,这一步我们可以通过数据库的操作语句来完成。
- 链接服务器
mysql -u root -p123456
说明:-u后面输入自己的用户名,-p后面输入该用户名对应的密码。按下回车键,就可以进入交互界面了。(进入交互界面之后,每一条指令后面都要加上分号)
- 显示数据库
show databases;
- 创建一个新的数据库
create database stuSystem;
创建了一个名为stuSystem的数据库
- 创建表
- 首先,选中数据库。之后我们创建的表都是属于这个数据库的。
use stuSystem;
- 接着,创建表
说明:
这个学生管理系统一共有两类用户,一类是管理员(老师),另外一类是学生。这里我们一共需要创建5张表格:
第 1 张表是管理员(老师)的账号密码表 admin_login。
第 2 张表是学生的账号密码表stu_login。
第 3 张表是学生的个人信息表stu_info。
第 4 张表是一张临时的存储学生信息的表格temp_info。这个表格主要是学生注册时用的。学生注册的时候,他所填写的相关信息都会存储在这张表里面。只有当管理员审核通过的时候,这张表的内容才会被copy到学生的个人信息表也就是第二张表。
第 5 张表是学生的成绩表stu_score。
create table admin_login(
account varchar(10) not null primary key,
pwd varchar(8) not null);
create table stu_login(
account varchar(10) not null primary key,
pwd varchar(8) not null);
create table stu_info(
sno varchar(10) not null primary key,
name varchar(10) not null,
pwd varchar(8) not null,
city varchar(10));
create table temp_info(
sno varchar(10) not null primary key,
name varchar(10) not null,
pwd varchar(8) not null,
city varchar(10));
create table stu_score(
sno varchar(10) not null primary key,
score int(8));
创建之后,我们可以通过指令查看一下:
选中数据库之后,用
show tables; 可以查看所有表格
desc +表格名称; 可以查看对应表格的详细信息。
创建好数据库以及表之后,我们就可以来写代码了。
关于代码里面的数据库命令可在常用的数据库命令里面查看
这里写的是学生管理系统stuSystem_1.0版本。主要实现的是管理员的功能。
学生部分的功能将在stuSystem_2.0实现。
- 首先,我们创建一个 head.h 文件来存放相关的头文件信息、相关函数的声明,以及一些结构体变量的定义。这里创建了三个结构体:分别是学生信息结构体,以及管理员和学生用于登陆时候的结构体。
#include "/usr/include/mysql/mysql.h"
//这个是引入mysql.h头文件
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <error.h>
//管理员的姓名及密码
struct admin_account
{
char name[20];
char password[10];
};
//学生的姓名及密码
struct student_account
{
char name[20];
char password[10];
};
//学生的个人信息
struct student_info
{
char sno[10];
char name[20];
char password[10];
char city[20];
int score;
};
//-----管理员的相关函数-----
void admin_ui();
int running_admin_ui();
int admin_login_ui();
int show_student_info();
int show_registrant();
int check_registrant();
void update_score();
//-------------------------
- 创建一个admin_login.c文件,这个文件里面是管理员的相关函数
- 首先是设计登陆界面的函数,这里用了两个函数来完成。
admin_ui()是管理员的功能菜单,running_admin_ui()是管理员的功能选择界面。
#include "head.h"
//管理员成功登陆后的功能界面
void admin_ui(struct admin_account *admin)
{
char buffer[128]={
0};
system("clear");
sprintf(buffer,"hi,%s,welcome to student system\n",admin->name);
printf("%s",buffer);
printf("\t-------admin_ui-------\n");
printf("\t1.show students'information\n\t2.show registrant\n");
printf("\t3.update students'score\n\t4.back\n");
printf("\nenter your choice:");
}
int running_admin_ui(struct admin_account *admin, struct student_info *stu_info, MYSQL *sql)
{
char ch;
admin_ui(admin);
//因为ch是char类型的,所以case '1',这里的1要记得加单引号表示字符
while((ch = getchar()) != '4')
{
if(ch == '\n')
continue;
switch(ch)
{
case '1':
//显示学生信息
show_student_info(sql);
break;
case '2':
//是否要通过注册的学生
check_registrant(sql);
break;
case '3':
//更新学生成绩
update_score(sql,stu_info);
break;
default:
break;