




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计说明(1)课程设计的目的:通过这次的课程设计,使我充分的巩固了上学期的知识,在上学期的基础上我对链表有了更深一步的了解。这次程序设计使我能够熟练的掌握链表和指针,并且对文件这方面的知识也有了进一步的提高。这一切都提高了我对C语言的学习与兴趣。(2)程序特点介绍:程序中运用了宏定义、定义结构体类型变量、结构体指针、指针数组,创建了动态链表,并且编写了函数用于链表的输入、输出、删除、和插入,在删除和插入中运用了循环语句使其可循环删除或插入。程序中还用了四级菜单,使用户可以在良好的环境下运用该程序。(3)对程序的说明: 1、在主菜单中有两个选项,第一个是对年月日的查询,第二个是学生管理系统。 2、输入1进入年月日查询系统。输入一个年月日,系统自动输出该年是不是闰年,并且输出该日期是这一年的第几天。并且把输出的信息保存到out1.txt文件中。 3、输入2进入学生管理系统,并且进入第二级菜单。输入1输入学生数据,系统自动将其保存到student.dat文件中。输入数据采用了动态链表的形式,输入学号0的时候推出输入。 4、输入2对所输入的数据按学号进行排序。排序函数中运用了指针数组实现对动态链表的排序。 5、输入3进入查询菜单,此时屏幕上会显示第三级菜单。分为按姓名查询、按成绩查询、按学号查询,输入1后,系统提示输入所查询的姓名,用户输入一串字符,若链表中有该姓名的学生则输出其成绩,若没有则输出“这里没有您要查询的信息”。程序运用字符串比较函数实现对姓名的查询。输入2后,进入第四级菜单,分为按英语成绩、数学成绩、语文成绩。以下举一项为例:输入1,按英语成绩查询,系统提示输入所查询的英语成绩,用于输入一个分数。链表中若有该分数,则输出该学生的成绩;若没有,则输出“这里没有您要查询的信息”。接着用户按任意键退出。返回到第三级菜单后输入3,则按学号查询。 6、返回到第二级菜单,输入4,进入删除系统。输入所要删除的学号,系统则输出删除后的链表。用户可连续输入学号,实现连续删除。 7、输入5进入插入系统。输入所要插入的信息,系统自动输出插入后的链表。用于可连续插入信息。 8、输入6退回到主菜单,在按3退出系统。(4)程序流程图:时间查询系统总菜单判断该年是否为闰年判断该天是该年的第几天学生管理系统学生成绩的输入与输出按学号对学生情况排序对学生情况进行查询删除指定学号的学生成绩插入要添加的学生成绩按成绩查询按姓名查询按学号查询按英语成绩查询按数学成绩查询按语文成绩查询(5)源程序代码及运行结果:#include #include #include #include #include #include #define NULL 0#define LEN sizeof(struct student)struct student int num; char name20; float score3; struct student *next;int n;struct student *head;struct student *creat(void) struct student *p1,*p2; n=0; p1=p2=(struct student *)malloc(LEN); head=NULL; printf(请输入学号n); scanf(%d,&p1-num); printf(请输入姓名n); scanf(%s,&p1-name); printf(请输入英语成绩n); scanf(%f,&p1-score0); printf(请输入数学成绩n); scanf(%f,&p1-score1); printf(请输入语文成绩n); scanf(%f,&p1-score2); while(p1-num!=0) n=n+1; if(n=1) head=p1; else p2-next=p1; p2=p1; p1=(struct student *)malloc(LEN); printf(请输入学号n); scanf(%d,&p1-num); printf(请输入姓名n); scanf(%s,&p1-name); printf(请输入英语成绩n); scanf(%f,&p1-score0); printf(请输入数学成绩n); scanf(%f,&p1-score1); printf(请输入语文成绩n); scanf(%f,&p1-score2); p2-next=NULL; return(head);void print(struct student *head) struct student *p; printf(学号 姓名 英语 数学 语文n); p=head; if(head!=NULL) do printf(%4d %4s %4.0f %4.0f %4.0fn,p-num,p-name,p-score0,p-score1,p-score2); p=p-next; while(p!=NULL);inandout() FILE *fp;struct student *p; if(fp=fopen(student.dat,w)=NULL) printf(cannot open this filen); exit(0); head=creat(); print(head); for(p=head;p!=NULL;p=p-next) fwrite(p,sizeof(struct student),1,fp); fclose(fp); paixu(struct student *q)struct student *p;struct student *a20;int i,j,k,m; for(i=0,p=head;p!=NULL;p=p-next,i+)ai=p;for(j=0;ji-1;j+)for(k=0;knumak+1-num)p=ak;ak=ak+1;ak+1=p; printf(学号 姓名 英语 数学 语文n);for(m=0;mnum,am-name,am-score0,am-score1,am-score2);paixux() paixu(head);finda() struct student *p; char s20;int a=1; float v,s1; p=head; printf(请输入您要查找的姓名n); scanf(%s,s); while(p!=NULL) if(a=strcmp(s,p-name)=0) break; else p=p-next; if(a=0) s1=p-score0+p-score1+p-score2; v=s1/3; printf(您要查找的信息如下:n); printf(学号 姓名 英语 数学 语文n); printf(%4d%4s%4.0f%4.0f%4.0f%6.0f %6.0fn,p-num,p-name,p-score0,p-score1,p-score2,v,s1); else printf(这里没有您要查找的信息n); printf(请按键退出n);findba() struct student *p; float a,v,s1; int x=0; p=head; printf(请输入您要查找的英语成绩:n); scanf(%f,&a); while(p!=NULL) if(a=p-score0) s1=p-score0+p-score1+p-score2; v=s1/3; printf(学号 姓名 英语 数学 语文n); printf(%4d%4s%4.0f%4.0f%4.0f%6.0f%6.0fn,p-num,p-name,p-score0,p-score1,p-score2,v,s1); x+; p=p-next; if(x=0) printf(这里没有您要查找的信息n); printf(请按键退出n);findbb() struct student *p; float a,v,s; int x=0; p=head; printf(请输入您要查找的数学成绩:n); scanf(%f,&a); while(p!=NULL) if(a=p-score0) s=p-score0+p-score1+p-score2; v=s/3; printf(学号 姓名 英语 数学 语文n); printf(%4d%4s%4.0f%4.0f%4.0f%6.0f%6.0fn,p-num,p-name,p-score0,p-score1,p-score2,v,s); x+; p=p-next; if(x=0) printf(这里没有您要查找的信息n); printf(请按键退出n);findbc() struct student *p; float a,v,s; int x=0; p=head; printf(请输入您要查找的语文成绩:n); scanf(%f,&a); while(p!=NULL) if(a=p-score2) s=p-score0+p-score1+p-score2; v=s/3; printf(学号 姓名 英语 数学 语文n); printf(%4d%4s%4.0f%4.0f%4.0f%6.0f%6.0fn,p-num,p-name,p-score0,p-score1,p-score2,v,s); x+; p=p-next; if(x=0) printf(这里没有您要查找的信息n); printf(请按键退出n);findb() int c;qwe: system(cls); printf(*1.按英语成绩查询*n); printf(*2.按数学成绩查询*n); printf(*3.按语文成绩查询*n); printf(*4.返回上一菜单*n); printf( *请选择*n); scanf(%d,&c); switch(c) case 1:findba();break; case 2:findbb();break; case 3:findbc();break; case 4:goto quit; default :printf(输入错误n); getchar(); getchar(); system(cls); goto qwe;quit: ; findc() struct student *p; int a,x=0; float v,s; p=head; printf(请输入您要查询的学号:n); scanf(%d,&a); while(p!=NULL) if(a=p-num) s=p-score0+p-score1+p-score2; v=s/3; printf(学号 姓名 英语 数学 语文n); printf(%4d %4s %4.0f %4.0f %4.0f %6.0f %6.0fn,p-num,p-name,p-score0,p-score1,p-score2,v,s); x+; break; p=p-next; if(x=0) printf(这里没有您要查找的信息n); printf(请按键退出n);findout() int c;egf: printf( * 1.按姓名查询 *n); printf( * 2.按成绩查询*n); printf( * 3.按学号查询 *n); printf( * 4.返回上一菜单*n); printf( * 请选择*n); scanf(%d,&c); switch(c) case 1:finda();break; case 2:findb();break; case 3:findc();break; case 4:goto tui; default :printf(输入错误n); getchar(); getchar(); system(cls); goto egf;tui: ;struct student *del(int num) struct student *p1,*p2; if(head=NULL) printf(there is nothingn);goto nba; p1=head; while(num!=p1-num&p1-next!=NULL) p2=p1;p1=p1-next; if(num=p1-num) if(p1=head) head=p1-next; else p2-next=p1-next; printf(删除了第%d结点:n,num); n=n-1; else printf(找不到该结点);nba: return(head);giveup() int a; do printf(请输入您要删除的学号n); scanf(%d,&a); head=del(a); print(head); while(a!=0); printf(请按键退出n);struct student *insert(struct student *stud) struct student *p0,*p1,*p2; p1=head; p0=stud; if(head=NULL) head=p0;p0-next=NULL; else while(p0-nump1-num)&(p1-next!=NULL) p2=p1; p1=p1-next; if(p0-numnum) if(head=p1) head=p0; else p2-next=p0; p0-next=p1; else p1-next=p0;p0-next=NULL; n=n+1; return(head); addup() struct student stud50; int i=0; printf(请输入您要插入的信息n); scanf(%d %s %f %f %f,&studi.num,&,&studi.score0,&studi.score1,&studi.score2); while(studi.num!=0) head=insert(&studi); print(head); i=i+; printf(请输入您要插入的信息:n); scanf(%d %s %f %f %f,&studi.num,&,&studi.score0,&studi.score1,&studi.score2); printf(请按键退出n);f() int c;abc: printf( * 1.输入和输出 *n);printf( * 2.按学号排序 *n); printf( * 3.查询 *n); printf( * 4.删除 *n); printf( * 5.添加 *n); printf( * 6.退出 *n);printf( * 请选择*n); scanf(%d,&c); system(cls); switch(c) case 1:inandout();break;case 2:paixux();break; case 3:findout();break; case 4:giveup();break; case 5:addup();break; case 6:goto end; default :printf(n); getchar(); getchar(); system(cls); goto abc;end: ;struct years int a; int b; int c; char s50;year;int first(int x) int z; if(x%4=0) z=1; else z=0; return(z);int second(int a,int b,int c) int i; if(a%4=0) if(b=1) i=c; else if(b=2) i=31+c; else if(b=3) i=60+c; else if(b=4) i=91+c; else if(b=5) i=121+c; else if(b=6) i=152+c; else if(b=7) i=182+c; else if(b=8) i=213+c; else if(b=9) i=244+c; else if(b=10) i=274+c; else if(b=11) i=305+c; else i=336+c; else if(b=1) i=c; else if(b=2) i=31+c; else if(b=3) i=59+c; else if(b=4) i=60+c; else if(b=5) i=120+c; else if(b=6) i=151+c; else if(b=7) i=181+c; else if(b=8) i=212+c; else if(b=9) i=243+c; else if(b=10) i=273+c; else if(b=11) i=304+c; else i=335+c; return(i);g() FILE *fp; int x,y; char s150=this year is runnian; char s250=this year isnt runnian; if(fp=fopen(out1.txt,w)=NULL) printf(不能打开此文件n);exit(0); printf(请输入年月日:n); scanf(%d %d %d,&year.a,&year.b,&year.c); x=first(year.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-江苏-江苏保健按摩师四级(中级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-广西-广西地图绘制员五级(初级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-广东-广东热处理工一级(高级技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-广东-广东机械热加工四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广东-广东地质勘查员五级(初级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广东-广东保育员五级(初级工)历年参考题库含答案解析
- 2020-2025年初级经济师之初级建筑与房地产经济通关题库(附答案)
- 2025年驾驶证考试-客车理论考试-客车驾驶证(科目一)历年参考题库含答案解析(5套)
- 2025年职业技能鉴定-铁路职业技能鉴定-铁路职业技能鉴定(铁路钢轨探伤工)技师历年参考题库含答案解析(5套)
- 2025年职业技能鉴定-铁路职业技能鉴定-变电值班员(初级工)历年参考题库含答案解析(5套)
- 麦冬(浙麦冬)规范化生产技术规程
- 2024-2029年N-甲基吗啉N-氧化物(NMMO)行业市场现状供需分析及市场深度研究发展前景及规划投资研究报告
- 技术交底记录(通风)
- 2024年浙江温州乐清市公安局警务辅助人员招聘笔试参考题库附带答案详解
- (高清版)TDT 1055-2019 第三次全国国土调查技术规程
- 中国茶文化英文
- 乳果糖口服溶液说明书用法
- 钳工中级理论知识试卷与答案
- 30题机器人运动控制工程师岗位常见面试问题含HR问题考察点及参考回答
- 日本水引文化+介绍+课件+【知识精讲精研】人教版初中日语第一册兴趣拓展课
- Photoshop-SketchUp园林景观效果图制作课件-平面效果图制作
评论
0/150
提交评论