#include #include#include#include#include
//#define MAX_PASSWD_LEN 16
void printf_mune(void);char *getPasswd(void);int insert_student(void);int delete_student(void);int inquiry_student(void);int main(int argc,char**argv)
{char user[20];char passwd[20];charc;inti;
printf("***********************************************************\n");
printf("* welcome to student information managent system *\n");
printf("***********************************************************\n");//printf(" user: ______________\b\b\b\b\b\b\b\b\n");//printf(" psaawd:______\b\b\b\b\b\b\n");
while(1){
printf("user:");
scanf("%s", user);
printf("passwd:");
scanf("%s",passwd);/*while ((c=getch())!='\n')
{
if (i
{
passwd[i++] = c;
putchar('*');
}
else if (i>0 && c=='\b')
{
--i;
putchar('\b');
putchar(' ');
putchar('\b');
}
}
putchar('\n');
passwd[i] = '\0';*/
if(!strncmp(user, "qigaohua", 8)){if(!strncmp(passwd, "123456", 6))break;else{
printf("passwd error\n");continue;
}
}else{
printf("user error\n");continue;
}
}
printf("login sucess\n");while(1){
printf_mune();
getchar();//问题1 必须加
c =fgetc(stdin);switch(c){case 'I':
insert_student();break;case 'D':
delete_student();break;case 'S':
inquiry_student();break;case 'Q':return 0;break;default:
;
}
}
printf("exit sucess\n");return 0;
}/*getc()和getchar()函数想必大家都经常用到,但它们都在输入的同时显示输入内容,并由回车终止输入。
为了不显示输入内容,我们调用另外一个函数getch(),它包含在头文件中。该函数可以在输入的同时不显示
输入内容,并在输入完成后不需回车而自动终止输入。与此同时,该头文件中还包含另外一个函数getche(),
它和getch()功能相同,唯一的区别是输入的同时显示输入的内容。本文我们只用到getch();*/
/*char *getPasswd()
{
unsigned char c;
passwd =(char*)malloc(8);
int i = 0;
while ((c=getch())!='\r')
{
if (i
{
passwd[i++] = c;
putchar('*');
}
else if (i>0 && c=='\b')
{
--i;
putchar('\b');
putchar(' ');
putchar('\b');
}
}
putchar('\n');
passwd[i] = '\0';
return passwd;
}*/
void printf_mune(void)
{
printf("The following operations can be performed\n");
printf("1. insert student information input I\n");
printf("2. delete student information input D\n");
printf("3. inquiry student information input S\n");
printf("4. exit student information managent system input Q\n");
}int insert_student(void)
{
MYSQL mysql;char sql[100];chark;char id[10], name[20], sex[5],birth[15],potility[20];
mysql_init(&mysql);if(!mysql_real_connect(&mysql, "localhost", "root",NULL,"school_db",0,NULL,0)){
printf("ERROR: %d--%s\n", mysql_errno(&mysql), mysql_error(&mysql));
exit(-1);
}
mysql_set_character_set(&mysql, "utf8");while(1) {
printf("please input student information\n");
printf("student_id:");
fflush(stdin);
scanf("%s",id);//fgets(id, 10, stdin);
printf("\nname:");
scanf("%s",name);//fgets(name, 20, stdin);
printf("\nsex:");
scanf("%s",sex);
printf("\nbirth:");
scanf("%s",birth);//fgets(birth, 15, stdin);
printf("\npolitily:");
scanf("%s",potility);//fgets(potility, 20, stdin);
printf("\nplease input y or n or q\n");//read(stdin, k, 1);
getchar(); //注意要加
k =fgetc(stdin);if(k == 'n')continue;else if(k == 'q')break;else if(k == 'y'){
sprintf(sql,"insert into students values (\"%s\", \"%s\", \"%s\", \"%s\", \"%s\");", id, name,sex, birth, potility);
printf("\n%s",sql);if(mysql_query(&mysql, sql)){
printf("\ninsert failed: %d--%s\n", mysql_errno(&mysql), mysql_error(&mysql));continue;
}
printf("\ninsert sucess\n");
printf("you want exit? input q\n");
getchar();
k=fgetc(stdin);if(k == 'q')break;
}
}
mysql_close(&mysql);return 0;
}int delete_student(void)
{
MYSQL mysql;char sql[100];char id[10], name[20];chark;
mysql_init(&mysql);if(!mysql_real_connect(&mysql, "localhost", "root",NULL,"school_db",0,NULL,0)){
printf("ERROR: %d--%s\n", mysql_errno(&mysql), mysql_error(&mysql));
exit(-1);
}
mysql_set_character_set(&mysql, "utf8");while(1){
printf("please input you want delete student id or name, selset i or n or q\n");
getchar();//注意
k =fgetc(stdin);if(k == 'i') {
printf("student id:");
scanf("%s",id);//fgets(id, 10, stdin);
sprintf(sql, "delete from students where student_id=\"%s\";", id);
}else if(k == 'n'){
printf("\nstudent name:");
scanf("%s",name);//fgets(name, 20, stdin);
sprintf(sql, "delete from students where name=\"%s\";", name);
}else if(k == 'q')break;
printf("\nyou are sure? y or n or q\n");
getchar();
k=fgetc(stdin);if(k == 'n')continue;else if(k == 'y'){if(mysql_query(&mysql, sql)){
printf("delete failed: %d--%s\n", mysql_errno(&mysql), mysql_error(&mysql));continue;
}
printf("delete sucess\n");
}else if(k == 'q')break;
}
mysql_close(&mysql);return 0;
}int inquiry_student(void)
{
MYSQL mysql;
MYSQL_RES*res;
MYSQL_ROW row;
MYSQL_FIELD*filed;char sql[100];char id[10], name[20];chark;intcolumn,i;
my_ulonglong backrows;
mysql_init(&mysql);if(!mysql_real_connect(&mysql, "localhost", "root",NULL,"school_db",0,NULL,0)){
printf("ERROR: %d--%s\n", mysql_errno(&mysql), mysql_error(&mysql));
exit(-1);
}
mysql_set_character_set(&mysql, "utf8");while(1){
printf("please input you want inquiry student id or name, selset i or n or q\n");
getchar();//标记
k =fgetc(stdin);if(k == 'i') {
printf("student id:");
scanf("%s", id);//fgets(id, 10, stdin);
sprintf(sql, "select * from students where student_id=\"%s\";", id);
printf("sql request:%s\n", sql);
}else if(k == 'n') {
printf("\nstudent name:");
scanf("%s", name);//fgets(name, 20, stdin);
sprintf(sql, "select * from students where name=\"%s\";", name);
printf("sql request:%s\n", sql);
}else if(k == 'q')break;
printf("\nyou are sure? y or n or q\n");
getchar();
k=fgetc(stdin);if(k == 'n')continue;else if(k == 'y'){if(mysql_query(&mysql, sql)){
printf("delete failed: %d--%s\n", mysql_errno(&mysql), mysql_error(&mysql));continue;
}
res= mysql_store_result(&mysql); //首先判断res是否为NULL来判断是否有数据,但是失败了,不知道为什么,最后用了下面函数
backrows = mysql_num_rows(res);//返回上面函数返回结果的行数
if(backrows != 0){
column=mysql_num_fields(res);while((row =mysql_fetch_row(res))){
i= 0;while((filed = mysql_fetch_field(res)) != NULL && (i
printf("%s:", filed->name);
printf("%s", row[i++]);
printf("\n");
}
printf("\n");
}
}else{
printf("no data found\n");continue;
}
printf("inquiry sucess\n");
}else if(k == 'q')break;
}
mysql_close(&mysql);return 0;
}