C课程设计学生成绩数据库管理系统文档格式.docx
- 文档编号:20048431
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:22
- 大小:272.69KB
C课程设计学生成绩数据库管理系统文档格式.docx
《C课程设计学生成绩数据库管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《C课程设计学生成绩数据库管理系统文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
名次:
系统功能模块如下:
(1)建立学生成绩库(单独一个执行文件创建数据库);
(2)将学生成绩库读入到一个结构体数组中,并计算;
(3)菜单实现以下功能:
①计算每个学生的总成绩;
②按总成绩排定学生名次;
③学号为单号的学生实现以下功能:
新增一个学生成绩并显示、按学号查询学生成绩;
④学号为双号的学生实现以下功能:
修改一个学生成绩并显示、按学号查询学生成绩。
(4)修改后的成绩库数据写入到另一个新文件中。
1.1.2.设计要求:
1)要求每个学生必须独立思考,认真并按时完成本课程设计所包含的所有内容;
2)要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务分析过程和算法,给出程序流程图和全部源程序;
3)设计报告的完整格式应包括以下部分的内容:
1设计总体思路;
2程序及各个模块说明;
3总体模块框图;
4各个程序模块说明;
5程序流程图;
6程序清单;
7课程设计总结与体会(不少于400字)。
4)上机时要求必到,设计完成,必须演示程序,答辩并提交设计报告。
5)总评成绩由三部分组成:
报告占20%,平时占20%,课程设计题目各占30%。
1.2、进度安排
星期
8:
00至12:
00
14:
00至18:
备注
19周星期二
上机编程
老师指导
19周星期三
学生自选
19周星期四
19周星期五
上机答辩
上午学生自选
2、设计内容
2.1设计总思路
1.创建一个构建数据库程序,将学生成绩写入并保存在文件中。
2.创建主函数,在主函数中实现学生成绩数据库的建立,并且将菜单在主函数中建立,将输入的学生的语文和数学相加得到学生的总分,按学生的总分排序(用冒泡法),按排序的结果排名。
在菜单中实现各函数的调用,
以实现各功能的实现。
在调用个函数时用一个循环,这样可以一次性的完成题目的要求。
3.在插入的模块中,将要插入的学生信息放在另一个结构体数据中,将插入的语文和数学相加得其总分,将总分和前面的学生总分比较,将排名在插入学生后的学生后移一位,并按这个顺序排名。
4.修改的函数中输入学生的学号,用一个循环将每一个学生的学号和这个学生相比,检验学生的学号是否和要修改的学号相一致,如果一致,就将要修改的成绩输入到该学号中。
5.查询的模块中,输入要查询的学号,并又用一个循环将要查询的学号和学生的学号相比,如果相同则显示该学生的信息。
6.在显示的模块中,又将每一个的学生排序(冒泡法),按排序的结果排名,并按讯排序的结果依次显示出来。
7.在复制的函数中先将数据从文件中读出,在将数据写到另一个文件中。
2.2各个模块的说明
程序的模块组成:
构建数据库程序主函数:
voidmain()
成绩管理系统程序主函数:
voidmain();
成绩修改函数:
voidedit();
成绩查询函数:
voidfind();
成绩显示函数:
voidshow();
总分排名函数:
voidarray();
新增学生成绩函数:
voidinsert();
计算总分函数:
voidadd();
保存修改后学生成绩函数:
voidfileput();
各个模块功能描述:
在构建数据库程序函数中实现学生成绩的写入,并保存到文件中。
在成绩管理系统程序主函数中实现学生数据库的读取,以及菜单的选择。
voidadd():
计算学生成绩总分;
voidarray():
将总分排名;
voidinsert():
将要插入的数据插入函数中;
voidedit():
输入学生的学号,修改该学生的成绩;
voidfind():
输入学生的学号,查询该学生的成绩;
voidshow():
显示学生的所有信息,包括学生的姓名,学号,语文数学成绩,总分,排名。
voidfileput():
将修改后的成绩保存到另一文件中。
2.3各个程序模块的说明
学生信息结构体:
structstu/*定义一个结构体*/
{
longintstuNum;
charname[20];
intmath;
intchinese;
intsum;
intpos;
}U[N];
学生数据显示模块:
voidshow(intn)
{printf("
学号姓名数学语文总分排名\n"
);
inti;
for(i=0;
i<
n+addnum-1;
i++)
printf("
%ld%5s%3d%3d%3d%3d\n"
U[i].stuNum,U[i].name,U[i].math,U[i].chinese,U[i].sum,U[i].pos);
printf("
********************************************************************************\n"
}
总成绩计算函数:
voidadd(intn)
n-1;
U[i].sum=U[i].math+U[i].chinese;
voidarray(intn)
inti,j,min,temp,Upos;
min=U[0].sum,Upos;
i++)/*求出结构数组中sum的最小值*/
if(min>
U[i].sum)min=U[i].sum;
i++)/*双循环对结构数组中sum值进行排序*/
{
Upos=0;
temp=U[0].sum;
for(j=0;
j<
j++)
{
if(temp<
U[j].sum)
{
temp=U[j].sum;
Upos=j;
}
}
U[Upos].pos=i+1;
U[Upos].sum=min-1;
/*使每一轮的循环得到的最大值小于结构数组中sum的最小值*/
}
新增学生信息函数:
voidinsert(intn)
{
intj;
请输入新增学生总数\n"
scanf("
%d"
&
addnum);
学号姓名数学语文\n"
for(j=n-1;
scanf("
%ld%s%d%d"
U[j].stuNum,U[j].name,&
U[j].math,&
U[j].chinese);
成绩查询(修改)函数:
longintfind(intn)
longintnum;
请输入要查找(修改)学号\n"
%ld"
num);
n;
if(U[i].stuNum==num)
printf("
break;
if(i==n)
error!
can'
tfindthestudent\n"
returni;
voidedit(intn)
请输入该生成绩\n数学语文\n"
%d%d"
U[n].math,&
U[n].chinese);
保存修改后成绩函数:
voidfileput(intn)
FILE*fp;
if((fp=fopen("
teminaldata.txt"
"
w"
))==NULL)
writetofileerror.\n"
exit
(1);
fprintf(fp,"
/*利用文件格式化输出函数顺序向文件写入数据*/
fclose(fp);
2.4原程序流程图:
输2
输1
学生成绩的插入
文件的复制
程序的结束
2.5原程序清单
2.5.1构建数据库程序清单:
#include<
stdio.h>
stdlib.h>
#defineN1000
inti,n;
请输入学生总数\n"
n);
structstu/*定义一个结构体*/
longintstuNum;
charname[20];
intmath;
intchinese;
intsum;
intpos;
}U[N];
请输入一个或多个学生在成绩并以回车结束输入\n学号姓名数学语文\n"
U[i].sum=U[i].pos=0;
U[i].stuNum,U[i].name,&
U[i].math,&
U[i].chinese);
basedata.txt"
cannotopenfile.\n"
2.5.2学生成绩管理系统程序清单:
intaddnum=0;
/*定义新增学生成绩数为外部变量*/
voidadd(int);
/*计算学生的总成绩*/
voidarray(int);
/*对学生的总成绩进行排名*/
voidinsert(int);
/*新增学生成绩*/
longintfind(int);
/*根据学号查找学生成绩*/
voidedit(int);
/*根据学号修改学生成绩*/
voidfileput(int);
/*将修改后的数据存入一个新的文件中*/
voidshow(int);
/*显示所有学生成绩*/
r"
intn,j;
for(n=0;
!
feof(fp);
n++)
fscanf(fp,"
%ld%s%d%d%d%d"
U[n].stuNum,U[n].name,&
U[n].chinese,&
U[n].sum,&
U[n].pos);
/*利用文件格式化输入函数顺序读取文件内容*/
add(n);
********************************请输入下列序号**********************************\n"
1按总成绩排定学生名次;
2新增学生成绩;
\n3查找学生成绩;
4修改学生成绩;
\n"
do
j);
switch(j)
case1:
{array(n);
add(n);
show(n);
}break;
case2:
{insert(n);
add(n+addnum);
array(n+addnum);
case3:
find(n);
case4:
{edit(find(n))/*函数作为实参*/;
array(n);
default:
printf("
error\n"
}while
(1);
fileput(n);
3、调试与分析
构建数据库系统的调试:
输入学生成绩信息.
学生成绩管理系统:
1.显示菜单:
2.显示成绩,按高低排序得出总分和排名.
3.插入学生的信息:
4.查询学生的信息:
5.修改学生的信息:
4、总结与体会
本次的C语言程序设计是我步入大学以来第一个程序设计。
由于是第一次,所以当我看到课题要求时,又是好奇又是茫然。
一时间真不知如何下手。
后来自己逐渐静下心来自习审题,发现这个程序比较复杂,设计到很多C语言知识,特别是本程序包涵了“文件”一章的内容,而不巧的是,老师在课堂上并没有重点讲授本章内容,所以我又不得不拿起书来自学,经过一番女里,终于对“文件”有一定的了解,但还是不够深刻,接下来变开始编写程序了,首先我花了很多功夫打好一个结构,主函数框架。
依靠同学的帮助,成功的讲“文件”内容应用到了程序中。
再后来,就是将一个个调用函数补充完整,就这样一个程序的雏形完工了。
最后,经过2次上机调试,对程序进行了部分修改,将输入格式进一步美化,终于,我的程序诞生了。
这次的编程,让我感触良多。
我进一步的掌握了书本上的知识。
我懂得了如何运用C语言知识去解决某些实际问题。
当然,老师的悉心指导和同学的帮助也是不可忽视的,在此感谢本次课程设计中所有辅导老师对我的关心和帮助,诚心诚意感谢他们对我的鼓励与教导,是她们在我迷茫的时候给了我些许提示,激发了我编程的灵感;
还有,我在此也十分感谢本次课程设计中同学们对我的帮助,尽管本次不是团队合作,但是他们也给了我不少的提示和帮助,是他们让我有信心坚持做下来,在此感谢他们!
总之,获益匪浅啊!
电气信息学院课程设计评分表
课题名称:
学生成绩数据库管理系统设计
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 学生 成绩 数据库 管理 系统