实验二学生管理系统.doc

上传人:壹****1 文档编号:562087785 上传时间:2023-10-27 格式:DOC 页数:19 大小:116.51KB
返回 下载 相关 举报
实验二学生管理系统.doc_第1页
第1页 / 共19页
实验二学生管理系统.doc_第2页
第2页 / 共19页
实验二学生管理系统.doc_第3页
第3页 / 共19页
实验二学生管理系统.doc_第4页
第4页 / 共19页
实验二学生管理系统.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《实验二学生管理系统.doc》由会员分享,可在线阅读,更多相关《实验二学生管理系统.doc(19页珍藏版)》请在金锄头文库上搜索。

1、实验二 学生成绩管理系统一、 系统功能模块结构图本系统具有以下10个功能 1. Enter list 输入记录 2. Delete a record from list 从表中删除记录 3. Print list 显示链表中所有记录 4. Search record on name 按照姓名查找记录 5. Save the file 将链表中记录保存到文件中 6. Load the file 从文件中读入记录 7. Compute the score 计算所有学生的总分和均分 8. Query by class 按班级查询显示学生总分 9. Insert record to list 插入记录

2、到表中 10. Quit 退出学生成绩管理系统输入记录从表中删除记录显示链表中所有记录按照姓名查找记录将链表中记录保存到文件中从文件中读入记录计算所有学生的总分很均分按班级查询显示学生总分插入记录到表中退出二、数据结构设计及用法说明学生基本信息:学号(例如2003级12班6号写作20031206)、姓、名、性别、出生年月日、课程名称(外语SCORE0、高数SCORE1、C语言SCORE2、马哲SCORE3)、考试成绩等。这些信息采用结构体数据类型表示更为方便。同时,学生数量可能的不确定性,采用链表存数更符合实际。所以采用结构体数据结构。typedef struct St1 char IDNum

3、ber16;/*学号*/ char FamilyName16; /*姓*/char GivenName16; /*名*/ int sex; /*性别(0代表“女”,1代表“男”)*/ int BirthYear; /*出生年*/int BirthMonth; /*出生月*/int BirthDay; /*出生日*/ float score4; /*成绩*/ float sum; /*总分*/ float average; /*平均分*/ struct St1 *next; StudentNode;其中char IDNumber16用来存储学号,char FamilyName16用来存储姓,ch

4、ar GivenName16用来存储名,int sex存储性别(0代表“女”,1代表“男”),int BirthYear;存储年份,int BirthMonth存储月份。int BirthDay存储日,float score4存储四门课的成绩,float sum存储总分,float average存储平均分,struct St1 *next存储结构体指针。三、流程图四、各模块的功能各模块的功能主要依据系统功能进行编写,此处不再赘述。其中系统调用的函数功能如下。1. int LocateElem(StudentNode *L,char a) StudentNode *L传递头指针,char a传

5、递学号。函数返回学号所在链表节点位置。2. int ListDelete(StudentNode *L,int n) StudentNode *L传递头指针,int n传递节点位置。函数功能为删除链表的第n个节点。删除成功返回1,失败返回0。3. void DispList(StudentNode *L) StudentNode *L传递头指针,功能为输出链表内容。4. char *split(char a) 。返回数组a的第5、6个字符的指针。5. StudentNode *record(StudentNode *s) 函数功能为。录入学生信息,并返回一个节点。6. int ListInse

6、rt(StudentNode *L,int m,StudentNode *q) 节点插入函数。7. void quare(StudentNode *L,int m,int n)。StudentNode *L传递头指针,m表示分数,n表示科目 。返回链表中科目n分数段为m的所有学生信息。五、实验结果输入 输出1 请输入学号20102206 请输入姓张 请输入名为民 请输入性别1 请输入出生年1991 请输入出生月12 请输入出生日9 请输入外语成绩90 请输入高数成绩80 请输入c语言成绩70 请输入马哲成绩61 请输入您要查找的菜单3 学号为为20102206.姓名为张为民出生日期为1991年

7、12月9日.英语90高数80 c语言70马哲61请输入您要查找的菜单4 请输入姓张张 请输入名为民 学号为为20102206.姓名为张为民出生日期为1991年12月9日.英语90高数80 c语言70马哲61 请输入您要查找的菜单5 请输入文件的绝对路径D:s 文件保存成功请输入您要查找的菜单10 程序关闭 打开程序 请输入您要查找的菜单6 请输入文件的绝对路径D:s 文件读取成功 请输入您要查找的菜单3 学号为为20102206.姓名为张为民出生日期为1991年12月9日.英语90高数80 c语言70马哲61 请输入您要查找的菜单6 请选择功能1 名次为1学号为为20102206.姓名为张为民

8、出生日期为1991年12月9日.英语90高数80 c语言70马哲61 请输入您要查找的菜单7 请选择功能2 请选择课程1(英语) 请选择分数段 1(90分以上) 学号为20102206 姓名为张为民 请输入您要查找的菜单7 请选择功能3 请输入班级22 学号为20102206的总成绩为301请输入您要查找的菜单10 退出程序六、体会在实验一的基础上,实验二在语法上变得较为容易。但实验二要求的功能较实验一多得多。很多功能是对链表进行操作。这就要求我们队链表有相当的掌握。同时,这次实验数组用的比较多,合理的运用一些数组函数将大大简化程序。这次实验,我设计的程序有一处犯了很大的错误,由于结构体数据将

9、姓和名分开录入。当我们需要姓名的时候,必须将这姓和名这两个数组合并。我采用的办法是采用数组函数strcat(s-FamilyName, s-GivenName).这个函数虽然能将两个数组合并。但这也改变了原来链表的s-FamilyName值。导致在后面的按姓名查找频频出错。后来,我另定义了两个数组用来存储姓和名才解决了这个问题。附录程序清单#include#include#include time.h #include#define MAX 20typedef struct St1 char IDNumber16;/*学号*/ char FamilyName16; /*姓*/ char Giv

10、enName16; /*名*/ int sex; /*性别(0代表女,1代表男)*/ int BirthYear; /*出生年*/ int BirthMonth; /*出生月*/ int BirthDay; /*出生日*/ int score4; /*成绩*/ int sum; /*总分*/ int average; /*平均分*/ struct St1 *next; StudentNode; int LocateElem(StudentNode *L,char a) /*元素查找函数*/StudentNode *p=L-next;int n=1;while(p!=NULL&strcmp(a,

11、p-IDNumber)!=0)p=p-next;n+;if(p=NULL)return(0);elsereturn(n); int ListDelete(StudentNode *L,int n) /*删除节点函数*/ int m=0; StudentNode *p=L,*q; while(mnext; if(p=NULL) return 0; else q=p-next; if(q=NULL) return 0; p-next=q-next; free(q); return 1; void DispList(StudentNode *L) StudentNode *p=L-next; whi

12、le(p!=NULL) printf(学号为:%s姓名为%s ,出生日期为%d年%d月%d日 英语%d 高数%d c语言%d 马哲%dn,p-IDNumber,strcat(p-FamilyName,p-GivenName),p-BirthYear,p-BirthMonth,p-BirthDay,p-score0,p-score1,p-score2,p-score3); p=p-next; printf(n); void DispList1(StudentNode *L) /*输出所有节点*/ int i=1; StudentNode *p=L-next; while(p!=NULL) printf(名次为%d,学号为:%s,姓名为%s,平均成绩为%d 英语 %d 高数%d c语言%d 马哲%

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号