⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xxx.cpp

📁 这是114专业的数据库原理上机作业
💻 CPP
字号:
#pragma   warning(disable:4146)
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")
#include "System32_ado15.h"
#pragma   warning(disable:4146)
#pragma comment( lib, "Sql_Sever_YJ.lib" )//指定与静态库一起连接
#include <iostream>
#include <iomanip> //for setw()
#include<string>
using namespace std;
  extern 	_ConnectionPtr m_pConnection;
	class STU
{
public:
	char snum[10]; //学号 
	char sname[10]; //姓名 
	char ssex[2]; //姓别 
	long sage; //年龄 
	char smajor[20]; //专业 
public:
	STU(){}
	~STU(){}
}; 
	class Course
	{
	public:
		char Cno[10];//bian haoffff
		char Cname[40];//ming zi
		char Cpno[10];//xian xing ke
		long CCredit;//xue fen
	public:
		Course(){}
		~Course(){}

	};
void InitExe();
void UnInitExe();
void ShowData();
void AddData();
void DeleteData();
void CatchOrder();
void AddOnlyOne();
void ShowDataCourse();
void AddOnlyOneCourse();
void TrySQLFirst();
void main()
{
InitExe();
CatchOrder();
UnInitExe();
}
void InitExe()
{
	InitExeDll();
	_RecordsetPtr m_pRecordset;
	m_pRecordset.CreateInstance(__uuidof(Recordset));
	try{	
		bstr_t bstrSQL("select * from student"); //查询语句 
		// 取得表中的记录
		m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),
			adOpenDynamic,adLockOptimistic,adCmdText);
	}
	catch(_com_error e)
	{
		printf(e.ErrorMessage()); //输出错误信息
	}
	m_pRecordset->Close();
}//////////////////////////////////////////////////////////////////////////
void ShowData()
{
	::CoInitialize(NULL); // 初始化OLE/COM库环境 ,为访问ADO接口做准备
	_RecordsetPtr m_pRecordset;
	m_pRecordset.CreateInstance(__uuidof(Recordset));
	try{
		
		bstr_t bstrSQL("select * from student"); //查询语句 
		// 取得表中的记录
		m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),
			adOpenDynamic,adLockOptimistic,adCmdText);
	}
	catch(_com_error e)
	{
		printf(e.ErrorMessage()); //输出错误信息
	}
	m_pRecordset->Close();
}//////////////////////////////////////////////////////////////////////////
void ShowDataCourse()
{
	::CoInitialize(NULL); // 初始化OLE/COM库环境 ,为访问ADO接口做准备
	_RecordsetPtr m_pRecordset;
	m_pRecordset.CreateInstance(__uuidof(Recordset));
	try{
		
		bstr_t bstrSQL("select * from Course"); //查询语句 
		// 取得表中的记录
		m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),
			adOpenDynamic,adLockOptimistic,adCmdText);
	}
	catch(_com_error e)
	{
		printf(e.ErrorMessage()); //输出错误信息
	}
	variant_t vsnum,vsname,vsage,vsmajor; //对应库中的snum,sname,sage,ssex,smajor
	cout <<"课程号        课程名        先行课        学分";
	cout<<"\n----------------------------------------------------------------\n";
	try{	m_pRecordset->MoveFirst(); ///移到下一条记录
	while (!m_pRecordset->EndOfFile)
	{        
		vsnum = m_pRecordset->GetCollect("Cno");//这儿给字段编号和字段名都可以 
		vsname = m_pRecordset->GetCollect("Cname");
		vsage = m_pRecordset->GetCollect("Cpno");
		vsmajor = m_pRecordset->GetCollect("Ccredit");
		if (vsage.vt==VT_NULL) {
			vsage=(_bstr_t)"NULL";
		}
		if (vsnum.vt != VT_NULL && vsname.vt != VT_NULL)
		{
			cout.setf(ios::left);
			cout <<setw(14) <<(char*)(_bstr_t)vsnum;
			cout <<setw(14) <<(char*)(_bstr_t)vsname;
			cout <<setw(14) <<(char*)(_bstr_t)vsage;
			cout <<setw(20) <<vsmajor.intVal;
			cout.unsetf(ios::left);
			cout <<endl;
			m_pRecordset->MoveNext(); ///移到下一条记录
		}
	}
	}	catch(_com_error e)
	{
		printf(e.ErrorMessage()); //输出错误信息
	}
	cout<<"\n----------------------------------------------------------------\n";
	m_pRecordset->Close();
}
void CatchOrder()
{
	ShowData(); //读取数据库,并且显示
	char m_str[10],m_char;
	while(1)
	{
	printf("\n       操作菜单:\n  \
		Q 退出:      I 增加一行数据        A 增加数据(针对student表格)  \n \
		D 删除数据(针对student表格)       R   刷新数据(针对student表格)    \n \n\
		C 浏览course表数据                 G   添加Course表数据 \n\n\
		T 执行SQL语句\n\n "  );
	scanf("%s",m_str); 
	sscanf( m_str, "%c", &m_char ); //将m_str转化为字符,并保存在m_char中
	if('Q'==m_char||'q'==m_char)
		break; //退出程序
		if('G'==m_char||'g'==m_char)
	AddOnlyOneCourse(); //退出程序
	if('T'==m_char||'t'==m_char)
		TrySQLFirst(); //增加数据
	if('C'==m_char||'c'==m_char)
		ShowDataCourse(); //增加数据
	if('A'==m_char||'a'==m_char)
		AddData(); //增加数据
	if('I'==m_char||'i'==m_char)
		AddOnlyOne();
	if('R'==m_char||'r'==m_char)
		ShowData();
	
	if('D'==m_char||'d'==m_char)
		DeleteData(); //退出程序
	}
	
}//////////////////////////////////////////////////////////////////////////
void AddData()
{
int m=10,n;	_variant_t ra;
	cout<<"输入起始学号";
		cin>>n;
	char stro[200];
	try{
		for (int i=200;i<220;i++) 
		{
			n+=i;
			sprintf(stro,"INSERT INTO student(Sno,Sname,Sage,Ssex,Sdept) VALUES (%d, '小乌龟第%d号',33,'na','MyJJ')",n,n);
			cout<<stro;
			cout<<endl;
			m_pConnection->Execute(stro,&ra,adCmdText);//往表格里面添加记录
		}
	}
	catch(_com_error e)
	{
		printf(e.ErrorMessage()); //输出错误信息
	}
}//////////////////////////////////////////////////////////////////////////


void DeleteData()
{
printf("输入要删除的学生学号:\n\n");
char cno[30],sno[200];
cin>>cno;
		try{
sprintf(sno,"Delete from student where sno='%s'",cno);	
m_pConnection->Execute(sno,NULL,1);
	}
	catch(_com_error e)
	{
	ErrorShow(e);
	}
}//////////////////////////////////////////////////////////////////////////
void AddOnlyOneCourse()
{
	::CoInitialize(NULL); // 初始化OLE/COM库环境 ,为访问ADO接口做准备
	_RecordsetPtr m_pRecordset;
	m_pRecordset.CreateInstance(__uuidof(Recordset));
	try{
		bstr_t bstrSQL("select * from Course"); //查询语句 
		m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),
			adOpenDynamic,adLockOptimistic,adCmdText);
	}
	catch(_com_error e)
	{
		printf(e.ErrorMessage()); //输出错误信息
	}
Course Mycourse;
	cout <<"\n----------------------------------------------------------------\n";
	cout <<"\n请输入你要添加的学生信息\n"; 
	cout <<"课程号:";
	cin >>Mycourse.Cno;
	cout <<"\n课程名:";
	cin >>Mycourse.Cname;
	cout <<"\n先行课:";
	cin >>Mycourse.Cpno; 
	cout <<"\n学分:";
	cin >>Mycourse.CCredit;
	try{
		
		m_pRecordset->MoveFirst(); //移动到第一条记录
		m_pRecordset->AddNew(); ///添加新记录
		m_pRecordset->PutCollect("Cno",_variant_t(Mycourse.Cno));
		m_pRecordset->PutCollect("Cname",_variant_t(Mycourse.Cname));
		m_pRecordset->PutCollect("Cpno",_variant_t(Mycourse.Cpno));
		m_pRecordset->PutCollect("Ccredit",_variant_t(Mycourse.CCredit));
		m_pRecordset->Update();	
		cout <<"\n----------------------------------------------------------------\n";
	}
	catch(_com_error e)
	{
	///	printf(e.ErrorMessage()); //输出错误信息
		 printf("出现错误,请向管理员报告:\n\n");   
  printf("\a\tCode   =   %08lx\n",   e.Error());   
  printf("\a\tCode   meaning   =   %s\n",   e.ErrorMessage());   
  _bstr_t   bstrSource(e.Source());   
  printf("\a\tSource   =   %s\n",   (LPCSTR)bstrSource);   
  _bstr_t   bstrDescription(e.Description());   
  printf("\a\tDescription   =   %s\n",   (LPCSTR)bstrDescription);   
	}
}
void AddOnlyOne()
{
	::CoInitialize(NULL); // 初始化OLE/COM库环境 ,为访问ADO接口做准备
	_RecordsetPtr m_pRecordset;
	m_pRecordset.CreateInstance(__uuidof(Recordset));
	try{
		bstr_t bstrSQL("select * from student"); //查询语句 
		// 取得表中的记录
		m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),
			adOpenDynamic,adLockOptimistic,adCmdText);
	}
	catch(_com_error e)
	{
		printf(e.ErrorMessage()); //输出错误信息
	}
	STU student;
	cout <<"\n----------------------------------------------------------------\n";
	cout <<"\n请输入你要添加的学生信息\n"; 
	cout <<"学号:";
	cin >> student.snum;
	cout <<"\n姓名:";
	cin >> student.sname;
	cout <<"\n年龄:";
	cin >> student.sage; 
	cout <<"\n姓别:";
	cin >> student.ssex;
	cout <<"\n专业:";
	cin >> student.smajor;
	try{
		
		m_pRecordset->MoveFirst(); //移动到第一条记录
		m_pRecordset->AddNew(); ///添加新记录
		m_pRecordset->PutCollect("sno",_variant_t(student.snum));
		m_pRecordset->PutCollect("sname",_variant_t(student.sname));
		m_pRecordset->PutCollect("sage",_variant_t(student.sage));
		m_pRecordset->PutCollect("ssex",_variant_t(student.ssex));
		m_pRecordset->PutCollect("sdept",_variant_t(student.smajor));
		m_pRecordset->Update();	
		cout <<"\n----------------------------------------------------------------\n";
	}
	catch(_com_error e)
	{
		ErrorShow(e);
	}
}
void TrySQLFirst()
{
TrySQLFirst2();
}
void UnInitExe()
{	
	m_pConnection->Close();
	::CoUninitialize();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -