C语言课程设计报告学生学籍管理系统 1.docx
- 文档编号:24871069
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:17
- 大小:142.84KB
C语言课程设计报告学生学籍管理系统 1.docx
《C语言课程设计报告学生学籍管理系统 1.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告学生学籍管理系统 1.docx(17页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告学生学籍管理系统1
信息学院
课程设计Ⅰ报告
课程名称___C语言程序设计___
题目名称学生学籍管理系统
学生学院_信息学院_____
专业班级_计科12
学号
学生姓名
指导教师____________
2013年12月26日
目录
一、设计目的与要求3
1.1题目与设计要求3
1.2本程序设计的知识点4
二、功能设计4
2.1总体设计4
2.2详细设计5
4.1测试结果及分析12
五、总结14
六、参考文献14
一、设计目的与要求
1.1题目与设计要求
题目:
学生学籍管理系统
目的:
1、了解和熟悉VisualC++软件编程开发环境
2、熟练掌握结构化程序设计的步骤和模块化设计方法
3、熟练掌握C语言数据类型,熟记字符型数据和整形数据的定义和使用
4、熟练掌握用while语句、do…while语句和for语句实现循环结构程序设计的方法
5、掌握一维数组、二维数组的定义、赋值和输入输出的方法
6、掌握与数组有关的算法(特别是排序算法,熟练掌握冒泡排序法)
7、熟悉函数的定义、声明方法及全局变量和局部变量的概念与用法,掌握函数的调用方法
8、掌握结构体类型变量的定义和使用及结构体类型数组的概念和应用
设计要求:
学生学籍信息管理系统设计
1、需求分析
学生基本信息、学生成绩基本信息要存入文件当中,因而要提供文件的输入输出操作;查询功能要求提供查找和显示操作;删除功能要求实现删除操作;排序功能要求实现排序操作;另外还应该提供键盘式选择菜单以实现功能选择。
2、总体设计
整个系统可以设计为数据录入模块、数据查询模块、数据删除模块和数据排序模块。
3、详细设计
设计学生基本信息和学生成绩基本信息结构体数组。
Struct
{
intstuNo;//学号
charname[20];//姓名
charsex[2];//性别
intdomNum;//宿舍号
inttel;//电话号码
}StuInfo;//学生基本信息结构体
Struct
{
intstuNo;//学号
charcourseNo;//课程编号
charcourseName;//课程名称
intcreditHour;//学分
InttriGrade;//平时成绩
IntexperiGrade;//实验成绩
IntexamGrade;//卷面成绩
FloattotalGrade;//综合成绩
FloatfinalCreHour;//实得学分
}StuGraInfo;//学生成绩基本信息结构体
(1)数据录入模块:
学生基本信息文件可以在磁盘建立,采用写文件方式录入学生成绩基本信息。
综合成绩和实得学分通过计算得到。
(2)查询模块:
通过菜单选择查询功能,再选择学生基本情况查询和成绩查询,若选择前者,再通过菜单选择学号、姓名或宿舍号码,按照基本查找算法查找A.TXT,然后把查找结果输出若选择后者,则先在A.TXT中查找学号对应的姓名,再在B.TXT中查找该学生的课程情况,并统计科目和实得总学分,输出结果。
(3)删除模块:
通过菜单选择删除学生的功能,输入要删除学生的学号,则分别在A.TXT和B.TXT中查找该生信息,删除之;或者输入学生的姓名,先在A.TXT中得到该生的学号,删除该生信息,再在B.TXT中删除该学号对应的信息。
注意:
C语言中没有直接删除信息的函数,需要自己实现,可以采取读出数据,判断数据(如果不删除,则进入缓冲区,否则删除),写入数据(把缓冲区中的数据写入文件)的步骤进行。
(4)排序模块:
通过菜单选择排序依据,采用排序算法(冒泡、插入、选择等)对数据进行排序并输出结果。
1.2本程序设计的知识点
陈述开发过程中用到的知识点,如结构体、数组、指针等。
二、功能设计
2.1总体设计
其中包含数据录入模块、查询模块、删除模块、排序模块四大功能功能模块
2.2详细设计
2.3分块设计
三、程序实现
利用了组合体的方式定义结构体数组,提供学生基本信息,定义如下:
typedefstruct{
intId;//学号
charname[10];//姓名
charsex[6];//性别
introom;//宿舍号
inttel;//电话号码
}StudentInfo;//定义学生信息的结构体类型
同时定义了另一结构体数组,提供学生成绩基本信息,定义如下:
typedefstruct{
intId;
charcourseNo[10];//课程编号
charcourseName[20];//课程名
floata;//课程学分
floatb;//平时成绩
floatc;//实验成绩
floatd;//卷面成绩
floate;//综合成绩
floatf;//实际学分
}MarkInfo;//定义课程信息的结构体类型
使用以上结构体数组,使程序变得思路清晰,设计过程也变得相对简单。
同时,定义并使用了如下函数,声明和定义
voidReadFile();//读取文件
voidDisplayMainMenu();//显示主菜单
voidDataInput();//数据录入
voidDataQuery();//数据查询
voidDataDelete();//数据删除
voidDataSort();//数据排序
voidQueryById(int);//按学号查询
voidQueryByRoom(int);//按宿舍查询
voidQueryMark(int);//按成绩查询
voidsort1();//按综合成绩排序
voidsort2();//按实得学分排序
voidmarkput();//成绩输出
StudentInfosi[30];//学生信息结构数组
MarkInfomi[150];//学生成绩结构数组
intsp=0;//学生信息结构数组中学生数
intmp=0;//学生成绩结构数组中成绩数
***************读取数据、计算***************
在这段功能模块中,利用指针变量来读取结构体数组文件中的相应信息,是程序的编写、阅读和运行变得简洁明了。
此外,在这段程序中,还对文件中的数据按照题目的具体要求对综合成绩和学分做了自动计算。
voidReadFile()
{
FILE*fp;
if((fp=fopen("A.txt","r"))==NULL)
printf("cantopenthefile\n");
while(!
feof(fp))
{
fscanf(fp,"%d%s%s%d%d",&si[sp].Id,si[sp].name,&si[sp].sex,&si[sp].room,&si[sp].tel);
sp++;
}
fclose(fp);
fp=fopen("B.txt","r");
while(!
feof(fp))
{
fscanf(fp,"%d%s%s%d%d%d%d",&mi[mp].Id,mi[mp].courseNo,mi[mp].courseName,&mi[mp].a,&mi[mp].b,&mi[mp].c,&mi[mp].d);
if(mi[mp].c==-1)
mi[mp].e=0.3*mi[mp].b+0.7*mi[mp].d;
else
mi[mp].e=0.15*mi[mp].b+0.15*mi[mp].c+0.7*mi[mp].d;
if(mi[mp].e>=90.)mi[mp].f=mi[mp].a;
elseif(mi[mp].e>=80.)
mi[mp].f=mi[mp].a*0.8;
elseif(mi[mp].e>=70.)
mi[mp].f=mi[mp].a*0.75;
elseif(mi[mp].e>=60.)
mi[mp].f=mi[mp].a*0.6;
elsemi[mp].f=0;
mp++;
}
fclose(fp);
}
***************显示主菜单***************
这部分是对本程序的主要功能做出的展示,体现了本程序的五大功能,简洁明白,一目了然。
VoidDisplayMainMenu()
{
printf(“\n1)数据录入\n2)数据查询\n3)数据删除\n4)数据排序\n5)程序结束\n“);
}
***************数据录入模块*******************
录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据,即对关于学生成绩基本信息的结构体数组进行输入,也就是文件B.TXT中的内容。
voidDataInput()
{
FILE*fp;
inti;
printf("学生的学号课程编号课程名称学分平时成绩实验成绩卷面成绩\n");
while
(1)
{scanf("%d%s%s%d%d%d%d",&mi[mp].Id,mi[mp].courseNo,mi[mp].courseName,&mi[mp].a,&mi[mp].b,&mi[mp].c,&mi[mp].d);
if(mi[mp].Id==-1)break;
if(mi[mp].c==-1)
mi[mp].e=0.3*mi[mp].b+0.7*mi[mp].d;
else
mi[mp].e=0.15*mi[mp].b+0.15*mi[mp].c+0.7*mi[mp].d;
if(mi[mp].e>=90.)mi[mp].f=mi[mp].a;
elseif(mi[mp].e>=80.)
mi[mp].f=mi[mp].a*0.8;
elseif(mi[mp].e>=70.)
mi[mp].f=mi[mp].a*0.75;
elseif(mi[mp].e>=60.)
mi[mp].f=mi[mp].a*0.6;
elsemi[mp].f=0;
mp++;
}
fp=fopen("B.txt","r+");
for(i=0;i fprintf(fp,"%d%s%s%d%d%d%d",&mi[i].Id,mi[i].courseNo,mi[i].courseName,&mi[i].a,&mi[mp].b,&mi[i].c,&mi[i].d); fclose(fp); } *******************查询模块******************** 此段程序是为实现信息查询功能而设计的。 总体来讲,分为两大功能模块,一是学生基本信息查询,二是对学生成绩的查询。 在第一种查询,即对学生基本信息的查询中,又提供了两种查询方式,一种是按学号对学生基本信息进行查询,一种是按宿舍号码对学生基本信息进行查询。 VoidDataQuery() { intx,y,z; printf(“\n1)学生基本情况查询\n2)成绩查询\n”);--------------------------选择查询内容 scanf(“%d”,&x); if(x==1)//查询学生信息 { printf(“1)按学号查询2)按宿舍查询\n”);-------------------------------选择查询方式 scanf(“%d”,&y); if(y==1) { printf(“输入学号\n”);-----------------------------------------------按学生学号查询 scanf(“%d”,&z); QueryById(z); } if(y==2) { } if(x==2)//查询成绩信息---------------------------------------查询学生成绩(输入学号) { printf(“输入学号\n”); scanf(“%d”,&y); QueryMark(y); } } ******************删除模块******************* 此模块提供了按学号实现删除学生信息的功能,当在文件A.TXT中删除一个学生时,自动地在文件B.TXT中删除此人所有信息。 voidDataDelete() { FILE*fp; intx; inti=0; intk,d; printf("输入学号\n"); scanf("%d",&x); while(si[i].Id! =x)i++; if(i { for(k=i;k { si[k]=si[k+1]; } } if(i d=0; for(k=0;k { if(mi[k].Id==x)d++; elsemi[k-d]=mi[k]; } mp=mp-d; fp=fopen("D: B.txt","r+"); for(i=0;i fprintf(fp,"%d%s%s%d%d%d%d",&mi[i].Id,mi[i].courseNo,mi[i].courseName,&mi[i].a,&mi[i].b,&mi[i].c,&mi[i].d); } ***************排序模块****************** 利用voidsort1()函数按计算所得的综合成绩进行排序。 voidsort1() { inti,j; MarkInfot; for(i=mp-1;i>=1;i--) { for(j=0;j { if(mi[j].e>mi[j+1].e) { t=mi[j]; mi[j]=mi[j+1]; mi[j+1]=t; } } } markput(); } 四、测试分析 4.1测试结果及分析 显示主菜单 数据录入功能。 对成绩进行录入 (2)查询功能,按学号进行查询 (3)排序功能按综合成绩排序 (4)删除功能 退出程序 五、总结 这次学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来才能做好每一件事。 在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体、文件、指针等。 为了解决问题,最好就是多向同学,老师请教。 六、参考文献 参考文献必须是在课程设计中真正阅读过和运用过的,文献按照在正文中的出现顺序排列。 [1]谭浩强,《C语言程序设计》(第四版)[M],清华大学出版社,2008年 [2]谭浩强.编著.C程序设计题解与上机指导.北京: 清华大学出版社,1992 [3]潭浩.田淑清编著.PASCAL语言程序设计〔第二版〕.北京: 高等教育出版社,1998
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言课程设计报告学生学籍管理系统 语言 课程设计 报告 学生 学籍 管理 系统