简单学生管理系统设计 - 范文中心

简单学生管理系统设计

04/18

广州大学学生实验报告

(***报告只能为文字和图片, 老师评语将添加到此处, 学生请勿作答***)

一、实验目的

通过本课程的教学实践,使学生达到加深对计算机高级语言程序设计特点、结构化程 序设计方法和面向对象程序设计的理解、提高学生对可视化编程的动手能力之目的 二、实验内容

“简单学生管理系统设计” 1.

系统功能简介:本系统有包括7个主要功能供给用户,用于管理学生信息。输入和储存学生信息

用户可以使用系统储存学生信息,包括学生姓名,学号,性别,成绩(物理,英语,数学,计算机导论,C 程序) 2.

查看学生信息

通过使用系统可以查看已统计好的学生信息 3.

学生成绩统计:

使用系统可以浏览学生已排好的成绩统计,包括名次,总分,平均分,最高和最低分。 4.

查找学生信息:

使用系统可以浏览单个学生的信息,分为按学号和姓名查找。 5. 6. 7.

修改学生信息:当学生信息有误时就可以通过系统来修改。 删除学生信息:使用系统可以要删除某个学生信息。

增加学生信息:不能在第一个功能上增加学生信息,只能在这个功能上实现。

8. 退出。

三、实验原理

本设计内容可用程序设计基础方法完成, 参考程序设计课程设计实验指导书 四、实验设备

软件Visual Studio 2010 五、实验要求 必修 六、实验程序

#include "StdAfx.h" #include #include #include using namespace std;

//全局量 int n=0; int nk=0;

char *filename; long num[1000]; int work_l=0; int level = 1; int build = 0;

fstream f;

//成绩类

struct student {

public:

//个人信息 char name[20]; char sex[10]; long number; //各科成绩变量 float m_english; float m_math; float m_computer; float m_programming; float m_phisic; float m_total; float m_reverage; float m_highest; float m_lowest; }s;

// 1.11 求平均分

void reverage(student &st) {

st.m_reverage = st.m_total/5; }

//1.12 求总分

void total(student &st) {

st.m_total = st.m_math + st.m_english + st.m_computer + st.m_programming + st.m_phisic;

reverage(st); }

//1.13 显示各科成绩

void s_show(student &st) {

cout

cout

//1.2 显示数据函数 void show(student &st) {

if(work_l==1&&level

cout

cout

cout

//1.3 判断成绩十分符合逻辑 float judge(float grade ) {

if(!(grade>=0&&grade

cout > grade; }

return grade; }

//判断学号是否重复

long judge1(long s_num) {

if(nk) {

int work01 = 1; int l = 0; for(;l

if(s_num==num[l]) {

cout > s_num; num[nk] = s_num;

s_num = judge1(s_num); work01 = 0; }

else work01 = 1; }

if(work01==1) {

return s_num; }

}

return s_num; }

//1.4 输入

void input(student &st) {

int sex; char *ss;

//输入各项信息 cout > st.name; cout

cin >> st.number; num[nk] = st.number;

st.number = judge1(st.number); cout > sex; if(sex==1) ss = "男"; else if(sex==0) ss = "女"; else

ss ="未知";

strcpy_s(st.sex,ss); cout > st.m_english;

st.m_english = judge(st.m_english); cout > st.m_math;

st.m_math = judge(st.m_math); cout > st.m_phisic;

st.m_phisic = judge(st.m_phisic); cout > st.m_computer;

st.m_computer = judge(st.m_computer); cout

cin >> st.m_programming;

st.m_programming = judge(st.m_programming); cout

f.write((char*)&st,sizeof(student));

}

//1.5 判断是否已经创建操作员输入的文件名的文件 int judge() {

if(!build) {

cout

return 1; }

//1.5 写入信息 void set() {

cout > n; //打开文件

f.open(filename,ios::out); for(int i = 0;i

nk = i; input(s); }

//表明已经创建了文件 build = 1; //关闭文件

f.close(); }

//2 浏览

void skim(student &st) {

int work0 = 1; work0 = judge(); if(work0==0) {

return; }

f.open(filename,ios::in); if(!f) {

cerr

abort(); }

//移动流指针到文件头

f.seekg( 0,ios::beg ); for(int i = 0;i

f.read((char*)&st,sizeof(student)); cout

}

f.close(); }

//3 统计

void manage() {

int work0 = 1; work0 = judge(); if(work0 == 0) {

return; }

f.open(filename,ios::in|ios::out); if(!f) {

cerr

//将真值赋给名次工作机制判断变量 work_l = 1;

//移动流指针到文件头 f.seekg( 0,ios::beg );

student *temp = new student[n]; int work;

for(int i = 0;i

f.read((char*)&temp[i],sizeof(student)); }

//对数组排序

for(int pass = 1;pass

work = 0; int p =0;

for(p;p

if(temp[p].m_total

student st;

//比较总分,进行相应操作 st = temp[p];

temp[p] = temp[p+1]; temp[p+1] = st; work = 0; }

//若没有重新排序则证明已排序好,退出当前操作 if(work) break; }

f.seekp(0,ios::beg); for(int p = 0;p

f.write((char*)&temp[p],sizeof(student)); f.close();

//浏览统计后的数据信息 skim(s); if(n) {

cout

cout

delete (temp); }

//4 查找 void find() {

//judge(); int work0 = 1; work0 = judge(); if(work0 == 0) {

return; }

f.open(filename,ios::in); if(!f) {

cerr

}

//声明本函数需要用到的变量 int work = 0; char name[20]; unsigned long num; int choice;

cout >choice;

//选择用户及其信息来操作 if(choice==0) {

cout > name; }

else if(choice==1) {

cout > num; }

else {cout

f.seekg( 0,ios::beg ); for(int i = 0;i

f.read((char*)&s,sizeof(student)); switch(choice) {

case 0:

if(!strcmp(name,s.name)) {

cout

work = 1; break; case 1:

if(num==s.number) {

cout

work = 1; break;

}

default:;break; } } }

if(!work) {

cout

f.close(); }

//5 修改

void correct() {

int work0 = 1; work0 = judge(); if(work0==0) {

return; }

f.open(filename,ios::in); if(!f) {

cerr

int work = 0;

int work_correct = 0; int ch; int i = 0;

unsigned long num1;

student *temp = new student[n]; //移动流指针到文件头

f.seekg( 0,ios::beg ); for(i;i

f.read((char*)&temp[i],sizeof(student)); }

f.close();

cout > num1;

//已删除现有内容的方式打开文本

f.open(filename,ios::trunc|ios::out);

if(!f) { cerr > ch; int sex; char *s; //重新输入需要修改的数据 switch(ch) { case 1:cin >> temp[i].name;break; case 2: { for(int m = 0;m> temp[i].number; num[n] = temp[i].number; temp[i].number = judge1(temp[i].number); break; } case 3: { cin >> sex; if(sex)

s = "男";

else s = "女";

strcpy_s(temp[i].sex,s);

break;

}

case 4:cin >> temp[i].m_english;break;

case 5:cin >> temp[i].m_math;break;

case 6:cin >> temp[i].m_phisic;break;

case 7:cin >> temp[i].m_computer;break;

case 8:cin >> temp[i].m_programming;break;

default :cout

}

total(temp[i]);

}

f.write((char*)&temp[i],sizeof(student));

}

if(!work)

{

cout

}

delete(temp);

f.close();

}

//6 删除

void del()

{

int work0 = 1;

work0 = judge();

if(work0==0)

{

return;

}

f.open(filename,ios::in);

if(!f)

{

cerr

abort();

}

//声明该函数需要的一些变量

int work = 0;

unsigned long num1;

int i = 0;

student *temp = new student[n];

//移动流指针到文件头 f.seekg( 0,ios::beg ); for(i;i> num1; //已删除现有内容的方式打开文本 f.open(filename,ios::trunc|ios::out); if(!f) { cerr > ch2; if(ch2=='y'||ch2=='Y') { num[i] = -1000; cout

cout

}

//取消名次操作变量的真值状态

work_l = 0;

delete(temp);

f.close();

}

//7 增加

void add()

{

int work0 = 1;

work0 = judge();

if(work0==0)

{

return;

}

f.open(filename,ios::app);

if(!f)

{

cerr

abort();

}

student st;

f.seekp(0,ios::end);

//调用输入信息函数

nk = n;

input(st);

++n;

//取消名次操作变量的真值状态

work_l = 0;

f.close();

}

int _tmain()

{

cout

char choice;

filename = "E:\\student.txt";

} cout > choice; if(choice>=65&&choice

截图:

写入:void set();

查看:void skim();

统计:void manage();

姓名查找

:void find();

学号查找:

void find();

修改

:void correct();

修改后再查看

删除:void del();

增加:

void add();

退出:

七、总结心得

1:对IO 流的操作中,要时刻注意是否打开的文本在用完后是否关闭了,否则很容易出错。 2:对IO 流指针的赋值和流对象的引用要谨慎,否则会导致数据传输的乱码和错误。就比如这个程序中,刚开始时的查找信息函数由于流对象f 的传输不仔细,把f 引用到输出函数后不知道在哪里出错了,导致了查找并判断信息是否符合要求时,输出的数据并不是要查找的数据。

3. 对输入相同数据的删除处理不好会出现乱码。


相关内容

  • 机电设备安装与维修专业就业方向及课程设置
    机电设备安装与维修专业就业方向及课程设置 机电设备应用与维修 出处: admin 日期:2007-3-15 10:20:28 阅读次数:1901 一.专业名称:机电设备安装与维修专业 二.培养目标 (一)培养目标:本专业主要面向国内大中型企 ...
  • 大学生创新
    工程-艺术专业大学生创新精神培养初探 吴建坤 双 虎 ---------------------------------------------------------------------------- 摘 要 我国高教创新体系的讨论 ...
  • 学生考勤系统说明书
    学生考勤系统说明书 目录 1 设计内容与要求 ----------------------------7 2. 设计说明 -------------------------------8 2.1 问题描述与功能设计------------- ...
  • 学与教的心理学
    学习理论 一 试误--联结 学习理论 1 代表人物与实验 桑代克 教育心理学的创始人 猫的学习实验 (问题箱 尝试错误 即s-r) 记忆实验,联想实验范型 2三大学习理论 准备率 练习率========77面 效果率 3评价 贡献:1运用实 ...
  • 蓝宙电子智能创新实验室
    智能创新实验室建设方案 芜湖蓝宙电子科技有限公司 -飞思卡尔大学计划官方合作伙伴 版 本:Version 2.0 所 有 者:蓝宙电子 日 期:2014.03.12 目录 一. 二. 实验室介绍 . .................... ...
  • 大学宿舍管理系统
    河套大学宿舍管理系统 摘 要 高校学生宿舍管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面.对于后台数据库的建立和维护要求建立起数据一致性.完整性强.数据安全性好的库.而对于前端应用 ...
  • 身边的设计艺术打印稿1
    <身边的设计艺术> 青岛市崂山区东韩小学 王清 尊敬的各位评委老师: 大家好!我叫王清,来自青岛市崂山区东韩小学.今天我说课的内容是人民美术出版社小学美术三年级上册第16课<身边的设计艺术>.接下来,我将从教材分析. ...
  • Scratch六年级信息技术备课
    第18课 初识Scratch [教学目标] 1.知识与技能 (1)初步了解Scratch的界面: (2)识记软件的主要功能模块. 2.过程与方法 (1)结合生活,熟悉模块的功能 (2)通过具体的程序,掌握Scratch的基本编程过程. 3. ...
  • 五年级上册科学2
    [教科版]五年级上册科学教案 第一单元 课题一:种子发芽实验 教学目标:1.通过种子发芽实验,启发学生对实验观察的兴趣 2.经历设计种子发芽实验,启发学生对实验观察的兴趣 3.了解设计实验.制订实验计划的步骤和内容 教学重难点:经历设计种子 ...
  • 合唱团普及三年规划
    合唱团普及三年规划 所谓班级合唱教学是基于普通学校班级授课制的前提下而进行的以班级为单位,结合相应教材内容对学生在课堂上进行的合唱教学和训练. 进行班级合唱训练有以下有利条件: (一)能够真正普及合唱教育 合唱教育从孩子抓起,只有从小学阶段 ...