📄 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 + -