?? main.cpp
字號:
#include "menu.h"
#import "msado15.dll" no_namespace rename("EOF","EndOfFile")
/*主菜單函數的聲明*/
void Menu(sys *all);
/*子菜單函數的聲明*/
void Menu1(sys *all);
char db[2][200];//連接到數據庫,\",\'
char a_txt[4][10]={{"退出程序"},{"ACCESS"},{"SQL"}};
void Menu2(sys *all);
char b_txt[15][10]={{"返回"},{"學生"},{"教師"},{"課程"},{"專業"},
{"院系"},{"班級"},{"教學計劃"},{"入學報到"},{"選修"},
{"講授"},{"參加活動"},{"登記"},{"學校活動"},{"寢室"}};
char row_num[15][13][15]={
{{""}},
{{"STUDENT"},{"SNO"},{"SN"},{"S_SEX"},{"S_BIRTHDAY"},{"S_DATE"},
{"S_SCHOOL"},{"S_GRADE"},{"S_PHONE"},{"S_ADDRESS"},{"SP_NO"},{"CNO"},{"CH_NO"}},
{{"TEACHER"},{"TNO"},{"TN"},{"T_SEX"},{"T_PROF"},{"T_BIRTHDAY"},{"T_DATE"},{"T_SALARY"},{"DNO"}},
{{"COURSE"},{"CO_NO"},{"CO_N"},{"CO_T_TIME"},{"CO_E_TIME"},{"CO_S"},{"CO_BOOK"},{"DNO"}},
{{"SPECIALITY"},{"SP_NO"},{"SP_N"},{"SP_DATE"},{"SP_NUM"},{"DNO"}},
{{"DEPARTMENT"},{"DNO"},{"DN"},{"D_DATE"},{"D_HEAD"},{"D_ADDRESS"},{"D_PHONE"}},
{{"CLASS"},{"CNO"},{"CN"},{"C_DATE"},{"C_CLASSROOM"},{"C_NUM"},{"TNO"},{"DNO"}},
{{"PROJECT"},{"SP_NO"},{"CO_NO"},{"CLASS"}},
{{"REGISTER"},{"RNO"},{"DNO"},{"R_COST"}},
{{"SC"},{"SNO"},{"CO_NO"},{"SC_CLASS"},{"SC_GRADE"},{"TNO"},{"SC_DATE"}},
{{"TC"},{"TNO"},{"CO_NO"},{"TC_T_DATETIME"},{"TC_T_ADDRESS"},{"TC_E_DATETIME"},{"TC_E_ADDRESS"}},
{{"JOINACTIVITY"},{"ANO"},{"J_GRADE"},{"J_OTHER"},{"SNO"}},
{{"LOGON"},{"RNO"},{"SNO"},{"L_DATE"}},
{{"ACTIVITY"},{"ANO"},{"AN"},{"A_DATE"}},
{{"CHAMBER"},{"CH_NO"},{"CH_ADDRESS"},{"CH_NUM"}},
};
char row_txt[15][13][15]={
{{""}},
{{"學生表"},{"學號"},{"姓名"},{"性別"},{"出生日期"},{"入校日期"},
{"畢業中學"},{"高考成績"},{"聯系方式"},{"住址"},{"專業號"},{"班號"},{"寢室號"}},
{{"教師表"},{"教師號"},{"姓名"},{"性別"},{"職稱"},{"出生日期"},{"工作年月"},{"基本工資"},{"院系號"}},
{{"課程表"},{"課程號"},{"課程名"},{"講課學時"},{"實驗學時"},{"學分"},{"選用教材"},{"開課院系號"}},
{{"專業表"},{"專業編號"},{"專業名"},{"創辦年份"},{"學生規模"},{"院系名"}},
{{"院系表"},{"系編號"},{"系名"},{"成立年月"},{"系主任"},{"系辦公室地點"},{"電話"}},
{{"班級表"},{"班號"},{"班級名稱"},{"創建年月"},{"自修教室"},{"人數"},{"班主任教師號"},{"院系號"}},
{{"教學計劃表"},{"專業編號"},{"課程號"},{"課程屬性"}},
{{"入學報到表"},{"編號(學期)"},{"系號"},{"學費"}},
{{"選修表"},{"學號"},{"課程號"},{"考試類別"},{"考試成績"},{"教師號"},{"選修年月"}},
{{"講授表"},{"教師號"},{"課程號"},{"授課時間"},{"授課地點"},{"實驗時間"},{"實驗地點"}},
{{"參加活動表"},{"編號"},{"成績"},{"獲獎情況"},{"學號"}},
{{"登記表"},{"編號(學期)"},{"學號"},{"入校時間"}},
{{"活動表"},{"編號"},{"活動名稱"},{"舉行時間"}},
{{"寢室表"},{"寢室號"},{"寢室地址"},{"人數"}},
};
void Menu3(sys *all);
char c_txt[15][10]={{"返回"},{"學生"},{"教師"},{"課程"},{"專業"},{"院系"},{"班級"},{"教學計劃"},
{"入學報到"},{"選修"},{"講授"},{"參加活動"},{"登記"},{"學校活動"},{"寢室"}};
void Menu4(sys *all);
char d_txt[8][10]={{"返回"},{"學生"},{"教師"},{"課程"},{"院系"},{"班級"},{"參加活動"},{"新生報到"}};
TRANSA action[MAXSIZE]; //全局變量保存事件信息
int actnum=1; //保存事件數目
int registtime; //保存注冊時間單位(分)
/*執行SQL命令系列函數*/
void SelectTABLE(int choice,char select[50],sys *all);
void SQLCOMMAND(int n,int m,sys *all);
void ExecuteSQL(char cmd[100]);
int main(void)
{
system("color f9");
printf("\n初始化,請稍等……\n\n");
//初始化COM
CoInitialize(NULL);
sys all;
//初始化學生表
all.studenthead=(STUDENT *)malloc(sizeof(STUDENT));
all.studenthead->next=NULL;
//初始化教師表
all.teacherhead=(TEACHER *)malloc(sizeof(TEACHER));
all.teacherhead->next=NULL;
//初始化課程表
all.coursehead=(COURSE *)malloc(sizeof(COURSE));
all.coursehead->next=NULL;
//初始化專業表
all.specialityhead=(SPECIALITY *)malloc(sizeof(SPECIALITY));
all.specialityhead->next=NULL;
//初始化院系表
all.departmenthead=(DEPARTMENT *)malloc(sizeof(DEPARTMENT));
all.departmenthead->next=NULL;
//初始化班級表
all.classhead=(CLASS *)malloc(sizeof(CLASS));
all.classhead->next=NULL;
//初始化教學計劃表
all.projecthead=(PROJECT *)malloc(sizeof(PROJECT));
all.projecthead->next=NULL;
//初始化入校報到表
all.registerhead=(REGISTER *)malloc(sizeof(REGISTER));
all.registerhead->next=NULL;
//初始化選修表
all.schead=(SC *)malloc(sizeof(SC));
all.schead->next=NULL;
//初始化講授表
all.tchead=(TC *)malloc(sizeof(TC));
all.tchead->next=NULL;
//初始化參加活動表
all.joinactivityhead=(JOINACTIVITY *)malloc(sizeof(JOINACTIVITY));
all.joinactivityhead->next=NULL;
//初始化登記表
all.logonhead=(LOGON *)malloc(sizeof(LOGON));
all.logonhead->next=NULL;
//初始化學校活動表
all.activityhead=(ACTIVITY *)malloc(sizeof(ACTIVITY));
all.activityhead->next=NULL;
//初始化寢室表
all.chamberhead=(CHAMBER *)malloc(sizeof(CHAMBER));
all.chamberhead->next=NULL;
while(1)
{
system("cls");
Menu(&all);
}
return 0;
}
/*-----------------------------------------------------------------*
*函數: Menu() *
*參數: 表結構指針 *
*作用: 顯示系統各子菜單 *
*返回: 無 *
*-----------------------------------------------------------------*/
void Menu(sys *all)
{
char choice;
if(all->studenthead->next==NULL||all->teacherhead->next==NULL||all->coursehead->next==NULL)
{
Menu1(all);
}
system("cls");
printf("\n\n\t***************************學生綜合管理系統**********************\n\n\n\t");
printf(" a.讀取數據 ");
printf(" b.表的維護 ");
printf(" c.數據查詢 ");
printf(" d.數據統計 ");
printf("\n\n\t*****************************************************************\n\n");
printf("\n\n請選擇(a-d):");
choice=getch();
switch(choice)
{
case 'a':Menu1(all);break;
case 'b':Menu2(all);break;
case 'c':Menu3(all);break;
case 'd':Menu4(all);break;
default:break;
}
}
/*-----------------------------------------------------------------*
*函數: Menu1() *
*參數: 表結構指針 *
*作用: 顯示數據處理菜單 *
*返回: 無 *
*-----------------------------------------------------------------*/
void Menu1(sys *all)
{
int i,choice;
char select[50];
char db_info[2][50];
system("cls");
printf("a.讀取數據");
printf("\n\n");
for(i=0;i<3;i++)
{
printf("\t%d.%s\n",i,a_txt[i]);
}
printf("\n\n請選擇(0-2):");
choice=Force();
while(choice<0||choice>2)
{
printf("\n\n輸入錯誤,請重輸:");
choice=Force();
}
switch(choice)
{
case 0:
{
printf("\n\n\n\t\t\t謝謝使用! 06信科2班程亮、廖翅飛\n\n");
system("pause");
exit(0);
}
case 1:
{
printf("\n\n請輸入Access數據庫名:");
scanf("%s",db_info[1]);
printf("\n\n您輸入的Access數據庫為%s.mdb\n\n",db_info[1]);
sprintf(db[0],"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s.mdb;Persist Security Info=False",db_info[1]);
sprintf(db[1],"Access");
printf("\n\n正在讀取數據,請等待……\n\n");
break;
}
case 2:
{
printf("\n\n請輸入SQL服務器名:");
scanf("%s",db_info[0]);
printf("\n\n請輸入SQL數據庫名:");
scanf("%s",db_info[1]);
printf("\n\n您輸入的SQL服務器名為%s,數據庫名為%s\n\n",db_info[0],db_info[1]);
sprintf(db[0],"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=%s;Data Source=%s;Persist Security Info=False",db_info[1],db_info[0]);
sprintf(db[1],"SQL");
printf("\n\n正在讀取數據,請等待……\n\n");
break;
}
default:break;
}
//讀取學生表
sprintf(select,"Select * From STUDENT");
SelectTABLE(1,select,all);
//讀取教師表
sprintf(select,"Select * From TEACHER");
SelectTABLE(2,select,all);
//讀取課程表
sprintf(select,"Select * From COURSE");
SelectTABLE(3,select,all);
//讀取專業表
sprintf(select,"Select * From SPECIALITY");
SelectTABLE(4,select,all);
//初始化院系表
sprintf(select,"Select * From DEPARTMENT");
SelectTABLE(5,select,all);
//讀取班級表
sprintf(select,"Select * From CLASS");
SelectTABLE(6,select,all);
//讀取教學計劃表
sprintf(select,"Select * From PROJECT");
SelectTABLE(7,select,all);
//讀取入校報到表
sprintf(select,"Select * From REGISTER");
SelectTABLE(8,select,all);
//讀取選修表
sprintf(select,"Select * From SC");
SelectTABLE(9,select,all);
//讀取講授表
sprintf(select,"Select * From TC");
SelectTABLE(10,select,all);
//讀取參加活動表
sprintf(select,"Select * From JOINACTIVITY");
SelectTABLE(11,select,all);
//讀取登記表
sprintf(select,"Select * From LOGON");
SelectTABLE(12,select,all);
//讀取學校活動表
sprintf(select,"Select * From ACTIVITY");
SelectTABLE(13,select,all);
//讀取寢室表
sprintf(select,"Select * From CHAMBER");
SelectTABLE(14,select,all);
}
/*-----------------------------------------------------------------*
*函數: Menu2() *
*參數: 表結構指針 *
*作用: 顯示表的維護菜單 *
*返回: 無 *
*-----------------------------------------------------------------*/
void Menu2(sys *all)
{
int i,quit=0,choice;
do
{
system("cls");
printf("b.表的維護");
printf("\n\n");
for(i=0;i<15;i++)
printf("\t%d.%s\n",i,b_txt[i]);
printf("\n\n請選擇(0-14):");
choice=Force();
while(choice<0||choice>14)
{
printf("\n\n輸入錯誤,請重輸:");
choice=Force();
}
switch(choice)
{
case 0:
{
quit=1;
break;
}
case 1:{
SQLCOMMAND(choice,12,all);
break;
}
case 2:{
SQLCOMMAND(choice,8,all);
break;
}
case 3:{
SQLCOMMAND(choice,7,all);
break;
}
case 4:{
SQLCOMMAND(choice,5,all);
break;
}
case 5:{
SQLCOMMAND(choice,6,all);
break;
}
case 6:{
SQLCOMMAND(choice,7,all);
break;
}
case 7:{
SQLCOMMAND(choice,3,all);
break;
}
case 8:{
SQLCOMMAND(choice,3,all);
break;
}
case 9:{
SQLCOMMAND(choice,6,all);
break;
}
case 10:{
SQLCOMMAND(choice,6,all);
break;
}
case 11:{
SQLCOMMAND(choice,4,all);
break;
}
case 12:{
SQLCOMMAND(choice,3,all);
break;
}
case 13:{
SQLCOMMAND(choice,3,all);
break;
}
case 14:{
SQLCOMMAND(choice,3,all);
break;
}
default:break;
}
}while(quit==0);
}
/*------------------------------------------------------------------*
*函數: SQLCOMMAND() *
*參數: 表結構指針,整型,n為表名的下標,m為表中列名的個數 (row_num中)*
*作用: 調用相關SQL語句命令 *
*返回: 無 *
*------------------------------------------------------------------*/
void SQLCOMMAND(int n,int m,sys *all)
{
int i=1,quit=0,choice,j[3]={0,n,0},flag=0;//j傳遞主鍵輸入的方式,flag判斷能否被刪除
int Find[3]={0,n,0};//Find[1]傳遞查找主鍵,Find[2]傳遞查找外鍵
char ch1[2]="\"";//access字符
char ch2[3]=",";//sql,access字符
char temp[3][50];
char between[100]="";//連接成sql中的字符串部分
char cmd[200];//sql命令字符串
sys tmp;//輸入記錄
sys receive;//插入,修改記錄
if(strcmp(db[1],"SQL")==0)
{
ch1[0]='\'';//sql字符
ch1[1]='\0';
}
do
{
system("cls");
printf("\n正在%s表中操作……\n\n",b_txt[n]);
printf("1.插入新記錄\n");
printf("2.刪除已有記錄\n");
printf("3.修改已有記錄\n");
printf("0.返回\n\n");
printf("\n\n請選擇(0-3):");
choice=Force();
while(choice<0||choice>3)
{
printf("\n\n輸入錯誤,請重輸:");
choice=Force();
}
switch(choice)
{
case 0:
{
quit=1;
break;
}
case 1:
{
//開辟空間
switch(n)
{
case 1:
{
receive.studenthead=(STUDENT *)malloc(sizeof(STUDENT));
break;
}
case 2:
{
receive.teacherhead=(TEACHER *)malloc(sizeof(TEACHER));
break;
}
case 3:
{
receive.coursehead=(COURSE *)malloc(sizeof(COURSE));
break;
}
case 4:
{
receive.specialityhead=(SPECIALITY *)malloc(sizeof(SPECIALITY));
break;
}
case 5:
{
receive.departmenthead=(DEPARTMENT *)malloc(sizeof(DEPARTMENT));
break;
}
case 6:
{
receive.classhead=(CLASS *)malloc(sizeof(CLASS));
break;
}
case 7:
{
receive.projecthead=(PROJECT *)malloc(sizeof(PROJECT));
break;
}
case 8:
{
receive.registerhead=(REGISTER *)malloc(sizeof(REGISTER));
break;
}
case 9:
{
receive.schead=(SC *)malloc(sizeof(SC));
break;
}
case 10:
{
receive.tchead=(TC *)malloc(sizeof(TC));
break;
}
case 11:
{
receive.joinactivityhead=(JOINACTIVITY *)malloc(sizeof(JOINACTIVITY));
break;
}
case 12:
{
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -