当前位置:文档之家› 学生信息管理系统实验1

学生信息管理系统实验1

数据结构课程设计设计题目:学生信息管理系统(顺序)姓名及学号:专业班级: 09计算机科学与技术指导教师:完成时间:信息工程学院计算机科学系安徽新华学院课程设计成绩评定表(本科)目录一、实验目的 (1)二、实验内容 (1)三、基本要求 (1)四、算法设计思想 (1)五、算法流程图 (1)六、算法源代码 (6)七、运行结果 (22)八、收获和体会 (25)九、致谢 (25)1. 实验目的:通过制作学生信息管理系统(1)基本掌握面向过程程序设计的的基本思路和方法;(2)达到熟练掌握C语言的基本知识和技能;(3)能够利用所学的基本知识和技能,解决简单的程序设计问题。

2.实验内容:输入一个班学生的学号,姓名,性别,成绩。

编程插入学生信息,设计查找每个学生的信息,删除学生信息,输出学生信息,修改学生信息,报表和显示学生信息,及退出学生信息管理系统。

3.基本要求:(1)硬件:微机,打印机各一台(2)软件:Visual C++,windows74. 算法设计思想(1).分析程序的功能要求,划分程序功能模块。

(2). 画出系统流程图。

(3). 代码的编写。

定义数据结构和各个功能子函数。

(4). 程序的功能调试。

5. 算法的流程图6. 算法源代码:#include<>#include<>#include<>#define OK 1#define ERROR 0#define OVERFLOW -2#define MAXSIZE 10#define List_INIT_SPACE 10 #define List_INC_SPACE 1typedef struct{char number[15];char name[10];char sex[10];int score;}Elemtype;typedef struct{Elemtype *elem;int length;int listsize;}sqlist;/*1创建空顺序表并初始化*/void creatList(sqlist *L){int i=0,n;Elemtype *newbase;L->elem=(Elemtype*)malloc(List_INIT_SPACE*(sizeof(Elemty pe)));if(!L->elem) exit(OVERFLOW);L->length=0;L->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;L->listsize+=List_INC_SPACE;}else exit(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<L->length;i++)printf("%-16s%-16s%-16s%-10d\n",L->elem[i].number,L->ele m[i].name,L->elem[i].sex,L->elem[i].score);}/*2向顺序表中插入元素*/void insertlist(sqlist*L){int i,j,k;char sign='y';Elemtype *newbase;Elemtype newelem;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;}else exit(OVERFLOW);}printf("请输入要插入的同学的信息:\n");printf("学号(15)\n");scanf("%16s",;printf("姓名(15)\n");scanf("%16s",;printf("性别(男:M女:F)\n");scanf("%16s",;printf("成绩\n");scanf("%10d",&;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]=[k];L->elem[j].number[k]=[k];L->elem[j].sex[k]=[k];}L->elem[j].score=;printf("是否还要输入(Y or N)");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<L->length;i++)printf("%-16s%-16s%-16s%-10d\n",L->elem[i].number,L->ele m[i].name,L->elem[i].sex,L->elem[i].score);}/*3查找学生信息*/int findlist(sqlist *L){int j;char i[16];printf("1.按学号查找\n2.按姓名查找\n请选择:");scanf("%d",&j);if(j==1){printf("请输入学号:");scanf("%s",i);for(j=0;j<L->length;j++)if(!strcmp(i,L->elem[j].number))umber用数组函数return j+1;return 0;}else{printf("请输入姓名:");scanf("%s",i);for(j=0;j<L->length;j++)if(!strcmp(i,L->elem[j].name))学号删除\n2.按姓名删除\n请选择:");scanf("%d",&j);if(j==1){printf("请输入学号:");scanf("%s",i);for(j=0;j<L->length;j++)if(!strcmp(i,L->elem[j].number))umber用数组函数{for(;j<L->length;j++)L->elem[j]=L->elem[j+1];L->length--;return 1;}return 0;}else{printf("请输入姓名:");scanf("%s",i);for(j=0;j<L->length;j++)if(!strcmp(i,L->elem[j].name))umber,L->elem[i].name,L->e lem[i].sex,L->elem[i].score);}/*6修改功能*/void reviselist(sqlist *L){int i,x,a=0;char name[16];char sex[16];char number[16];int score;printf("请选择你要改的同学的姓名");scanf("%16s",name);printf("请选择你要改的同学的信息\n");printf("1.修改学生的姓名\n");printf("2.修改学生的学号\n");printf("3.修改学生的性别\n");printf("4.修改学生的成绩\n");scanf("%d",&x);switch(x){case 1:for(i=0;i<L->length;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;case 2:for(i=0;i<L->length;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;case 3:for(i=0;i<L->length;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;case 4:for(i=0;i<L->length;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退出学生信息管理系统*/void tuichu(sqlist *L){if(!L->elem)free(L->elem);printf("\n\n再见,欢迎下次使用");exit(-2);}void main(){sqlist a,*L=&a;int i;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){case 1:creatList(L);printf("初始化完毕!");break;case 2:insertlist(L);break;case 3: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;case 4:i=delnode(L);if(!i)printf("没有该学生\n");else{printf("该学生已删除");}break;case 5:printlist(L);break;case 6:reviselist(L);break;case 0:tuichu(L);}}}7.运行结果:(1)初始化(2)信息录入(3)信息插入(4)信息查询(5)删除信息(6)修改学生信息(7)退出系统8.收获及体会:通过这次实训,增加了我们学习软件技术的兴趣,加强了小组成员之间的协作能力。

相关主题