学生信息管理系统.docx
《学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统.docx(27页珍藏版)》请在冰豆网上搜索。
![学生信息管理系统.docx](https://file1.bdocx.com/fileroot1/2023-4/24/2ff52712-9c11-415b-9a3a-67a5922131a7/2ff52712-9c11-415b-9a3a-67a5922131a71.gif)
学生信息管理系统
课程设计任务书
1.设计目的:
1熟悉C语言程序设计的原理与方法;
2掌握C语言开发环境下程序的具体设计;
3掌握利用C语言分析解决具体问题。
2.设计内容和要求:
设计内容:
1.可以通过读取(.txt)文件的方式录入学生信息,学生成绩。
综合成绩由程序自动算出。
2.以保存录入的学生成绩及学生信息。
3.以通过输入学生姓名或学号查询该学生所有课程成绩信息,并罗列出来。
4.以输入课程名称,查询所有学生成绩,并统计及格及不及格人数。
5.有功能可以以DOS或windows窗口方式完成。
设计要求:
1.使用文件进行存储和管理。
2.不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接口要
注释清楚。
对程序其它部分也进行必要的注释。
3.对系统进行功能模块分析、画出总流程图和各模块流程图。
4.用户界面要求使用方便、简洁明了、美观大方、格式统一。
5.所有程序需在Win-Tc或MicrosoftVisualC++6.0环境调试通过。
3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:
1)课程设计说明书一份;
2)电子文档(说明书、设计程序)一份
课程设计任务书
4.主要参考文献:
(1)赵山林、高媛等.C程序设计.北京:
人民邮电出版社,2004.8(2010.1重印)
5.设计成果形式及要求:
1)课程说明书打印,并装订;
2)必要的程序流程图和程序附录。
6.工作计划及进度:
2010年12月27日~2010年12月30日下达设计任务书,学生熟悉设计内容;
2010年12月31日~2011年01月02日查阅参考资料,确定基本设计方案;
2011年01月03日~2011年01月07日C语言进行程序设计;
2011年01月08日~2011年01月09日完成设计报告;
2011年01月10日答辩;
系主任审查意见:
签字:
年月日
目录
1设计内容·································································1
2程序设计目的及意义·····················································1
2.1设计目的····························································1
2.2设计意义····························································2
3功能实现·································································3
3.1系统功能层次图·····················································3
3.2项目设计流程图·····················································4
3.3程序初始化实现·····················································4
3.4模块的实现··························································5
3.4.1菜单的实现····················································5
3.4.2录入功能的实现················································7
3.4.3计算平均分及学生个人通过科目模块的实现···················8
3.4.4按学号、姓名及科目工程查询的实现····························9
3.4.4.1查询菜单模块·········································9
3.4.4.2按姓名查询模块·····································10
3.4.4.3按学号查询模块·····································11
3.4.4.4查找C语言成绩汇总模块····························12
3.4.4.5查找数学成绩汇总模块······························13
3.4.4.6查找英语成绩汇总模块······························14
3.4.5成绩统计功能的实现··········································17
4系统的调试······························································17
4.1运行程序显示菜单·················································16
4.2成绩录入界面······················································18
4.3计算································································19
4.4查询界面···························································19
4.4.1按姓名查询····················································20
4.4.2按学号查询····················································20
4.4.3查询C语言成绩汇总············································21
4.4.4查询英语成绩汇总·············································21
4.4.5显示全部成绩··················································22
5设计结论································································22
6心得体会································································22
7参考文献································································23
1.设计内容
(1)可以通过读取(.txt)文件的方式录入学生信息,学生成绩。
综合成绩由程序自动算出。
表1学生信息格式
学号
姓名
性别
宿舍号码
电话号码
高数
英语
C程
平均分
及格门数
不及格门数
(2)以保存录入的学生成绩及学生信息。
(3)以通过输入学生姓名或学号查询该学生所有课程成绩信息,并罗列出来。
(4)以输入课程名称,查询所有学生成绩,并统计及格及不及格人数。
(5)有功能可以以DOS或windows窗口方式完成。
2.程设计目的及意义
2.1设计目的
学生信息档案的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项数据资源,是一个教育单位不可缺少一部分。
但其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依靠人工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高,所以利用计算机实现学生信息档案管理成为必然的趋势。
本系统针对学校学生信息的特点以及管理中实际需要而设计,能够有效地实现学生信息管理的信息化,减轻管理人员的工作负担,高效率、规范化地管理大量的学生信息,并避免人为操作的错误和不规范行为。
2.2设计意义
信息管理系统是针对学校人事处的大量业务处理工作而开发的管理软件,是典型的管理信息系统。
它是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,它能够为用户提供充足的信息和快捷的查询手段。
能有效的帮助学校和老师掌握学生的情况,为学生提供成绩跟课程方面的查询。
在传统模式下利用人工进行学生信息管理,存在着较多的缺点,如:
效率底,保密性差,时间一长将产生大量的文件和数据,更不便于查找,更新,维护等。
诸如这些情况,令学校管理者对学生的信息管理带来了很大困难,严重影响了教育工作者的工作效率。
随着科学技术的不断提高,计算机科学日渐成熟,使用日趋成熟的计算机技术来代替传统的人工模式,来实现学生信息的现代化管理,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对学生信息进行管理,具有着手工管理所无法比拟的优点.例如:
检索迅速、查找方便、易修改、可靠性高、存储量大、数据处理快捷、保密性好、寿命长、成本低、便于打印等。
这些优点能够极大地提高学生信息管理的效率,也是学校的科学化、正规化管理,与世界接轨的重要条件。
3.功能实现
3.1系统功能层次图
图1系统功能层次图
3.2项目设计流程图
图2项目设计流程图
3.3程序初始化实现
#include
#include
#include
#include
#defineN20
voidinput();
voidsum();
voidxingming();
voidxuehao();
voidsearch();
voidprint();
voidtongjic();
voidtongjimath();
voidtongjienglish();
voidchoice();
typedefstruct
{
charname[10];
intnum;
charsex[10];
intdoor;
floattele;
floatc;
floatmath;
floatenglish;
floataver;
intpass;
intfail;
}stu;
3.4模块的实现
3.4.1菜单的实现
//菜单
voidmenu()/*便于操作员使用*/
{/*清屏*/
system("cls");
printf("学生平时成绩管理\n");
printf("=======================\n");
printf("1.成绩录入\n");
printf("2.计算\n");
printf("3.查询\n");
printf("4.显示\n");
printf("5.统计\n");
printf("0.退出\n");
printf("=======================\n");
printf("请选择相应的功能:
");
}
//菜单选择
voidchoice()
{
charch;
while
(1)
{
menu();//显示菜单
ch=getch();//选择菜单
if(ch=='0')break;
switch(ch)//判断功能项
{
case'1':
input();break;
case'2':
sum();break;
case'3':
search();break;
case'4':
print();break;
case'5':
tongjic(),tongjimath(),tongjienglish();break;
}
}
printf("\n欢迎使用!
!
!
\n");
}
//主函数
voidmain()
{
choice();//调用菜单选择
}
3.4.2录入功能的实现
//成绩录入
voidinput()
{
FILE*fp;
stuxs;/*定义一个结构体变量来装从文件中读出来的数据*/
if((fp=fopen("student.txt","ab"))==NULL){printf("can'topenfile!
\n");exit(0);}
printf("\n录入格式:
\n姓名学号性别宿舍电话C语言高数英语当输入姓名为ps结束录入\n");
while
(1)/*中间加油break,可使循环中断*/
{
scanf("%s",xs.name);
if(strcmp(xs.name,"ps")==0)break;/*判断姓名是否为ps,用字符串判断*/
scanf("%d%s%d%f%f%f%f",&xs.num,&xs.sex,&xs.door,&xs.tele,&xs.c,&xs.math,&xs.english);
xs.aver=0;xs.pass=0;xs.fail=0;/*给平均分,及格和不及格门数变量赋初值*/
fwrite(&xs,sizeof(stu),1,fp);//将成绩信息写入文件
}
fclose(fp);
}
3.4.3计算平均分及学生个人通过科目模块的实现
//计算平均分
voidsum()
{
inti=0,n;
stuxs[N];
FILE*fp;
if((fp=fopen("student.txt","rb+"))==NULL){printf("can'topenfile!
\n");exit(0);}
while(!
feof(fp))
/*文件读入内存,读取指针未到文件尾时返回值为0,读到尾时返回值为1,加!
取反后,结束即为0*/
{
fread(&xs[i],sizeof(stu),1,fp);/*读入结构体变量*/
if(feof(fp))break;/*上面while循环那个会多读一次因为读到尾时那个0还没返回,这里判断如果以读到文件尾,则直接停止,避免重复输入*/
xs[i].aver=(xs[i].c+xs[i].math+xs[i].english)/3;
xs[i].fail=0;
xs[i].pass=0;
if(xs[i].c<60)
xs[i].fail++;
if(xs[i].math<60)
xs[i].fail++;
if(xs[i].english<60)
xs[i].fail++;
xs[i].pass=3-xs[i].fail;
i++;
}
n=i;/*把i的末尾值给n,用于下面循环写入*/
i=0;
fclose(fp);
if((fp=fopen("student.txt","wb"))==NULL){printf("can'topenfile!
\n");exit(0);}
while(i{
fwrite(&xs[i],sizeof(stu),1,fp);
i++;
}
fclose(fp);
}
3.4.4按学号、姓名及科目查询功能的实现
3.4.4.1查询菜单模块
//查询菜单
voidsearch()
{
charch1;
system("cls");
printf("请输入按何种方式查询:
\n");
printf("1-姓名,2-学号,c-C语言,math-数学,english-英语:
");
ch1=getchar();/*用字符接收*/
switch(ch1)/*判断*/
{
case'1':
xingming();break;
case'2':
xuehao();break;
case'c':
tongjic();break;
case'm':
tongjimath();break;
case'e':
tongjienglish();break;
}
getch();/*让屏幕停留同时按任意键返回*/
}
3.4.4.2按姓名查询模块
voidxingming()
{
FILE*fp;
stuxs;
charname[10];
printf("\n输入要查学生的姓名:
");scanf("%s",name);
if((fp=fopen("student.txt","rb"))==NULL){printf("can'topenfile!
\n");exit(0);}
while(!
feof(fp))
{
fread(&xs,sizeof(stu),1,fp);
if(strcmp(xs.name,name)==0)/*按姓名查询时判断输入的姓名是否存在,会循环从数据中找取*/
{
printf("学生的信息如下:
\n");
printf("\n%s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s\n","姓名","学号","性别","宿舍","电话","C语言","高数","英语","平均成绩","及格","不及格");
printf("%s%6d%6s%6d%6.0f%6.2f%6.2f%6.2f%6.2f%6d%6d\n",xs.name,xs.num,xs.sex,xs.door,xs.tele,xs.c,xs.math,xs.english,xs.aver,xs.pass,xs.fail);
break;
}
}
if(feof(fp))printf("查找失败!
!
!
");/*学生不存在*/
fclose(fp);
}
3.4.4.3按学号查询模块
voidxuehao()
{
FILE*fp;
stuxs;
intnum;
printf("\n输入要查学生的学号:
");scanf("%d",&num);
if((fp=fopen("student.txt","rb"))==NULL){printf("can'topenfile!
\n");exit(0);}
while(!
feof(fp))
{
fread(&xs,sizeof(stu),1,fp);
if(xs.num==num)/*按学号查询时判断输入的学号是否存在,会循环从数据中找取*/
{
printf("学生的信息如下:
\n");
printf("\n%s%6s%6s%6s%6s%6s%6s%6s%6s%6s%6s\n","姓名","学号","性别","宿舍","电话","C语言","高数","英语","平均成绩","及格","不及格");
printf("%s%6d%6s%6d%6.0f%6.2f%6.2f%6.2f%6.2f%6d%6d\n",xs.name,xs.num,xs.sex,xs.door,xs.tele,xs.c,xs.math,xs.english,xs.aver,xs.pass,xs.fail);
break;
}
}
if(feof(fp))printf("查找失败!
!
!
");
fclose(fp);
}
3.4.4.4查找C语言成绩汇总模块
//统计C
voidtongjic()
{
inti=0,j=0,k=0,l=0,m=0,n,r,t,u;
FILE*fp;
stus[N],*p1[N],*p4[N];/*用指针数组*/
system("cls");
if((fp=fopen("student.txt","rb"))==NULL){printf("cant'topenfile!
\n");exit(0);}
while(!
feof(fp))
{
fread(&s[i++],sizeof(stu),1,fp);/*读入数据*/
if(feof(fp))break;
}
t=i;i=0;
for(u=0;u{
if(s[i].c<60){p1[j++]=&s[i++];continue;}/*每个学生信息只能位于一个分数段*/
if(s[i].c>=60){p4[m++]=&s[i++];continue;}
}
printf("不及格:
姓名学号C语言\n");
for(n=0;n{
printf("%10s%6d\t%6.2f\n",p1[n]->name,p1[n]->num,p1[n]->c);
}
printf("不及格人数:
");printf("\t%d",j-1);
printf("\n及格:
姓名学号C语言\n");
for(r=0;r{
printf("%10s%6d\t%6.2f\n",p4[r]->name,p4[r]->num,p4[r]->c);
}
printf("及格人数:
");printf("\t%d",m);
fclose(fp);
getch();
}
3.4.4.5查找数学成绩汇总模块
//统计数学
voidtongjimath()
{
inti=0,j=0,k=0,l=0,m=0,n,r,t,u;
FILE*fp;
stus[N],*p1[N],*p4[N];/*用指针数组*/
system("cls");
if((fp=fopen("student.txt","rb"))==NULL){printf("cant'topenfile!
\n");exit(0);}
while(!
feof(fp))
{
fread(&s[i++],sizeof(stu),1,fp);/*读入数据*/
if(feof(fp))break;
}
t=i;i=0;
for(u=0;u{
if(s[i].math<60){p1[j++]=&s[i++];continue;}/*每个学生信息只能位于一个分数段*/
if(s[i].math>=60){p4[m++]=&s[i++];continue;}
}
printf("不及格:
姓名学号数学\n");
for(n=0;n