学生信息管理系统(顺序表)实验_第1页
学生信息管理系统(顺序表)实验_第2页
学生信息管理系统(顺序表)实验_第3页
学生信息管理系统(顺序表)实验_第4页
学生信息管理系统(顺序表)实验_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构课程设计设 计 题 目:学生信息管理系统(顺序)姓名及学号:专业班级:09 计算机科学与技术指导教师:完成时间:信息工程学院 计算机科学系安徽新华学院课程设计成绩评定表(本科 )课题名称学生信息管理系统(顺序表)院系信息工程学院年级专业10 计科特色学号姓名成绩1042157103何业祥1042157104孔磊磊王 舒1、课题设计目的:课程设计任务是为了实现学生信息的相关操作,方面用户快速得到学生的各种信息,并且能进行信息的更新、插入、删除等操作。课程设计的主要目的:熟练利用数据结构各种算法思想设计程序;掌握 C 语言基本语法;通过课程设计,加深对数据结构课程所学内容的进一步理解和巩固

2、;加深对结构化课程设计思想的理解,并设计合理的模块化结构;提高程序开发功能,能运用合理的控制流程编写清晰高效的程序;培养分析问题、解决问题的能力。在课程设计中,我们充分发挥小组优势完成课程设计,同时也体会到课题设计小组合作的重要性与必要性。目的与2、课题设计意义:设计意义指导教师:年月日目录一、实验目的二、实验内容三、基本要求 1 1 1四、算法设计思想1五、算法流程图1六、算法源代码6七、运行结果22八、收获和体会25九、致谢25参考医学1. 实验目的:通过制作学生信息管理系统(1)基本掌握面向过程程序设计的的基本思路和方法;(2)达到熟练掌握 C 语言的基本知识和技能;(3)能够利用所学的

3、基本知识和技能,解决简单的程序设计问题。2实验内容:输入一个班学生的学号,姓名,性别,成绩。编程插入学生信息,设计查找每个学生的信息,删除学生信息,输出学生信息,修改学生信息,报表和显示学生信息,及退出学生信息管理系统。3基本要求:( 1)硬件:微机,打印机各一台( 2)软件: Visual C+,windows74. 算法设计思想(1). 分析程序的功能要求,划分程序功能模块。(2).画出系统流程图。(3).代码的编写。定义数据结构和各个功能子函数。(4).程序的功能调试。5. 算法的流程图参考医学Main主 函 数开始根据 printf 函数输出的提示信息选择相关操作根据 while语句选

4、择06相应数字Switch语句实现具体操作初 1.2.添3. 查4.删5. 输6.0.退出始 创加找除出修学生化 建学学学学学改信息上生生生生学管理信信信信信生系统息表息息息息信并息根据相关调用函数输出相应学生信息程序结束参考医学6. 算法源代码:#include<stdio.h>#include<stdlib.h>#include<string.h>#define OK 1#define ERROR 0#define OVERFLOW -2#define MAXSIZE 10#define List_INIT_SPACE 10#define List_IN

5、C_SPACE 1typedef structchar number15;char name10;char sex10;intscore;Elemtype;参考医学typedef structElemtype *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(Elemtype);if(!L->elem) exit(OVER

6、FLOW);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+=L

7、ist_INC_SPACE;else exit(OVERFLOW);printf(" 请输入第 %d 名同学的信息: n",i+1);printf(" 学号 (15)n");scanf("%16s",L->elemL->length.number);printf(" 姓名 (15)n");scanf("%16s",L->elemL->);printf(" 性别 (男:M 女:F)n");scanf("%16s"

8、,L->elemL->length.sex);printf(" 成绩 n");参考医学scanf("%10d",&L->elemL->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%-10dn",L

9、->elemi.number,L->elemi.n ame,L->elemi.sex,L->elemi.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_IN

10、C _SPACE)*sizeof(Elemtype);if(newbase)L->elem=newbase;L->listsize+=List_INC_SPACE;else exit(OVERFLOW);printf(" 请输入要插入的同学的信息:n");printf(" 学号 (15)n");scanf("%16s",newelem.number);printf(" 姓名 (15)n");scanf("%16s",);printf(" 性别 (男:

11、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->len

12、gth+1);scanf("%d",&i);L->length+;for(j=L->length-1;j>i-2;j-)for(k=0;k<16;k+)L->k=L->k;L->elemj.numberk=L->elemj-1.numberk;L->elemj.sexk=L->elemj-1.sexk;L->elemj.score=L->elemj-1.score;j+;for(k=0;k<16;k+)参考医学L->k=

13、k;L->elemj.numberk=newelem.numberk;L->elemj.sexk=newelem.sexk;L->elemj.score=newelem.score;printf(" 是否还要输入? (Y or N)");getchar();scanf("%c",&sign);if(sign='n'|sign='N')sign='n'printf("%d 名学生信息如下 :n",L->length);printf(&

14、quot; 学号 (15)姓名 (15)性别 (男:M 女:F)成绩 n");for(i=0;i<L->length;i+)printf("%-16s%-16s%-16s%-10dn",L->elemi.number,L->elemi.n ame,L->elemi.sex,L->elemi.score);参考医学/*3 查找学生信息 */int findlist(sqlist *L)int j;char i16;printf("1. 按学号查找 n2.按姓名查找 n 请选择: ");scanf("%

15、d",&j);if(j=1)printf(" 请输入学号: ");scanf("%s",i);for(j=0;j<L->length;j+)if(!strcmp(i,L->elemj.number)/i=L->elemj.number用数组函数return j+1;return 0;elseprintf(" 请输入姓名: ");scanf("%s",i);for(j=0;j<L->length;j+)参考医学if(!strcmp(i,L->elemj.na

16、me)/ 用数组函数return j+1;return 0;/*4 删除学生信息 */int delnode(sqlist *L)int j;char i10;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->elemj.number)/i=L->elemj.number用数组

17、函数for(;j<L->length;j+)参考医学L->elemj=L->elemj+1;L->length-;return 1;return 0;elseprintf(" 请输入姓名: ");scanf("%s",i);for(j=0;j<L->length;j+)if(!strcmp(i,L->)/ 用数组函数for(;j<L->length;j+)L->elemj=L->elemj+1;/L->elemj 以后的向前挪L->length-;re

18、turn 1;return 0;参考医学/*5 输出学生信息 */void printlist(sqlist *L)int i;printf("%d名学生信息如下:n",L->length);printf(" 学号 (15)姓名 (15)性别 (男:M女:F)成绩 n");for(i=0;i<L->length;i+)printf("%-16s%-16s%-16s%-10dn",L->elemi.number,L->elemi.n ame,L->elemi.sex,L->elemi.score

19、); /*6 修改功能 */void reviselist(sqlist *L)int i,x,a=0;char name16;char sex16;char number16;参考医学int score;printf(" 请选择你要改的同学的姓名");scanf("%16s",name);printf(" 请选择你要改的同学的信息n");printf("1. 修改学生的姓名 n");printf("2. 修改学生的学号 n");printf("3. 修改学生的性别 n");

20、printf("4. 修改学生的成绩 n");scanf("%d",&x);switch(x)case 1:for(i=0;i<L->length;i+)if(strcmp(name,L->)=0)printf(" 请输入新名字 ");scanf("%16s",name);strcpy(L->,name);a=1;参考医学if(a=0)printf(" 对不起你要改的名字不存在n");break;case 2:for(i=0

21、;i<L->length;i+)if(strcmp(name,L->)=0)printf(" 请输入新学号 ");scanf("%16s",number);strcpy(L->elemi.number,number);a=1;if(a=0)printf(" 对不起你要改的名字不存在n");break;case 3:for(i=0;i<L->length;i+)参考医学if(strcmp(name,L->)=0)printf(" 请输入新性别 &

22、quot;);scanf("%16s",sex);strcpy(L->elemi.sex,sex);a=1;if(a=0)printf(" 对不起你要改的名字不存在n");break;case 4:for(i=0;i<L->length;i+)if(strcmp(name,L->)=0)printf(" 请输入新成绩 ");scanf("%d",score);L->elemi.score=score;a=1;参考医学if(a=0)printf(" 对不起你

23、要改的名字不存在n");break;/*0 退出学生信息管理系统 */void tuichu(sqlist *L)if(!L->elem)free(L->elem);printf("nn 再见 ,欢迎下次使用 ");exit(-2);void main()sqlist a,*L=&a;int i;参考医学printf("*n");printf("*学 生 信息 管 理 系 统*n");printf("*=n");printf("*1.创建学生信息库并初始化*n");

24、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("nn 请选择 (0-6):");scanf("

25、%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");elsei-;printf(" 要查找的学生: n");prin

26、tf(" 学号姓名性别成绩 n");参考医学printf("%-10s%-10s%-10s%-dn",L->elemi.number,L->,L->elemi.sex,L->elemi.score);break;case 4:i=delnode(L);if(!i)printf(" 没有该学生 n");elseprintf(" 该学生已删除 ");break;case 5:printlist(L);break;case 6:reviselist(L);break;case 0:tuichu(L);7.运行结果:(1)初始化参考医学(2)信息录入(3)信息

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论