C语言学生信息管理系统项目实训文档知识讲解Word格式文档下载.docx
- 文档编号:18194688
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:23
- 大小:111.41KB
C语言学生信息管理系统项目实训文档知识讲解Word格式文档下载.docx
《C语言学生信息管理系统项目实训文档知识讲解Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言学生信息管理系统项目实训文档知识讲解Word格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。
综合应用数组、指针、结构体、文件等,对该设计题目进行设计和实现。
课程设计完成后,提交课程设计报告。
2需求分析
2.1学校每一学期到要考试,这就会有成绩的录入工作,用怎样的方法才能更好的,更快的,更轻松,更完美的把这种事情做好了?
这就要用到学生信息管理系统了。
学生信息管理系统能完成你想要的需求,改变了以前一些麻烦现状,化麻烦为轻松。
实现了快捷办公的需求。
2.2目前,学校学生管理是教务管理中的一个极为重要的环节,它是整个管理的核心和基础。
由于学校规模进一步扩大,学生人数逐年上升,学生情况的管理也变得越来越复杂。
面对如此繁杂的任务。
如果让个人去管理文档,就会显得费时费力。
尤其在管理成绩时,任务更加繁重,就成绩管理本身来说,它是一项任务繁重、时效性较强的系统工作,它不但涉及学生个人成绩查询,更涉及到各教师的工作效率和质量。
近年来随着计算机的迅速发展,计算机已经在社会各个领域显示了它巨大的作用。
毋庸置疑,切实有效地把计算机管理引入学校教务管理中,对于促进学校管理制度,提高学校教学质量与办学水平有着显著意义。
3软件开发工具与环境概述
3.1开发工具:
TurboC2.0/visualC6.0
3.2运行环境:
硬件环境:
现在的计算机硬件基本上都支持,因为本系统小,可行性高,几乎能在所有计算机上运行。
操作系统:
Windows98/2000/XP/win7等可以
4概要设计
a)用户接口设计
4.1用户接口:
本系统支持在DOS环境下运行。
4.2内部接口:
系统内部模块之间采用直接调用的方式,所有的参数传递通过函数调用的方式运行。
4.3出错信息:
当系统运行过程中出现错误时,将给出相关的错误信息。
b)模块说明
(一)输入学生成绩
(二)浏览学生成绩
(三)修改学生成绩
(四)删除学生成绩
(五)排序学生成绩
(六)查找学生成绩
(七)安全退出系统
c)数据结构设计
本程序采用链表结构实现存放学生信息,链表结构图如下
d)菜单设计
用switch语句对学生信息进行选择性的编辑
a)当用户输入!
时,进入菜单选择;
b)当用户输入1时,创建新的学生信息,并输出链表中的全部信息。
c)当用户输入2时,浏览学生信息,可以查看所有学生的信息;
d)当用户输入3时,修改学生的信息,按学号或姓名修改;
e)当用户输入4时,删除学生信息;
f)当用户输入5时,排序学生信息,选择按学号或总分排序;
g)当用户输入6时,查找学生信息,按学号或姓名查找;
h)当用户输入7时,保存学生信息;
i)当用户输入8时,退出系统。
e)系统结构图
5详细设计
2.主函数模块的流程图
2.功能模块与程序的关系
程序1
程序2
程序3
程序4
程序5
程序6
创建
Creat
while
if
浏览
Display
修改、插入
Insert
删除
Del
排序
Paixu
查找
Find
保存
Load
退出
Sexit
1.每个模块的详细设计
a)创建学生信息链表
Ø
函数原型、功能和形参说明
1.函数原型:
student*creat()
2.函数功能:
创建基础数据函数,并带回一个指向链表头的指针
3.参数说明:
student*head链表头结点指针
4.核心程序:
{nti;
structstudent*head,*p1,*p2;
p1=p2=(structstudent*)malloc(LEN);
n=0;
p1->
total=p1->
score[0]+p1->
score[1]+p1->
score[2]+p1->
score[3];
if(n==0)head=p1;
elsep2->
next=p1;
p2=p1;
n++;
}
b)学生信息的保存
save(student*head)
以文件的形式保存数据
核心程序:
{FILE*fp;
student*p;
if((fp=fopen("
d:
\\STU_LIST"
"
wb"
))==null)
{printf("
Cannotopenthefile!
\n"
);
return;
printf("
\nSaveingthefile!
p=head;
while(p!
=null)
{fwrite(p,LEN,1,fp);
p=p->
next;
}
fclose(fp);
c)输出链表函数
output(student*head)
输出链表函数
{student*p;
p=head;
if(head!
=NULL)
do{printf("
%8ld%6s%4s%2d%2d%2d%2d%-.2f%3d\n"
p->
id,p->
name,p->
sex,p->
score[0],p->
score[1],p->
score[2],p->
score[3],p->
total/4.0,p->
total);
printf("
-----------------------------------------------------------------------\n"
p=p->
}while(p!
=NULL);
}
d)修改结点函数
1.函数原型:
structstudent*insert(structstudent*head)
2.函数功能:
修改学生的信息
3.参数说明:
student*head
核心程序:
structstudent*insert(structstudent*head)
structstudent*p1,*p2,*p3;
请输入修改信息!
p1=(structstudent*)malloc(LEN);
/*计算总分*/
p2=head;
if(head==NULL)
{head=p1;
next=NULL;
else{while((p1->
id>
p2->
id)&
&
(p2->
next!
=NULL))
{p3=p2;
p2=p2->
if(p1->
id<
=p2->
id)
{if(head==p2){p1->
next=head;
head=p1;
else{p3->
next=p2;
else{p2->
return(head);
e)删除结点函数
structstudent*delete(structstudent*head,longintnum)
删除学生的信息
{structstudent*p1,*p2;
要删除的学生准考证号为:
%ld\n"
num);
{printf("
这是一个空表,没有可删除的学生准考证号!
else{p1=head;
while(num!
=p1->
id&
{p2=p1;
p1=p1->
if(num==p1->
{if(p1==head)head=p1->
next=p1->
删除准考证号为%ld的学生\n"
n--;
elseprintf("
没找到准考证号为%ld的学生!
f)排序函数
paixu(structstudent*head)
对学生成绩排序
……
p1=head;
for(k=0;
k<
m;
k++)
{p[k]=p1;
m-1;
for(j=k+1;
j<
j++)
if(p[k]->
total<
p[j]->
total)
{p2=p[k];
p[k]=p[j];
p[j]=p2;
……
g)计算平均分函数
1.函数原型:
dkarg(structstudent*head)
2.函数功能:
计算出学生各科成绩总分和平均分
3.参数说明:
student*head链表头结点指针
核心程序:
{arg1+=p1->
score[0];
arg2+=p1->
score[1];
arg3+=p1->
score[2];
arg4+=p1->
arg1/=m;
arg2/=m;
arg3/=m;
arg4/=m;
h)读取信息
5.函数原型:
student*load()
6.函数功能:
将文件从磁盘中读出
7.参数说明:
if(fread(p,LEN,n,fp)!
=1)
{
if(feof(fp))
return(p);
i)查找
函数原型:
structstudent*find(structstudent*head,longintnum)
函数功能:
根据用户输入的学生姓名进行查找,并将结果输出
参数说明:
student*head,longintnum
……structstudent*p1;
要查找的学生准考证号为:
这是一个空表,没有要查找的学生准考证号!
{p1=p1->
6系统测试
本学生信息管理系统能够完成一定的应用要求,不足的地方还有很多,如功能还不够多,还是需要添加的,系统有点寒酸,没有设计好的界面,但是还是可以用的。
(1)能够通过编译时出现的出错提示信息,进行初步的纠错。
(2)完成一个程序的一般步骤为设计,录入,编译,如果出错,则修改,然后再编译,编译成功后,看看结果是否正确,如果结果不正确,则再重复以上步骤。
7结束语
这次的课程设计完全是自己第一次接触程序设计的整个过程。
以前只是看书,还不曾写过代码,这次要自己写还真是有点难度,于是就去看书,不会在上网找资料,看看别人是怎么写的,然后在自己实实在在的编写自己的程序。
程序并不是那么的复杂,写出来后才感到设计一个软件还真是不简单。
要按照一个固定的流程去完成这次课程设计,这也是开发软件所必需的步骤。
确实规范的编一个系统是比较长时间的没有耐心是做不出来的。
在学习的过程中有让我进一步了解自己能力的不足,所以要及时去学习自己需要的知识,要掌握一门语言是经过多次实践的,没有一定的实战演练,再厉害也只能是纸上谈兵。
程序的设计是一个系统的工程,需要我们掌握多方面的知识。
在这次课程设计中,我觉得自己的知识面还是有欠缺的。
需要在以后的学习中加以注意,要全面的提高自己的知识面与知识层次。
通过这次的课程设计,我的编程能力得到了一定的提高,当然调试程度的能力也相应的提高,从中体会到:
编程一定要细心,哪怕是一个小点和空格都可以决定你这个程度能不能运行。
在做这个程序时遇到的困难还是挺多的,就是因为我以前学的比较少,所以遇到的困难比其它同学都要多,但我经过自己去上网查和去图书馆查资料书,自己解决了一小部分问题,大学不像是高中,大学大部分是靠自己自学的,要求大学生要有一定的自学能力就是这样的道理,老师都只是在课堂上讲一些理论上的东西,剩下的都是靠自己去学习去扩展。
这个程度中吸取了不少别人的东西,在这用别人的东西的同时我从中也吸取了里面有用的东西,从而使自己的理论知识有了一定的增长,鲁迅的“拿来主义”就是这个道理,老师也说:
抄别人的东西要会抄,抄后要知其所以然。
我在抄他们的程序的同时也在学习,学习为什么要这样。
在编程的过程中,我体会到编程是十分辛苦的。
在课程设计这一段时间里,我每天的生活基本是在不断的调试程序和修改代码中完成的。
有时,这种生活令人感到乏味和疲倦,但是在这种近似枯燥的生活中,我的编程水平有了一定程度的提高,这是课程设计中我最大的收获。
课程设计已经基本上完成了,但在课程设计的这些体会要应用到今后的日常学习中去。
在新的学期,我觉得自己要在以下几个方面加以注意:
首先,在学习专业课的时候要注意理论联系实际。
注意将课本上的知识应用到日常的操作中,真正做到学以致用。
只有这样,才能做到目的明确,才能有足够的学习动力。
其次,在学习过程中要经常与同学进行交流,讨论所遇到的问题,并一起解决。
在讨论中解决问题,会节约很多时间,并且在交流的过程中,我们也可以学到更多的东西。
这次课程设计带给自己很多体会,在以后的学习中要不断总结,不断改进,使自己的成绩有新的提高。
8附程序源代码
#include"
stdlib.h"
string.h"
stdio.h"
#defineNULL0
#defineQ10
#defineLENsizeof(structstudent)
structstudent
{charname[Q];
charsex[Q];
longid;
intscore[4];
inttotal;
intm_c;
structstudent*next;
};
intn;
charch[Q];
structstudent*creat()
{inti;
请输入学生考试信息!
请在姓名处键以\"
!
\"
结束输入。
scanf("
%s"
ch);
head=NULL;
if(ch!
="
!
"
)
{p1=(structstudent*)malloc(LEN);
strcpy(p1->
name,ch);
姓名:
p1->
name);
性别:
sex);
准考证号(8位):
%ld"
&
id);
数据结构成绩(0-100):
%d"
score[0]);
操作系统成绩(0-100):
score[1]);
英语成绩(0-100):
score[2]);
C语言成绩(0-100):
score[3]);
return(head);
voidoutput(structstudent*head)
{structstudent*p;
*学生考试成绩信息表*\n"
准考证号姓名性别数据结构操作系统英语C语言平均分总分\n"
count(structstudent*head)
{if(head==NULL)return(0);
elsereturn(1+count(head->
next));
{structstudent*p1,*p2,*p3;
数据结构成绩:
操作系统成绩:
英语成绩:
C语言成绩:
next=N
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 信息管理 系统 项目 文档 知识 讲解
![提示](https://static.bdocx.com/images/bang_tan.gif)