linux——使用数据库接口完成学生管理系统(1)

本文介绍了在Linux系统中如何使用C语言和MySQL数据库构建学生管理系统。首先,详细阐述了安装MySQL服务器和客户端的过程,以及为何需要二者。接着,讲解了如何创建数据库和表,并提供了创建数据库及表的SQL语句。随后,提到了代码实现中涉及的数据库接口函数,如用于执行SQL查询、读取数据等。最后,概述了管理员功能的实现,包括查看学生信息、审核注册、更新成绩和登录验证等操作。
摘要由CSDN通过智能技术生成

首先,在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)


在编写代码之前,我们要在后台先创建好我们的数据库和表,这一步我们可以通过数据库的操作语句来完成。

  1. 链接服务器
mysql -u root -p123456

说明:-u后面输入自己的用户名,-p后面输入该用户名对应的密码。按下回车键,就可以进入交互界面了。(进入交互界面之后,每一条指令后面都要加上分号)

  1. 显示数据库
show databases;

在这里插入图片描述

  1. 创建一个新的数据库
create database stuSystem;

创建了一个名为stuSystem的数据库

  1. 创建表
  • 首先,选中数据库。之后我们创建的表都是属于这个数据库的。
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实现。

  1. 首先,我们创建一个 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();
//-------------------------
  1. 创建一个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;
               
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值