目录
系统功能要求
相关软件要求
设计思路
程序功能图
功能流程图
C程序的编写运行
程序运行效果
总结与分析
附录(C程序代码)
1、用户需要用户名和密码登录才能对通讯录进行各种操作
2、用户登录后可修改自己的密码
3、用户登录后可以对个人通讯录进行增、删、改、查的功能
4、不能对别的用户的通讯录进行任何操作
设计过程
MySQL的配置编写
MySQL的安装从网上下载MySQL5.6离线安装包进行安装,具体安装可以参考
下载MySQL图形化界面MySQL workbench
创建连接连接,进入数据库,创建university数据库,建立一个信息表
create database university; #新建数据库university
create table tongxun(
user char(10),
password char(10),
name char(10),
sex char(10),
phone char(10),
email char(10)
)
Tongxun表的属性(用户,用户密码,联系人姓名,联系人性别,联系人电话,联系人邮箱)
将部分信息先插入tongxun表中
C程序连接MySQL数据库语句
sql = mysql_init(NULL);
sql = mysql_real_connect(sql,"localhost","root","123456dyy","university",0,NULL,0);
C语言执行mysql查询语句
C语言执行mysql插入语句
C语言执行mysql删除语句
C语言执行mysql更改语句
使用gcc 对程序进行编译
使用./运行程序
如果输入错误密码将会给出提示并跳出程序
输入正确密码将会进入操作界面
选择1将会修改用户登录密码
选择2会查询当前登录的用户的联系人信息
选择3会删除该用户的某个联系人的信息,只要输入联系人姓名即可
选择4将会为该用户添加新的联系人
选择5可以为该用户修改某个联系人的某个数据
我也学会了怎么在Linux系统下安装和使用MySQL数据库,以及C程序连接MySQL数据库的方式。本次实验对我来说,耗时最久的并不是程序的编写,反而是Linux环境下的mysql数据库的安装和使用,我在网上找了很多如何去安装MySQL数据库教程,但基本上都失败了。
在程序的编写过程中,难度较高的是如何使用MySQL语句,因为像插入和删除等操作是需要对sql语句进行修改的,一开始我尝试了+的方式,但是这种方式只适合C#和Java这些语言,C语言并不能使用这种方式。后来我在书上找到了新的方法,就是使用sprintf()语句,用%s的方式去改变mysql语句。对于数据库表格的创建我一开始打算使用多表结合的方式,但这样每个用户需要一张表,如果用户过多需要的表格数量就太大了,所有最终我使用了一张数据库表格的方式,这种方式的严谨性较低,但复杂度低。
#include "stdio.h"
#include "mysql.h"
#include "unistd.h"
MYSQL_RES *result;
MYSQL_ROW row;
MYSQL *sql;
char a[10]/*,b[10]*/; //username password
char *b;
char qs[100];
void psw(){
char psw[10];
// char qs[100];
printf("please input your new password\n");
scanf("%s",psw);
//char select_query[] = "update tongxun set password='123' where name='zk'";
sprintf(qs,"update tongxun set password='%s' where user='%s'",psw,a);
if (mysql_query(sql, qs) != 0) {
fprintf(stderr, "修改失败!\n");
exit(1);
}else{
printf("password update success\n");
}
}
void upd(){
char n[10], kind[10],value[10];
printf("please input your address list name\n");
scanf("%s",n);
printf("please input your need to update message's kind(name/sex/phone/email) and value\n");
scanf("%s %s",kind,value);
sprintf(qs,"update tongxun set %s='%s' where user='%s' and name='%s'",kind,value,a,n);
if (mysql_query(sql, qs) != 0) {
fprintf(stderr, "修改失败!\n");
exit(1);
}else{
printf("password update success\n");
}
}
void del(){
char n[10];
printf("please input your message need to be deleted(need the name)\n ");
scanf("%s",n);
sprintf(qs,"delete from tongxun where name='%s' and user='%s'",n,a);
if(mysql_query(sql, qs) != 0){
fprintf(stderr, "修改失败!\n");
exit(1);
}else{
printf("修改成功\n");
}
}
void req(){
sprintf(qs,"select *from tongxun where user='%s'",a);
// char myque[] = "select *from message";
if (mysql_query(sql, qs) != 0) {
fprintf(stderr, "查询失败!\n");
exit(1);
}else{
if ((result = mysql_store_result(sql)) == NULL) {
fprintf(stderr, "保存结果集失败!\n");
exit(1);
}else{
printf("\nname\tsex\tphone\temail\n\n");
while ((row = mysql_fetch_row(result)) != NULL){
printf("%s\t%s\t%s\t%s\n",row[2],row[3],row[4],row[5]);
}
}
}
}
void add(){
char n[10],s[10],p[10],e[10];
printf("please input your need new message about address list(name sex phone email)\n");
scanf("%s %s %s %s",n,s,p,e);
// printf("%s %s %s %s\n",n,s,p,e);
sprintf(qs,"insert into tongxun(user,password,name,sex,phone,email) values('%s','%s','%s','%s','%s','%s')",a,b,n,s,p,e);
if(mysql_query(sql,qs) != 0){
fprintf(stderr,"添加失败\n");
exit(1);
}else{
printf("添加成功\n");
}
}
void interface(){
int o = 1,k;
while(o){
printf("please choose your command\n");
printf("1.change your password\n");
printf("2.request your address list message\n");
printf("3.delete your address list message\n");
printf("4.add your address list message\n");
printf("5.change your address list message\n");
printf("please choose: ");
scanf("%d",&k);
switch(k){
case 1:psw(); break;
case 2:req(); break;
case 3:del(); break;
case 4:add(); break;
case 5:upd(); break;
case 0: o = 0; break;
}
system("clear");
if(o!=0){printf("\n");system("pause");}
}
}
int main()
{
sql = mysql_init(NULL);
sql = mysql_real_connect(sql,"localhost","root","123456dyy","university",0,NULL,0);
if(sql)
{
printf("connect mysql success\n");
// char a[10],b[10];
printf("please print yourname\n");
scanf("%s",a);
// printf("please print yourpwd\n");
// scanf("%s",b);
b = getpass("please print yourpwd\n");
// printf("%s %s\n",a,b);
char select_query[] = "select * from tongxun";
// printf("SQL语句: %s\n", select_query);
if (mysql_query(sql, select_query) != 0) {
fprintf(stderr, "查询失败!\n");
exit(1);
}else{
if ((result = mysql_store_result(sql)) == NULL) {
fprintf(stderr, "保存结果集失败!\n");
exit(1);
}
else {
while ((row = mysql_fetch_row(result)) != NULL){
// printf("name is %s , ", row[0]);
// printf("password is %s\n", row[1]);
if(strcmp(a,row[0])==0 && strcmp(b,row[1])==0){
printf("register success\n");
interface();
exit(1);
}
}
printf("yourname or password is mistake\n");
}
}
}
else printf("mistake\n");
return 0;
}
一起学习,一起进步 -.- ,如有错误,可以发评论