软件学院课程设计报告.docx
《软件学院课程设计报告.docx》由会员分享,可在线阅读,更多相关《软件学院课程设计报告.docx(39页珍藏版)》请在冰豆网上搜索。
软件学院课程设计报告
课程设计
设计题目:
班级信息管理系统
班级:
15-
学号:
201
学生姓名:
______
设计地点(单位):
软件学院第一实验室
指导教师评语:
该生在?
?
?
?
统设计中,承担了?
?
子系统的编程工作,并且和团队通力合作,进行程序的调试工作,最后系统正常运行,达到了预期目标,提高了C++语言在实际运用中的能力。
成绩:
________________
教师签名:
__田生伟________________
完成日期:
2016年06月日
课程设计任务书
设计题目:
学生姓名
课程名称
面向对象程序设计课程设计
专业班级
地点
第一实验室
起止时间
2016.6.-2016.6.
设计内容及要求
主要利用c语言的文件操作能力设计开发一个小型的班级信息管理系统,至少具有如下功能:
学生对本人信息查询,学生对他人基本信息查询,老师对学生信息的查询,老师对学生信息的录入,老师对学生信息的修改,保存。
操作界面要符合用户的一般习惯,图形或文本界面都可以。
要求:
明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用高级语言进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。
设计
参数
文件记录的字段数量不少于6个,分类统计中统计的项不少于2个。
进度
要求
1.布置设计题目,讲解要求和说明2016.6.7
2.确定设计任务,确定具体的功能,熟悉相关知识2016.6.
3.按功能需求确定程序的主要模块2016.
4.编程实现程序的功能2016.6.-2016.6.
5.调试并完善程序2016.6.
6.撰写课程设计报告2016.6.
7.提交课程设计报告并答辩2016.6.
参考资料
其它
说明
1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。
2.若填写内容较多可另纸附后。
3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
教研室主任:
指导教师:
年月日
摘要..............................................................4
1设计内容、任务及具体要求.........................................5
1.1设计内容.....................................................5
1.2设计任务及具体要求...........................................5
2概要设计.........................................................6
2.1该系统的功能简介.............................................4
2.2总体程序框图.................................................7
2.3各个模块之间的主要关系........................................7
3系统功能模块的具体设计............................................8
3.1各个模块的程序流程图及运行界面................................8
3.2对代码加以分析说明.......................................16
4程序调试分析.....................................................40
5程序使用说明.....................................................41
6总结............................................................42
致谢...........................................................43
摘要
班级信息管理系统最大的优点在于实现班级信息的管理和“共享”,其中,共享的实现是为方便学生对本班同学基本信息的查询,当然,像学生成绩这一类涉及隐私的信息将不会出现在基本信息当中,但本人可凭借学号对其进行查询。
对于班级信息的管理则有老师或班委负责,当然,管理之前则要进行密码验证,来确保管理者身份的合法性。
此处所说的管理则是对学生信息的录入,修改,增加,删除,输出学生信息,以及成绩排名的输出。
本文从需求分析、开发平台选择、系统模块建立、数据库设计、功能模块编程实现及软件测试等方面阐述了本应用系统的设计过程。
为便于说明,文中绘制了程序结构框图、数据流程图和部分界面图。
最后附有主要的源程序代码清单。
关键词:
班级管理系统维护数据汇总管理系统软件开发
1设计内容、任务及具体要求
1.1设计内容
《班级信息管理系统》按照课程设计要求进行设计,实现班级信息的管理和共享,该系统功能主要包括六大模块:
1)学生对本人信息的查询。
此功能可以将学生的所有信息输出,包括成绩,但是它要求输入学号。
2)学生对他人信息的查询。
此功能主要方便同学之间相互联系,学生只需要输入所查询同学的姓名,就可得知该同学的基本信息,但出于隐私的保护,将不输出成绩这一栏。
3)老师对此系统拥有输入修改查询的权限,根据教师用户输入密码验证获得权限,方可进行操作。
4)教师管理模块,用户输入学生学号后,进行信息的录入、修改、查询。
5)数据输出模块,输出其相应的模块功能。
6)信息统计模块,根据输入的学生信息进行统计。
所有录入的学生的成绩根据总分进行排名。
1.2设计任务及具体要求
主要利用c语言的文件操作能力设计开发一个小型的管理信息系统,至少具有如下功能:
学生(本人信息查询,他人信息查询),教师(信息录入,信息查询,信息修改)。
操作界面要符合用户的一般习惯,图形或文本界面都可以。
要求:
明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用高级语言进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。
2概要设计
2.1该系统的功能简介
该系统的主要功能是实现学生信息的录入与查询,包括(录入学生的基本信息、高数成绩、英语成绩、体育成绩、电工电子成绩、计算机系统基础成绩、思修成绩、C语言成绩、学生电话号码)。
对学生的信息进行删除、修改。
并统计学生的所有信息。
2.2总体程序框图
图2.2-A老师界面
图2.2-B添加学生信息
图2.2-C学生界面
图2.2-D主界面
2.2各个模块之间的主要关系
该程序的功能主要是实现学生信息的录入与查询,并对所有学生信息的统计。
各个模块之间的关系是相互联系的。
首先,主函数包含了所有的子函数。
主函数是整个程序的核心。
子函数之间也是有联系的,对所有学生成绩的计算、学生信息的修改、删除、查询,必须是在学生信息录入的情况下进行的。
因此对学生信息的录入是非常重要的。
3系统功能模块的具体设计
3.1各个模块的程序流程图
1)总界面程序运行界面
2)
老师界面程序(N-S)流程图及运行界面
老师界面程序(N-S)流程图(见图3.1-A)
定义变量charch[2];
while(TRUE)
scanf(“%s”,ch);
switch(ch)
case'1':
addone();break;添加学生信息
case'2':
delone();break;删除个人记录
case'3':
modone();break;修改个人记录
case'4':
idone();break;查找学生记录
case'5':
listall();break;统计学生信息记录
case'6':
wfile();break;将信息写入文件当中
case'7':
rfile();break;从文件中读取信息
case'8':
exit(0);退出系统
default:
printf("对不起,请重新选择!
\n");
图3.1-A老师界面程序
简单说明:
该功能主要显示的是给老师用户一个进入界面,它主要的是显示该程序主要能够执行的有哪些功能。
下面是显示给用户的界面。
(见图3.1-A)
:
运行界面截图
图3.1B老师界面
3)
录入学生信息(N-S)流程图及程序运行界面
录入学生信息(N-S)流程图(见图3.3-A)
printf("RecordNO.%d\n",n+1);
输入学生基本信息
输入学生的姓名
输入学生的学生
输入学生的电话号码
输入学生的QQ号
输入学生的高数成绩
输入学生的英语成绩
输入学生的电工电子成绩
输入学生的体育成绩
输入学生的C语言成绩
输入学生的思修成绩
输入学生的计算机系统基础成绩
图3.3-A录入学生信息程序
该模块主要是对学生的信息进行录入,录入的主要有包括(录入学生的基本信息、高数成绩、英语成绩、体育成绩、电工电子成绩、计算机系统基础成绩、思修成绩、C语言成绩、学生电话号码)。
录入学生信息程序运行界面。
(见图3.3-B)
图3.3-B录入学生信息程序界面
4)删除学生记录的(N-S)流程图及程序运行界面
删除学生记录的(N-S)流程图(见图3.4-A)
定义数据变量
输入某学生的学号gets(numstr);
number=atof(numstr);
for(j=0;j<=n;j++)
gl[j].number==number?
真
假
flagfind=1;
tmp[k]=gl[j];k++;
flagfind==1?
真
假
for(j=0;j<=(n-1);j++)
没有你要删除的记录
gl[j]=tmp[j];
成功删除记录
n=n-1;
return(0);
图3.4-A删除学生记录程序
该模块主要通过已经输入的学生信息进行删除,如果你输入的信息存在或不存在,则显示以下运行界面。
见图(3.4-B)
图3.4-B删除学生记录程序界面
5)修改个人记录的(N-S)流程图及运行界面
修改个人记录的(N-S)流程图(见图3.5-A)
定义数据变量
输入学生的学号
将所输学生的学号转化为double型
for(j=0;j<=n;j++)
gl[j].number==number?
真
假
输入学生的新信息同时调用atof进行修改
flagfind=0
flagfind=1;
flagfind!
=0?
真
假
return0
图3.5-A修改个人记录程序
修改个人记录是在原有的基础上对学生信息进行修改,在修改的同时你可以看到该学生原来的信息。
以下是修改学生信息过后的显示界面。
(见图3.5-B)
图3.5-B修改个人记录的运行界面
6)查找学生记录的(N-S)流程图及运行界面
查找学生记录的(N-S)流程图(见图3.6-A)
定义数据变量
输入学生
将所输学生的学号化为double型
for(j=0;j<=n;j++)
gl[j].number==number?
真
假
将查询到的程序一一输出
flagfind=0
flagfind=1
flagfind!
=0?
真
假
您查找的记录不存在!
return0
图3.6-A查找学生记录的(N-S)流程图
该功能是对已经录入的学生信息进行查寻,如果你输入的学生学号存在,则显示学生信息,如果不存在,则提示为“您查找的记录不存在”。
运行界面如下。
(见图3.6-B)
图3.6-B查找学生记录的运行界面
7)统计出所有的学生信息的(N-S)流程图及运行界面
统计出所有的学生信息的N-S流程图(见图3.7-A)
intj
n<1?
真
假
您查找的记录不存在
for(j=0;j
printf("\nNO:
%d|",j+1)
输出全体学生相应的信息
return(0)
图3.7-A统计出所有的学生信息的(N-S)流程图
在这个子模块程序中,主要是对输入的学生信息进行统计,统计过后并输出说有的学生信息。
以下是程序的运行界面。
(见图3.7-B)
图3.7-B统计出所有的学生信息的运行界面
8)班级信息管理学生的运行界面
3.2对代码加以分析说明
#include"stdio.h"
#include"conio.h"
#include"stdlib.h"
#include"string.h"
#include"dos.h"
/*为了调用atof()等函数*/
#include"stdlib.h"
#defineTRUE1
intsystem(constchar*string);//清屏函数声明
addone();//增加学生信息
delone();//删除学生信息
modone();//修改学生信息
idone();//输出某学生的所有信息
listall();//学生成绩排名信息
wfile();//保存文件
rfile();//下载文件
voidmima();//教师密码登陆
personalInformation();//本人信息查询
informationSearch();//信息查询
studentSystem();//学生界面
voidteacherSystem();//教师界面
passwordMod();//修改密码
otherInformation();//他人信息查询
/*结构体声明*/
structinformation
{
charname[50];//姓名
doublenumber;//学号
doubleTel;//电话号码
doubleQQ;//QQ号码
doubleMath;//高数
doubleEnglish;//英语
doubleele;//电子电工
doubleLanguage;//C语言
doublesiXiu;//思修
doublePE;//体育
doubleComputer;//计算机系统基础
doubleamount;//总分
intpassword;//密码
};
structinformationgl[50];
/*建立结构体变量*/
structinformationtemp;
/*学生列表中的数量*/
intn=0;
/*获得字符串*/
charnumstr[50];
///////////////////////////////主函数/////////////////////////////////////////////////////
intmain()
{
//总界面
charch[2];//ch存放选项
intn=0;//控制输错次数
system("color3e");//颜色
while(TRUE)
{
system("cls");//清屏
printf("\t★************★***************★******************★**************★\n\n");
printf("\t\t\t欢迎来到班级管理系统\n\n");
printf("\t\t\t\t★1.学生\n\n");
printf("\t\t\t\t★2.老师\n\n");
printf("\t\t\t\t★3.结束\n\n");
printf("请选择1或2,按回车键结束\n\n");
scanf("%s",ch);
switch(ch[0])
{
case'1':
studentSystem();
break;//studentSystem学生界面
case'2':
mima();
break;//教师登陆验证
case'3':
exit(0);//退出
default:
printf("输入有误,请核对后重新输入\n\n");
}
}
}
//本人信息查询界面///////////////////////////////////////////////////////////////////////////////////////
personalInformation()
{
intn=0,i;
doublenumber1;//承接学号
system("cls");//清屏
printf("\t★************★***************★******************★**************★\n\n");
printf("\t\t\t欢迎来到学生信息服务中心\n\n");
printf("请输入你的学号,按回车键结束\n\n");
scanf("%lf",&number1);
for(i=0;i<50;i++)
{
if(number1==gl[i].number)
break;//学号验证
}
printf("姓名:
%s",gl[i].name);
printf("QQ:
%lf",gl[i].QQ);
printf("学号:
%lf",gl[i].number);
printf("\n\n");
printf("高数:
%lf",gl[i].Math);
printf("英语:
%lf",gl[i].English);
printf("电子电工:
%lf",gl[i].ele);
printf("\n\n");
printf("计算机基础:
%lf",gl[i].Computer);
printf("C语言:
%lf",gl[i].Language);
printf("思修:
%lf",gl[i].siXiu);
printf("\n\n");
printf("体育:
%lf",gl[i].PE);
printf("电话:
%lf",gl[i].Tel);
printf("总分:
%lf",gl[i].amount);
printf("\n\n");
exit(0);
}
////////////学生界面////////////////////////////////////////////////////////////////
studentSystem()
{
charch[2];
intn=0;
system("cls");
printf("\t★************★***************★******************★**************★\n\n");
printf("\t\t\t欢迎来到学生服务中心\n\n");
printf("\t\t\t\t★1.信息查询\n\n");
printf("\t\t\t\t★2.返回首页\n\n");
printf("请选择1或2,按回车键结束\n\n");
while(TRUE)
{
scanf("%s",ch);
switch(ch[0])
{
case'1':
personalInformation();break;//本人信息查询
case'2':
return;
default:
printf("输入有误,请重新输入\n\n");
}
}
}
///////////////////////////教师系统//////////////////////////
voidteacherSystem()
{
FILE*fptr;
charch[2];
n=0;
//rfile();使用后启动程序时系统会自动加载纪录*/
//////////////////////////////////////////////////////////////////
n=0;
printf("\nLoadingdate...\n");
if((fptr=fopen("成绩.rec","rb"))==NULL)
printf("Cannotopenfile成绩.rec!
\n");
else
{
while(fread(&gl[n],sizeof(gl[n]),1,fptr)==1)
n++;
fclose(fptr);
printf("Total%drecordsread!
\n",n);
}
//////////////////////////////////////////////////////////////////
while(TRUE)
{
printf("\n");
system("cls");
printf("================================================================================\n");
printf("\t\t〓〖欢迎来到班级管理系统(老师)〗〓(请在<1-8>中选择)\n");
//printf("______________________________________________________\n");
printf("\t\t★1.增加学生的信息\n");
printf("\t\t★2.删除某学生的信息\n");
printf("\t\t★3.改变某学生的信息\n");
printf("\t\t★4.输出某学生的所有信息\n");
printf("\t\t★5.学生成绩排名信息\n");
printf("\t\t★6.保存\n");
printf("\t\t★7.下载\n");
printf("\t\t★8.退出\n");
printf("\t\t★9.返回首页\n");
printf("========================================================\n");
printf("\t\t\t请选择(1-9)\n");
sca