学生信息管理系统课程设计试验报告_第1页
学生信息管理系统课程设计试验报告_第2页
学生信息管理系统课程设计试验报告_第3页
学生信息管理系统课程设计试验报告_第4页
学生信息管理系统课程设计试验报告_第5页
已阅读5页,还剩27页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、精品文档可编辑*大学课程设计报告课程名称咼级语言程序设计设计题目学生信息管理系统专业计算机科学与技术班级学号姓名完成日期 课程设计任务书设计题目:学生信息管理系统设计设计内容与要求:内容:对学生信息进行管理,学生信息包括学号、姓名、性别、年龄、学历、学号、 住址、电话等(学号不重复)。要求:(1) 系统以菜单方式工作(2) 学生信息录入功能(学生信息用文件保存)。(3) 输出学生信息、浏览学生信息功能。(4) 查询和排序功能:(至少一种查询方式),如按学号查询、按学历查询等。(5) 学生信息删除、修改功能(任选项)。指导教师:年 月 日课程设计评语成绩:指导教师:问题描述】学生信息管理软件设计

2、。 对学生信息进行管理, 学生信息包括: 学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一个学生信息管理软件。基本要求】一、输入的形式和输入值的范围形式:用 scanf 输入学生的学号,姓名,年龄,性别,出生年月,地址,电 话, E-mail 。输入一个学生信息一个回车。 用输入的学号 p1->num 来控制输入, 当输入的学号为 0 时,用 break 跳出循环。即 if(p1->num=0)break 。输入值的范围:学号、年龄为整型 long num; int age; 姓名为字符串型 15 个字节 char name15; 性别为字符串型, 10 个字

3、节 char sex10; 出生为字符串型, 20 个字节 char chushen20; 地址为字符串型, 30 个字节 char dizhi30; 邮箱为字符串型,输入 11 位数字 char email11二、输出的形式输出是以表格的形式输出,即表格的每一行都能显示第一个学生的信息,第 二行是显示第二个学生的信息。三、程序所能达到的功能对学生信息进行管理,学生信息包括职学号,姓名,年龄,性别,出生年月, 地址,电话, E-mail 。(1) 系统以菜单方式工作(2) 学生信息录入功能。(3) 输出学生信息、浏览学生信息功能。(4) 查询和排序功能: (至少一种查询方式 ),如按学号查询、

4、按姓名查询等。(5)学生信息删除、修改功能(6)添加学生信息。(任选项 )。测试数据】输入:设输入四个学生信息,是整型。以最后一个学生的学号为 0 来结束输入,学号预期的输出结果:预期的输出结果请参见程序后的运行结果。【数据结构】排序记录的数据元素表采用一维数组存储结构, 每个元素包含 8 个关键字段, 其类型描述为:#include<stdio.h>#include<malloc.h>/ 分配 size 字节的存储区#include<string.h>/ 包含字符串处理函数的头文件,可以直接 调用现有的字符串处理的一系列函数#define len size

5、of(struct student)/ 宏定义求字节运算符#include<stdlib.h>/ 清屏功能struct student/ 声明一个结构体类型 structstudentlong num;/ 定义学号为 long 型数据char name15;/ 定义姓名int age;/ 定义年龄char sex3;/ 定义性别char chushen10;/ 定义出生char dizhi20;/ 定义出生地址char pho ne11; char email20; struct stude nt *n ext;/定义电话/定义邮箱/next是指针变量,指向结构体变量【算法思想】利

6、用一维结构体存放所有学生的信息,输入后,在输出时要对学生按学号的 高低排序,然后可以执行按学号查询学生信息,输入学号,删除学生信息,输入 学号可以找出该学生信息,然后选择修改学生信息,如果来了新学生,还可以添 加学生信息。主菜单包括:函数。显示主菜单输入函数、学号排序、浏览函数、删除函数、修改函数、添加输入学号,修改的学生信息在原有的学生上添加学生信息【总体设计】图1-1学生管理总体设计【模块划分】一、主函数: main()显示系统工作菜单,显示该系统的所有功能。告诉使用者所有将会调用的被 调函数,再运用选择函数 switch 即可根据使用者所输入的学号进入对应的功能程 序。并且对菜单做了一个

7、循环,进行完一个选择后,按回车键可进行清屏功能, 把屏幕上除了主菜单以外都清空,然后可以继续选择那些可以使用的功能,这样 可以方便使用者使用,并且每一步都很清晰。以 8 退出系统。二、输入函数: struct student *creat()在该程序的前面已经定义了一个结构体 struct student 用来储存学生的所有 信息,(学号、年龄、姓名、性别、出生日期、地址、电话、邮箱) 。定义 p1 和 p2 , struct student *p1,*p2;p1,p2 是指向 struct student 类型数据的指针变量。定义一个 n=0 ,n 是输入的个数,主要作用是:如果输入一个学生

8、信息, 首地址指向 p1 ,head=p1; 否则 p2 的下一个地址指向 p1 ,p2 指向 p1. p2->next=p1 ;p2=p1 ;学号控制循环。三、排序函数: void paixu(struct student *head)用一个 for 语句做循环,不是 NULL 的话,指针指向下一个,按学生学号高 低排序。整形直接交换, 字符型用 strcpy 交换,类型相当于两个数据之间的交换四、输出函数: void printlist(struct student *head)在主函数里边用 while 控制循环,输出学生信息,然后指针指向下一个五、查询函数: void findL

9、ist_num(struct student *head)和void findList_num(struct student *head)输入一个学号或姓名,做一个 for 循环,即指针 pt 指向第一个地址,再定义 一个指针 p1 ,让它等于 pt ,他是紧跟着 pt 后面的一个指针,让 p1->next 不等 于 NULL , pt 指向下一个地址。这样就能修改最后一个学生信息了。如果要查询 的学生的学号在学生里,就输出该学生信息,否则,就输出查询的学生信息不存 在。六、删除函数: int shanchu(struct student *head)输入一个学号,先找到这个学生的信息。

10、如果输入的学号在学生信息中,就 进行以下循环:如果输入的是第一个学生的话,就 head 等于第二个学生信息; 如果输入的学生信息是最后一个,就让倒数第二个等于 NULL ;否则的话,就让 下一个学生信息覆盖前一个。如果输入的学号不在学生信息中,输出“此学生信 息不存在”。七、修改函数: struct student *delList(struct student *head,long del_num)输入要修改的学号,找到该学生并且输出该学生的信息。然后屏幕上会出现 学生信息的所有项目,用 switch 进行选择修改的项目。 选择后输入新的学生信息, 用它来覆盖原来的学生信息。八、添加函数:

11、void insert(struct student *head)用一个 while 语句 while(p2->next!=NULL) 控制循环, p2 的指针指向下一 个地址,即 p2=p2->next; 这是找到最后一个地址,然后开辟动态存储区, p1=(struct student *)malloc(len); 输入要添加的学号,用学号为 0 来终止循环, 如果不为 0 ,就继续输入学生信息。【源程序】#include<stdio.h>#include<malloc.h>/ 分配 size 字节的存储区#include<string.h>/

12、 包含字符串处理函数的头文件,可以直接调用现有的字符串处理的一系列函数#define len sizeof(struct student) / 求字节运算符 #include<stdlib.h> / 清屏功能FILE *fp;struct student/ 声明一个结构体类型 struct studentint num;/ 学号为整型char name20;/ 姓名为字符串char genter10;/性别为字符串int age;/年龄为整型char xueli20;/学历为字符串int gongzi;/学号为整型char address30;/ 地址为字符串char phone1

13、1;/ 电话为字符串struct student *next; /next 是指针变量,指向结构体变量 ;void menu() printf("= 学生信息管理系统 =nn"); printf("1、录入学生信息 n");printf("2、浏览学生信息 n");printf("3、查询学生信息 n");printf("4、删除学生信息 n");printf("5 、插入学生信息 n");printf("6、修改学生信息 n");printf("

14、;7 、排序学生信息 n");printf("8 、退出管理系统 n");struct student *creat()printf("=n");/ 录入学生信息int n;struct student *head;struct student *p1,*p2;n=0;p1=p2=(struct student *) malloc(len);scanf("%dt%dt%st%st%st%st%st%s",&p1->num,&p1->age,p1->name,p1->sex,p1->

15、;chushen,p1->dizhi,p1->phone,p1->email);head=NULL;while(p1->num!=0)n=n+1;if(n=1) head=p1;else p2->next=p1;p2=p1;p1=(struct student *)malloc(len);scanf("%dt%dt%st%st%st%st%st%s",&p1->num,&p1->age, p1->name,p1->sex,p1->chushen,p1->dizhi,p1->phone,p

16、1->email);p2->next=NULL;return(head);void insert(struct student *head) / 插入学生信息int search_num;struct student *p,*q,*s;p=head;printf(" 在哪个学生前插入 请输入学号: n"); scanf("%d",&search_num);while(p!=NULL)&&(p->num!=search_num)q=p;p=p->next;s=(struct student *)malloc(

17、len);q->next=s;system("cls");printf(" 请输入学生信息 :n");printf("学号t年龄t姓名t性别t出生t地址t电话te-mailn");scanf("%dt%dt%st%st%st%st%st%s",&s->num,&s->age,s->na me,s->sex,s->chushen,s->dizhi,s->phone,s->email);s->next=p;void printList(stru

18、ct student *head)/ 浏览全部学生信息struct student *p;p=head;if(head=NULL)printf(" 没有学生信息 !n");elsedo fread(p,len,1,fp);printf("%dt%dt%st%st%st%st%st%sn",p->num,p->age,p->na me,p->sex,p->chushen,p->dizhi,p->phone,p->email);p=p->next;while(p!=NULL);void findList_

19、num(struct student *head,long search_num) /struct student *p;p=head;while(p!=NULL)&&(p->num!=search_num) p=p->next;if(p!=NULL)printf("%dt%dt%st%st%st%st%st%sn",p->num,p->age,p->na me,p->sex,p->chushen,p->dizhi,p->phone,p->email);elseprintf(" 没有该学生

20、信息 !n");按学号查找/ 按姓名void findList_name(struct student *head,char *search_name) 查找struct student *p;int cmp1=0,cmp=0;p=head;while(p!=NULL) if(strcmp(p->name,search_name)!=0) p=p->next; cmp+;elseprintf("%dt%dt%st%st%st%st%st%sn",p->num,p->age,p->na me,p->sex,p->chushe

21、n,p->dizhi,p->phone,p->email);p=p->next;cmp1=1;if(cmp!=0&&cmp1=0)printf(" 没有该学生信息 !n");void xiugai(struct student *p1,long xiu_num)/ 修改学生信息struct student *p2;p2=p1;while(p2!=NULL)&&(p2->num!=xiu_num)p2=p2->next;if(p2!=NULL)scanf("%dt%dt%st%st%st%st%st

22、%s",&p2->num,&p2->age,p2->name,p2->sex,p2->chushen,p2->dizhi,p2->phone,p2->email);elseprintf(" 没有该学生信息 !n");struct student *delList(struct student *head,long del_num) / 删除学生信息struct student *p,*q;p=head;q=head;while(p &&(p->num != del_num)q=p

23、;p=p->next;if(p=NULL)printf(" 无此学号 !n"); elseif(p = head)head = p->next; free(p);elseq->next = p->next; free(p);return head;void paixu(struct student *head) / 按学号排序struct student *p,*f,*t;char ch100;int i;t=f=p=head; for(p=head;p->next!=NULL;p=p->next) for(t=head,f=t->

24、next;t->next!=NULL;t=t->next,f=f->next)if(t->num>f->num>0)i=t->num; t->num=f->num;f->num=i;i=t->age; t->age=f->age;f->age=i;strcpy(ch,t->name); strcpy(t->name,f->name); strcpy(f->name,ch);strcpy(ch,t->sex); strcpy(t->sex,f->sex); strc

25、py(f->sex,ch);strcpy(ch,t->chushen); strcpy(t->chushen,f->chushen); strcpy(f->chushen,ch); strcpy(ch,t->dizhi); strcpy(t->dizhi,f->dizhi); strcpy(f->dizhi,ch); strcpy(ch,t->phone); strcpy(t->phone,f->phone); strcpy(f->phone,ch); strcpy(ch,t->email); strcpy(t

26、->email,f->email); strcpy(f->email,ch);/ return head;void save(struct student *head) / 保存为磁盘文件 struct student *p;if(fp=fopen("keshe","w")=NULL) / 打开一个文件 printf("cannot open this filen");exit(0);p=head;while(p!=NULL)fprintf(fp,"%dn",p->num);fprintf(

27、fp,"%dn",p->age);fprintf(fp,"%sn",p->name);fprintf(fp,"%sn",p->sex); fprintf(fp,"%sn",p->chushen); fprintf(fp,"%sn",p->dizhi); fprintf(fp,"%sn",p->phone); fprintf(fp,"%sn",p->email); p=p->next;fclose(fp);st

28、ruct student *read()/ 从磁盘读取文件struct student *head=NULL;struct student *p=NULL;struct student *t=NULL;int a;/ fp=fopen("keshe","r");if(fp=fopen("keshe","r")=NULL) / 打开一个文件printf("cannot open this filen"); exit(0);while(1)t=(struct student *)malloc(len

29、);a=fscanf(fp,"%dt%dt%st%st%st%st%st%s",&t->num,&t->ag e,t->name,t->sex,t->chushen,t->dizhi,t->phone,t->email);if(a=0|a=-1)return head;t->next=NULL;if(p=NULL)p=t;head=t;elsep->next=t;p=p->next; p->next=NULL;fclose(fp);void main() / 主函数int code=0;

30、struct student *pt = NULL;for(code=1;code+)menu();printf(" 请输入序号 :n"); scanf("%d",&code);system("cls");switch(code)case 1: system("cls");printf("=/ 控制循环/ 调用菜单函数/ 提示输入序号/ 清屏(下边也是这样的功能)/ 选择序号进行功能选择输入学生信息=n");printf("n");printf("学号t年龄

31、t姓名t性别t出生t地址t电话te-mailn");pt=creat();/ 调用输入函数save(pt);/ 将数据存储到磁盘中system("cls");printf("= 输 入 学 生 信 息printf("=n");printf("*成功输入学生信息 *!nn");n");printf(" 按回车键返回主菜单 n");getchar(); getchar(); / 按回车键返回 system("cls");break;case 2:system("

32、;cls");printf("= 学 生 信 息 表 =n");printf("n");printf("学号t年龄t姓名t性别t出生t地址t电话te-mailn"); printList(read();/ 调用输出函数(是从磁盘中读出的)printf("= =n");printf("n");printf("n 按回车键返回主菜单 n"); getchar();getchar(); system("cls");break;case 3:int se

33、arch=0;system("cls");printf("=查 询 学 生 信 息=n");n");printf("while(search!=3) / 进入查询功能函数printf("1 、按学号查询 n2 、按姓名查询 n3 、退出查询 n"); scanf("%d",&search); / 插入查找的方式 switch(search)case 1: / 选择学号查询long search_num;system("cls");printf(" 请输入学生

34、学号 n"); scanf("%d",&search_num);system("cls");printf("= 查 询 结 果=n");printf("n");printf("学号t年龄t姓名t性别t出生t地址t电话te-mailn"); findList_num(read(),search_num); / 调用查找函数,将数据从磁 盘中读出printf("= =n");printf("n");printf("n 按回车键返回查

35、询菜单 n"); getchar(); getchar();system("cls");break;case 2:/ 按姓名查找char search_name15;system("cls");printf(" 请输入学生姓名 n");scanf("%s",search_name); / 输入要查找的学生的 姓名system("cls");printf("= 查询结果 = =n");printf("n");printf("学号t年龄t姓

36、名t性别t出生t地址t电话te-mailn");findList_name(read(),search_name);/ 调 用 姓 名 查 找 函 数printf("= =n");printf("n");printf("n 按回车键返回查询菜单 n"); getchar(); getchar();system("cls");system("cls");break;case 4:/ 删除学生信息long del_num;system("cls");printf(&qu

37、ot;= 删 除 学 生 信 息=n");printf("n");printf(" 请输入要删除学生信息的学号 :n"); scanf("%d",&del_num); / 输入要删除的学号 system("cls");pt=delList(read(),del_num); / 调用删除函数 save(pt);printf("= 删 除 结 果=n");printf("n");printf(" 学号为 %d 的学生信息成功删除 n",del

38、_num); printf("n 按回车键返回主菜单 n");getchar();getchar();system("cls");break;case 5: / 插入函数system("cls");printf("= 插 入 学 生 信 息 =n");printf("n");insert(pt); / 调用输入函数 save(pt); / 保存到磁盘中 system("cls");printf("= 插 入 学 生 信 息=n");printf("

39、;n");printf("* 插入学生信息成功 *!nn");printf(" 按回车键返回主菜单 n");getchar();getchar(); system("cls");break;case 6: / 修改函数long search_num;system("cls");printf(" 请输入要修改的学生学号 :n");scanf("%d",&search_num); / 输入要修改的学生学号 system("cls");prin

40、tf("= 修 改 学 生 信 息 =n");printf("学号t年龄t姓名t性别t出生t地址t电话te-mailn"); findList_num(read(),search_num);/ 调用查找函数printf("n");printf(" 请输入修改信息 :n");printf("学号t年龄t姓名t性别t出生t地址t电话te-mailn"); pt=read();xiugai(pt,search_num);/ 调用修改函数save(pt);/ 保 存printf("=n&quo

41、t;);printf("n");printf("* 修改学生信息成功 *!nn"); printf("n 按回车键返回查询菜单 n"); getchar(); getchar();system("cls");break;case 7: / 排序函数system("cls");printf(" 按学号 从小到大 排序 nn");printf("= 学 生 信 息 表 =n");printf("n");printf("学号t年龄t

42、姓名t性别t出生t地址t电话te-mailn"); pt=read();paixu(pt);/ 调用排序函数printList(pt);/ 调用显示函数save(pt);printf("= =n");printf("n");printf("n 按回车键返回主菜单 n");getchar();getchar();system("cls");/返回函数;break;case 8:read();break;【测试情况】1.打开程序,进入主菜单,“学生信息管理系统”,包括七项功能,(1)输入 学生信息,以输入学号

43、位0结束;(2)浏览学生信息;(3)按学生好号或姓名查 询学生信息;(4 )按学号删除学生信息;(5 )按学号找出要修改的学生信息,再 修改该学生信息;(6 )添加学生信息;(8)退出系统。"统 “系 入理 进管 迎息"生"学=自E.自.3息 息R,-自3 统兰亠一一空一 R=史一一曰二耳孔12345678图1-2菜单2.选择(1),输入四个学生信息,输入的学号为 0结束输入。如图1-3图1-3输入3.选择功能(2)浏览学生信息,如1-4' E:疋诺言上叽实理滾屋设计Wb与心亍=学生信息表=学号18年龄12姓名L732'王性别M M n岀生1994

44、1?941?9412电话76108698S2968615enail 2(?qq- cam Pqq.cain 4(?qq-conl4 5(?qq .com支回车键返回主菜单itr1-4浏览学生信息4. 选择功能(3 ),进行查询学生信息,如下图,查找的是学号为12的学生信息。同时要查找的学生信息不在学生表中,就会输出“学生信息不存在”。"E人口吾言二叽辛卷早程总十bu gwe ,exe'查询结果.con年龄姓名 性别出生地址吐话e-nail1812M1994重床7&10搜回车键返回查询菜单11/ _ _1-5查找学生信息5. 选择功能(4),进行删除功能,如下图,输入要

45、删除的学号为14,再选择功能(2),查看是否删除掉,同时,如果要删除的学生信息不在学生表中,就输出“此学生信息不存在”。如下图1-6 。-三:雷言二帯丸二比bug'gW%. 2= =删除结果rI 1学号甘的学生信息成功删除1 J按回车键亟叵主菜单半二I 4 |川一一图1-6删除学生信息6. 选择功能(5),添加学生信息,输入学生信息,以输入的学号为0结束输入,再选择功能(2)进行浏览,查看添加的学生信息是否添加上,如下图1-7 。=J 走 半诗=,一 Debug龄年26453218另WMHI - 一 4 E 4 4 TH 9 9 9 爭 H9 B 9 9 L L i i 1 1电 1 舌enailA798.con829643qq *c<jh14S61&_con彳nr.图1-7添加学生信息7.选择功能(6),修改学生信息,输入要修改学生学号,以输入的学号为12为例,再选择功能(2)进行浏览,查看添加的学生信息是否添加上,修改前如下图1-8,修改后如图1-9 E :解盲二机实琶潭程喘计氏bu gwe. ex亡”图1-8查找修改学生信息图1-9修改后的学生信息E;C语肓上机实輕谍程设

温馨提示

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

最新文档

评论

0/150

提交评论