班级档案管理系统报告文档 - 副本
课 程 设 计 报 告
课程名称
课题名称
专 业 纺织工程 班 级
学 号 姓 名 胡贺 指导教师 李杰君 郭芳
2012 年 11 月 25 日
湖南工程学院 课 程 设 计 任 务 书
课程名称 《C 语言程序设计》
课 题 班级档案管理系统
专业班级 纺织工程 1101 学生姓名 学 号 指导老师 李杰君 郭芳 审 批
任务书下达日期 2012 年 11月 25 日 任务完成日期 2012 年 12 月 10 日
前 言
设计课题二:班级档案管理系统
一、问题描述:
对一个有N 个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。 二、功能要求:
1、本系统采用一个包含N 个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、年龄、备注。 2、 本系统显示这样的菜单:
(1) 学生基本信息录入 (2) 学生基本信息显示 (3) 学生基本信息保存 (4) 学生基本信息删除
(5) 学生基本信息修改(要求先输入密码) (6) 学生基本信息查询
1按学号查询 ○2按姓名查询 ○3按性别查询 ○4按年龄查询 ○
(7) 退出系统
3、执行一个具体的功能之后,程序将重新显示菜单。 4、将学生基本信息保存到文件中。 5、进入系统之前要先输入密码。 三、算法提示:
1、数据结构:结构体类型数组
四、测试数据: 学生人数N=10
五、进度安排
目录
第一章 绪论 第一节 课程背景
第二节 本文所做工作等 第二章 需求分析 第三章 总体设计 第四章 详细设计 第五章 测试 第六章 使用说明 第七章 总结 附录A 源代码
第一章绪论
学生档案管理系统是一个教育单位不可缺少的部分, 它的内容对于学校的决策者和管理者来说都至关重要, 所以学生档案管理系统应该能够为用户提供充足的信息和快捷的查询手段。
学生档案管理系统是典型的信息管理系统(MIS),经过分析如此情况, 我们用Visual Foxpro 6.0开发工具, 利用其提供的各种面向对象的开发工具和功能强大的SQL(结构化查询语言), 尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象, 在开发阶段设计利用的数据库是Microsoft Visual FoxPro Drivers对DBC 数据库进行开发, 具有很强的移植性。
第一节 课程背景
在我国,各大中小学校的各类信息管理系统并非一个新的课题,但也有的学校根本就没有信息任何管理系统,所有的工作几乎还是手工操作来完成。计算机技术在日新月异的发展,但是有的很多学校,特别是在西部贫困地区,学校的种类管理都依然由手工操作来完成,这十分落后,效率极低,成本很大,而且极异出错。随着社会的发展,信息化是社会进程的必然趋势,学校管理只有只有快,准,精才能发挥其价值。
所以机器代替人力是必然的历史发展趋势,只有领导的重视和支持才能从人工操作改为计算机的自动化系统。人工操作必将被计算机代替。
有些学校虽使用了计算机,甚至管理系统,但是仍然存在很多问题,问题一日不解决,效率就一日提不上去。
还有,有的系统很不完善到处是漏洞,可以说是千疮百孔,这样极不完善的系统对管理来说是没有任何保障的。
21世纪以来,人类经济高速发展,人们发生了日新月异的变化,特别是计算机的应用及普及到经济和社会生活的各个领域。使原本的旧的管理方法越来越不适应现在社会的发展。许多人还停留在以前的手工操作。这大大地阻碍了人类经济的发展。为了适应现代社会人们高度强烈的时间观念,学校信息管理系统软件为学校办公室带来了极大的方便。
2.1 教育系统学生管理现状分析 2.1.1 学校工作流程分析
学校工作总体规划由教务人员在学生信息管理系统中完成对运行教务处所需的基本数据的维护,包括这些信息的增加、修改及对各项信息的变动都将在这进行操作。
新的学年,教务人员首先加入年级信息,然后编排班级,再对来校学生进行基本的信息录入,新生入学后由教务人员在学籍系统中完成新学生信息的维护。 在每个学期开始,教务处根据班级的情况,以班为单位,为每个班级安排一个班主任及对此年级安排一个年级组长。并对各科老师进行安排。
每举行一次考试后由任课老师对成绩进行录入。班主任对本班的成绩汇总。并进行排名,然后年级组长再进行汇总,并对本年级各科成绩及总成绩进行排名。
教务处、年级组长、班主任及任课老师跟据实际情况对录入的成绩进行维护,各位同学对以上录入的信息可以跟据自己的需要进行适当的查询。
第二节 本文所做工作 等
本系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流程设计完成的。为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,现提出如下的系统开发目标:
(1)系统管理员进入学生成绩管理系统学生档案管理的主要功能是:实现添加学生的基本信息、修改学生的基本信息、查询学生的基本信息、删除学生的基本信息等基本功能。
(2)系统管理员进入学生成绩管理系统学生成绩管理的主要功能是:实现学生成绩的录入、学生成绩的修改与保存等基本功能。
(3)系统管理员进行学生成绩管理系统查询与统计的主要功能是:实现根据某个学生的基本信息查询他的成绩,还可以根据学生成绩的高低进行排序等基本功能。
1.1 编写目的 本需求的编写目的在于研究学生档案管理系统软件的开发途径和应用方法。
1.2 背景及范围 本项目的名称:学生档案管理系统。 本软件基本上能具体化、合理化的管理学生的学籍档案, 用结构化的思维方式去了解计算机的基本工作原理和高级程序设计语言。
1.3 功能
主要功能:班级设置、课程设置、学生基本信息录入、学生成绩录入、学生信息和成绩修改、查询成绩。
第二章 系统需求分析
可以使用户录入学生信息,并在系统中显示出来,还能对录入的信息进行保存,当需要时还可以对信息进行修改和删除,还能分别用学号、姓名、性别、年龄对学生信息进行查询,用户进入系统需要输入密码。
第三章 总体设计
struct Student:一个结构体类型,他能存放姓名、性别、地址、学号、成绩
等不同类型数据组成的组合型的数据结构。
void main():主函数。
FILE * fp:定义一个指向文件的指针变量fp.
fp=fopen("学生信息","w +"):将fopen 函数的返回值赋给指针变量fp, 或者
说,fp 指向了学生信息这个文件。如果文件不存在,则建立一个新的文本文件。 Fscanf,fprintf:用格式化的方式读写文件。 Strcmp:字符串比较函数。 Strcpy:字符串复制函数。
程序中还用到当型循环、swith 分支语句、if 语句等。
第五章 系统调试
输入密码进入系统
学生基本信息录入
学生基本信息显示
学生基本信息保存
学生基本信息删除
学生基本信息修改
学生基本信息查询
第六章 使用说明
利用结构体函数类型,使函数显得没那么繁琐,利用文件指针,输入的信息将保存在文件中,以便下次查询和修改,使用“w+”方式读写文件,当指定那个文件不存在时,将建立一个文件,不会出现出错信息。利用fscanf 和fprintf 实现对文件的读写。不足之处:录入的信息没能保存,每次便已运行需要重新输入数据,对所学的东西没有合理结合。
第七章 总结
当刚开始听到要课程设计时,心里有点怕怕的,因为毕竟刚接触c 语言,虽说也学到了一些皮毛,但当听到要自己去编写程序时,才发现自己不会的不懂的还多着呢,要编写一个程序还是有一些困难的,当真的让我去编写程序时,真的是有点怕怕的感觉。刚入学时,听到要学习c 语言时,我是非常的感兴趣,也非常高兴,因为那游戏、软件都要用c 语言来实现,我想探究一下那到底是怎么实现的,能达到那样的效果,所以刚开始我很有激情,每节课我都认真听讲,虽然刚开始听起来有点困难,但是我相信功夫不负有心人,我知道课堂上的知识是不够的,所以我利用课下时间,积极搜寻与之相关的信息,去图书馆借阅相关资料和习题,来增长自己的知识。
当程序写完了,我终于可以松口气了, 经过一个思考, 查资料,写源程序, 上机调试. 现在终于告一段落了. 看到自己的劳动成果, 心中不免有些惊喜, 没想到自己还能独立完成初次的课程设计,虽然不敢说这个程序都是我一个人写的,但其中大部分都是我的成果,另外我还参考了别人的意见,对自己的程序进行修改和完善。
这种课程设计对我们是非常有好处的, 对C 这门程序语言的掌握却有非常大的作用. 从开始对题目的分析, 就注定摆在我这样一个对C 了解不多的新手面前的是一段艰难的旅程. 但最终很庆幸的是我居然能够坚持下来, 而且完成了设计工作.
C 语言是很难学的, 这也许是因人而异, 但对我来说确实是一个障碍。如今要自己完成一个课程设计, 无疑是对自己的一个挑战. 先是上网查找有关的资料,分析题目所需的数据, 要用到哪些函数等等,星期二上网初步调试,将函数用些结构和语句连接起来,做这个工作时,又将书本翻阅了一遍,重新获得许多东西。如带参函数的特点,以及一些语句的运用及特点等等。将工作分配到每块是我完成这个设计的主要方法,然而将每块都完成看起来比较轻松, 但实际操作起来却是比较麻烦的. 由于平时对C 知识的积累较为匮乏,(这可能是最主要的原因了), 所以操作起来真是寸步难行, 没办法, 只有拿出课本找到相应的知识点, 临阵磨枪. 费了一番功夫, 再上机调试时就是最痛苦的时候了,错误一大堆,要一个一个的修改。经过几翻调试修改之后终于可以执行了,那时还兴奋了好长时间呢!然而执行出来的结果是不令人满意的,界面不美观不说,最重要的是输入太烦琐,而且受到的限制太多,如只能以某种方式输入,且个数受限制。于是又发费了大量时间去修改,终于比较满意了,但也到了星期五了,也就是答辩的时间。答辩的时候我才发现还有好多知识是我不会的,老师问了我一些问题,我回答出来的却不多,我体会到我还要很努力的学习,在C 的学习上我还有很长的一段路要走。今天不管怎样把这个设计作出来是件很高兴的事情,不过能够把这个设计顺利完
成要归功于我的指导老师,帮了我很多忙,也让我发现了我有好多欠缺的地方,真的很感谢你们,谢谢!
不管怎么说, 我还是完成了这个设计. 虽说累了点, 但我想这对我们进一步掌握C, 并为下学期的C二级考试是有很大的帮助的. 能够编出程序, 其实本身就是对自己的一种肯定, 是对自己前面一段时间学习C综合水平的一个检阅. 当然完成后的兴喜, 只有经历过了才能体会到,而我体会到了.
C 语言课程设计是培养学生综合运用所学知识, 发现, 提出, 分析和解决实际问题, 锻炼实践能力的重要环节, 是对学生实际工作能力的具体训练和考察过程. 随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。
从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体„„通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计我最要感谢的就是我们的几位指导老师,老师们每天都不辞劳苦为我们服务,不管我们有什么问题,他们都耐心的为我们解答,我们有什么错误他们都积极给我们指正出来,虽然有时也批评一下,但这对我们是有很大帮助的,有这么多优秀的指导老师,我想我以后的学习会更上一层楼。
附录A 源代码
#include #include
struct Student /*声明结构体类型*/ {
int num;
char name[20]; char sex; int age;
char beizhu[100];
};
void main() {
int count=0,i;
char m[10]={"ray"}; /*定义密码*/ char n[20],t,l,p,q,d;
struct Student a[10];
FILE * fp; /*定义一个指向文件的指针变量fp*/
fp=fopen("r","w+"); /*将fopen 函数返回值赋给指针变量fp*/ {
fscanf(fp,"%d\n",&count);
for(i=0;i
{
fscanf(fp,"学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备
注:%s\n",
&a[i].num,a[i].name,&a[i].sex,&a[i].age,&a[i].beizhu);/*用格式化方式写入文件*/
}
fclose(fp); /*用fclose 函数关闭数据文件*/
}
printf("是否进入该系统?Y/N\n"); scanf("%c",&q); scanf("%c",&p); if(q=='Y') {
while(1) {
if(t=='g')
break;
gets(n);
if(strcmp(m,n)==0) /*字符串比较函数*/ { while(1)
{
printf("a.学生基本信息录入\n"); printf("b.学生基本信息显示\n"); printf("c.学生基本信息保存\n");
printf("d.学生基本信息删除\n");
printf("e.学生基本信息修改\n");
printf("f.学生基本信息查询\n (1).按学号查询\n (2).按姓名查询\n
(3).按性别查询\n (4).按年龄查询\n");
printf("g.退出系统\n");
printf("输入选择:");
scanf("%d",&t);
t=getchar();
if(t=='a') {
for(i=count;i
printf("请输入学生%d的信息:学号、姓名、性别、年龄、备注
\n",(count+1));
scanf("%d %s %c %d %s",&a[i].num,a[i].name,&a[i].sex,&a[i].age,&a[i].beizhu);
count++;
printf("是否继续输入?Y/N\n"); scanf("%c",&d); if(d!='Y')
}
}
else if(t=='b') {
for(i=0;i
{
printf("学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备注:%s\n", a[i].num,a[i].name,a[i].sex,a[i].age,a[i].beizhu);
}
else if(t=='c') {
FILE * fp;
fp=fopen("学生信息","w+");
fprintf(fp,"%d\n",count); /*用格式化方式读入文件*/ }
for(i=0;i
fprintf(fp,"学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备
注:%s\n",
a[i].num,a[i].name,a[i].sex,a[i].age,a[i].beizhu);
}
printf("保存成功\n");
fclose(fp);//用fclose 函数关闭数据文件
else if(t=='d')
{ }
int xuehao,i1,flag=0;
printf("请输入要删除学生的学号:\n"); scanf("%d",&xuehao); for(i=0;i
if(xuehao==a[i].num) {
flag=1;
for(i1=i;i1
a[i1]=a[i1+1];
}
}
}
if(flag=0)
printf("查无此人\n");
if(flag=1) { count=count-1;
printf("删除成功\n");
} }
else if(t=='e') {
char n1[20],c2; int c1,k;
printf("请输入密码:\n"); scanf("%s",n1); if(strcmp(m,n1)==0) /*
{
字符串比较函数*/
printf("请输入要修改学生的学号:");
printf("2. printf("3. printf("4. printf("5.
数
case 3:printf("
case 4:printf("
scanf("%d",&c1); for(i=0;i
if(a[i].num==c1) {
while(1) {
if(k==5)
break;
printf("1.修改姓名\n");
修改年龄\n"); 修改性别\n"); 修改备注\n"); 退出\n"); printf("请输入你的选择:"); scanf("%d",&k); switch(k) {
case 1:printf("请输入新姓名:"); scanf("%s",n1);
strcpy(a[i].name,n1);break;//字符串复制函
case 2:printf("请输入新年龄:"); scanf("%d",&c1);
a[i].age=c1;break;
请输入新性别:"); scanf("%c",&c2);
a[i].sex=c2;break;
请输入新备注:");
scanf("%s",n1);
strcpy(a[i].beizhu,n1);break;
case 5:break; }
default:printf("无此项操作\n"); } }
}
} else }
printf("密码错误\n");
else if(t=='f') {
int x;
printf(" (1).按学号查询\n (2).按姓名查询\n (3).按性别查询\n
(4).按年龄查询\n");
printf("请选择:");
scanf("%d",&x);
if(x==1) {
int b1;
printf("请输入学号:");
scanf("%d",&b1); for(i=0;i
{
if(b1==a[i].num)
break;
}
if(i>=count)
printf("查无此人\n");
else
printf("学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备注
\n",
a[i].num,a[i].name,a[i].sex,a[i].age,a[i].beizhu); }
else if(x==2) {
int j=0;
char name1[20];
printf("请输入姓名:");
scanf("%c",&l); gets(name1);
for(i=0;i
if(strcmp(name1,a[i].name)==0)
printf("学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备注%s\n",
a[i].num,a[i].name,a[i].sex,a[i].age,a[i].beizhu);
j=1; } if(j==0)
printf("查无此人\n");
}
else if(x==3) {
char sex1;
printf("请输入性别:");
scanf("%d",&l); scanf("%c",&sex1);
for(i=0;i
{
if(sex1==a[i].sex)
printf("学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备注%s\n",
a[i].num,a[i].name,a[i].sex,a[i].age,a[i].beizhu); } }
else if(x==4) {
int y;
printf("请输入年龄:");
scanf("%d",&y);
for(i=0;i
{
if(y==a[i].age)
printf("学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备注%s\n",
else if(t=='g') { } else }
printf("无此项操作\n"); printf("退出系统\n"); break; }
a[i].num,a[i].name,a[i].sex,a[i].age,a[i].beizhu); } } else
printf("无此项操作\n");
} else
printf("密码错误\n");
} } else
printf("该程序结束\n");
}
纺织服装学院课程设计评分表
课程名称: 《C 语言程序设计》
教师签名: 日 期: