班级档案管理系统.docx
《班级档案管理系统.docx》由会员分享,可在线阅读,更多相关《班级档案管理系统.docx(21页珍藏版)》请在冰豆网上搜索。
班级档案管理系统
班级档案管理系统
一需求分析
1.1系统概述
以广大用户的利益为基础,实现对学生或者其他用户的信息的网络化信息化管理,从而实现档案管理工作的高效率化,班级档案管理系统10是以学生的基本信息的保存为载体的管理系统,它有着很大的优越性,是目前市场上同类系统的一个有很强的竞争力的系统,该系统操作简单,每个步骤都有明确的提示,而去容易操作,一般用户对其基本操作的掌握是完全没有问题的,容易操作时该系统的一个亮点。
1.2项目的功能需求
1)未开发软件的功能描述
学生档案管理系统必须能够完成系统管理、学生基本信息的录入、学生基本信息的显示、学生基本信息的保存、学生基本信息的删除、学生基本信息的修改、学生基本信息的查询、和退出系统的功功能
(1)系统管理主要是维护系统的正常运行和安全性设置,包括登录用户身份时管理员能够完成添加用户、删除用户、修改密码、查询用户的权限和重新登录等功能,以及针对未涉及到数据库中数据的备份和恢复是能够实现按照学号、学生姓名、学生性别、学生年龄、进行查询。
-11-
(2)在修改学生基本信息的时候是有限制的,不是所有的都可以的,在进行学生基本信息的修改时,要进行密码的确认,从而为用户的信息的保护又多了一层。
(3)在完成档案管理的基本操作之后,必须有一个能够安全退出系统的功能,这样也是保证学生基本信息的安全,只有系统安全的退出才不会影响系统的再次运行。
2)系统的模块
该系统主要分为下列五个模块:
1.学生基本信息的录入模块
2.学生基本信息的显示模块
3.学生基本信息的保存模块
4.学生基本信息的删除模块
5.学生基本信息的修改模块
1.3系统开发的流程
1)开发流程的描述
(1)首先因该是对你讲要开发的项目进行调研,仔细的考察在这个系统开发的过程中可能会遇到的问题,还要考察你所要开发项目的可行性,这个项目到底能不能实现,在当前的开发环境下是不是有可能将其开发出来,这些都是必须在决定开发这个系统之前应该做好的准备工作。
(2)然后是和用户商榷系统的名称以及一些相关事宜,当然在11这个时候还有一个非常重要的事情要做就是考虑是不是有足够的
-12-
必要现在去开发这个系统,也就是其用户是不是足够的多,市场是在这个系统有很大的需求,还有就是考察该系统在生存空间,也就是说到底有多少人在这个系统的市场上,客户的需求是我们开发这个这个系统的目的和基本动机。
(3)确定要开发项目和明确要开发项目的名称之后,就是到了要为项目的开发做好初期准备工作的时候了,首先要整理相关的资料,至于这一方面我们可以借住现在的互联网和我们学校的图书馆,把我们在开发的过程可能会用到了东西先有序的整理出来这样方便我们在开发的时候用。
(4)把我们要开发的系统划分成几个可以操作的模块,尽可能的把一个整体的问题细化,这样可以一个模块一个模块的把问题逐渐解决掉,尽可能的把每个模块的模块图画出来这样的话可以方便在开发过程中的进一步的完善和按照模块图上的要求进行操作,最终实现我们的开发目的。
(5)在前面的准备工作都做好了之后就因该进行开发系统的源代码根据一个一个模块的分析把源代码写好,当然这是一个比较困难的过程。
1.4系统的运行要求
系统属于模式软件系统,代码使用c.visual++6.0编写,系统要求在windows系统下运行。
-13-
二概要设计
2.1程序的模块组成
主函数:
voidmain()
录入函数:
voidGetInfo()
显示函数voidDisplay()
保存函数voidSave()
输出函数:
voidprint()
1.GetInfo()是录入函数,主要是录入学生的基本信息。
2.Display()是显示函数,就是把学生的基本信息显示在电脑上。
3.Save()是保存函数,就是在把学生基本信息的保存下来。
4.Delete()是删除函数,把不要的信息删除。
5.Modfiy()是修改函数,修改错误的学生基本信息。
6.print()是输出函数。
2.2班级档案管理系统
structstudent//设定一个内容为学生信息的结构体
{charname[10];//名字的长度允许最大为十
charno[10];//学号的长度允许最大为十
charsex;intage;//定义年龄为整型
charbnote[100];//备注的长度为允许最大100};2.3各个程序的功能介绍
-14-
主函数:
利用无限次循环例如for(;;)while()和switch()语句实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
录入函数:
用来录入学生的基本信息。
显示函数:
把录入的学生基本信息直观的显示在桌面上。
保存函数:
可以保存学生信息。
退出函数:
可以用来退出系统以保证学生信息的安全。
2.4系统结构图
图3.4
-15-
三模块设计分析
3.1总体程序线路流程图解
图4.1
-16-
3.2学生基本信息录入
程序编写:
voidgetinfo(strutstudent*arr,intn)//函数调用{
for(inti=0;i{
printf(“输入学生的基本信息:
nameagebnote\n”);
scanf(“%s%s%c%d%s”,arr[i].name,arr[i].no,&arr[i].sex,
arr[i].age,&arr[i].bnote);
3.3学生基本信息的显示
程序编写:
voiddisplay(structstudent*arr,intn)//函数调用{
printf(“学生信息:
namenosexagenote\n”);
for(inti=0;i{
printf(“%20s%20s%20c%20d%20s\n”,arr[i].name,arr[i].no,&arr[i].sex,
arr[i].age,&arr[i].bnote);}
}
3.4学生基本信息的保存
程序编写:
voidsave(structstudent*arr,intn)//函数调用
-17-
{file*fp;
fp=fopen(“c:
\\student.txt”,”w+”);If(fp=null)
{printf(“文件不存在~\n”);exit(0);
}
fwrite(arr,sizeof(structstudent)*n,n,fp);
fclose(fp);
}
图4.4
-18-
四测试与结果分析
4.1测试的方案
1.系统验证技术。
2.系统确认技术。
3.系统测试技术。
i.将编好的源代码放到C语言的运行环境中去运行,通过运行找出其中的错误或者是输入的不规范的地方,加以改正,还有就是试一下程序到底能不能运行,是不是满足课程设计的题目的要求。
ii.把已经整理好的源代码放到C语言的运行环境去调试一下,就是确认这个源程序代是否正确。
iii.用运行系统测试源程序代码。
4.2存在的问题
在我们编好程序的时候其实还有很多问题的当然这是一个过程,可以说错误基本上是不可避免的,比如说“一些输入的格式问题和由于习惯性的错误而导致的错误等等。
我个人认为系统调试需要比较扎实的基本功以及充分的细心,c语言中有一些错误并不是直接明了的。
在这个时候就需要我们有耐心慢慢的去找自己的错误,有些错误是由于一些不良操作习惯造成的,而且往往很难发现,因为这类错误都是平时自己不怎么注意的,所以就是产生了也很难查出来,这就要求我们平时养成良好的习惯。
比如花括号的使用,我
-19-
最开始编写的一个程序有一个错误,但是我就是怎么也查不出来,而且因为操作习惯不好,整个程序毫无层次感,花括号也是成一列排放,没有一一分层对应。
后来实在找不出原因就请教了老师。
指导老师看了之后将我的程序重新排布了一遍,发现有一个花括号前后没有对应。
其实在简单的程序中,花括号缺损可以很快发现,因为会有直白的提醒,但是在较复杂的程序中,一个花括号的缺损也许会造成其他很多错误的产生,如果有良好操作习惯,可以很快发现这个小问题。
所以我觉得,我们的基础应该牢实~要不然就会犯下很多那种没必要的错误。
可以说是低级失误~通过系统调试我学会了很多东西。
我们要注重基础,因为我们有时就是因一个基础知识点没学会,从而产生很多的错误。
-20-
五总结
通过这次课程设计我学到了许多感觉自己的知识的不够这次数据库课程设计的“班级档案管理系统”,通过在机房的不断调试和修改其中错误加上验证和测试使得对该系统的运用已经能够已经得到了充分的应用了。
所学的数据库的知识,并去图书馆查阅了一些书集和上网搜索一部分资粗略设计出该系统。
总体上来说,这次课程设计还是比较成功的。
当然,由于学艺不精,在课程设计的过程中也碰到的一些问题。
其中,总体规划,材料太多,不易整理;相关数据库技术方面没有多注意,这次课程设计的重点只在对整个系统的总体思路设计。
其实这些通过最近的课程设计觉得最重要一点就是:
我们一定要自己动手,这样才能真正的学到东西。
书本知识固然重要,但我们更要学会将书本知识应用到实际中才会发现错误,也才能改进,才能达到学习的最终目的。
但我出总结出了一点点的经验如下:
1、要对系统的功能和要求做出详细的分析,并合理分解任务。
2、把分解出来的子任务,做给一个相对独立的模块。
3、在设计一个模块之前,要简单构想一下总界面的显视情况。
4、针对构想出来的界面进行程序的编写。
虽然我的课程设计师存在许多的问题,究其原因还是因为自己平时没有认真听老师讲课,但是我还是希望老师能够白忙中抽空看看我的课程设计的报告,我将非常感谢~
-21-
六附录
程序运行效果图
输入密码123,进入档案管理系统界面:
图6.1输入1,信息录入界面:
-22-
图6.2
输入2,进入学生基本信息显示:
图6.3
输入6,进入学生基本信息查询界面,同时选择学号02的同学:
图6.4
-23-
参考文献
[1]谭浩强著《c程序设计(第四版)》清华大学出版社[2]谭浩强著《c程序设计与学习辅导》清华大学出版社[3]《MicrosoftVisualC++6.0指南》
-24-
源代码
include#
#include#include#include#defineN3
structstudent{charname[10];
charno[10];
Charsex;
intage;
charbnote[100];};
voidprint(boolmenu){
if(!
menu)
{
printf("学生基本信息录入,press1\n");
}
else
{
printf("学生基本信息显示,press2\n");
-25-
printf("学生基本信息保存,press3\n");
printf("学生基本信息删除,press4\n");
printf("学生基本信息修改,press5\n");
printf("学生基本信息查询,press6\n");
}
printf("退出学生信息系统,press7\n");}
boolCheck(charpas[6]){
FILE*fp;
charch;
chara[7]={""};
inti=0;
if((fp=fopen("c:
\\1.txt","r"))==NULL)
{
printf("打开文件失败!
\n");
exit(0);
}
ch=fgetc(fp);
while(ch!
=EOF&&i<6)
{a[i]=ch;
ch=fgetc(fp);
i++;
}
-26-
a[6]='\0';
if(!
strcmp(pas,a))
{
returntrue;
}
else
{
printf("密码错误\n");
returnfalse;
}
fclose(fp);
}
voidGetInfo(structstudent*arr,intn){for(inti=0;i{
printf("输入学生的基本信息:
namenosexagebnote\n");scanf("%s%s%c%d%s",arr[i].name,arr[i].no,&arr[i].sex,&arr[i].age,arr[i
].bnote);
}
}
voidDisplay(structstudent*arr,intn){
printf("学生信息:
NameNOSexageNote\n");
for(inti=0;i{
-27-
printf("%15s%15s%15c%15d%15s\n",arr[i].name,arr[i].no,arr[i].sex,arr[i].ag
e,arr[i].bnote);
}
}
voidSave(structstudent*arr,intn){
FILE*fp;
fp=fopen("c:
\\student.txt","w+");
if(fp==NULL)
{printf("文件不存在!
\n");
exit(0);
}
fwrite(arr,sizeof(structstudent)*n,n,fp);
fclose(fp);
}
voidModfiy(structstudent*arr,intn){charnumber[10];
boolflag=false;
charpass[6];
printf("请输入密码:
\n");
scanf("%s",pass);
if(Check(pass))
{
printf("修改学生信息:
\n");
printf("请输入学号:
\n");
-28-
scanf("%s",number);
for(inti=0;i{
if(!
strcmp(number,arr[i].no))
{
printf("infor:
namenosexagenote\n");
printf("%12s%12s%12c%12d%12s\n",arr[i].name,arr[i].no,
arr[i].sex,arr[i].age,arr[i].bnote);
printf("pleaseinputinformation:
\n");scanf("%s%s%c%d%s",arr[i].name,arr[i].no,&arr[i].sex,&arr[i].age,arr[i].bno
te);
Save(arr,n);
flag=true;
}
}
if(flag==false)
{
printf("该学生不存在!
:
\n");
}
}
}
voidDelete(structstudent*arr,intn){
charnumber[10];
boolflag=false;
-29-
printf("Deleteinformation:
\n");
printf("pleaseinputtheno:
\n");
scanf("%s",number);
for(inti=0;i{
if(!
strcmp(number,arr[i].no))
{
strcpy(arr[i].name,"");
strcpy(arr[i].no,"");
strcpy(arr[i].bnote,"");
arr[i].sex='';
arr[i].age=0;
Save(arr,n);
flag=true;
}
}
if(flag==true)
{printf("该学生不存在!
:
\n");
}
}
voidSearch(structstudent*arr,intn)
{
inttemp,i;
boolflag=false;
-30-
printf("---------------通过学号查询,press1-------------\n");
printf("---------------通过姓名查询,press2-----------\n");
printf("---------------通过性别查询,press3------------\n");
printf("---------------通过年龄查询,press4------------\n");
printf("---------------退出,press5------------\n");
scanf("%d",&temp);
switch(temp)
{
case1:
{
charnum[10];
printf("请输入学号:
\n");
scanf("%s",num);
for(i=0;i{
if(!
strcmp(num,arr[i].no))
{
printf("%12s%12s%12c%12d%12s\n",arr[i].name,arr[i].no,
arr[i].sex,arr[i].age,arr[i].bnote);
flag=true;
}
}
if(!
flag)
{printf("该学生不存在.\n");
-31-
}
}
break;
case2:
{
charnum[10];
printf("pleaseinputname:
\n");
scanf("%s",num);
for(i=0;i{
if(!
strcmp(num,arr[i].name))
{
printf("%12s%12s%12c%12d%12s",arr[i].name,arr[i].no,
arr[i].sex,arr[i].age,arr[i].bnote);
flag=true;
}
}
if(!
flag)
{
printf("该学生不存在.\n");
}
}
break;
case3:
{
-32-
charch;
printf("请输入性别:
\n");
{
if(ch==arr[i].sex)
{
printf("%12s%12s%12c%12d%12s\n",arr[i].name,arr[i].no,
arr[i].sex,arr[i].age,arr[i].bnote);
flag=true;
}
}
if(!
flag)
{
printf("t该学生不存在.\n");
}
}
break;
case4:
{
charnum_age;
printf("请输入年龄:
\n");
scanf("%d",&num_age);
for(i=0;i{
if(num_age==arr[i].age)
-33-
{
printf("%12s%12s%12c%12d%12s\n",arr[i].name,arr[i].no,
arr[i].sex,arr[i].age,arr[i].bnote);
flag=true;
}
}
if(!
flag)
{
printf("该学生不存在.\n");
}
}
break;
default:
break;
}
}
voidmain()
{
structstudentarr[N];
charps[6];
boolflag=false;
printf("请输入密码:
\n");
-34-
scanf("%s",ps);
flag=Check(ps);
if(flag)
{
intselect;
print(false);
scanf("%d",&select);
while(0