C语言学生选课系统课程设计报告书计算机.docx
- 文档编号:23248626
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:26
- 大小:133.58KB
C语言学生选课系统课程设计报告书计算机.docx
《C语言学生选课系统课程设计报告书计算机.docx》由会员分享,可在线阅读,更多相关《C语言学生选课系统课程设计报告书计算机.docx(26页珍藏版)》请在冰豆网上搜索。
C语言学生选课系统课程设计报告书计算机
数学与计算机学院
课程设计说明书
课程名称:
计算机科学与技术程序设计语言-课程设计
课程代码:
题目:
学生成绩管理系统
年级/专业/班:
学生姓名:
学 号:
开始时间:
年月日
完成时间:
年月日
课程设计成绩:
学习态度及平时成绩(30)
技术水平与实际能力(20)
创新(5)
说明书撰写质量(45)
总分(100)
指导教师签名:
年月日
程序设计语言课程设计任务书
学院名称:
数学与计算机学院课程代码:
_8404091_
专业:
计算机科学与技术年级:
一、设计题目
学生管理系统
二、主要内容
设计一个简单的学生管理系统,实现出最基本的功能。
三、具体要求及应提交的材料
学生基本信息文件(StuInfor.txt)及其内容:
StuInfor.txt文件不需要编程录入数据,可用文本编辑工具直接生成。
学号姓名性别宿舍号码电话号码
01张成成男50187732111
02李成华女10187723112
03王成凤女10187723112
04张明明男50287734333
05陈东男50187732111
06李果男50287734333
07张园园女10287756122
……...…………..
学生成绩基本信息文件(StuScore.txt)及其内容:
学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分
01A01大学物理3667882
02B03高等数学478-190
01B03高等数学445-188
02C01VF3657666
…….……….....…
功能要求及说明:
(1)数据录入功能:
对StuInfor.txt进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据。
综合成绩、学分由程序根据条件自动运算。
综合成绩的计算:
如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%;如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*.15%+卷面成绩*70%。
实得学分的计算:
采用等级学分制。
综合成绩在90-100之间,应得学分=学分*100%综合成绩在80-90之间,应得学分=学分*80%
综合成绩在70-80之间,应得学分=学分*75%综合成绩在60-70之间,应得学分=学分*60%
综合成绩在60以下,应得学分=学分*0%
(2)查询功能:
分为学生基本情况查询和成绩查询两种
A:
学生基本情况查询:
A1----输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出。
A2---输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。
B:
成绩查询:
B1:
输入一个学号时,查询出此生的所有课程情况,格式如下:
学号:
xx姓名:
xxxxx
课程编号:
xxx课程名称:
xxxxx综合成绩:
xxxx实得学分:
xx
课程编号:
xxx课程名称:
xxxxx综合成绩:
xxxx实得学分:
xx
课程编号:
xxx课程名称:
xxxxx综合成绩:
xxxx实得学分:
xx
………………………
共修:
xx科,实得总学分为:
xxx
(3)删除功能:
当在StuInfor.txt中删除一个学生时,自动地在StuScore.txt中删除此人所有信息。
(4)排序功能:
能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
设计要求:
1.分析设计要求,给出解决方案(要说明设计实现所用的原理,采用的数据结构);
2.模块化程序设计,画出程序的基本结构框图和流程图;
3.对程序的每一部分要有详细的设计分析说明;
4.程序执行的每个步骤要有具体的提示内容或输出;
5.源代码格式规范(锯齿型书写格式),注释不少于三分之一;
6.设计合适的测试用例,对得到的运行结果要有分析;
7.设计中遇到的问题,设计的心得体会。
设计结束后,每位同学必须上交如下材料:
1.《课程设计说明书》打印稿一份;
2.《课程设计说明书》电子文档及课程设计的程序源代码刻盘
四、主要技术路线提示
首先根据要解决的问题进行分析和总体设计,得到要定义的数据结构(可使用链表或结构数组存储数据)和函数,然后进行详细编码,在主函数中对各功能函数进行测试。
五、进度安排
一周完成。
1天查阅资料和分析,3天编写软件,2天写出课程设计报告并上交。
六、推荐参考资料(不少于3篇)
1.谭浩强.程序设计题解与上机指导.北京:
清华大学出版社,2005.10
2.黄明,梁旭等编著.C语言课程设计.北京:
电子工业出版社,2006.6
3.陈清华,朱红主编.VisualC++课程设计案例精选与编程指导.南京:
东南大学出版社,2003.06
4.李春葆.C语言习题与解析A级.北京:
清华大学出版社,2006.10
指导教师签名日期年月日
系主任审核日期年月日
摘要
随着计算机的普及,计算机系统越来使用于社会的各个领域。
社会需求以及市场竞争等日新月异、瞬息万变,在这种情况下,信息进入重要资源的行列。
随着信息技术的推广应用和信息资源的不断开发利用,管理信息化正在往广度和深度发展,这导致信息管理在整个管理中地位的提升。
信息管理渗透于和体现在各种管理的全部过程。
自从有了计算机以后,好的学生选课系统能够使教育更加繁荣,更加规范化,提高了教育人士的办事效率,创造出无形的价值,让学生更好的发展。
在以前没有学生选课系统,对学生的学习情况不能够及时的了解,做出快的政策,致使很多学生延误。
因此,针对这些问题。
设计学生选课系统解决对学生每科每人的统计,能够了解学生学习情况,能够输出一览表,直观的快速的看到各种情况。
对各种数据自动化计算,大大提高了工作效率。
关键词:
学生管理系统;计算机;学生;信息。
1引言
1.1问题的提出
在现代化的教育管理中,学生管理系统有着十分重要的作用,然而,用大型软件系统来于小型的教育单位,不啻于“杀鸡用牛刀”,因此小型的的软件对于这种单位自然有十分重要作用。
1.2国内外研究的现状
现在各大高校已基本上全部使用。
1.3任务与分析
本课程设计主要是录入并保存学生的基本信息以及学生所选课程的所有信息包括课程编码、课程名称、平时成绩、学分、卷面成绩等,最后在按学生所修学分高低进行排序。
系统以菜单方式工作
1、学生信息录入功能(课程信息用文件保存)--输入
2、信息查询功能--输出
3、删除学生信息功能
4、排序功能
2程序的主要功能
2.1学生信息录入
录入学生的基本信息。
2.2信息查询
能够对所有学生的信息进行浏览
2.3删除学生信息
能够对于所有学生的信息进行删除
2.4排序
按学生所修学分高低进行排序
3程序运行平台
VC++6.0。
具体操作如下:
新建工程,建立新的源文件,再编译,链接,执行,调试
4总体设计
图4.1系统总体框架图
5模块分析:
本函数有两个结构体和两个主调函数(其中choice主调函数调用4个功能函数)。
#include
#include
#include
#include
#defineN20
structkec
{
charkcbm[10];//课程编码
charkcmc[10];//课程名称
floatxf;//学分
floatpscj;//平时成绩
floatsycj;//实验成绩
floatjmcj;//卷面成绩
floatzhcj;//综合成绩
floatsdxf;//实得学分
};
typedefstruct
{
charxh[4];//学号
charname[10];//姓名
charxb[4];//性别
charqsh[10];//寝室号码
chardhh[10];//电话号码
structkeckc[10];//所选课程
floatgxxf;//共修学分
}stu;
voidprint(stu*x);
//菜单选择
voidchoice()
{
charch;
while
(1)
{system("cls");
menu();//显示菜单
ch=getch();//选择菜单
if(ch=='0')break;
switch(ch)//判断功能项
{
case'1':
input();break;
case'2':
search();break;
case'3':
dele();break;
case'4':
sort();break;
}
}
printf("\n欢迎使用!
!
!
\n");
}
voidmain()
{
choice();//调用菜单选择
}
下面是4个函数模块:
(它们通过主菜单函数指示功能)
//菜单
voidmenu()
{
printf("学生管理系统\n");
printf("=====================\n");
printf("1.数据录入\n");
printf("2.查询\n");
printf("3.删除\n");
printf("4.排序\n");
printf("0.退出\n");
printf("====================\n");
printf("请选择相应的功能:
");
}
5.1课程录入模块:
进入主菜单后,选择功能“1”,进入学生信息录入阶段.
其函数代码为:
//数据录入
voidinput()
{system("cls");
floats;
intt;
stux;
FILE*fp;
if((fp=fopen("student.txt","ab"))==NULL)
{printf("cannotopenthisfile\n");
exit(0);
}
while
(1)
{t=0;
s=0;
printf("\n学生基本信息录入格式:
学号姓名性别寝室号码电话号码.当输入学号为1结束录入\n");
scanf("%s",x.xh);
if(strcmp(x.xh,"1")==0)break;
scanf("%s%s%s%s",x.name,x.xb,x.qsh,x.dhh);
printf("\n学生成绩基本信息录入格式课程编码课程名称学分平时成绩实验成绩卷面成绩.\n");
printf("第%d个课程信息:
当输入课程编码为A时结束\n",t+1);
while
(1)
{
scanf("%s",x.kc[t].kcbm);
if(strcmp(x.kc[t].kcbm,"A")==0)
break;
scanf("%s%f%f%f%f",x.kc[t].kcmc,&x.kc[t].xf,&x.kc[t].pscj,&x.kc[t].sycj,&x.kc[t].jmcj);
if(x.kc[t].sycj==-1)
x.kc[t].zhcj=(float)(x.kc[t].pscj*0.3+x.kc[t].jmcj*0.7);
else
x.kc[t].zhcj=(float)((x.kc[t].pscj+x.kc[t].sycj)*0.15+x.kc[t].jmcj*0.7);
if(90<=x.kc[t].zhcj)
x.kc[t].sdxf=(float)(x.kc[t].xf);
elseif(80<=x.kc[t].zhcj)
x.kc[t].sdxf=(float)(x.kc[t].xf*0.8);
elseif(70<=x.kc[t].zhcj)
x.kc[t].sdxf=(float)(x.kc[t].xf*0.75);
elseif(60<=x.kc[t].zhcj)
x.kc[t].sdxf=(float)(x.kc[t].xf*0.6);
elseif(60>x.kc[t].zhcj)
x.kc[t].sdxf=0;
s=s+x.kc[t].sdxf;
t=t+1;
printf("\n学生成绩基本信息录入格式课程编码课程名称学分平时成绩实验成绩卷面成绩.\n");
printf("第%d个课程信息:
当输入课程编码为A时结束\n",t+1);
}
x.gxxf=s;
fwrite(&x,sizeof(stu),1,fp);//将信息写入文件
}
fclose(fp);//用完文件关闭文件
getchar();
}
5.2查询信息模块:
进入主菜单后,选择功能“2”,进入更改查询信息阶段.
其函数代码为:
voidsearch()//按学号查找
{
system("cls");
stux;
FILE*fp;
charnumber[4];
printf("\n输入要查学生的学号:
");
scanf("%s",number);
if((fp=fopen("student.txt","rb"))==NULL){printf("can'topenfile!
\n");exit(0);}
while(!
feof(fp))
{fread(&x,sizeof(stu),1,fp);//把文件的学生信息读入到xs结构体
if(strcmp(number,x.xh)==0)//学号相当的时候运行下面程序
{printf("学生的信息如下:
\n");
printf("学生姓名性别寝室号码电话号码");
printf("\n%s%s%s%s\n",x.name,x.xb,x.qsh,x.dhh);
print(&x);
break;
}
}
if(feof(fp))printf("cannotfind\n");
fclose(fp);
getchar();
getchar();
}
voidprint(stu*x)
{inti;
printf("学号姓名");
printf("%s%s\n",x->xh,x->name);
for(i=0;i<10;i++)
{if(strcmp((x->kc[i]).kcbm,"A")==0)
break;
printf("课程名称:
%s综合成绩:
%6.2f实得学分:
%6.2f\n",(x->kc[i]).kcmc,(x->kc[i]).zhcj,(x->kc[i]).sdxf);
}
printf("共修科目:
%d",i);
printf("共修学分:
%6.2f\n",x->gxxf);
}
5.3删除信息模块:
进入主菜单后,选择功能“3”,进入删除信息阶段.
其函数代码为:
//删除:
输入学生姓名,若该学生存在,则删除
voiddele()
{
stuxs[N];
FILE*fp;
charname[10];
inti,len,k=-1;
system("cls");
printf("\n输入要删除的学生姓名:
");scanf("%s",name);
i=0;;
if((fp=fopen("student.txt","rb+"))==NULL){printf("can'topenfile!
\n");exit(0);}
while(!
feof(fp))
{fread(&xs[i],sizeof(stu),1,fp);
if(feof(fp))break;
if(strcmp(xs[i].name,name)==0)k=i;
i++;
}
fclose(fp);
//以下是删除后重新写文件
len=i;
if(k>=0)
{if((fp=fopen("student.txt","wb+"))==NULL){printf("can'topenfile!
\n");exit(0);}
for(i=0;i {if(i==k)continue; fwrite(&xs[i],sizeof(stu),1,fp); } printf("删除成功"); fclose(fp); } elseprintf("删除失败! ! ! \n"); getchar(); getchar(); } 5.4排序模块: 进入主菜单后,选择功能“4”,进入排序阶段。 其函数代码为: //排序 voidsort() { stuxs[N],s; voidprint(); FILE*fp; inti,j,k,len; system("cls"); i=0; if((fp=fopen("student.txt","rb+"))==NULL){printf("can'topenfile! \n");exit(0);} while(! feof(fp)) {fread(&xs[i],sizeof(stu),1,fp); if(feof(fp))break; i++; } fclose(fp); len=i; for(i=0;i {k=i; for(j=i+1;j if(xs[k].gxxf if(k! =i) {s=xs[i];xs[i]=xs[k];xs[k]=s;} } printf("\n%s%s\n","姓名","共修学分"); for(i=0;i printf("\n%10s%6.2f",xs[i].name,xs[i].gxxf); getch(); } 6系统测试 6.0进入主菜单: 输入函数代码后,运行. 图6.0—进入菜单 6.1选“1”进入学生信息录入: 图6.1--课程信息录入 6.2选“2”进入信息查询: 图6.2--更改课程信息 6.3选“3”信息删除: 图6.3--课程信息浏览 6.4选“4”排序: 图6.4—排序 结论 本次课程设计不仅完成了题目的要求,而且实现了程序的普遍化,能够适用于更普遍的情况,能够进行小数据的修改就能够改变其适用范围。 菜单函数,提示信息使得程序能够被大部分的人使用,看懂,操作,实现了使用人的普遍化。 改程序采用输入文件名,实现了对各种文件的调用,使得程序可以操作各个月份,各种信息,实现了对信息的普遍化。 本程序采用了数据之间的逻辑性,使得他们相互连接起来。 节约原代码,使得程序更加优化。 它还采用了选择程序,使得用户可以随意的操作,采用文件可以使得用户可以随意退出,而不必重复的进行庞大的数据输入。 数据采用二进制,加快了程序的处理数度,还采用了其他的优化手段。 数据输入时,程序可以发现错误信息,而且指出。 并且提示用户修改重新输入。 如果操作员输入数据时遗漏输入,程序不能够识别错误,把后面的数据当做前面数据。 (我的解决方法是在输入函数加字符但是使得函数操作复杂)。 还有程序输出还不够美观,程序的设计还存在不合理的地方,使得程序冗余。 程序所需数据较大,对一些问题没有检测到。 希望老师通过多年的经验,提出宝贵的建议,使得程序更加优化,更加实用。 通过此次课程设计,我对C程序的使用更加理解,对结构体,数组,变量,指针,文件等等更有深刻的理解。 但是本程序还存在不少问题,处理问题太少,只能处理一些基本问题。 比如说,我觉得这个学生选修课系统还应该编一个按课程排序的函数模块.这样打印出课表才美观.还有可以加入一点链表的知识,这样会使选修课系统更优化,简便,适用. 致谢 本次课程设计能顺利完成,感谢学校的大力支持,感谢数学与计算机学院为我们提供实练的机会,感谢老师的细心指导。 此次的课程设计是本人人生当中的第一个,虽然经过了一段漫长而又痛苦的过程,但最终还是完成了,这是与自己的努力和老师同学们的帮助分不开的,自己在调试过程当中还是遇到了一些问题,自己仍然不懂,是在同学和老师的帮助下才得以完成,在这里对他们的帮助与付出表示衷心感谢。 参考文献 [1]谭浩强.程序设计题解与上机指导.北京: 清华大学出版社,2005.10 [2]黄明,梁旭等编著.C语言课程设计.北京: 电子工业出版社,2006.6 [3]陈清华,朱红主编.VisualC++课程设计案例精选与编程指导.南京: 东南大学出版社,2003.06 [4]李春葆.C语言习题与解析A级.北京: 清华大学出版社,2006.10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 选课 系统 课程设计 报告书 计算机