资源描述
学生学籍管理系统C课程设计报告-正文
———————————————————————————————— 作者:
———————————————————————————————— 日期:
2
个人收集整理 勿做商业用途
经济学院(国际经济与贸易)专业
MIS课程设计
(2011 —2012学年)
设计名称: 学籍管理系统
─────────────
班 级:国贸21003班
--——--—-——-—-—--
姓 名:廉鹏、宁二龙、俞鸿辉、曾光明
—————-------——-—--—---—-—-----—
指导教师:信管教研室
——---——---—--——-—
成 绩:
--—-----—--———--
序 号:
二0一二年5月31日
目 录
1 前言 2
2 需求分析 2
2。1 课程设计目的 2
2.2 课程设计任务 2
2.3 设计环境 3
2。4 开发语言 3
2。5 系统可行性分析 3
3 分析和设计 4
3。1 功能分析 4
3。2 系统流程图 4
3。3 主要模块的流程图 5
4 E-R图………………….。.…………………………………………………。7。
5。数据字典……………………………………………………………………9
6 具体代码实现 10
7 课程设计体会 17
参考文献 17
1 前言
现代科学飞速发展,世界也不断的变化,人类的生活随着科技的发展也发生着惊天动地的变化。作为新时代的大学生,我们应该努力学习科学文化知识,以适应社会的发展要求。以现代化的科学知识为祖国做贡献。计算机C语言课程设计是一门实践性很强的课程,因此,我们可以从这里出发,将实践教学与理论教学达到密切结合。。
根据实际题目,要求我小组编写一个程序来,用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。
通过一个结构体数组来存放输入的每一位同学的信息(包括学号,姓名,性别,年龄,籍贯,系别,专业,班级),然后将其信息存入文件中。输入一个学号查询该同学的信息,并显示在屏幕上。
2 需求分析
本系统为了实现学校在校学生、离校学生各项信息资源的查询、统计、添加、删除、维护与管理,方便用户的管理与需求。学籍管理系统的系统分析的重点是对学籍管理信息系统的业务流程进行描述,通过采用流程图中的部分图形来对学生信息质量的管理活动进行规范化说明.
2。1 课程设计目的
用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。
2。2 课程设计任务
(1) 系统以菜单方式工作。
(2) 登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级;修改已知学号的学生信息;
(3) 删除已知学号的学生信息;
(4) 查找已知学号的学生信息;
(5) 显示同一系学生信息和统计人数;
(6) 显示所有学生信息和统计人数人数;
2.3 设计环境
(1)WINDOWS 2000/2003/XP/7/Vista系统
(2)Visual C++或TC集成开发环境
2.4 开发语言
C++语言
2.5系统的可行性分析
2.5.1 管理上的可行性
把教师事务、信息延伸到Internet,建立了评分系统,对于老师来讲,是信息统一化,管理透明化,学生成绩公开化的一个良好的系统,因此,对于学校教务领导来说不会对此有很大的抵触情绪,班主任及辅导员也能够相应的支持.
2。5.2 技术上的可行性
a、数据涉及的计算比较简单,适合采用数据库;
b、学校的微机在存储和运转方面能够满足数据库的需求;
c、该系统功能网上有很多文献,可以参考程序功能,帮助实现系统。
2.5.3 经济上的可行性
学生的成绩繁多增加了老师的负担,造成了管理人的信息费、大量的纸质费用,还用了大量的时间来核对,受一定的时间与物理空间的局限及学生数量,成本较高。而本系统可以帮助老师正确认识评分系统技术在学校中的重要地位,以少量的时间和资金建立评分系统。
3 分析和设计
3.1功能分析
将学生学管理系统分为:用户管理、学生信息管理、学生成绩管理和学生学籍档案管理四个功能模块,。各个管理模块现用表的方式加以说明如下:
学生学籍管理信息系统
管理员
学生成绩表
学生信息表
学生学籍管理信息表
信息的查、增、删、改
学生档案表
—
1、学生信息管理模块主要对学生信息
(学号、姓名、性别、班级、家庭住址)进行管理,本模块又分为三个子模块。
学生信息录入
学生信息查询
学生信息修改删除
2、学生成绩管理模块主要是对学生成绩进行管理,四个子模块。
学生成绩录入
学生成绩查询
学生成绩修改/删除
学生成绩统计
3、学生学籍档案管理模块主要对学校在校生的档案进行管理。
学生、奖惩情况的查询
学生报名注册登记表录入
在校生档案的查询
4、用户管理主要对用户权限设置进行管理。
用户名:密码设置(管理人员和普通用户)
3.2 系统流程图
学生学籍管理信息系统数据流程图
S01
档案单
成绩单
P03
P02
P01
D3
D2
D1
信息单
学生学籍信息管理员
学生信息录入
成绩信息录入
档案信息录入
信息数据表
成绩数据表
档案数据表
数据库
S01
档案单
成绩单
P03
P02
P01
D3
D2
D1
信息单
学生学籍信息管理员
学生信息录入
成绩信息录入
档案信息录入
信息数据表
成绩数据表
档案数据表
数据库
F05
F04
F03
F02
F01
按班级
按学号
按姓名
P01
D1
S01
信息录入
学生信息管理员
学生信息查询
信息数据表
F06
学生学籍管理员通过学生信息单,学生成绩单,学生档案单分别录入,生成信息数据表,成绩数据表,档案数据表从而成立一个总的数据库
3。3 主要模块的流程图
1、学生信息管理数据流图
学籍信息管理员通过信息单录入学生的信息,建立信息数据表。用户可根据,学号,姓名,班级来查询自己所需的信息,方便而简单。
2、学生成绩管理数据流图
学籍成绩管理人员通过成绩单录入学生的成绩,建立成绩数据表。则用户可根据,学号,姓名,班级查看自己所需的信息。
F07
F05
D
P1
P2
按姓名
按班级
按学号
F04
F03
F02
F06
成绩统计
成绩单
F01
S01
学籍成绩管理员
成绩录入
成绩查询
成绩数据表
3、档案管理数据流图
学籍档案管理员通过档案单录入学生的档案,建立档案数据表.用户可根据,学号,姓名,班级查询学生的基本档案
F07
F06
D
P2
P1
按姓名
按班级
F05
F04
F03
按学号
F02
档案单
F01
S01
学生档案管理人员
档案信息录入
档案查询
档案数据表
4、系统管理据流图
系统管理员根据用户需要设置用户及权限,建立系统数据表。使整个系统的维护
更具有安全性,保密性
F07
F05
D
P1
P2
验证
密码
用户名号
F04
F03
F02
F06
验证
登陆
F01
S01
系统管理员
建立报表
学籍系统
系统数据库
4。E-R图
系统逻辑设计的主要工作就是将E—R图转换成一张张的二维表,以及各表的属性.E-R图是系统的概念设计,对系统前期分析相当重要,它可以正确直观的反映出一个业务系统过程。本系统的E-R图如下:
班级
姓名
1
1
N
1
N
1
1
1
N
N
用户名
密码
登录
管理员/普通用户
学生学籍
从属
学生信息
联系电话
学号
专业
家庭住址
出生年月
从属
学生成绩
专业
学号
课程名称
姓名
班级
从属
学生档案
专业
姓名
学号
班级
政治面貌
奖惩
是否留级
包含
注册表
专业
班级
姓名
学号
出生年月
家庭住址
联系电话
学生学籍管理信息系统E—R图
5.数据字典
l 数据项
学生表(XS)
名称
数据类型
大小
约束
Xh(主键)
char
10
not null
Xm
char
10
not null
Xb
char
10
null
Cssj
char
10
null
Zy
char
10
null
Zxf
char
10
null
Bz
char
10
null
Kch
char
10
Not null
课程表(XS_KC)
名称
数据类型
大小
约束
Xh(主键)
char
10
Not null
Xch
char
100
null
Cj
char
10
null
性别表(XBM)
名称
数据类型
大小
约束
Xb
Char
10
Not null
Xbm
Char
10
Not null
l 数据约束
(1)实体完整性约束:基本关系的所有主键的属性都不能取空值且主键作为唯一性标识。需要满足该约束的主键:学生表(XS).学号(xh)、课程表(KCB)。课程编号(kch)。
(2)参照完整性约束:外键的值只能取空值或等于关联主键的值.需要满足该约束的外键:学生表(XS)。学号与课程表(KCB)
课程号外键关联.
(3)用户定义完整性约束:针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。需要满足该约束的属性:学生表(XS)。学号,课程表(KCB)。课程编号,.都不能为空,学生表(XS).性别只能为男或女。
l 数据流图
学生
课程
录入
查询
学生信息
课程成绩
l 数据存储信息
XS表:Xh(主键)、Xb、Xb、Cssj、Zy、Zxf、Bz、Kch(外键)。
KC表:Kch(主键)、kCM、Cj。
XBM表:Xb、Xbm。
6 具体代码实现
#include <stdio.h>
#include 〈string.h〉
#include 〈conio.h>
#include <malloc。h〉
#include <stdlib.h>
#define N 100
struct student
{char XUEHAO[20];
char XINGMING[10];
char XINGBIE[4];
char NIANLING[10];
char JIGUAN[10];
char ZHUANYE[10];
char BANJI[6];
char XIBIE[20];
}student;
void CAIDAN();
void ZHUCE();
void XIUGAI();
void SHANCHU();
void del_XUEHAO(FILE *fp);
void del_XINGMING(FILE *fp);
void CHAZHAO();
void sch_XUEHAO(FILE *fp);
void sch_XINGMING(FILE *fp);
void TONGJI();
void XIANSHI();
void TIANJIA();
void save( struct student student[]);
main()
{ char choose,yes_no;
do
{ CAIDAN();
printf(”\n 请输入序号: (1~8) ");
choose=getch();
system(”cls”);
switch(choose)
{
case'1’: printf(" %c”,choose);ZHUCE();break;
case'2’: printf(" %c”,choose);XIUGAI();break;
case'3': printf(” %c",choose);SHANCHU();break;
case'4’: printf(” %c",choose);TIANJIA();break;
case'5’: printf(” %c”,choose);CHAZHAO();break;
case'6’: printf(” %c",choose);TONGJI();break;
case'7': printf(” %c",choose);XIANSHI();break;
case’8': break;
default:printf("\n %c 序号不对!\n",choose);
}
if(choose=='8’)break;
printf("\n 要继续选择吗 ? (Y/N) \n”);
do
{ yes_no=getch(); printf(" %c",yes_no);}
while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!=’n');
}while(yes_no==’Y’||yes_no==’y');
}
void CAIDAN()
{
system("cls”);
printf(" **************************************** \n ");
printf(" * -—请选择相应的功能-- * \n ");
printf(" * 1—-———注册 * \n ");
printf(” * 2-——--修改学生信息 * \n ");
printf(" * 3-———-删除学生信息 * \n ");
printf(" * 4——--—添加学生信息 * \n ”);
printf(” * 5-——--查找学生信息 * \n ");
printf(” * 6—--——统计学生信息 * \n ");
printf(" * 7-—-——显示学生信息 * \n ”);
printf(" * 8-————退出系统 * \n ”);
printf(" **************************************** \n ");
}
/*定义学生信息注册的函数*/
void ZHUCE()
{ int i=1;
struct student temp;
FILE *fp;
fp=fopen("F://123。txt",”w");
if(fp==NULL){ printf("\n 打开文件失败! \n");return; }
printf(”\n 请输入第1个学生信息:\n”);
printf(” 学号(用#结束输入): ");
do
{ gets(temp.XUEHAO);}
while(strcmp(temp.XUEHAO,” ")==0);
printf(” 姓名(用#结束输入): ”);gets(temp。XINGMING);
printf(" 性别(用#结束输入): ”);gets(temp.XINGBIE);
printf(” 年龄(用#结束输入): ”);gets(temp。NIANLING);
printf(" 籍贯(用#结束输入): ");gets(temp.JIGUAN);
printf(" 专业(用#结束输入): ”);gets(temp。ZHUANYE);
printf(" 班级(用#结束输入): ");gets(temp。BANJI);
printf(" 系别(用#结束输入): ”);gets(temp。XIBIE);
while(temp.XUEHAO[0]!='#'&&temp.XINGMING[0]!=’#'&&temp。XINGBIE[0]!=’#'&&temp。NIANLING[0]!='#'&&temp.JIGUAN[0]!=’#'&&temp。ZHUANYE[0]!=’#'&&temp。BANJI[0]!='#'&&temp.XIBIE[0]!='#'&&temp.XIBIE)
{ fprintf(fp,”%5s%10s%10s%10s%10s%10s%10s%10s\n”,temp。XUEHAO,temp。XINGMING,temp.XINGBIE,temp.NIANLING,temp。JIGUAN,temp。ZHUANYE,temp.BANJI,temp。XIBIE,temp);
i++;
printf(”\n 请输入第 %d 个学生信息:\n ”,i);
printf(" 学号(用#结束输入): ");
do
{ gets(temp.XUEHAO);}
while(strcmp(temp.XUEHAO," ")==0);
printf(” 姓名(用#结束输入): ");gets(temp.XINGMING);
printf(" 性别(用#结束输入): ");gets(temp。XINGBIE);
printf(" 年龄(用#结束输入): ”);gets(temp。NIANLING);
printf(" 籍贯(用#结束输入): ”);gets(temp。JIGUAN);
printf(” 专业(用#结束输入): ”);gets(temp。ZHUANYE);
printf(" 班级(用#结束输入): ");gets(temp。BANJI);
printf(" 系别(用#结束输入): ");gets(temp.XIBIE);
}
student=temp;
save(&temp);
fclose(fp);
}
/*定义保存函数*/
void save( struct student student[])
{
FILE *fp=NULL;
fp=fopen("F://123。txt”,"ab+");
fwrite(student,sizeof(struct student),1,fp);
fclose(fp);
}
/*定义查找学生信息的函数*/
void CHAZHAO()
{ char c;
FILE *fp;
fp=fopen("F://123.txt”,”r");
if(fp==NULL)
{ printf("\n 打开文件失败! \n");return; }
printf("\n 按学号查找( 1 ),还是按姓名查找( 2 )? ”);
c=getch();
putch(c);
if(c=='1') sch_XUEHAO(fp);
else if(c=='2’) sch_XINGMING(fp);
else printf(”\n 非法字符!\n”);
fclose(fp);
}
/*定义按学号查找学生信息的函数*/
void sch_XUEHAO(FILE *fp)
{ int flag=0,n=0;
char tempXUEHAO[20];
struct student temp;
printf(”\n 请输入要查找学生信息的学号: ”);
gets(tempXUEHAO);
while(feof(fp)==0)
{ fscanf(fp,”%5s%10s%10s%10s%10s%10s%10s%10s\n”,&temp。XUEHAO,&temp。XINGMING,&temp.XINGBIE,&temp。NIANLING,&temp。JIGUAN,&temp。ZHUANYE,&temp。BANJI,&temp。XIBIE);
if(strcmp(tempXUEHAO,temp。XUEHAO)==0)
{ if(flag==0)
printf(” 学号 姓名 姓别 年龄 籍贯 专业 班级 系别\n");
printf(”%5s%10s%10s%10s%10s%10s%10s%10s\n",temp。XUEHAO,temp.XINGMING,temp。XINGBIE,temp.NIANLING,temp.JIGUAN,temp。ZHUANYE,temp.BANJI,temp。XIBIE);
flag=1;
}
n++;
}
if(n==0) printf(”\n 文件中无此信息!\n”);
else if(flag==0) printf("\n 文件中无此人!\n”);
}
/*定义按姓名查找学生信息的函数*/
void sch_XINGMING(FILE *fp)
{ int flag=0,n=0;
char tempXINGMING[10];
struct student temp;
printf(”\n 请输入要查找学生信息的姓名: ”);
gets(tempXINGMING);
while(feof(fp)==0)
7课程设计体会
通过这次的C语言课程设计,我获益匪浅。首先最深的是课本知识学的再好,也需要实际的检验.我从这次的课程中我认识到了自己的许多不足,满以为自己学的很好,可是到实际运用时,才发现自己这也不行,那里不足.让我深刻认识到自己所学知识必须运用于实际,让实际来检验自己的水平。同时这次课程设计也给了我们一个真正展示自我的机会,我通过自己的努力和老师、朋友的帮助顺利完成了这次课程设计
参考文献
[1] 张福祥. C语言程序设计[M]。 沈阳:辽宁大学出版社,2010.1
[2] 张福祥,王萌.C语言程序设计习题解答与实验实训[M].沈阳:辽宁大学出版社,2010.1
[3] 牛莉,刘远军等.计算机等级考试辅导教程[M].北京:中国铁道出版社,2008
17
展开阅读全文