淮阴工学院
Project1课程设计报告
选题名称: 学生管理系统
系(院): 计算机工程学院
专 业: 软件工程(NIIT)
班 级: 软件1092班
姓 名: 马涛 学 号: 1091305215
指导教 殷路,张亚红,张勇军,冯万利
学年学期: 20## ~ 20## 学年 第 1 学期
2010 年 12 月 26 日
设计任务书
摘要:
学生管理系统包括了学生成绩管理系统,学生信息管理系统,学生宿舍管理系统。该系统现实了学校当中学生的各项信息,使相关人员操作起来更加简单。虽然显示的信息不多,但是足够我们使用。学生管理系统的代码包含了输入、显示、排序、增加、修改、删除等功能。学生管理是高校内每一个系部或院部都必须切实面对的工作,传统的人工方式管理学生信息存在着许多缺点,效率低、保密性差且较为繁琐。另外,随着学生数量的增加,工作量也大大增加,这也增加学生处管理者的工作量和劳动强度,也给学生信息的查找、更新和维护都带来了很多困难。学生管理可以迅速检索、方便查找、可靠性高、存储量大、保密性好、寿命长、成本低等,能够极大地提高学生管理的效率。建立一个学生管理系统,使学生管理工作规范化,系统化,程序化,避免学生管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改学生的情况。
关键词:学生管理;迅速;方便
目录
1需求分析.................................................................................................................... 1
2概要设计.................................................................................................................... 2
2.1 程序的功能模块图............................................................................................ 2
2.2 程序的流程图.................................................................................................... 3
2.3 基本思路........................................................................................................... 4
3详细设计与实现........................................................................................................ 4
3.1结构体的描述..................................................................................................... 4
3.2学生信息的输入................................................................................................. 5
3.3学生信息的显示................................................................................................. 7
3.4学生信息的排序................................................................................................. 8
3.5学生信息的插入............................................................................................... 10
3.6学生信息的删除................................................................................................ 11
3.7学生信息的查找............................................................................................... 13
3.8学生信息的修改............................................................................................... 14
3.9主函数.............................................................................................................. 16
4调试与操作说明...................................................................................................... 18
4.1选择界面........................................................................................................... 18
4.2学生信息的输入............................................................................................... 18
4.3学生信息的显示............................................................................................... 19
4.4学生信息的排序............................................................................................... 19
4.5学生信息的插入............................................................................................... 20
4.6学生信息的删除............................................................................................... 21
4.7学生信息的查找............................................................................................... 21
4.8学生信息的修改............................................................................................... 22
总结............................................................................................................................. 23
致谢............................................................................................................................. 24
参考文献..................................................................................................................... 25
1 需求分析
目前市面上流行的管理系统不少。但是,对于学校的学生管理系统来说,需要大型的系统,而且是一个操作方便,功能实用,能满足学校学生数据的管理及需求的系统。我的目标就是开发一个功能实用、操作方便,简单明了的学生管理系统。
此图书馆管理系统,包括:学生档案管理系统、学生成绩管理系统、学生宿舍管理系统。对每个学生信息包含了年级、班级、姓名、家庭住址、各科成绩等等。我对学生的信息建立了一个数组。
系统主要功能如下:
选择界面:管理者通过不同的选择查看学生的各种信息;
学生信息的输入:将学生的信息输入,包含了学生的学号、姓名、成绩、家庭住址等;
学生信息的显示:输入学生的学号显示学生的各种信息;
学生的排序:按照学生的平均分进行排序;
学生信息的插入:新进一个学生,将他的各种信息输入到数据库中;
学生信息的删除:输入学生的学号,删除一个学生的所以信息;
学生信息的修改:输入学生的学号,修改一个学生的信息。
面对每天纷繁复杂的学生管理工作,本管理系统很好的解决了工作人员的烦恼。相比传统的人工管理,此管理系统具有:功能全面、操作简单、检索迅速、查找方便、可靠性高、存储量大、成本低等绝对的优势。
通过本管理系统,可以大大的节约工作时间,减少工作量,提高了工作效率,能帮助工作人员更加方便、高效的管理学生。
本管理系统的设计环境:Visual C++ 6.0 ; Windows XP SP3
2 概要设计
2.1 程序功能模块图
图2-1功能模块图
2.2程序流程图
2.3基本思路
首先在Visual C++6.0里建立student结构体,包含了学生的各种信息,然后建立三个子模块,分别为学生档案管理,学生成绩管理和学生宿舍管理。最后建立一个主控程序,以便调用以上三个子模块
3详细设计与实现
3.1结构体的描述
该模块是定义的是结构体,显示的是学生的各种信息。还有一个菜单函数,显示一个学生管理系统的选择界面。
typedef struct
{
char grade[20];//年级
char class_0[20];//班级
int sno1;//学号
int sno2;//宿舍号
char name[20];//名字
float elec;//电子技术成绩
float C_Program;//C++成绩
float Sports;//体育成绩
float policy;//马克思成绩
float sum;//总分
float avg;//平均分
int telephone;//电话号码
char homeaddress[100];//家庭地址
}student;
student stud[100];//结构体数组变量
int menu()//菜单函数
{
char mt;
do
{
system("cls");//qing ping
cout<<""<<"**********************************"<<endl;
cout<<""<<"***********学生管理系统***********"<<endl;
cout<<""<<"* 按1:输入学生信息 *"<<endl;
cout<<""<<"* 按2:显示学生信息 *"<<endl;
cout<<""<<"* 按3:平均分降序排列 *"<<endl;
cout<<""<<"* 按4:查找学生信息 *"<<endl;
cout<<""<<"* 按5:增加学生信息 *"<<endl;
cout<<""<<"* 按6:修改学生信息 *"<<endl;
cout<<""<<"* 按7:删除学生信息 *"<<endl;
cout<<""<<"* 按0:退出系统 *"<<endl;
cout<<""<<"* 请你选择操作(0--7) *"<<endl;
cout<<""<<"* 制作者:软件2班:马涛 *"<<endl;
cout<<""<<"***********************************"<<endl;
mt=getchar();
} while(mt<'0'||mt>'8');
return (mt-'0');// return (mt-'0')为int 类型的数据//return mt; //返回的数据为char类型
}
3.2学生信息的输入
int Input(student stud[],int n)
{
int i=0;
char sign;
while(sign!='n'&& sign!='N')
{
cout<<"请输入学生的年级:";
cin>>stud[n+i].grade;
cout<<"请输入学生的班级:";
cin>>stud[n+i].class_0;
cout<<"请输入学生的学号:";
cin>>stud[n+i].sno1;
cout<<"请输入学生的宿舍号:";
cin>>stud[n+i].sno2;
cout<<"请输入学生的姓名:";
cin>>stud[n+i].name;
cout<<"请输入学生的【电子技术】成绩:";
cin>>stud[n+i].elec;
cout<<"请输入学生的【C plus Program】的成绩:";
cin>>stud[n+i]. C_Program;
cout<<"请输入学生的【体育】的成绩:";
cin>>stud[n+i].Sports;
cout<<"请输入学生的【马克思主义】的成绩:";
cin>>stud[n+i].policy;
stud[n+i].sum=stud[n+i].elec+stud[n+i].C_Program+stud[n+i].Sports+stud[n+i].policy; //计算式
stud[n+i].avg=stud[n+i].sum/4;
cout<<"该学生的总分为:"<<stud[n+i].sum<<endl;
cout<<"该学生平均分为:"<<stud[n+i].avg<<endl;
cout<<"请输入学生的电话号码:";
cin>>stud[n+i].telephone;
cout<<"请输入学生的家庭地址:";
cin>>stud[n+i].homeaddress;
cout<<"=====>提示:继续写入成绩?(输入N/n结束)";
cin>>sign;
i++;
}
return (n+i);
}
3.3学生信息的显示
void Display(student stud[],int n)
{
int i;
if(!stud)
cout<<"The recorder is null";
else
{
cout<<"grade"<<setw(6)
<<"class"<<setw(5)
<<"sno1"<<setw(5)
<<"sno2"<<setw(5)
<<"name"<<setw(5)
<<"elec"<<setw(5)
<<"C++"<<setw(8)
<<"sport"<<setw(8)
<<"policy"<<setw(5)
<<"sum"<<setw(7)<<"avg"<<endl;
cout<<endl;
for(i=1;i<n+1;i++)//for(int i=0;i<n;i++) 类似的定义 ,不过原来的定义是容易理解从1-n
{ stud[i-1].sum=stud[i-1].elec+stud[i-1].C_Program+stud[i-1].Sports+stud[i-1].policy;
stud[i-1].avg=stud[i-1].sum/4;
cout<<setw(2)<<stud[i-1].grade
<<setw(7)<<stud[i-1].class_0
<<setw(5)<<stud[i-1].sno1
<<setw(5)<<stud[i-1].sno2
<<setw(5)<<stud[i-1].name
<<setw(5)<<stud[i-1].elec
<<setw(6)<<stud[i-1].C_Program
<<setw(8)<<stud[i-1].Sports
<<setw(6)<<stud[i-1].policy
<<setw(7)<<stud[i-1].sum
<<setw(7)<<stud[i-1].avg<<endl;
cout<<"************************************************************"<<endl;
}
cout<<"\t\t\t"<<endl;
}
system("pause");
}
3.4学生信息根据平均分排序
void Sort(student stud[],int n)
{
int i,j,k;
float s;
char t[20];
char t1[20];
char t2[20];
char t3[100];
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(stud[j].avg <stud[j+1].avg)
{
student t;
t=stud[j+1];
stud[j+1]=stud[j];
stud[j]=t;
}
cout<<"****************************************************************************"<<endl; /*格式头*/
cout<<"年级:"<<stud[i-1].grade<<endl;
cout<<"班级:"<<stud[i-1].class_0<<endl;
cout<<"学号:"<<stud[i-1].sno1<<endl;
cout<<"宿舍号:"<<stud[i-1].sno2<<endl;
cout<<"姓名:"<<stud[i-1].name<<endl;
cout<<"电子:"<<stud[i-1].elec<<endl;
cout<<"C++:"<<stud[i-1].C_Program<<endl;
cout<<"体育:"<<stud[i-1].Sports<<endl;
cout<<"马克思:"<<stud[i-1].policy<<endl;
cout<<"总分:"<<stud[i-1].sum<<endl;
cout<<"平均分:"<<stud[i-1].avg<<endl;
cout<<"电话号码:"<<stud[i-1].telephone<<endl;
cout<<"家庭地址:"<<stud[i-1].homeaddress<<endl;
cout<<"****************************************************************************"<<endl;
for(i=1;i<n+1;i++)
{ stud[i-1].sum=stud[i-1].elec+stud[i-1].C_Program +stud[i-1].Sports+stud[i-1].policy;
stud[i-1].avg=stud[i-1].sum/4;
cout<<stud[i-1].grade
<<stud[i-1].class_0
<<stud[i-1].sno1
<<stud[i-1].sno2
<<stud[i-1].name
<<stud[i-1].elec
<<stud[i-1].C_Program
<<stud[i-1].Sports
<<stud[i-1].policy
<<stud[i-1].sum
<<stud[i-1].avg
<<stud[i-1].telephone<<endl;
}
}
3.5学生信息的插入
int Insert(student stud[],int n )
{
cout<<"请输入学生的年级:";
cin>>stud[n].grade;
cout<<"请输入学生的班别:";
cin>>stud[n].class_0;
cout<<"请输入学生的学号:";
cin>>stud[n].sno1;
cout<<"请输入学生的宿舍号:";
cin>>stud[n].sno2;
cout<<"请输入学生的姓名:";
cin>>stud[n].name;
cout<<"请输入该学生【电子技术】的成绩:";
cin>>stud[n].elec;
cout<<"请输入该学生【C++程序设计】的成绩:";
cin>>stud[n].C_Program;
cout<<"请输入该学生【大学体育】的成绩:";
cin>>stud[n].Sports;
cout<<"请输入该学生【马克思主义】的成绩:";
cin>>stud[n].policy;
stud[n].sum=stud[n].elec+stud[n].C_Program +stud[n].Sports+stud[n].policy;
stud[n].avg=stud[n].sum/4;
cout<<"请输入学生的电话号码:";
cin>>stud[n].telephone;
cout<<"请输入学生的家庭地址:";
cin>>stud[n].homeaddress;
n++;
Sort(stud,n);
cout<<"=====>提示:输入成功!"<<endl;
return(n);
}
3.6学生信息的删除
int Delete(student stud[],int n)
{
int s;
int i=0,j;
cout<<"输入需要删除学生的学号:"<<endl;
cin>>s;
while((stud[i].sno1-s)!=0&&i<n)
i++;
if(i==n)
{
cout<<"=====>提示:对不起,无法找到该学号……"<<endl;
return (n);
}
for(j=i;j<n-1;j++)
{
strcpy(stud[j].grade,stud[j+1].grade);
strcpy(stud[j].class_0,stud[j+1].class_0);
stud[j].sno1=stud[j+1].sno1;
stud[j].sno2=stud[j+1].sno2;
strcpy(stud[j].name,stud[j+1].name);
stud[j].elec=stud[j+1].elec;
stud[j].C_Program=stud[j+1].C_Program;
stud[j].Sports=stud[j+1].Sports;
stud[j].policy=stud[j+1].policy;
stud[j].telephone=stud[j+1].telephone;
strcpy(stud[j].homeaddress,stud[j+1].homeaddress);
}
cout<<"=====>提示:已成功删除!"<<endl;
return(n-1);
}
3.7学生信息的查找
void Search(student stud[],int n) /*查找并显示一个记录*/
{
int s;
int i=0;
cout<<"输入需要查找学生的学号:"<<endl;
cin>>s;
while((stud[i].sno1-s)!=0&&i<n)
i++; /*查找判断*/
if(i==n)
{
cout<<"=====>提示:对不起,无法找到该学生的信息!"<<endl; /*输入失败信息*/
return;
}
cout<<"*******************************"<<endl;
cout<<"年级:"<<stud[i].grade<<endl;
cout<<"班级:"<<stud[i].class_0<<endl; /*输出该学生信息*/
cout<<"学号:"<<stud[i].sno1<<endl;
cout<<"宿舍号:"<<stud[i].sno2<<endl;
cout<<"姓名:"<<stud[i].name<<endl;
cout<<"电子技术:"<<stud[i].elec<<endl;
cout<<"C++程序设计:"<<stud[i].C_Program<<endl;
cout<<"大学体育:"<<stud[i].Sports<<endl;
cout<<"马克思主义:"<<stud[i].policy<<endl;
cout<<"总分:"<<stud[i].sum<<endl;
cout<<"平均分:"<<stud[i].avg<<endl;
cout<<"电话号码:"<<stud[i].telephone<<endl;
cout<<"家庭地址:"<<stud[i].homeaddress<<endl;
}
3.8学生信息的修改
void Modify(student stud[],int n)
{
int s;
int i=0;
cout<<"输入需要修改成绩学生的学号:"<<endl;
cin>>s;
while((stud[i].sno1-s)!=0 && i<n)
i++; /*查找判断*/
if(i==n)
{
cout<<"=====>提示:对不起,无该学生的成绩……"<<endl; /*输入失败信息*/
return;
}
else
{
cout<<"*******************************该学生的信息*************************************"<<endl; /*格式头*/
cout<<"年级:"<<stud[i].grade<<endl;
cout<<"班级:"<<stud[i].class_0<<endl;
cout<<"学号:"<<stud[i].sno1<<endl;
cout<<"宿舍号:"<<stud[i].sno2<<endl;
cout<<"姓名:"<<stud[i].name<<endl;
cout<<"电子:"<<stud[i].elec<<endl;
cout<<"C++:"<<stud[i].C_Program<<endl;
cout<<"体育:"<<stud[i].Sports<<endl;
cout<<"马克思:"<<stud[i].policy<<endl;
cout<<"总分:"<<stud[i].sum<<endl;
cout<<"平均分:"<<stud[i].avg<<endl;
cout<<"电话号码:"<<stud[i].telephone<<endl;
cout<<"家庭地址:"<<stud[i].homeaddress<<endl;
cout<<"********************************************************************************"<<endl;
stud[i].sum=stud[i].elec+stud[i].C_Program+stud[i].Sports+stud[i].policy;
stud[i].avg=stud[i].sum/4;
cout<<"请输入学生的年级:"<<endl;
cin>>stud[i].grade;
cout<<"请输入学生的班级:"<<endl;
cin>>stud[i].class_0;
cout<<"请输入学生的学号:"<<endl;
cin>>stud[i].sno1;
cout<<"请输入学生的宿舍号:"<<endl;
cin>>stud[i].sno2;
cout<<"请输入学生的姓名:"<<endl;
cin>>stud[i].name;
cout<<"请输入该学生【电子技术】的成绩:"<<endl;
cin>>stud[i].elec;
cout<<"请输入该学生【C++程序设计】的成绩:"<<endl;
cin>>stud[i].C_Program;
cout<<"请输入该学生【大学体育】的成绩:"<<endl;
cin>>stud[i].Sports;
cout<<"请输入该学生【马克思主义】的成绩:"<<endl;
cin>>stud[i].policy; stud[i].sum=stud[i].elec+stud[i].C_Program+stud[i].Sports+stud[i].policy;
stud[i].avg=stud[i].sum/4;
cout<<"该学生的总分为:"<<stud[i].sum<<"平均分为:"<<stud[i].avg<<endl;
cout<<"请输入该学生的电话号码:"<<endl;
cin>>stud[i].telephone;
cout<<"请输入该学生的家庭地址:"<<endl;
cin>>stud[i].homeaddress;
}
}
3.9主函数
void main() /*主函数*/
{
int n=0;
for(;;)
{
switch(menu()) /*选择判断*/
{
case 1:
cout<<endl<<"====>> 输入成绩 <<===="<<endl; /*输入若干条记录*/
n=Input(stud,n);
break;
case 2:
cout<<endl<<"====>> 显示所有记录 <<===="<<endl; /*显示所有记录*/
Display(stud,n);
break;
case 3:
cout<<endl<<"====>> 按平均分降序排列 <<===="<<endl;
Sort(stud,n); /*按学号排序*/
cout<<"排序成功!"<<endl;
cout<<"\t\t\t";
system("pause");
break;
case 4:
cout<<endl<<"====>> 查找并显示一组成绩 <<===="<<endl;
Search(stud,n); /*插入一条记录*/
cout<<"\t\t\t";
system("pause");
break;
case 5:
cout<<endl<<"====>> 插入一组成绩 <<===="<<endl;
n=Insert(stud,n); /*按姓名查找,删除一条记录*/
cout<<"\t\t\t";
system("pause");
break;
case 6:
cout<<endl<<"====>> 修改一组成绩 <<===="<<endl;
Modify(stud,n); /*查找并显示一个记录*/
cout<<"\t\t\t";
system("pause");
break;
case 7:
cout<<endl<<"====>> 删除一组成绩 <<===="<<endl;
n=Delete(stud,n); /*查找并显示一个记录*/
cout<<"\t\t\t";
system("pause");
break;
case 0:
cout<<endl<<"====>> 谢谢您的使用! <<===="<<endl; /*结束程序*/
cout<<"\t\t\t";
system("pause");
exit(1);
}
}
}
4调试与操作说明
4.1选择界面
图4-1 选择界面
4.2学生信息输入
图4-2 学生信息的输入
4.3学生信息显示
图4-3 学生信息的显示
4.4学生信息排序
图4-4 学生信息的排序
4.5学生信息插入
图4-5 学生信息的插入
4.6学生信息删除
图4-6 学生信息的删除
4.7学生信息查找
图4-7 学生信息的查找
4.8学生信息修改
图4-8 学生信息的修改
总结
在本次的数据结构课程设计中我设计的是一个学生管理系统,它包涵了学生档案管理系统,学生成绩管理系统,学生宿舍管理系统。在我个人看来,学生管理系统大多数是在学校中用的比较。而且对于学校的学生管理系统,我觉得应该是一个比较大的系统,它包括了学生的很多信息。并且该系统要操作方便,功能实用,能满足管理者对数据有条不紊的管理及需求。此次课程设计的目标就是在于开发一个功能实用、操作方便的学生管理系统。
经过几天的构思与设计,在指导老师的精心指导和帮助下,一个学生管理系统的雏形已经设计完毕。其使用功能基本符合学校在实际工作中对学生管理的需要,具有一定的实用性。但是由于时间比较仓促,加上自身软件设计经验的不足。因此,在分析问题、解决问题时显得不够严密、完善,还需要在以后的学习中不断地改进和完善
通过这次的课程设计,我更加巩固了上课是所学的知识,也学到了在书本上没有涉及到的知识。在代码的编辑和实现中同样遇到了问题;例如代码无法执行,代码不够简单优化等。但我没有放弃,通过查找资料,请教别人,最终让代码实现出来。
这样的课程设计是一个很好的实践的机会,从中我学到了很多的软件设计经验,也体会到了从事软件开发方面工作需要比其他行业更高的严谨认真的态度和作风,不能有任何松懈马虎的作为,对任何一个危及到工作的问题都不能放过。希望以后还能有这样的机会,增加经验,那定会受益匪浅。
致谢
经过这次数据结构课程设计我收获了很多,指导老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我学到了好多书本上学不到的知识。无论在理论上还是在实践中,都给与我们很大的帮助,使我得到很大的提高,这对于我以后的工作和学习都有一种巨大的帮助,在此感谢他耐心的辅导。在撰写论文阶段,老师审阅我们的论文,提出了许多宝贵意见,没有他的指导,我们就不能较好的完成课题设计的任务。感谢淮阴工学院、计算机工程系提供的实践机会,实验室人员提供的实验环境。还有就是要感谢同学给与的帮助,参考文献的原作者。
参考文献
[1] 苏仕华.数据结构课程设计.北京:机械工业出版社,2005
[2] 王红梅,胡明,王涛.数据结构(C++版)学习辅导与实验指导.北京: 清华大学出版社,2005
[3] 谢楚屏,陈慧南.数据结构.北京:人民邮电出版社,1994
[4] 殷人昆.数据结构(用面向对象方法与C++语言描述).清华大学出版社,2007
[5]吴乃陵 况迎辉.C++程序设计.高等教育出版社,2006
指导教师评语
电子信息科学与技术专业课程设计题单班级_***_学生***课程名称专业课程设计_课题密码锁的设计设计要求利用visualc#作为前…
数据库课程设计报告指导老师贺亚茹组名组长组员完成日期成绩数据库课程设计报告一项目名称学生信息管理系统二项目需求分析1项目需求分析简…
C语言课程设计报告一问题描述题目七学生成绩管理系统设计学生成绩信息包括学期学号班别姓名四门课程成绩语文数学英语和计算机等主要功能1…
java学生成绩管理系统课程设计报告以及代码共享Java语言课程期末作业题目第9题学生成绩管理系统学院计算机学院专业计算机科学与技…
山东交通学院数据库课程设计学生学籍管理系统院系别信息科学与电气工程学院班级学号姓名指导教师时间课程设计任务书题目学生学籍管理系统系…
毕业设计论文开题报告20xx届毕业设计论文题目院系电气与电子工程学院专业名称电子信息工程学生姓名学生学号指导教师XXXX学院学生毕…
毕业设计论文开题报告题目通用学生宿舍管理系统计算机科学与工学院班级学生姓名开题日期程学院专业学号指导教师20xx314计技术算机科…
学生宿舍管理系统可行性分析报告学生宿舍管理系统可行性分析报告绪论管理信息系统在现代社会已深入到各行各业由于计算机技术的迅速发展和普…
学生宿舍管理系统可行性分析报告学生宿舍管理系统可行性分析报告信息071班王君军070814128绪论管理信息系统在现代社会已深入到…
北京科技大学天津学院本科生毕业设计论文选题报告目录1文献综述211宿舍管理系统概述212本课题国外研究进展213本课题国内研究进展…
仲恺农业工程学院毕业论文设计开题报告基于NET的仲恺公寓管理系统姓名刘艺院系计算机科学与工程学院专业年级计算机科学与技术076学号…