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