




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include#include#include#includetypedef struct student /*定义结构体*/ char IDNumber16;/*学号*/ char FamilyName16; /*姓*/ char GivenName16; /*名*/ int sex; /*性别(0代表“女”,1代表“男”)*/ int BirthYear; /*出生年*/ int BirthMonth; /*出生月*/ int BirthDay; /*出生日*/ float score4; /*成绩*/ float sum; /*总分*/ float average; /*平均分*/stu;typedef struct Lnode student data; Lnode *next;st, *linklist; /*/ struct tm* ptm;float Sumstu(linklist L);float Averstu(linklist L);float Sumstu(linklist L) /*计算总分*/ linklist s; s=L; int i; s-data.sum=0; for(i=0;idata.sum+=s-data.scorei; return (s-data.sum); float Averstu(linklist L) linklist q; q=L; Sumstu(q); q-data.average=q-data.sum/4; return (q-data.average);void TimeNow() /*获取系统时间*/struct tm* ptm;long ts;int y,m,d,h,n,s;ts = time(NULL); ptm = localtime(&ts); y = ptm- tm_year+1900; /年 m = ptm- tm_mon+1; /月d = ptm- tm_mday; /日h = ptm- tm_hour; /时n = ptm- tm_min; /分s = ptm- tm_sec; /秒int Menu() /*菜单函数*/ int n; printf(tttnnnn欢迎使用学生成绩管理系统nnttt按任意键进入系统!); system(pause); system(cls); printf(*n); printf(nttt学生成绩管理系统ntttt制作人 陈光林(52101407)n); printf(-菜单(Menu)-n); printf(nt 1. Enter list 输入记录n); printf( t 2. Delete a record from list 删除记录n); printf( t 3. Print list 显示所有记录n); printf( t 4. Search record on name 按照姓名查找记录n); printf( t 5. Save the file 保存记录到文件中n); printf( t 6. Load the file 从文件中读入记录n); printf( t 7. Compute the score 计算所有学生的总分和均分n); printf( t 8. Query by class 按班级查询显示学生总分n); printf( t 9. Insert record to list 插入记录到表中n); printf( t 0. Quit 退出系统n); printf(-n); printf(*n);do printf(nttt 请选择你需要的操作(09):); scanf(%d,&n); while(n5); /*如果选择项不在19之间则重输*/ return(n); /*返回选择项*/ /*/ linklist initlist(void) /*建立一个空链表*/linklist L=(linklist)malloc(sizeof(st);L-next=NULL;return NULL;/*建立学生信息链表*/ st *creastlist(linklist L) int i;float s;linklist p; for(;) p=(linklist)malloc(sizeof(st); /*开辟新的节点*/if(!p) printf(n Out of memory.); return (L); printf(请输入学生学号); scanf(%s,p-data.IDNumber); if(p-data.IDNumber0=0) break;printf(请输入姓:); scanf(%s,p-data.FamilyName); printf(请输入名:); scanf(%s,p-data.GivenName); printf(请输入性别(0女/1男):); scanf(%d,&p-data.sex);printf(请输入生日:); scanf(%d %d %d,&p-data.BirthYear, &p-data.BirthMonth,&p-data.BirthDay); printf(请输入成绩n,4); s=0;for(i=0;idata.scorei);if(p-data.scoreidata.scorei100) printf( Data error,please enter again.n); while(p-data.scoreidata.scorei100); s=s+p-data.scorei; p-data.sum=s;p-data.average=s/4; p-next=L; L=p; return(L); /*/*void creastlist(linklist L) st *p; linklist head=NULL; p=(linklist)malloc(sizeof(st); p=L; for(;) printf(请输入学生学号:n); scanf(%s,p-data.IDNumber); printf(请依次输入学生姓名:n); scanf(%s%s,p-data.FamilyName,p-data.GivenName); printf(请输入出生年月日:n); scanf(%d%d%d,p-data.BirthYear,p-data.BirthMonth,p-data.BirthDay); TimeNow(); if(p-data.BirthYear=ptm- tm_year+1900) printf(错误!学生年龄不能为负值!请重新输入!);continue; else if(p-data.BirthMonth=ptm- tm_mon+1)printf(错误!学生年龄不能为负值!请重新输入!);continue; else if(p-data.BirthDay=ptm- tm_mday)printf(错误!学生年龄不能为负值!请重新输入!);continue; else printf(请输入性别(0代表女,1代表男:n); scanf(%d,p-data.sex); if(p-data.sex!=0|p-data.sex!=1) printf(错误!学生年龄不能为负值!请重新输入!);continue; else printf(请分别输入外语、高数、C语言、马哲四门成绩:n); scanf(%f%f%f%f,&p-data.score0,&p-data.score1,&p-data.score2,&p-data.score3); p-next=head; head=p; */*输出所有学生的信息*/void print(linklist head)linklist p;p=head; printf(*); printf(| 学号 | 姓名 |性别|出生年 月 日|外语 C语言 高数 马哲|总分 |平均分|); printf(-);Sumstu(p);Averstu(p);while(p!=NULL)printf(%s%s%s%d%d%d%f%f%f%f%f%f,p-data.IDNumber,p-data.FamilyName,p-data.GivenName, p-data.sex,p-data.BirthYear,p-data.BirthMonth,p-data.BirthDay, p-data.score0,p-data.score1,p-data.score2,p-data.score3,p-data.sum,p-data.average);printf(n);p=p-next;printf(n);/*/void insert(linklist L) /插入新的结点 linklist s,p=L; stu e; s=(linklist)malloc(sizeof(st); s-data=e; /头插法 s-next=p-next; p-next=s;/*/void search(linklist L) int flag=1; char familyname16; linklist p; printf(请输入要查询的学生姓名:n); scanf(%s,familyname); p=L-next; while(p!=NULL) if(strcmp(familyname,p-data.FamilyName)=0) system(cls); Sumstu(p); Averstu(p); printf(*); printf(| 学号 | 姓名 |性别|出生年 月 日|外语 C语言 高数 马哲|总分 |平均分|); printf(-); printf(%s%s%s%d%d%d%f%f%f%f%f%f,p-data.IDNumber,p-data.FamilyName,p-data.GivenName, p-data.sex,p-data.BirthYear,p-data.BirthMonth,p-data.BirthDay, p-data.score0,p-data.score1,p-data.score2,p-data.score3,p-data.sum, p-data.average);printf(n); flag=0; break; else p=p-next; if(flag)printf(没有该学生信息或输入错误); Menu(); /*/void Delete(linklist L) linklist p,q; char num16; int label=1; printf(请输入要删除的学生学号:n); scanf(%s,num); p=L-next; q=L; do if(strcmp(num,p-data.IDNumber)=0) system(cls); printf(t发现要删除的学生信息,确认删除吗?n); printf(tt确认(Y) 取消(N)); getchar(); if(y|Y) q-next=p-next; delete p; printf(删除成功!); label=0; else exit(0); else q=q-next; p=q-next; while(q-next!=NULL); if(label)printf(输入错误或者信息不存在!);/*/void Paixu(linklist L) linklist p; float s1=90,s2=80,s3=70,s4=60; p=L; int i; for(i=0;idata.scorei=s1) printf(%s%s%s%f,p-data.IDNumber,p-data.FamilyName,p-data.GivenName, p-data.scorei); else p=p-next; if(s2data.scoreidata.IDNumber,p-data.FamilyName,p-data.GivenName, p-data.scorei); else p=p-next; if(s3data.scoreidata.IDNumber,p-data.FamilyName,p-data.GivenName, p-data.scorei); else p=p-next; if(s4data.scoreidata.IDNumber,p-data.FamilyName,p-data.GivenName, p-data.scorei); else p=p-next; if(p-data.scoreidata.IDNumber,p-data.FamilyName,p-data.GivenName, p-data.scorei); else p=p-next; /*/*void Query(linklist L) /此处假设学号形式为20101407 linklist p; p=L; char classs2; float sumclass; printf(请输入您想查询的班级:n); scanf(%s,classs); do sumclass=p-data.score0+p-data.score1+p-data.score2+p-data.score3 ; printf(%s%f,p-data.IDNumber,p-data.sum); while(strcmp(classs1,p-data.IDNumber5)=0)&(strcmp(classs2,p-data.IDNumber6)=0); /*/void ComputeProject(linklist L) linklist p; float sumall4,averall4; float Su=0,Av=0; /sumall4=0,0,0,0;averall4=0,0,0,0; int i,m=0; p=L; for(i=0;inext!=NULL;p=p-next) m+; sumalli+=p-data.scorei; averalli=sumalli/4; printf(第%d科的平均成绩是:n,averalli); Su+=averalli; Av=Su/4; printf(总的平均成绩是:%fn,Av);/*/void compute(linklist L)linklist p;p=L; Sumstu(p); Averstu(p); do printf(学号:%sn,p-data.IDNumber); printf(总分:%fn平均分:%fn,p-data.sum,p-data.average); p=p-next; while(p-next!=NULL);/*/void insert(linklist L, stu e) /插入新的结点 linklist s,p=L; printf(请输入要插入的学生信息:n); scanf(%s%s%s%d%d%d%f%f%f%f%f%f,p-data.IDNumber,p-data.FamilyName,p-data.GivenName, p-data.sex,p-data.BirthYear,p-data.BirthMonth,p-data.BirthDay, p-data.score0,p-data.score1,p-data.score2,p-data.score3,p-data.sum, p-data.average); s=(linklist)malloc(sizeof(st); s-data=e; /头插法 s-next=p-next; p-next=s;/*/void save(linklist L) FILE *fp; linklist p; /* 定义移动指针*/ char outfile20; scanf(%s,outfile); if(fp=fopen(outfile,w)=NULL) /*为输出打开一个二进制文件,为只写方式*/ printf(Cannot open the filen); return; /*若打不开则返回菜单*/ p=L; /*移动指针从头指针开始*/ while(p!=NULL) /*如p不为空*/ fwrite(p,sizeof(st),1,fp); /*写入一条记录*/ p=p-next; /*指针后移*/ fclose(fp); /*关闭文件*/ printf(Save the file successfully!n); /* 从文件读数据函数*/ st *Load(linklist L) linklist p1,p2,head=NULL; /*定义记录指针变量*/ FILE *fp; /* 定义指向文件的指针*/ char infile20; scanf(%s,infile); if(fp=fopen(infile,r)=NULL) /*打开一个二进制文件,为只读方式*/ printf(Can not open the file.n); retur
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中音乐课堂多声部合唱教学策略与音乐教育改革研究论文
- 校本课程开发中的课程内容设计论文
- 绘画课程对学生视觉思维的影响论文
- 基于虚拟现实技术的初中地理教学情境创设与教学效果评价论文
- 艾伯森财务管理制度
- 苗圃地员工管理制度
- 茶牌坊人员管理制度
- 融资合同:流动资金贷款合同
- 评估指标体系和评估机制构建支撑工作竞争性磋商文件
- 财政学 期末考试复习重点总结
- (2025)入党积极分子培训考试试题及答案
- 2025年计算机网络技术考试试卷及答案
- 2025年天津市河西区中考二模语文试题
- 教育事业十五五(2026-2030)发展规划
- 2025年中医基础理论考试试题及答案
- 2025中国铁路济南局集团限公司招聘116人(七)易考易错模拟试题(共500题)试卷后附参考答案-1
- 酒店入股合同协议书范本
- 河南省南阳市2025年七年级英语第二学期期末学业水平测试模拟试题含答案
- T/CNESA 1003-2020电力储能系统用电池连接电缆
- 2025年石油天然气管线钢管行业深度研究报告
- 2025年高考军队院校征集和招录人员政治考核表(原表)
评论
0/150
提交评论