oracle数据库/c++学生成绩管理系统

这是一份关于广州大学学生的实验报告,内容涉及使用Oracle数据库和C++编程语言开发的成绩管理系统。报告详细阐述了如何结合这两项技术来设计和实现一个有效的学生成绩管理平台。

广州大学学生实验报告

开课实验室:

学院

年级、专业、班

姓名

学号

实验课程名称

数据库原理实验

成绩

实验项目名称

数据库系统设计综合实验

指导老师

实验目的

通过实验,使学生掌握数据库系统设计和开发的一般方法,能够设计并实现简单的数据库系统

实验要求

熟悉实验室实验环境,掌握实验预备知识,了解实验中故障排除的基本方法。实验中根据实验要求完成相应的任务,并独立完成实验报告。

实验内容

设计的数据库系统可从以下题目中选择,但不限定于以下题目,可自由选择。

需提供系统简要的需求分析,给出大体的功能介绍;完成数据库的概念结构设计,建议用PowerDesigner画出系统的逻辑结构图或物理结构图(也可以使用其他工具);任选自己熟悉的数据库管理系统和编程语言完成系统主要功能模块的开发。

系统题目参考:

1、学生成绩管理系统

2、网上书城系统

3、进销存系统

4、酒店客房管理系统

5、图书馆管理系统

学生成绩管理系统

一.系统主要功能:

1.学生或教师登录

学生登陆只能进行查成绩操作,教师登录可以增加,删除,修改学生成绩以及查看学生成绩。

  1. 添加学生信息

添加一个学生,填写姓名学号各科成绩。

3.删除学生信息

删除一个学生的所有信息。

4.修改学生信息

修改一个学生的信息。

  1. 查询

输入学生学号以查询该学生信息

  1. 显示所有学生信息

按排名显示所有学生信息。

  1. 保存并退出数据库

二.数据库结构

三.设计步骤

首先用记事本编写程序代码,保存为 .pc文件(注意:用ANSI编码)

打开cmd,使用proc(oracle11自带)命令编译保存的 .pc文件,得到.cpp文件

用VisualStudio新建项目,打开编译好的.cpp文件。

设置项目属性,vc++目录包含sqlca.h头文件所在目录(product\11.2.0\dbhome_1\precomp\public)以其库所在目录(product\11.2.0\dbhome_1\precomp\LIB),链接器->输入->附加依赖项orasql11.lib

调试执行程序

四.实验源代码

  1. .pc文件代码

#include<iostream>

#include<sqlca.h>

#include<string.h>

#include<iomanip>

using namespace std;

EXEC SQL INCLUDE sqlca;

long sqlcode;

EXEC SQL BEGIN DECLARE SECTION;

char name[5];

char num[10];

float math;

float chinese;

float english;

float sum;

int asc;

char username[20], password[20];

EXEC SQL END DECLARE SECTION;

int connect()

{

strcpy_s(username, strlen("laughing") + 1, "laughing");

int x;

while(1)

{

cout<<"学生(1)or 教师(2)?\n";

cin>>x;

if(x==1)

{

strcpy_s(password, strlen("a123456") + 1, "a123456");

break;

}

else if(x==2)

{

cout<<"输入密码:";

cin>>password;

break;

}

}

EXEC SQL CONNECT :username IDENTIFIED BY :password;

if (sqlca.sqlcode!= 0)

{

cout << "连接数据库失败" << endl;

return 0;

}

else

{

cout<<"已连接数据库"<<endl;

return x;

}

}

void disconnect()

{

EXEC SQL COMMIT RELEASE;

}

void ranker()

{

EXEC SQL DECLARE sx cursor for select sno from student1 order by (schinese+smath+senglish) desc;

EXEC SQL OPEN sx;

for(int i=1;;i++)

{

EXEC SQL FETCH sx INTO :num;

if(sqlca.sqlcode!=0)

break;

asc=i;

EXEC SQL UPDATE student1 set srank=:asc where sno=:num;

}

EXEC SQL close sx;

}

void insert()

{

cout<<"输入学号:";

cin>>num;

cout<<"输入姓名:";

cin>>name;

cout<<"输入语文成绩:";

cin>>chinese;

cout<<"输入数学成绩:";

cin>>math;

cout<<"输入英语成绩:";

cin>>english;

EXEC SQL insert into student1(sno,sname,schinese,smath,senglish) values(:num,:name,:chinese,:math,:english);

if(sqlca.sqlcode!=0)

{

cout<<"插入失败\n";

return;

}

else

{

cout<<"插入成功\n";

ranker();

}

}

int search()

{

cout<<"输入学生学号:";

cin>>num;

EXEC SQL select srank,sname,schinese,smath,senglish,(schinese+smath+senglish) into :asc,:name,:chinese,:math,:english,:sum from student1 where sno=:num;

if(sqlca.sqlcode!=0)

{

cout<<"找不到该学号\n";

return 0;

}

else

{

cout.setf(ios::left);

cout<<setw(5)<<"Rank"<<setw(11)<<"Num"<<setw(10)<<"Name"<<setw(8)<<"Chinese"<<setw(5)<<"Math"<<setw(8)<<"English"<<setw(4)<<"sum"<<endl;

cout<<setw(5)<<asc<<setw(11)<<num<<setw(10)<<name<<setw(8)<<chinese<<setw(5)<<math<<setw(8)<<english<<setw(4)<<sum<<endl;

return 1;

}

}

void Delete()

{

int n=search();

if(n!=0)

{

char yn;

cout<<"是否要删除该学生成绩?(y/n)\n";

cin>>yn;

switch(yn)

{

case 'y':{

EXEC SQL DELETE FROM student1 where sno=:num;

if(sqlca.sqlcode!=0)

{

cout<<"删除失败\n";

return;

}

else

{

cout<<"删除成功\n";

ranker();

}

}break;

case 'n':{return;}

}

}

}

void alter()

{

int n=search();

if(n!=0)

{

char yn;

cout<<"是否要修改该学生成绩?(y/n)\n";

cin>>yn;

switch(yn)

{

case 'y':{

cout<<"输入语文成绩:";

cin>>chinese;

cout<<"输入数学成绩:";

cin>>math;

cout<<"输入英语成绩:";

cin>>english;

EXEC SQL UPDATE student1 set schinese=:chinese,smath=:math,senglish=:english where sno=:num;

if(sqlca.sqlcode!=0)

{

cout<<"修改失败\n";

return;

}

else

{

cout<<"修改成功\n";

ranker();

}

}break;

case 'n':{return;}

}

}

}

void show()

{

int count=0;

EXEC SQL DECLARE sy cursor for select srank,sno,sname,schinese,smath,senglish,(schinese+smath+senglish) from student1 order by (schinese+smath+senglish) desc;

EXEC SQL OPEN sy;

while(1)

{

EXEC SQL FETCH sy INTO :asc,:num,:name,:chinese,:math,:english,:sum;

if(sqlca.sqlcode!=0)

break;

cout.setf(ios::left);

if(count++==0)

{

cout<<setw(5)<<"Rank"<<setw(11)<<"Num"<<setw(10)<<"Name"<<setw(8)<<"Chinese"<<setw(5)<<"Math"<<setw(8)<<"English"<<setw(4)<<"sum"<<endl;

}

cout<<setw(5)<<asc<<setw(11)<<num<<setw(10)<<name<<setw(8)<<chinese<<setw(5)<<math<<setw(8)<<english<<setw(4)<<sum<<endl;

}

EXEC SQL CLOSE sy;

}

void teacher()

{

int z=0;

while (1)

{

cout << "添加(1),删除(2),修改(3),查找(4),显示(5),保存并退出(6)\n";

cin >> z;

switch (z)

{

case 1:insert();break;

case 2:Delete();break;

case 3:alter();break;

case 4:{

search();

}break;

case 5:show();break;

case 6:{

disconnect();

exit(0);

}break;

default: cout << "error\n";

}

}

}

void student()

{

int z=0;

while (1)

{

cout << "查找(1),显示(2),退出(3)\n";

cin >> z;

switch (z)

{

case 1:search();break;

case 2:show();break;

case 3:{

disconnect();

exit(0);

}break;

default: cout << "error\n";

}

}

}

void main()

{

int x=0;

while(!(x=connect()));

if(x==2)

{

teacher();

}

else if(x==1)

{

student();

}

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值