学生信息管理系统顺序表实验1文档格式.docx
- 文档编号:21177081
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:15
- 大小:19.81KB
学生信息管理系统顺序表实验1文档格式.docx
《学生信息管理系统顺序表实验1文档格式.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统顺序表实验1文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
在课程设计中,我们充分发挥小组优势完成课程设计,同时也体会到小组合作的重要性与必要性。
2、课题设计意义:
指导教师:
年月日
安徽新华学院课程设计成绩评定表(本科)
一、实验目的………………………………………………………1
二、实验内容………………………………………………………1
三、基本要求………………………………………………………1
四、算法设计思想…………………………………………………1
五、算法流程图……………………………………………………1
六、算法源代码……………………………………………………6
七、运行结果………………………………………………………22
八、收获和体会……………………………………………………25
九、致谢……………………………………………………………25
1.实验目的:
通过制作学生信息管理系统
(1)基本掌握面向过程程序设计的的基本思路和方法;
(2)达到熟练掌握C语言的基本知识和技能;
(3)能够利用所学的基本知识和技能,解决简单的程序设计问题。
2.实验内容:
输入一个班学生的学号,姓名,性别,成绩。
编程插入学生信息,设计查找每个学生的信息,删除学生信息,输出学生信息,修改学生信息,报表和显示学生信息,及退出学生信息管理系统。
3.基本要求:
(1)硬件:
微机,打印机各一台
(2)软件:
VisualC++,windows7
4.算法设计思想
(1).分析程序的功能要求,划分程序功能模块。
(2).画出系统流程图。
(3).代码的编写。
定义数据结构和各个功能子函数。
(4).程序的功能调试。
5.算法的流程图
6.算法源代码:
#include<
stdio.h>
stdlib.h>
string.h>
#defineOK1
#defineERROR0
#defineOVERFLOW-2
#defineMAXSIZE10
#defineList_INIT_SPACE10
#defineList_INC_SPACE1
typedefstruct
{
charnumber[15];
charname[10];
charsex[10];
intscore;
}Elemtype;
Elemtype*elem;
intlength;
intlistsize;
}sqlist;
/*1创建空顺序表并初始化*/
voidcreatList(sqlist*L)
inti=0,n;
Elemtype*newbase;
L->
elem=(Elemtype*)malloc(List_INIT_SPACE*(sizeof(Elemtype)));
if(!
L->
elem)exit(OVERFLOW);
length=0;
listsize=List_INIT_SPACE;
printf("
有几位同学:
\n"
);
scanf("
%d"
&
n);
for(i=0;
i<
n;
i++)
{
if(L->
length==L->
listsize)
{
newbase=(Elemtype*)realloc(L->
elem,(List_INIT_SPACE+List_INC_SPACE)*sizeof(Elemtype));
if(newbase)
{
L->
elem=newbase;
listsize+=List_INC_SPACE;
}
elseexit(OVERFLOW);
}
printf("
请输入第%d名同学的信息:
i+1);
学号(15)\n"
scanf("
%16s"
L->
elem[L->
length].number);
姓名(15)\n"
length].name);
性别(男:
M女:
F)\n"
length].sex);
成绩\n"
%10d"
length].score);
L->
length++;
}
%d名学生信息如下:
length);
学号(15)姓名(15)性别(男:
F)成绩\n"
length;
%-16s%-16s%-16s%-10d\n"
elem[i].number,L->
elem[i].name,L->
elem[i].sex,L->
elem[i].score);
}
/*2向顺序表中插入元素*/
voidinsertlist(sqlist*L)
inti,j,k;
charsign='
y'
;
Elemtypenewelem;
while(sign!
='
n'
)
请输入要插入的同学的信息:
newelem.number);
newelem.name);
newelem.sex);
newelem.score);
要插入到第几个位置:
"
i);
while(i<
1||i>
length+1)
printf("
不能插入到第%d个位置!
\n只能插入第1到第%d个位置上!
\n请重新输入要插入的位置:
length+1);
scanf("
for(j=L->
length-1;
j>
i-2;
j--)
for(k=0;
k<
16;
k++)
elem[j].name[k]=L->
elem[j-1].name[k];
elem[j].number[k]=L->
elem[j-1].number[k];
elem[j].sex[k]=L->
elem[j-1].sex[k];
L->
elem[j].score=L->
elem[j-1].score;
j++;
for(k=0;
elem[j].name[k]=newelem.name[k];
elem[j].number[k]=newelem.number[k];
elem[j].sex[k]=newelem.sex[k];
elem[j].score=newelem.score;
是否还要输入?
(YorN)"
getchar();
%c"
sign);
if(sign=='
||sign=='
N'
sign='
/*3查找学生信息*/
intfindlist(sqlist*L)
intj;
chari[16];
1.按学号查找\n2.按姓名查找\n请选择:
j);
if(j==1)
请输入学号:
%s"
i);
for(j=0;
j<
j++)
if(!
strcmp(i,L->
elem[j].number))//i==L->
elem[j].number用数组函数
returnj+1;
return0;
else
请输入姓名:
elem[j].name))//用数组函数
/*4删除学生信息*/
intdelnode(sqlist*L)
chari[10];
1.按学号删除\n2.按姓名删除\n请选择:
for(;
L->
elem[j]=L->
elem[j+1];
length--;
return1;
//L->
elem[j]以后的向前挪
/*5输出学生信息*/
voidprintlist(sqlist*L)
inti;
/*6修改功能*/
voidreviselist(sqlist*L)
inti,x,a=0;
charname[16];
charsex[16];
charnumber[16];
请选择你要改的同学的姓名"
name);
请选择你要改的同学的信息\n"
1.修改学生的姓名\n"
2.修改学生的学号\n"
3.修改学生的性别\n"
4.修改学生的成绩\n"
x);
switch(x)
case1:
if(strcmp(name,L->
elem[i].name)==0)
请输入新名字"
strcpy(L->
elem[i].name,name);
a=1;
if(a==0)
对不起你要改的名字不存在\n"
break;
case2:
for(i=0;
if(strcmp(name,L->
请输入新学号"
number);
elem[i].number,number);
if(a==0)
break;
case3:
请输入新性别"
sex);
elem[i].sex,sex);
case4:
请输入新成绩"
score);
elem[i].score=score;
if(a==0)
/*0退出学生信息管理系统*/
voidtuichu(sqlist*L)
elem)
free(L->
elem);
\n\n再见,欢迎下次使用"
exit(-2);
voidmain()
sqlista,*L=&
a;
******************************************************************\n"
printf("
*学生信息管理系统*\n"
*========================================\n"
*1.创建学生信息库并初始化*\n"
*2.添加学生信息*\n"
*3.查找学生信息*\n"
*4.删除学生信息*\n"
*5.输出学生信息*\n"
*6.修改学生信息*\n"
*0.退出学生信息管理系统*\n"
while
(1)
\n\n请选择(0-6):
0||i>
6)
只能选择0到6!
请重新选择:
switch(i)
case1:
creatList(L);
printf("
初始化完毕!
break;
case2:
insertlist(L);
case3:
i=findlist(L);
if(!
i)
printf("
没有该学生\n"
else
{
i--;
要查找的学生:
学号姓名性别成绩\n"
%-10s%-10s%-10s%-d\n"
}break;
case4:
i=delnode(L);
{printf("
该学生已删除"
case5:
printlist(L);
break;
case6:
reviselist(L);
case0:
tuichu(L);
7.运行结果:
(1)初始化
(2)信息录入
(3)信息插入
(4)信息查询
(5)删除信息
(6)修改学生信息
(7)退出系统
8.收获及体会:
通过这次实训,增加了我们学习软件技术的兴趣,加强了小组成员之间的协作能力。
虽然对软件技术的具体内容还不是很了解,但通过对C语言这门课程的学习,已发现程序设计的乐趣。
在对C语言学习的过程中,我们也学到了许多关于计算机应用基础方面的知识,对计算机的机体也有了一个大体的了解。
这次实训由老师提供课题,参照范例程序,经过自己的改写,实现要求。
先做简单的输出,一步步的再做其它图案,在实际操作过程中所犯的一些错误,通过学习还会有意外的收获,感觉实训真的很有意思。
在具体操作中,对这学期所学C语言的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到了C语言具有的语句简洁,使用灵活,执行效率高等特点。
发现上机实训的重要作用,特别是对数组和循环有了深刻的理解之后。
通过实际操作,学会C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。
深刻体会到“没有做不到的,只有想不到的”,“团结就是力量”,“实践是检验真理的标准”,……的寓意。
计时在此希望以后应多进行这样的实训,加长设间,培养学生独立思考问题的能力,提高实际操作水平。
致谢
本设计是在李红梅老师的悉心指导下完成的。
通过我们的设计选题、资料查找,李老师修改等方面对我进行了悉心的指导和鼓励。
值此设计完成之际,谨向指导老师李老师致以最衷心的感谢。
通过我们组成员的努力做出了这个学生管理系统,当我们看到我们的劳动成果,无比的开心,在这几个星期中,我们认真的工作,参考了大量资料,努力克服遇到的困难。
在这次课程设计中,我们一起谈论,我们一起研究,一起欢笑。
通过这次的数据结构的课程设计,让我们更加加深了它的语句思想!
让我从这次课程设计中获得了好多知识,获益匪浅!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 信息管理 系统 顺序 实验