完整word版简单学生管理系统设计word文档良心出品.docx
《完整word版简单学生管理系统设计word文档良心出品.docx》由会员分享,可在线阅读,更多相关《完整word版简单学生管理系统设计word文档良心出品.docx(26页珍藏版)》请在冰豆网上搜索。
完整word版简单学生管理系统设计word文档良心出品
广州大学学生实验报告
开课学院及实验室:
计算机科学与工程实验室2011年12月28日
学院
计算机科学于教育软件学院
年级/专业/班
计算机02
姓名
杨华奇
学号
1006100096
实验课程名称
程序设计课程设计
成绩
实验项目名称
简单学生管理系统设计
指导老师
田际平
王建雄
(***报告只能为文字和图片,老师评语将添加到此处,学生请勿作答***)
一、实验目的
通过本课程的教学实践,使学生达到加深对计算机高级语言程序设计特点、结构化程
序设计方法和面向对象程序设计的理解、提高学生对可视化编程的动手能力之目的
2、实验内容
“简单学生管理系统设计”
1.系统功能简介:
本系统有包括7个主要功能供给用户,用于管理学生信息。
输入和储存学生信息
用户可以使用系统储存学生信息,包括学生姓名,学号,性别,成绩(物理,英语,数学,计算机导论,C程序)
2.查看学生信息
通过使用系统可以查看已统计好的学生信息
3.学生成绩统计:
使用系统可以浏览学生已排好的成绩统计,包括名次,总分,平均分,最高和最低分。
4.查找学生信息:
使用系统可以浏览单个学生的信息,分为按学号和姓名查找。
5.修改学生信息:
当学生信息有误时就可以通过系统来修改。
6.删除学生信息:
使用系统可以要删除某个学生信息。
7.增加学生信息:
不能在第一个功能上增加学生信息,只能在这个功能上实现。
8.退出。
三、实验原理
本设计内容可用程序设计基础方法完成,参考程序设计课程设计实验指导书
四、实验设备
软件VisualStudio2010
五、实验要求
必修
6、实验程序
#include"StdAfx.h"
#include
#include
#include
usingnamespacestd;
//全局量
intn=0;
intnk=0;
char*filename;
longnum[1000];
intwork_l=0;
intlevel=1;
intbuild=0;
fstreamf;
//成绩类
structstudent
{
public:
//个人信息
charname[20];
charsex[10];
longnumber;
//各科成绩变量
floatm_english;
floatm_math;
floatm_computer;
floatm_programming;
floatm_phisic;
floatm_total;
floatm_reverage;
floatm_highest;
floatm_lowest;
}s;
//1.11求平均分
voidreverage(student&st)
{
st.m_reverage=st.m_total/5;
}
//1.12求总分
voidtotal(student&st)
{
st.m_total=st.m_math+st.m_english+st.m_computer+st.m_programming+st.m_phisic;
reverage(st);
}
//1.13显示各科成绩
voids_show(student&st)
{
cout<<"\t英语\t数学\t物理\t导论\t程序\t"<<"总分\t"<<"平均分\n";;
cout<<"\t"<cout<}
//1.2显示数据函数
voidshow(student&st)
{
if(work_l==1&&level<=n)
{
cout<<"名次:
"<++level;
}
cout<<"\t姓名\t性别\t学号\n";
cout<<"\t"<s_show(st);
}
//1.3判断成绩十分符合逻辑
floatjudge(floatgrade)
{
if(!
(grade>=0&&grade<=150))
{
cout<<"成绩不符合要求!
请输入0~150之间的数。
\n";
cin>>grade;
}
returngrade;
}
//判断学号是否重复
longjudge1(longs_num)
{
if(nk)
{
intwork01=1;
intl=0;
for(;l{
if(s_num==num[l])
{
cout<<"学号重复!
重新输入学号:
";
cin>>s_num;
num[nk]=s_num;
s_num=judge1(s_num);
work01=0;
}
elsework01=1;
}
if(work01==1)
{
returns_num;
}
}
returns_num;
}
//1.4输入
voidinput(student&st)
{
intsex;
char*ss;
//输入各项信息
cout<<"姓名:
";
cin>>st.name;
cout<<"学号:
";
//输入学号。
cin>>st.number;
num[nk]=st.number;
st.number=judge1(st.number);
cout<<"性别(男:
1,女:
0):
";
cin>>sex;
if(sex==1)
ss="男";
elseif(sex==0)
ss="女";
else
ss="未知";
strcpy_s(st.sex,ss);
cout<<"英语:
";
cin>>st.m_english;
st.m_english=judge(st.m_english);
cout<<"数学:
";
cin>>st.m_math;
st.m_math=judge(st.m_math);
cout<<"物理:
";
cin>>st.m_phisic;
st.m_phisic=judge(st.m_phisic);
cout<<"导论:
";
cin>>st.m_computer;
st.m_computer=judge(st.m_computer);
cout<<"程序:
";
cin>>st.m_programming;
st.m_programming=judge(st.m_programming);
cout<total(st);
f.write((char*)&st,sizeof(student));
}
//1.5判断是否已经创建操作员输入的文件名的文件
intjudge()
{
if(!
build)
{
cout<<"还未创建文件!
请重新选择操作!
"<return0;
}
else
return1;
}
//1.5写入信息
voidset()
{
cout<<"人数:
";
cin>>n;
//打开文件
f.open(filename,ios:
:
out);
for(inti=0;i{
nk=i;
input(s);
}
//表明已经创建了文件
build=1;
//关闭文件
f.close();
}
//2浏览
voidskim(student&st)
{
intwork0=1;
work0=judge();
if(work0==0)
{
return;
}
f.open(filename,ios:
:
in);
if(!
f)
{
cerr<<"打不开文件。
\n";
abort();
}
//移动流指针到文件头
f.seekg(0,ios:
:
beg);
for(inti=0;i{
f.read((char*)&st,sizeof(student));
cout<<"第"<
show(st);
}
f.close();
}
//3统计
voidmanage()
{
intwork0=1;
work0=judge();
if(work0==0)
{
return;
}
f.open(filename,ios:
:
in|ios:
:
out);
if(!
f)
{
cerr<<"打不开文件。
\n";
abort();
}
//将真值赋给名次工作机制判断变量
work_l=1;
//移动流指针到文件头
f.seekg(0,ios:
:
beg);
student*temp=newstudent[n];
intwork;
for(inti=0;i{
f.read((char*)&temp[i],sizeof(student));
}
//对数组排序
for(intpass=1;pass{
work=0;
intp=0;
for(p;pif(temp[p].m_total{
studentst;
//比较总分,进行相应操作
st=temp[p];
temp[p]=temp[p+1];
temp[p+1]=st;
work=0;
}
//若没有重新排序则证明已排序好,退出当前操作
if(work)
break;
}
f.seekp(0,ios:
:
beg);
for(intp=0;pf.write((char*)&temp[p],sizeof(student));
f.close();
//浏览统计后的数据信息
skim(s);
if(n)
{
cou