前言

重点参考前辈们写的优秀文章,这里只做一些的补充

准备

1.MySQL安装
参考链接:https://www.cnblogs.com/xiaokang01/p/12092160.html
安装前注意这一步要勾选Documentation,否则找不到include,lib文件夹,当然你之后运行安装软件再添加下图左边方框最下方的 Documentation也可以



2.DEV-C++连接MySQL
参考链接:https://blog.csdn.net/yy64578537/article/details/104372747
值得提一句,如果下载MySQL.DevPak https://sourceforge.net/projects/dev-cpp/files/webupdate/webupdate/
长时间不能响应访问,按照下方操作进行换源。

1.基本函数

官网接口函数说明Mysql For C API Function Descriptions:https://dev.mysql.com/doc/c-api/5.7/en/c-api-functions.html
参考链接: https://blog.csdn.net/Mculover666/article/details/105680319

2.数据库的连接

mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");//这句话很关键,防止在命令行中中文乱码
#include <stdio.h>
#include <mysql.h>
#include <string.h>
int main(){MYSQL mysql;mysql_init(&mysql);mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");//这句话很关键,防止在命令行中中文乱码if(NULL == mysql_real_connect(&mysql,"127.0.0.1","root","password","cesdb",3306,NULL,0)){printf("MySQL connect fail.\n");mysql_close(&mysql);return -1;}
else printf("MySQL connect success!\n");mysql_close(&mysql);
}

3.系统代码实现

//1) 新生入学信息增加,学生信息修改。
//2) 课程信息维护(增加新课程,修改课程信息,删除没有选课的课程信息)。
//3) 录入学生成绩,修改学生成绩。
//4) 按系统计学生的平均成绩、最好成绩、最差成绩、优秀率、不及格人数。
//5) 按系对学生成绩进行排名,同时显示出学生、课程和成绩信息。
//6) 输入学号,显示该学生的基本信息和选课信息。
#include <stdio.h>
#include <mysql.h>
#include <string.h>void insertintostudent(MYSQL &mysql);
void updatestudent(MYSQL &mysql);
void insertintocourse(MYSQL &mysql); void updatecourse(MYSQL &mysql);
void deletefromcourse(MYSQL &mysql);
void insertintosc(MYSQL &mysql);
void updatesc(MYSQL &mysql);
void count(MYSQL &mysql);
void rankingbysdept(MYSQL &mysql);
void selectbysno(MYSQL& mysql);MYSQL_RES* res;MYSQL_ROW row;char sql[150];
int main(){MYSQL mysql;mysql_init(&mysql);mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");if(NULL == mysql_real_connect(&mysql,"127.0.0.1","root","1010990249","cesdb_u201812975",3306,NULL,0)){printf("MySQL connect fail.\n");mysql_close(&mysql);return -1;}
else printf("MySQL connect sucessed!\n");int op=1;while(op){//   char value = 1;
// (void) mysql_init (&mysql);
// mysql_options(&mysql, MYSQL_OPT_RECONNECT, (char *)&value);
// mysql_ping(&mysql);system("cls");  printf("\n\n");printf("      Menu for Linear Table On Sequence Structure \n");printf("-------------------------------------------------\n");printf("       1. Insert into student        2. Update student\n");printf("          3. Insert into course         4. Update course\n");printf("       5. Delete from course          \n");printf("          6. Insert into sc             7. Update sc\n");printf("       8. Count AVG,MAX,MIN,EXCELLENT Rate,BELOW60\n");printf("          9. Ranking by grade\n");printf("          10.Query by sno\n"          );printf("          0. exit\n"          );printf("-------------------------------------------------\n");printf("    请选择你的操作[0~10]:");scanf("%d",&op);switch(op){case 1:{int num;printf("请输入需要增加的人数:");scanf("%d",&num);while(num){insertintostudent(mysql);printf("\n");num--;}system("pause");break;}case 2:{updatestudent(mysql);system("pause");break;}case 3:{int num;printf("请输入需要增加的课程数:");scanf("%d",&num);while(num){insertintocourse(mysql);printf("\n");num--;}system("pause");break;}case 4:{updatecourse(mysql);system("pause");break;}case 5:{deletefromcourse(mysql);system("pause");break;}case 6:{insertintosc(mysql);system("pause");break;}case 7:{updatesc(mysql);system("pause");break;}case 8:{count(mysql);system("pause");break;}case 9:{rankingbysdept(mysql);system("pause");break;}case 10:{selectbysno(mysql);system("pause");break;}} }
mysql_close(&mysql);
}//end of main//student 数据区
char sno[20];char sname[20];char ssex[2];int sage;char sdept[10];char scholarship[10];
//courser 数据区
char cno[4]; char cname[40];char cpno[4];int ccredit;
//sc 数据区
char scsno[20]; char sccno[4]; int grade;//1.insertintostudent
void insertintostudent(MYSQL &mysql){//  char sno[9];char sname[20];char ssex[2];int sage;char sdept[10];char scholarship[]="否";strcpy(scholarship,"否");printf("请输入学生的学号:");scanf("%s",sno);printf("请输入学生的姓名:");scanf("%s",sname);printf("请输入学生的性别:");scanf("%s",ssex);printf("请输入学生的年龄:");scanf("%d",&sage);printf("请输入学生的院系:");scanf("%s",sdept);sprintf(sql,"insert into student values('%s','%s','%s','%d','%s','%s');",sno,sname,ssex,sage,sdept,scholarship);if(!mysql_query(&mysql,sql)){printf("新生信息添加成功!\n"); }else  {printf("新生信息添加失败!"); fprintf(stderr,"%s\n",mysql_error(&mysql)); } }
void updatestudent(MYSQL &mysql){printf("请输入学生的学号:");scanf("%s",sno);sprintf(sql,"select sname from student where sno='%s';",sno);if(mysql_query(&mysql,sql)) {fprintf(stderr,"%s\n",mysql_error(&mysql));return ;}else {res=mysql_use_result(&mysql);if((row=mysql_fetch_row(res))==NULL) {printf("该学号无效!");return ;}}mysql_free_result(res);printf("(1)姓名 (2)性别 (3)年龄 (4)院系 (5)奖学金 (0)退出\n");int select=1;while(select) {printf("请输入选择:");scanf("%d",&select);switch (select){case 1:{printf("请输入学生的姓名:");scanf("%s",sname);sprintf(sql,"update student set sname='%s' where sno='%s';",sname,sno);break;}case 2:{printf("请输入学生的性别:");scanf("%s",ssex);sprintf(sql,"update student set ssex='%s' where sno='%s';",ssex,sno);break;} case 3:{printf("请输入学生的年龄:");scanf("%d",&sage);sprintf(sql,"update student set sage=%d where sno='%s';",sage,sno);break;}case 4:{printf("请输入学生的院系:");scanf("%s",sdept);sprintf(sql,"update student set sdept='%s' where sno='%s';",sdept,sno);break;}case 5:{printf("请输入学生是否获得奖学金(是/否):");scanf("%s",scholarship);sprintf(sql,"update student set sdept='%s' where sno='%s';",scholarship,sno);break;}case 0:{break;}}if(!mysql_query(&mysql,sql)){printf("学生信息修改成功!");}else {printf("学生信息修改失败!");fprintf(stderr,"%s\n",mysql_error(&mysql));system("pause");}
}}void insertintocourse(MYSQL &mysql){printf("请输入课程号:");scanf("%s",cno);printf("请输入课程名:");scanf("%s",cname);printf("请输入先修课程:");scanf("%s",cpno);printf("请输入课程学分:");scanf("%d",&ccredit);sprintf(sql,"insert into course values('%s','%s','%s','%d');",cno,cname,cpno,ccredit);if(!mysql_query(&mysql,sql)){printf("课程信息添加成功!\n"); }else  {printf("课程信息添加失败!\n"); fprintf(stderr,"%s\n",mysql_error(&mysql)); }
}
void updatecourse(MYSQL &mysql){char newcname[40];printf("请输入课程名:\n");scanf("%s",cname);sprintf(sql,"select * from course where cname='%s';",cname);if(mysql_query(&mysql,sql)) {fprintf(stderr,"%s\n",mysql_error(&mysql));return ;}else {res=mysql_use_result(&mysql);if((row=mysql_fetch_row(res))==NULL) {printf("系统中无该课程!");return ;}}mysql_free_result(res);printf("(1)课程号 (2)课程名 (3)先修课 (4)学分 (0)退出\n");int select=1;while(select) {printf("请输入选择:");scanf("%d",&select);switch (select){case 1:{printf("请输入课程号:");scanf("%s",cno);sprintf(sql,"update course set cno='%s' where cname='%s';",cno,cname);break;}case 2:{printf("请输入课程名:");scanf("%s",newcname);sprintf(sql,"update course set cname='%s' where cname='%s';",newcname,cname);break;} case 3:{printf("请输入先修课程:");scanf("%d",&cpno);sprintf(sql,"update course set sage='%s' where cname='%s';",cpno,cname);break;}case 4:{printf("请输入学分:");scanf("%d",&ccredit);sprintf(sql,"update course set ccredit= %d where cname='%s';",ccredit,cname);break;}case 0:{return ;}}if(!mysql_query(&mysql,sql)){printf("课程信息修改成功!\n");}else {printf("课程信息修改失败!\n");fprintf(stderr,"%s\n",mysql_error(&mysql));}
}}void deletefromcourse(MYSQL &mysql){strcpy(sql,"delete from course where cno not in(select cno from sc);");if(!mysql_query(&mysql,sql)){printf("课程信息删除成功!\n");}else {printf("课程信息删除失败!\n");fprintf(stderr,"%s\n",mysql_error(&mysql));}
}void insertintosc(MYSQL &mysql){printf("请输入学号:");scanf("%s",scsno);printf("请输入课程号:");scanf("%s",sccno);printf("请输入成绩:");scanf("%d",&grade);sprintf(sql,"insert into sc values('%s','%s',%d);",scsno,sccno,grade);if(!mysql_query(&mysql,sql)){printf("成绩录入成功!\n"); }else   {printf("成绩录入失败!"); fprintf(stderr,"%s\n",mysql_error(&mysql)); } }
void updatesc(MYSQL &mysql){printf("请输入学号和课程号:");scanf("%s %s",scsno,sccno);sprintf(sql,"select * from sc where sno='%s' and cno='%s';",scsno,sccno);if(mysql_query(&mysql,sql)) {fprintf(stderr,"%s\n",mysql_error(&mysql));return ;}else {res=mysql_use_result(&mysql);if((row=mysql_fetch_row(res))==NULL) {printf("系统中无该学号和课程对应的成绩!");return ;}}mysql_free_result(res);printf("请输入更改后的成绩:");scanf("%d",&grade);sprintf(sql,"update sc set grade=%d where sno='%s' and cno='%s';",grade,scsno,sccno);if(!mysql_query(&mysql,sql)){printf("成绩更新成功!\n"); }else  {printf("成绩更新失败!\n"); fprintf(stderr,"%s\n",mysql_error(&mysql)); }
}
//统计
void count(MYSQL &mysql){//略}void rankingbysdept(MYSQL &mysql){strcpy(sql,"select DISTINCT Sdept from student,sc where student.sno=sc.sno;");if(mysql_query(&mysql,sql)){fprintf(stderr,"%s\n",mysql_error(&mysql)); return ;} MYSQL_RES *res1;MYSQL_ROW row1;res1=mysql_store_result(&mysql);char a[4][9];int i=0;while((row1=mysql_fetch_row(res1))!=NULL){strcpy(a[i],row1[0]);i++;}while(i){i--;sprintf(sql,"select student.sno,student.sdept,cno,grade from sc,student where sdept='%s' order by grade desc",a[i]);if(mysql_query(&mysql,sql)){fprintf(stderr,"%s\n",mysql_error(&mysql)); return ;}MYSQL_RES *res2=mysql_store_result(&mysql);MYSQL_ROW row2;while((row2=mysql_fetch_row(res2))!=NULL){printf("%10s %5s %5s %5s\n",row2[0],row2[1],row2[2],row2[3]);
}
mysql_free_result(res2);}
mysql_free_result(res1);
}void selectbysno(MYSQL& mysql){printf("请输入学号:");scanf("%s",sno);sprintf(sql,"select distinct student.*,cno from student,sc where student.sno=sc.sno and student.sno='%s'",sno);if(mysql_query(&mysql,sql)){fprintf(stderr,"%s\n",mysql_error(&mysql)); return ;}res=mysql_store_result(&mysql);while((row=mysql_fetch_row(res))!=NULL){printf("%s %10s %10s %s %s %s %s\n",row[0],row[1],row[2],row[3],row[4],row[5],row[6]);
}mysql_free_result(res);
}

Mysql写学生信息成绩管理系统(C语言)相关推荐

  1. 基于python和MySQL数据库开发应用程序:学生信息成绩管理系统1.0版本

    目录: 前言 一,需求分析 二,前期准备 三,编写代码 1.app.py 2.__init__.py 3.models.py 四,功能描述 1.界面展示 2.系统流程图介绍 3.功能介绍 系统优缺点 ...

  2. IDEA兼容Eclipse编写的学生信息成绩管理系统

    WEB版本的学生信息管理系统 1.1 课程设计目的与意义 通过项目驱动的学习和综合实训,熟练掌握运用Java语言进行桌面应用程序开发的基本知识和技能.熟练掌握Java的基本语法与JDBC数据库技术的应 ...

  3. 基于SSM+Bootstrap+MySQL的高校学生信息成绩管理系统

    项目运行截图 用户添加 用户登录 登录首页 考试发布 考试信息 考试添加 成绩导入 成绩单 班级管理 班级管理 添加学生 添加用户 学生列表 考试发布 一.用户模块 提供管理员.教师两种角色的登录 提 ...

  4. c语言实验报告管理系统,C语言实验报告-学生信息资管理系统.doc

    C语言实验报告-学生信息资管理系统 C语言实验报告 院系: 数学与计算科学学院 班级: 信息与计算科学2班 姓名: 学号: 2011年12月21日 一.问题描述 编写一个信息管理系统,包括姓名.性别. ...

  5. 利用mysql做信息管理_利用MySql实现学生信息管理系统的后台数据管理

    Vol.28No.4 Apr.2012 赤峰学院学报(自然科学版)Journal of Chifeng University (Natural Science Edition )第28卷第4期(下) ...

  6. 按平均成绩排行c语言文件操作,学生成绩管理系统(c语言结构体以及文件操作)实验报告精选.doc...

    学生成绩管理系统(c语言结构体以及文件操作)实验报告精选 C程序设计 实验报告 编号: 姓名院系学号任课教师于萧指导教师实验地点实验时间实验名称文件操作同 组 人无预习报告(对实验主要内容的认识)得分 ...

  7. 用C语言学生成绩数据库排序功能设计,[c语言学生成绩管理系统]C语言学生成绩管理系统实验报告...

    篇一 : C语言学生成绩管理系统实验报告 实 验 四:结构体(6学时) 实验目的: 1.更加灵活的使用数组作为函数参数: 2.初步掌握开发一个小型实用系统的基本方法: 3.初步掌握书写程序设计开发文档 ...

  8. 用c语言编写图书成绩管理系统,学生成绩管理系统(c语言编写).doc

    学生成绩管理系统(c语言编写) C程序 学生管理系统 /* Note:Your choice is C IDE */ #include "stdio.h" #include&quo ...

  9. 更新学生的成绩C语言,学生成绩管理系统C语言代码实现.pdf

    学生成绩管理系统C语言代码实现 这篇文章主要为大家详细介绍了C语言代码实现学生成绩管理系统,文中示 代码介绍的非常详细,具有一定的参 考价值,感兴趣的小伙伴们可以参考一下 C语言实现了学生成绩管理系统 ...

最新文章

  1. 沃通免费SSL证书申请指南
  2. Confluence 6 服务器硬件要求指南
  3. APK在AndroidManifest.xml常用权限总结
  4. php 正则表达式 取所有内容,php正则表达式获取内容所有链接
  5. 四则运算关于加括号的思路
  6. springmvc跨域问题
  7. Canvas的基本用法
  8. 3.深入分布式缓存:从原理到实践 --- 动手写缓存
  9. Python 程序设计方法
  10. 破解版果冻手机动画主题for WM5 WM6
  11. mysql中根据经纬度求距离_mysql、java中根据经纬度计算距离
  12. enym在此计算机运行是灰色,Win10重建引导记录mbr为灰色
  13. RabbitMQ(五) | MQ集群搭建、部署、仲裁队列、集群扩容
  14. BPMS的市场与产品
  15. 如何去掉CSDN中图片的水印
  16. OpenGL多重纹理使用与理解
  17. 用U盘制作PE启动盘安装Windows10系统
  18. 《娱乐至死》读书笔记(part1)--深入一种文化的最有效途径是了解这种文化中用于会话的工具
  19. 星敏感器 matlab,星敏感器姿态确定仿真综合实验.docx
  20. python智能写小说软件_Scratch编程实现智能自动创作写小说,自动生成文章,自动写材料...

热门文章

  1. 【Usaco DEC08 bronze】劣质的草
  2. 国际财务报告准则(IFRS)
  3. 电子印章助力建筑行业合同传、审、签、存一体化、数字化
  4. 为什么中国出不了Facebook和Twitter?
  5. 如何结束Explorer.exe进程
  6. element vue 点击一边拖拽改变宽度 解决拖动会选中文字的问题
  7. vscode 批量重命名_vscode配置 打造性感好用的编辑器
  8. 安装 Zend Studio 报错:0x80070666
  9. 图片无损放大的方法详细介绍
  10. 故障处理 软件 需求_「行业知识」地铁车辆故障智能处理分析