📄 login.pc
字号:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sqlca.h>
#include <conio.h>
#include <process.h>
void connMenu();
void connect(char* user,char* pw,char* dblink);
int error();
void pro_login();
int query_pro_exist();
void pro_Menu();
void login_menu();
int query_proID_unique(char* tID);
void pro_register();
int insert_into_proPower();
extern void pro_meg_modify_menu();
extern void release_supply();
extern void part_add_request();
extern void sign_bussiness();
char Pro_ID[10]; /*供应商登陆用户名*/
char Pro_Password[10]; /*登陆密码*/
main()
{
connMenu();
login_menu();
pro_Menu();
}/*main()*/
void connMenu()
{
char temp;
char username[20];
char password[20];
char dblinkname[20];
printf("正在启动供应商客户端......\n\n\n");
printf("\t\t---请选择连接方式---\n\n");
printf("\t\t 1. 默认方式\n");
printf("\t\t 2. 手动连接\n");
printf("\t\t ...任意键退出\n\n");
printf("请选择连接方式(1 or 2 ,quit with any other key):");
temp=getchar();
fflush(stdin);
switch(temp) {
case '1':
connect("system","manager","willim");
break;
/*默认*/
case '2':
printf("输入连接用户名:");
gets(username);
printf("输入连接口令:");
gets(password);
printf("输入连接字符串:");
gets(dblinkname);
connect(username,password,dblinkname);
break;
/*手动*/
case '0': exit(1); /*退出*/
default : printf("Exit the system!\n");exit(1);/*退出系统*/
}/*switch*/
}/*connectMenu()*/
void connect(char* user,char* pw,char* dblink)
{
EXEC SQL BEGIN DECLARE SECTION;
char username[20];
char password[20];
char dblinkname[20];
EXEC SQL END DECLARE SECTION;
strcpy(username,user);
strcpy(password,pw);
strcpy(dblinkname,dblink);
EXEC SQL WHENEVER SQLERROR DO error(); /*错误处理*/
EXEC SQL CONNECT :username IDENTIFIED BY :password USING :dblinkname;
printf("\nConnected to ORACLE as user:%s\n",username);
printf("你已成功链接供应商客户端\n");
}/*Conn()*/
int error()
{
printf("发生了一些错误,sorry,还没完成错误处理功能!");
EXEC SQL WHENEVER SQLERROR CONTINUE;
printf("\nORACLE error detected:\n");
printf("\n%.70s\n",sqlca.sqlerrm.sqlerrmc);
EXEC SQL ROLLBACK; /*RELEASE; */
return 1;
connMenu();
return 0;
}/*error()*/
void pro_Menu()
{
char temp;
fflush(stdin);
/*clrscr(void); */
system("cls");
puts("\n\n供应商客户端\n\n");
puts("\n\n\t\t\t主功能菜单\n\n");
printf("\t1.个人信息维护\n");
printf("\t2.发布供应信息\n");
printf("\t3.申请添加零件\n");
printf("\t4.签订交易\n");
printf("\t....任意键退出\n\n");
do {
printf("请选择(1 - 4 ,quit with any other key):");
temp=getchar();
fflush(stdin);
}while(temp==1||temp==2||temp==3||temp==4);
switch(temp) {
case '1':
pro_meg_modify_menu();break;
case '2':
release_supply();break;
case '3':
part_add_request();break;
case '4':
sign_bussiness();break;
}
}/*pro_Menu()*/
void pro_login()
{
int more = 0;
printf("\n登陆供应商客户端提示:\n");
while(1){
++more;
printf("\n请输入用户名:");
scanf("%s",Pro_ID);
printf("\n请输入密码:");
scanf("%s",Pro_Password);
if( !query_pro_exist() ){
/*printf("(pro_login)%s,%s\n",Pro_ID,Pro_Password); */
printf("成功登陆.\n"); break;
}else{
if( more >= 3 ){
printf("您输入的用户名或密码不正确,不能使用本系统!再见!\n");
exit( -1 );
}else{
printf("您输入的用户名或密码有误,请重新输入!\n");
}/*else*/
}/*else*/
}/*while*/
}/*pro_login()*/
int query_pro_exist()
{
EXEC SQL BEGIN DECLARE SECTION;
char ProID[10];
char ProPW[10];
/* EXEC SQL VAR ProID IS STRING(9);
EXEC SQL VAR ProPW IS STRING(9);*/
EXEC SQL END DECLARE SECTION;
int total_number=0;
strcpy(ProID,Pro_ID);
strcpy(ProPW,Pro_Password);
EXEC SQL DECLARE query_pro_exist_cursor CURSOR FOR SELECT * FROM Pro_Power;/* WHERE ltrim(rtrim(Pro_ID))=:ProID AND ltrim(rtrim(Pro_Password))=:ProPW;*/
EXEC SQL OPEN query_pro_exist_cursor;
while(1)
{
EXEC SQL WHENEVER NOT FOUND DO break;
EXEC SQL FETCH query_pro_exist_cursor INTO :ProID,:ProPW;
/*printf("%s%s\n",ProID,ProPW);*/
if( strstr(ProID,Pro_ID) && strstr(ProPW,Pro_Password)) /*存在着巨大的风险*/
++total_number;
}
printf("%d",total_number);
if( total_number )
return 0;
else return -1;
}/*query_pro_exist()*/
void login_menu()
{
char temp;
system("cls");
fflush(stdin);
puts("\n\n供应商客户端\n\n");
printf("\n\n\n\t\t---请选择---\n\n");
printf("\t\t 1. 登陆\n");
printf("\t\t 2. 新用户注册\n");
printf("\t\t ...任意键退出\n\n");
printf("请选择(1 or 2 ,quit with any other key):");
temp=getchar();
fflush(stdin);
switch(temp) {
case '1':
pro_login();
break;
case '2':
pro_register();
break;
case '0': exit(1); /*退出*/
default : printf("Exit the system!\n");exit(1);/*退出系统*/
}/*switch*/
}/*connectMenu()*/
void pro_register()
{
printf("\n\n新用户注册提示:\n");
while(1){
printf("\n请输入用户名:");
scanf("%s",Pro_ID);
if( !query_proID_unique(Pro_ID) ){
printf("\n请输入密码:");
scanf("%s",Pro_Password);
/*printf("(pro_register)%s,%s\n",Pro_ID,Pro_Password);*/
if( !insert_into_proPower() ){
printf("注册成功\n");
break;
}else{
printf("ERROR:(pro_register())");
}/*else*/
}else{
printf("%s此用户名已存在,请选择另外的用户名!\n",Pro_ID);
}/*else*/
}/*while*/
login_menu();
}/*pro_register()*/
int insert_into_proPower()
{
EXEC SQL BEGIN DECLARE SECTION;
char ProID[10];
char ProPW[10];
EXEC SQL END DECLARE SECTION;
strcpy(ProID,Pro_ID);
strcpy(ProPW,Pro_Password);
EXEC SQL WHENEVER SQLERROR GOTO error;
EXEC SQL INSERT INTO Pro_Power
VALUES(:ProID,:ProPW);
EXEC SQL COMMIT;
return 0;
error:
printf("%70s\n",sqlca.sqlerrm.sqlerrmc);
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL ROLLBACK;
return -1;
}/*insert_into_proPower()*/
int query_proID_unique(char* tID)
{
EXEC SQL BEGIN DECLARE SECTION;
char seekID[10];
char temp[10];
EXEC SQL END DECLARE SECTION;
int total_number=0;
strcpy(seekID,tID);
/* EXEC SQL WHENEVER NOT FOUND GOTO notfound;*/
EXEC SQL DECLARE pro_proID_cursor CURSOR FOR SELECT ID FROM Provider WHERE ID=:seekID ;
EXEC SQL OPEN pro_proID_cursor;
while(1)
{
EXEC SQL WHENEVER NOT FOUND DO break;
EXEC SQL FETCH pro_proID_cursor INTO :temp;
++total_number;
}
if( total_number )
return 1;
else return 0;
/* notfound:
printf("WARING(query_proID_unique)%s does not exist!",seekID);
return 0;*/
}/*query_cusID_unique(...)*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -