学生信息管理系统1文档格式.docx
《学生信息管理系统1文档格式.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统1文档格式.docx(33页珍藏版)》请在冰豆网上搜索。
4、学生信息查询功能—算法;
按学号查询
按姓名查询
5、学生信息的删除与修改(可选项)。
本人承担的功能有:
(1)、
(2)、(4)。
第三章模版设计说明
3.1系统总框架
图3-1系统模块图
3.2主函数的流程图
图3-2主函数流程图
3.3录入学生信息
输入函数:
刷新此前的显示界面,然后输入在执行上步操作后的显示界面
图3-3录入函数流程图
3.4查询学生信息
查询函数:
刷新此前的显示界面,然后查询在执行上步操作后的显示界面
输入学生学号或姓名
开始
是否存在
结束
N
Y
显示所查询学生信息
图3-4查询函数流程图
第四章软件使用说明及运行结果
4.1使用说明
该程序可以实现对学生有关信息查找的功能,安装VisualC++6.0中文版后,在工具栏“文件”中单击“新建”选项,单击“文件”菜单,选择“C++Sourcefile”输入文件名“单项选择题标准化考试系统”。
开始输入程序,程序输入完成,单击“组建”工具栏,选择“编译[简化学生信息管理系统.cpp1]”,待程序无误后,开始执行程序。
根据数据结构、函数功能和主要的流程图,进行录入源代码操作。
在编码时,注意代码的书写规范,包括命名惯例、注释、分隔和缩进等,这样使程序层析清晰,增强可读性和可维护性。
编码操作完成后,先静态检查一下有没有语法错误,然后进行编译,更深一步检查语法错误。
待编译通过时,运行程序,观察是否能够正常运行,如果有问题,再去修改源程序,直至达到了预期的效果。
4.2运行结果
图4-1程序截图一
图4-2程序截图二
第五章课程设计心得与体会
课程设计刚开始的时候,我真的感觉到无从下手。
因为已经过去一个学期了,期间又没有怎么看书,考完试就放下了。
许多知识都已经忘却。
不过老师为我们安排的很周到,一开始并没有直接让我们做系统。
而是复习上个学期最基本的知识。
例如:
通过做一些题目去熟悉冒泡排序,选择排序、指针、如何建立动态存储空间等。
经过这样的训练之后,对C++语言感觉不那么陌生了。
对后面的设计也终于有了点信心。
通过这三周的课程设计,我独立完成了一个较大的C++语言程序的设计,以及认真完成了课程设计报告。
回忆这三周的时间,我收获很大。
首先,我熟练地运用了所学的知识编写程序,并成功的完成,感觉成就感很强,这大大激发了我编程的兴趣;
其次,在设计的过程中遇到了一些困难,我会认真的去思考,或者充分利用网络资源来寻求帮助,提高获取信息的能力。
如果自己解决有困难,我会向老师和同学寻求帮助,在交流中共同进步。
最后,我了解了软件开发的大体过程及各个步骤,这对将来的学习和工作是很有帮助的。
对于计算机专业的大学生来说,积累实战经验是一项极其重要的内容,很可能成为将来就业的敲门砖。
而程序设计综合课程设计就是积累实战经验的一个过程,虽然程序的规模并不大,但能够让我们尽早地认识软件开发的重要性和必要性,为将来的就业打下坚实的基础。
经过两个星期的上机实践学习,使我对C++语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己编程粗心大意,经常出错,通过学习也有所改进;
再有对C++语言的一些标准函数不太了解,还有对函数调用的正确使用不够熟悉,以及对C++语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。
这次的课程设让我认识到很多C++的内在要素:
1.程序设计语言是程序设计的工具。
这是我通过两周课程设计深深体会的一点,并且发现如果想有效的进行程序设计,正确地应用程序设计语言表达算法,必须准确的运用程序设计语言,掌握其语法知识。
2.学习程序设计必须重视时间环节,多读程序,多编写程序,多上机实践。
这次的课程设计就使得课堂教学、式样和实践之间的关系更为紧密。
对我的学习有着很深远的影响。
3.我发现作为一个程序设计人员,需要掌握面向过程的程序设计,也要掌握面向对象的程序设计。
从前,人们通过C++语言学习面向过程的程序设计,再通过C++学习面向对象的程序设计。
其实C++并不是纯粹的面向对象的语言,它是一种混合语言。
学习C++既可以编写面向过程的程序,也可以编写面向对象的程序。
这一点是我通过可课程设计所的实践发现的。
4.深切的感受到了C++语法的复杂,内容的繁多。
发现如果对它缺乏系统的了解,将难以真正的运用,编出来的程序错误百出。
参考文献
[1]、谭浩强编著:
C++程序设计,北京:
清华大学出版社,2004
[2]、(美)戴特尔(Deitel,H.M.)等编著,张引等译:
C++大学基础教程(第五版),北京:
电子工业出版社,2006.6
[3]、夏云庆编著:
VisualC++6.0数据库高级编程,北京:
希望电子出版社2002
[4]、伍俊良编著:
VisualC++6.0课程设计与系统开发案例,北京:
清华大学出版社,2002.11
程序清单
以下是学生信息管理系统的源代码:
#include<
iostream>
fstream>
string>
iomanip>
usingnamespacestd;
#defineNULL0
intn=0;
//链表节点数
boolformExist=false;
//原有链表是否存在
structStudent
{
stringname;
stringClass;
longnum;
floatscore;
Student*next;
};
//创建链表
Student*create();
//打印信息
voidprint(Student*pt);
//删除节点
Student*del(Student*head,longnum);
//插入节点
Student*insert(Student*head,Student*stu);
//保存到文件
voidsave(Student*head,charfilename[]);
//菜单
voidmenu();
//欢迎
voidwelcome();
//按班级查询
voidinquire(Student*head,stringClass);
//按学号查询
voidinquire(Student*head,longnum);
//求平均成绩
voidaverage(Student*head);
//从文件导入
Student*import(charfilename[],Student*head);
//排序
Student*rank(Student*head);
intmain()
Student*head=NULL;
StudentnewStu;
ifstreaminfile;
charfilename[20];
charchoose;
boolquit=false;
charc;
welcome();
while(true)
{
menu();
cin>
>
choose;
switch(choose)
{
case'
1'
:
if(formExist)
{
cout<
<
"
您要创建新的链表,原有链表将丢失,是否继续?
(Y/N)"
;
cin>
c;
if(!
(c=='
y'
||c=='
Y'
))
continue;
else
{
n=0;
head=create();
system("
pause"
);
break;
}
}else
head=create();
system("
break;
}
2'
cout<
请输入文件名:
cin>
filename;
head=import(filename,head);
system("
break;
3'
\n您想删除哪个学生的信息?
输入该学生的学号:
endl;
num;
head=del(head,num);
4'
请输入新增学生的姓名、班级、学号、成绩、性别、出生年月、电话、E-mail:
newStu.name;
newStu.Class;
newStu.num;
newStu.score;
head=insert(head,&
newStu);
5'
print(head);
6'
请输入班级:
Class;
inquire(head,Class);
7'
请输入学号:
inquire(head,num);
8'
average(head);
9'
head=rank(head);
k'
save(head,filename);
c'
cls"
welcome();
q'
quit=true;
default:
输入错误!
}
if(quit)
}
//退出时提示保存
cout<
您想保存这些信息吗?
(Y/N)"
cin>
if(c=='
||c=='
)
cout<
save(head,filename);
return0;
}
//欢迎界面
voidwelcome()
*******************************"
endl
<
欢迎使用简易学生信息管理系统!
制作人:
齐俊时间:
2009-12-4"
endl<
voidmenu()
setiosflags(ios:
left);
\n\n您要做什么?
setw(20)<
1.创建学生信息表"
2.从文件导入信息表"
3.删除信息"
4.插入信息"
5.打印所有的信息"
6.按班级查询"
7.按学号查询"
8.求平均成绩"
9.按成绩排序"
k.保存信息表到文件"
c.清空屏幕"
q.退出"
输入您的选择:
Student*create()
boolerror=false;
formExist=true;
Student*p1,*p2,*head;
head=NULL;
p1=head;
p2=p1;
p1=newStudent;
请输入新增学生的姓名:
(输0结束)"
p1->
name;
if(p1->
name=="
0"
班级:
学号:
do
成绩:
score;
if(p1->
score<
0||p1->
score>
100)
分数错误!
请重新输入"
error=true;
else
error=false;
}while(error);
n++;
if(n==1)
head=p1;
p1->
next=NULL;
else
p2->
next=p1;
输入结束!
"
returnhead;
//输出信息
voidprint(Student*head)
Student*p=head;
if(p!
=NULL)
setw(15)<
姓名"
setw(13)<
班级"
<
setw(10)<
学号"
setw(7)<
分数"
p->
name<
Class
<
num<
p=p->
next;
}while(p!
=NULL);
合计学生"
n<
人。
else
没有信息!
//删除信息
Student*del(Student*head,longnum)
Student*p1,*p2;
if(head==NULL)
信息为空!
returnhead;
p1=p2=head;
while(p1->
num!
=num&
&
p1->
next!
p1=p1->
if(p1->
=num)
找不到该学生!
if(p1==head)
head=p1->
next=p1->
成功删除学号为"
的学生!
n--;
//插入信息
Student*insert(Student*head,Student*stu)
Student*p0,*p1;
p0=stu;
head=p0;
p0->
while(p1->
if(p0->
num==p1->
num)
学号为"
p0->
的学生已存在!
returnhead;
p1=p1->
p1->
next=p0;
成功插入信息!
voidsave(Student*head,charfilename[])
boolflag=false;
没有可以保存的信息!
return;
fstreamoutfile(filename,ios:
out);
if(!
outfile)
打开数据文件出错!
return;
if(flag)
outfile<
outfile<
\t"
Class<
'
\t'
flag=true;
outfile.close();
保存成功!
保存到"
filename<
voidinquire(Student*head,stringClass)
boolflag=true;
inttotal=0;
if(p==NULL)
do
if(p->
Class==Class)
if(flag)
班级为"
的学生有:
flag=false;
total++;
p=p->
}while(p!
已查询到"
total<
条记录。
voidinquire(Student*head,longnum)
num==num)
学号是"
的学生是:
查无此人!
//求平均值
voidaverage(Student*head)
floatsum=0;
su