广州大学学生实验报告
开课实验室:
|
学院 |
年级、专业、班 |
姓名 |
学号 | |||||
|
实验课程名称 |
数据库原理实验 |
成绩 | ||||||
|
实验项目名称 |
数据库系统设计综合实验 |
指导老师 | ||||||
|
实验目的 通过实验,使学生掌握数据库系统设计和开发的一般方法,能够设计并实现简单的数据库系统 实验要求 熟悉实验室实验环境,掌握实验预备知识,了解实验中故障排除的基本方法。实验中根据实验要求完成相应的任务,并独立完成实验报告。 实验内容 设计的数据库系统可从以下题目中选择,但不限定于以下题目,可自由选择。 需提供系统简要的需求分析,给出大体的功能介绍;完成数据库的概念结构设计,建议用PowerDesigner画出系统的逻辑结构图或物理结构图(也可以使用其他工具);任选自己熟悉的数据库管理系统和编程语言完成系统主要功能模块的开发。 系统题目参考: 1、学生成绩管理系统 2、网上书城系统 3、进销存系统 4、酒店客房管理系统 5、图书馆管理系统 | ||||||||
|
学生成绩管理系统 一.系统主要功能: 1.学生或教师登录 学生登陆只能进行查成绩操作,教师登录可以增加,删除,修改学生成绩以及查看学生成绩。
添加一个学生,填写姓名学号各科成绩。 3.删除学生信息 删除一个学生的所有信息。 4.修改学生信息 修改一个学生的信息。
输入学生学号以查询该学生信息
按排名显示所有学生信息。
二.数据库结构 三.设计步骤 首先用记事本编写程序代码,保存为 .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 调试执行程序 四.实验源代码
#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(); } } | ||||||||
这是一份关于广州大学学生的实验报告,内容涉及使用Oracle数据库和C++编程语言开发的成绩管理系统。报告详细阐述了如何结合这两项技术来设计和实现一个有效的学生成绩管理平台。
2669

被折叠的 条评论
为什么被折叠?



