班级档案管理系统.docx
《班级档案管理系统.docx》由会员分享,可在线阅读,更多相关《班级档案管理系统.docx(32页珍藏版)》请在冰豆网上搜索。
![班级档案管理系统.docx](https://file1.bdocx.com/fileroot1/2023-5/24/d6f52c0f-0b5e-44a8-b44d-0f5f8eee59d5/d6f52c0f-0b5e-44a8-b44d-0f5f8eee59d51.gif)
班级档案管理系统
课程设计报告
课程名称《C语言程序设计》
课题名称班级档案管理
专业
班级
学号
姓名
指导教师赵锦元、余新宇、谭小兰
2013年6月27日
湖南工程学院
课程设计任务书
课程名称《C语言程序设》
课题班级档案管理系统
专业班级信息管理
学生姓名
学号
指导老师赵锦元、余新宇、谭小兰
审批
任务书下达日期2013年6月14日
任务完成日期2013年6月27日
一、设计内容与设计要求
1.课程设计目的:
全面熟悉、掌握C语言基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为后继课程(数据结构和数据库等课程)的实验以及课程设计打下较扎实的基础。
2.课题题目
班级档案管理系统
3.设计要求:
掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的中型问题,为将来开发软件积累一些典型的案例处理经验。
二、进度安排
第18周星期二14时:
30分——18时:
00分
星期三8时:
00分——11时:
30分
星期三14时:
30分——18时:
00分
星期四8时:
00分——11时:
3
班级档案管理系统
一、问题描述:
对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。
二、功能要求:
1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:
学号、姓名、性别、年龄、备注。
2、本系统显示这样的菜单:
请选择系统功能项:
a.学生基本信息录入
b.学生基本信息显示
c.学生基本信息保存
d.学生基本信息删除
e.学生基本信息修改(要求先输入密码)
f.学生基本信息查询
(1)按学号查询
(2)按姓名查询
(3)按性别查询
(4)按年龄查询
g.退出系统
3、执行一个具体的功能之后,程序将重新显示菜单。
4、将学生基本信息保存到文件中。
5、进入系统之前要先输入密码。
三、算法提示:
1、数据结构:
结构体类型数组
2、数据库结构:
下表构成该系统的基本数据库。
姓名
学号
性别
年龄
备注
char
Char
char
int
char
四、测试数据:
学生人数N=10
五、其它:
根据兴趣可以自我完善系统。
目录
第一章绪论
1.背景描述.....................................
第二章需求分析
2.1项目开发的目的...............................
2.2系统概述.....................................
2.3项目的功能需求..............................
2.4系统开发的流程......................................
第三章概要设计
3.1程序模块的组成...................................
3.2班级档案管理信息数据结构体..................................
3.3各个程序的功能介绍
3.4系统结构图
第四章模块设计分析..............................
4.1程序的模块组成及函数功能.......................
4.2系统功能模块划分...............................
4.3总流程图......................................
4.4插入功能流程图...............................
第五章测试.....................................5.1部分功能运行图...............................
5.2测试方案及bug分析.............................
5.3功能提升......................................
第六章总结.......................................
A程序原代码..................................
B备注...................................
第一章
绪论
1.1背景描述:
随着社会信息量的与日俱增和国家的招生规模的不断扩大,学校需要有一个很好的班级档案管理系统,以方便对学生档案进行有效的管理。
系统应具有既方便教师对学生档案的录入和保存还有显示、删除、修改、查询等功能。
班级档案管理系统这个系统名字是在经过与客户商量而确定的,在有极
大的生存空间下而开始开发的,得到了学校与师生们的一致好评。
在诸多管理系统的班级档案管理系统与其他管理系统都是一种基础系统,本系统具有数据操作方便、高效、迅速等优点。
该软件是采用功能强大的数据库软件开发工具进行开发,具有很好的可移植。
同时可通过设置密码来控制其访问权限,确保系统数据的安全性,使用该系统能够既能把管理人员从繁忙的数据统计中解脱出来,使其具有更多的精力去从事教务管理政策的研究实施,教学计划的制定执行和教学质量的监督检查,从而全面提高教学质量,同时也减轻任课教师的负担,让其有更多的时间投入到教学和科研中,其作主要的功能是能够便于学校的管理。
班级档案系统是学生的基本信息数据位主的管理,合理的管理让该系统的功能得以顺利的实现。
(1)系统现状
目前,我国大中专院校的学生管理的水平普遍不高。
在当今的信息时代,传统的管理方法必然要被以计算机为基础的信息管理所代替,而去目前很多重点院校都已经有了自己的教务管理系统。
已有的大都偏向学生成绩管理系统、学籍管理等,而本系统则重点放在档案管理上,从整体上,从整体上进行分析设计,这对于其他类似的管理系统的设计很有高的参考意义。
(2)用户需求
针对目前各大高校对学生档案管理方面存在的问题和管理的实际需要,我们将理顺管理体制和建立各种管理规范与开发系统的有机结合起来,从用户的角度来看系统首先因该提供便捷的强大的查询功能。
对于学校和全体教师而言,他们因该具有对系统各个部分具有各自不同的权限。
对学生用户而言,系统因该提供能够查询自己档案的功能。
从教务管理者的角度来看,系统因该能够实现即时查询功能,记录学生的档案,以实现对档案的各种操作等功能。
还要具有比较高的安全性,用户登录时必须要有密码验证,这样可以保证用户的信息的安全从而使用户的隐私不至于被泄露。
总之档案管理系统就是在这种背景下应运而生的。
第二章
需求分析
2.1项目开发的目的
该系统是一个简单的班级档案管理系统,能够使老师了解到相应的信息。
是针对目前的现状,把管理人员从繁忙的数据统计中解脱出来,使其具有更多的精力去从事教务管理政策的研究实施,教学计划的制定执行和教学质量的监督检查,从而全面提高教学质量,同时也减轻任课教师的负担,让其有更多的时间投入到教学和科研中,
还有学生档案管理工作的重要性,以及当前的档案管理的现实,为了改善这种情况,使档案管理工作真正的步入高效,健康的轨道从而促使了我们开发了这个系统,以提高档案管理工作的效率和满足用户的基本需求为目的,实现档案管理工作的信息化。
2.2系统概述
以广大用户的利益为基础,实现对学生或者其他用户的信息的网络化信息化管理,从而实现档案管理工作的高效率化,班级档案管理系统是以学生的基本信息的保存为载体的管理系统,它有着很大的优越性,是目前市场上同类系统的一个有很强的竞争力的系统,该系统操作简单,每个步骤都有明确的提示,而去容易操作,一般用户对其基本操作的掌握是完全没有问题的,容易操作时该系统的一个亮点。
2.3项目的功能需求
1)未开发软件的功能描述
学生档案管理系统必须能够完成系统管理、学生基本信息的录入、
学生基本信息的显示、学生基本信息的保存、学生基本信息的删除、学生基本信息的修改、学生基本信息的查询、和退出系统的功功能
(1)系统管理主要是维护系统的正常运行和安全性设置,包括登录用户身份时管理员能够完成添加用户、删除用户、修改密码、查询用户的权限和重新登录等功能,以及针对未涉及到数据库中数据的备份和恢复是能够实现按照学号、学生姓名、学生性别、学生年龄、进行查询。
(2)在修改学生基本信息的时候是有限制的,不是所有的都可以的,在进行学生基本信息的修改时,要进行密码的确认,从而为用户的信息的保护又多了一层。
(3)在完成档案管理的基本操作之后,必须有一个能够安全退出系统的功能,这样也是保证学生基本信息的安全,只有系统安全的退出才不会影响系统的再次运行。
2)系统的模块
该系统主要分为下列六个模块:
1.学生基本信息的录入模块
2.学生基本信息的显示模块
3.学生基本信息的保存模块
4.学生基本信息的删除模块
5.学生基本信息的修改模块
6.安全拖出系统模块
2.4系统开发的流程
1)开发流程的文字描述
(1)首先因该是对你讲要开发的项目进行调研,仔细的考察在这个系统开发的过程中可能会遇到的问题,还要考察你所要开发项目的可行性,这个项目到底能不能实现,在当前的开发环境下是不是有可能将其开发出来,这些都是必须在决定开发这个系统之前应该做好的准备工作。
(2)然后是和用户商榷系统的名称以及一些相关事宜,当然在这个时候还有一个非常重要的事情要做就是考虑是不是有足够的必要现在去开发这个系统,也就是其用户是不是足够的多,市场是在这个系统有很大的需求,还有就是考察该系统在生存空间,也就是说到底有多少人在这个系统的市场上,客户的需求是我们开发这个这个系统的目的和基本动机。
(3)确定要开发项目和明确要开发项目的名称之后,就是到了要为项目的开发做好初期准备工作的时候了,首先要整理相关的资料,至于这一方面我们可以借住现在的互联网和我们学校的图书馆,把我们在开发的过程可能会用到了东西先有序的整理出来这样方便我们在开发的时候用。
(4)把我们要开发的系统划分成几个可以操作的模块,尽可能的把一个整体的问题细化,这样可以一个模块一个模块的把问题逐渐解决掉,尽可能的把每个模块的模块图画出来这样的话可以方便在开发过程中的进一步的完善和按照模块图上的要求进行操作,最终实现我们的开发目的。
(5)在前面的准备工作都做好了之后就因该进行开发系统的源代码根据一个一个模块的分析把源代码写好,当然这是一个比较困难的过程。
第三章
概要设计
3.1程序的模块组成
主函数:
voidmain()
录入函数:
voidGetInfo()
显示函数voidDisplay()
保存函数voidSave()
删除函数voidDelete()
修改函数voidModfiy()
查询函数voidSearch()
输出函数:
voidprint()
1.GetInfo()是录入函数,主要是录入学生的基本信息。
2.Display()是显示函数,就是把学生的基本信息显示在电脑上。
3.Save()是保存函数,就是在把学生基本信息的保存下来。
4.Delete()是删除函数,把不要的信息删除。
5.Modfiy()是修改函数,修改错误的学生基本信息。
6.print()是输出函数。
3.2班级档案管理系统
structstudent//学生信息的结构体
{
charname[10];
charno[10];
charsex;
intage;
charbnote[100];
};
3.3各个程序的功能介绍
主函数:
利用无限次循环例如if(;;)while()和switch()语句实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
录入函数:
用来录入学生的基本信息。
显示函数:
把录入的学生基本信息直观的显示在桌面上。
保存函数:
可以保存学生信息。
删除函数;可以删除学生的错误信息。
修改函数:
可以修改旧的信息,需要输入密码。
查询函数;方便管理员和学生查询。
退出函数;:
可以用来退出系统以保证学生信息的安全。
3.4系统结构图
班级档案管理统
学生基本信息录入-----①
学生基本信息显示-----②
〖通过学号查询〗①
〖通过姓名查询〗②
〖通过性别查询〗③
〖通过年龄查询〗④
〖退出〗⑤
学生基本信息保存-----③
学生基本信息删除-----④
学生基本信息修改-----⑤
学生基本信息查询-----⑥
退出学生信息系统-----⑦
第四章
模块设计分析
4.1程序的模块组成及函数功能:
主函数:
voidmain()
录入函数:
voidGetInfo()
显示函数:
voidDisplay()
保存函数:
voidsave()
删除函数:
voiddelete()
查询函数voidSearch()
修改函数:
voidModify()
菜单函数:
voidmenu_select()
录入函数:
随时学生的基本信息
菜单函数:
显示系统主菜单。
显示函数:
显示所有学生的信息。
查询函数:
方便学生查找自己的基本信息。
删除函数:
删除某学生的信息。
保存函数:
保存好学生基本信息,以免丢失。
4.2系统的功能模块的划分:
开始
菜单界面
功能选择
初始化函数
录入学生信息
显示学生信息
保存学生信息
删除学生信息
修改学生信息
查询学生信息
退出系统
结束
整个系统除了主函数外,另外还有14个函数,实现七大功能:
录入功能、显示功能、保存功能、删除功能、修改功能、查询功能、退出系统功能。
各个函数的详细设计说明分别如下:
(1)主函数main()
利用无限次循环for(;;)和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
(2)菜单选择函数intmenu_select()
这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的九大功能,根据每个功能前面的序号进行选择。
等执行完每一个函数功能后,返回菜单。
(3代码设计:
初始化函数STUDENT*init()
这是一个无参函数,里面只有两个语句,它的作用是使链表初始化,使head的值为NULL和一个清屏语句。
比如:
没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱码!
(4)输入记录函数STUDENT*create()这是一个无参函数,用来执行学生档案记录的输入,当学生为@时停止输入,函数结束后,带回一个链表头的指针指向一下个学生的信息插在表头。
(5)显示记录函数voidprint(STUDENT*head)
这是一个不返回值的有参函数,形参为“链表头的指针”,负责对全部学生成绩记录的输出,不足之处就是不能对学生成绩进行分页显示。
算法:
先将p结点的指针指向第一个结点,将p结点(即第一个结点)的数据输出。
然后再将p结点的指针指向p指针的的指针(即下一结点),将p结点(即第一结点)的数据输出。
重复执行此步聚直到p指针指向NULL为止。
4.3总流程图
4.4插入功能流程图
第五章
测试
5.1部分功能运行图
5.2测试方案及bug分析
测试方案:
通过逐步功能的检测修复与美化,达到一步一步的完善系统。
将编好的源代码放到C语言的运行环境中去运行,通过运行找出其中的错误或者是输入的不规范的地方,加以改正,还有就是试一下程序到底能不能运行,是不是满足课程设计的题目的要求。
把已经整理好的源代码放到C语言的运行环境去调试一下,就是确认这个源程序代是否正确。
用运行系统测试源程序代码。
Bug分析:
在printf的调用中存在部分协调问题,预想的显示方案与实际的显示方案有一定的出入,但是不影响程序的整体运行。
在没有学生信息的录入情况下显示暂时没有实现显示为空,显示的为随机数据。
测试中的奇葩事件:
同样一段源代码居然在没有改动的前提下编译出现不同的问题。
经过询问相关专业人士告知,可能是系统编译的级别不一样导致的。
5.3功能提升
接下来准备完善一个密码输入错误次数限制,以解决密码错误自动退出系统的问题;部分功能实现后部分清屏功能;运行界面背景颜色更换功能等。
第六章
总结
这次课程设计花了我很多时间,在实践中才意识到自己知识的薄弱性,一个成序反反复复的做了好多遍,有时候老在一个小的地方犯错误,并且由于对知识的熟练程度不够。
往往一个小的问题都很难发现,最终经过自己被程序千百回的虐待,终于可以勉强运行了。
在程序的调试中自己不断的修改,其中包括不少次数的无用功,有时候程序弄好了不小心没有保存,几个小时的辛勤劳动就这样白白的牺牲了。
有好几次自己都恨不得把电脑拍了,做程序真的是一门艺术活儿。
不仅是对知识的掌握,也是对自己的耐心以及细心的培养。
期间自己也总结出了一些心得体会:
1、要对系统的功能和要求做出详细的分析,并合理分解任务。
2、把分解出来的子任务,做给一个相对独立的模块。
3、在设计一个模块之前,要简单构想一下总界面的显视情况。
4、针对构想出来的界面进行程序的编写。
A源程序清单
#include
#include
#include
#include
#defineppprintf
#definessscanf
#defineN10//测试数据为10个
structstudent//设定一个内容为学生信息的结构体
{
charname[10];
charno[10];
charsex;
intage;
charbnote[100];
};
voidprint(boolmenu)//打印基本信息bool,,见备注。
{
if(!
menu)//主菜单
{pp("\t\t【welcome班级档案管理统】\n");
pp("\t\t\t〖学生基本信息录入-----①〗\n");
}
else
{
pp("\t\t\t〖学生基本信息显示-----②〗\n");
pp("\t\t\t〖学生基本信息保存-----③〗\n");
pp("\t\t\t〖学生基本信息删除-----④〗\n");
pp("\t\t\t〖学生基本信息修改-----⑤〗\n");
pp("\t\t\t〖学生基本信息查询-----⑥〗\n");
}
pp("\t\t\t〖退出学生信息系统-----⑦〗\n");
pp("请选择:
\n");
}
boolCheck(charpas[6])//密码验证
{
FILE*fp;//文件类型指针型变量
charch;
chara[7]={""};
inti=0;
if((fp=fopen("c:
\\key.txt","r"))==NULL)//在C盘中建立文件名为key.txt的文档来存放密码
{
pp("【打开文件失败!
】\n");
exit(0);
}
ch=fgetc(fp);
while(ch!
=EOF&&i<6)//循环控制
{
a[i]=ch;
ch=fgetc(fp);
i++;//自加1
}
a[6]='\0';//正常结束的标志
if(!
strcmp(pas,a))
{
returntrue;
}
else
{
pp("【密码错误!
】\n");
returnfalse;
}
fclose(fp);//关闭文件
}
voidGetInfo(structstudent*arr,intn)//学生基本信息录入
{
for(inti=0;i{
pp("【输入学生的基本信息】:
\n【姓名】【学号】【性别】【年龄】【备注】\n");
ss("%s%s%c%d%s",arr[i].name,arr[i].no,&arr[i].sex,&arr[i].age,arr[i].bnote);
}
}
voidDisplay(structstudent*arr,intn)//学生基本信息显示
{
pp("〖学生信息〗:
\nNameNOSexageNote\n");
for(inti=0;i{
pp("%15s%15s%15c%15d%15s\n",arr[i].name,arr[i].no,arr[i].sex,arr[i].age,arr[i].bnote);
}
}
voidSave(structstudent*arr,intn)//学生基本信息保存,保存在c:
\\student.txt
{
FILE*fp;
fp=fopen("c:
\\student.txt","w+");
if(fp==NULL)
{
pp("【文件不存在!
】\n");
exit(0);
}
fwrite(arr,sizeof(structstudent)*n,n,fp);
fclose(fp);
}
voidModfiy(structstudent*arr,intn)//学生基本信息修改
{
charnumber[10];
boolflag=false;
charpass[6];
printf("【请输入密码】:
\n");
ss("%s",pass);
if(Check(pass))
{
pp("【修改学生信息】:
\n");
pp("【请输入学号】:
\n");
ss("%s",number);
for(inti=0;i{
if(!
strcmp(number,arr[i].no))
{
pp("infor:
\nnamenosexagenote\n");
pp("%12s%12s%12c%12d%12s\n",arr[