版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计报告题目:学生成绩管理系统学生姓名:张大伟指导老师:刘伟荣学院:信息科学与工程学院专业班级:电气信息类1008班完成时间:2011年6月25日C语言程序设计报告课题名称:学生信息管理系统学生信息管理系统是基于系统主菜单的操作来实现学生数据的录入、修改、查询和统计等系统的基本功能。达到对学生信息的存储、统计、管理的目的。需要处理的数据如:班级、学号、姓名等。实现的功能模块如:数据的录入、数据的修改、数据的插入、数据的查询和数据的统计等。在时间过程中熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握函数嵌套调用、文件的读写、链表的应用等。系统概述数据结构设计各函数的设计五、使用程序说明1、欢迎界面2学生信息管理系统菜单主界面学生信息录入功能学生课程录入功能修改学生信息与成绩功能删除学生信息与成绩功能查询学生成绩排名功能总结与体会附录:#include<stdio.h>#include<string.h>#defineSTUDENT3000typedefstructlecture{//定义课程信息的数据类型intnumber;charl_name[50];doublepoint; doubleexam_score;doubledaily_score;doublescore;}Lecture;typedefstructstudent{//定义学生信息的数据类型intnum;charclass[50];charname[50];charsex[5];intage;Lecturelecture[50];doubletotal_score;structstudent*before;structstudent*next;}Student;Studentstu[2*STUDENT];Studentstudenthead;intSTU=0;FILE*fp_student;voidreadfile()//从文件中读入保存的学生信息{ Studentb; Student*pb=&studenthead; studenthead.next=NULL; while(fread(&b,sizeof(Student),1,fp_student)==1) { stu[STU]=b; pb->next=&stu[STU]; pb->next->before=pb; pb=pb->next; pb->next=NULL; STU++; }}voidwritefile()//将学校信息及选手信息保存在文件中{ Student*pb=&studenthead; rewind(fp_student); while(pb->next!=NULL) { fwrite(pb->next,sizeof(Student),1,fp_student); pb=pb->next; } }voidwelcome()//欢迎界面{system("cls");printf("\n\n\n\n\n\n\n");printf("\t\t\t");printf("学生成绩管理系统");printf("\n\n\n\n");printf("\t\t\t设计者张大伟\n\n");printf("\t\t\t指导老师刘伟荣\n\n");printf("\t\t中南大学电气信息类1008班\n\n");printf("\t\t\t2011年6月25日\n");printf("\n\n\n\n\n");system("pause");system("cls");}voiddisplay()//系统主操作界面{system("cls");printf("\n\n\n\n");printf("\n*******************************************************************************\n");printf("\t\t\t");printf("教务信息管理系统");printf("\n\n\n");printf("\t\t\t1.录入学生信息\n\n");printf("\t\t\t2.录入课程信息\n\n");printf("\t\t\t3.修改学生信息\n\n");printf("\t\t\t4.修改课程信息\n\n");printf("\t\t\t5.查询学生信息\n\n");printf("\t\t\t6.删除学生信息\n\n");printf("\t\t\t7.查询成绩排名\n\n");printf("\t\t\t0.退出管理系统\n\n");printf("\n*******************************************************************************\n");}voidvalue_score()//计算加权成绩函数{Student*a; doubles=0,n=0; inti; for(a=studenthead.next;a!=NULL;a=a->next) { Lecture*b; for(b=a->lecture;b->number!=0;b++) { b->score=0.7*b->exam_score+0.3*b->daily_score; s+=b->score*b->point; n+=b->point; } if(n==0)a->total_score=0; else a->total_score=s/n; }}voidinput_student()//输入学生信息函数{ inti; Studenta; Student*pa; Lecture*b; charch; while(1) { system("cls"); pa=&studenthead; while(pa->next!=NULL) pa=pa->next; memset(,'\0',sizeof()); memset(a.class,'\0',sizeof(a.class)); memset(a.sex,'\0',sizeof(a.sex)); printf("\n\n"); printf("\t\t学生成绩管理系统->录入学生信息\n\n\n"); printf("\n\t\t请输入学生学号:\n"); printf("\t\t"); scanf("%d",&a.num); printf("\n\t\t请输入学生班级:\n"); printf("\t\t"); scanf("%s",a.class); printf("\n\t\t请输入学生姓名:\n"); printf("\t\t"); scanf("%s",); printf("\n\t\t请输入学生性别:\n"); printf("\t\t"); scanf("%s",a.sex); printf("\n\t\t请输入学生年龄:\n"); printf("\t\t"); scanf("%d",&a.age);stu[STU]=a;pa->next=&stu[STU]; pa->next->before=pa; pa=pa->next; pa->next=NULL; b=stu[STU].lecture; for(i=0;i<50;i++) { b[i].number=0; memset(b[i].l_name,'\0',sizeof(b[i].l_name)); b[i].point=0; b[i].exam_score=0; b[i].daily_score=0; } STU++; printf("\n\n\t\t"); printf("是否继续输入其他学生的信息(Y/N)");while(1) { ch=getch();if(strchr("YyNn",ch)!=NULL)break; } if(ch=='n'||ch=='N')break; } }voidinput_lecture()//输入课程信息函数{ intn,i,j,ok;Student*a;Lecture*b; charch; while(1) { system("cls"); printf("\n\n\t\t学生成绩管理系统->录入课程信息\n\n\n"); printf("\n\t\t请输入学生学号:\n"); printf("\t\t"); scanf("%d",&n); for(a=studenthead.next,ok=0;a!=NULL;a=a->next) if(a->num==n){ok=1;break;} if(ok==1)break;if(ok==0) { printf("\n\t\t未查找到该学生,按任意键后重新继续...\n"); getch(); printf("\n\t\t是否继续输入其他课程信息(Y/N)");while(1) { ch=getch();if(strchr("YyNn",ch)!=NULL)break; } if(ch=='y'||ch=='Y')continue; if(ch=='n'||ch=='N')break; }} while(1) { b=a->lecture; for(j=0;b[j].number!=0;j++); printf("\n\t\t请输入课程编号:\n"); printf("\t\t"); scanf("%d",&b[j].number); printf("\n\t\t请输入课程名称:\n"); printf("\t\t"); scanf("%s",b[j].l_name); printf("\n\t\t请输入课程学分:\n"); printf("\t\t"); scanf("%lf",&b[j].point); printf("\n\t\t请输入学生平时成绩:\n"); printf("\t\t"); scanf("%lf",&b[j].daily_score); printf("\n\t\t请输入学生考试成绩:\n"); printf("\t\t"); scanf("%lf",&b[j].exam_score); printf("\n\n\n\t\t已经成功录入此课程信息...\n"); printf("\n\t\t是否继续输入此学生的其他课程信息(Y/N)");while(1) { ch=getch();if(strchr("YyNn",ch)!=NULL)break; } if(ch=='y'||ch=='Y')continue; if(ch=='n'||ch=='N')return; }}voidcorrect_student()//修改学生信息函数{ charch; intn,ok; charm[50]; Student*a; while(1) {system("cls"); printf("\n\n\n\t\t学生成绩管理系统->修改学生基本信息"); printf("\n\n\n");printf("\t\t1.按学号查询并修改\n"); printf("\n\t\t2.按姓名查询并修改\n"); printf("\n\t\t0.返回主菜单\n"); while(1) { ch=getch(); if(strchr("012",ch)!=NULL) break; } if(ch=='0')return; if(ch=='1') { printf("\n\t\t请输入学生学号:\n"); printf("\t\t"); scanf("%d",&n); for(a=studenthead.next,ok=0;a!=NULL;a=a->next) if(a->num==n){ok=1;break;}if(ok==0) { printf("\n\t\t未查找到该学生,按任意键后重新继续...\n"); getch(); printf("\n\t\t是否继续修改其他学生信息(Y/N)");while(1) { ch=getch();if(strchr("YyNn",ch)!=NULL)break; } if(ch=='y'||ch=='Y')continue; if(ch=='n'||ch=='N')return; } } elseif(ch=='2') { printf("\n\t\t请输入学生姓名:\n"); printf("\t\t"); scanf("%s",m); for(a=studenthead.next,ok=0;a!=NULL;a=a->next) if(!strcmp(m,a->name)){ok=1;break;}if(ok==0) { printf("\n\t\t未查找到该学生,按任意键后重新继续...\n"); getch(); printf("\n\t\t是否继续修改其他学生信息(Y/N)");while(1) { ch=getch();if(strchr("YyNn",ch)!=NULL)break; } if(ch=='y'||ch=='Y')continue; if(ch=='n'||ch=='N')return; } } printf("\t\t请重新输入学生学号:\n"); printf("\t\t"); scanf("%d",&a->num); printf("\n\t\t请重新输入学生班级:\n"); printf("\t\t"); scanf("%s",a->class); printf("\n\t\t请重新输入学生姓名:\n"); printf("\t\t"); scanf("%s",a->name); printf("\n\t\t请重新输入学生性别:\n"); printf("\t\t"); scanf("%s",a->sex); printf("\n\t\t请重新输入学生年龄:\n"); printf("\t\t"); scanf("%d",&a->age);printf("\n\n\t\t学生基本信息已成功修改,按任意键继续..."); getch(); break;} }voidcorrect_lecture()//修改课程信息函数{intn,i,ok;Student*a;Lecture*b; charch; charinf[50]; while(1) { system("cls"); printf("\n\n\t\t学生成绩管理系统->修改课程信息\n\n\n"); printf("\n\t\t请输入学生学号:\n"); printf("\t\t"); scanf("%d",&n); for(a=studenthead.next,ok=0;a!=NULL;a=a->next) if(a->num==n){ok=1;break;}if(ok==0) { printf("\n\t\t未查找到该学生,按任意键后重新继续...\n"); getch(); printf("\n\t\t是否继续修改其他课程信息(Y/N)");while(1) { ch=getch();if(strchr("YyNn",ch)!=NULL)break; } if(ch=='y'||ch=='Y')continue; if(ch=='n'||ch=='N')break; } while(1) { printf("\n\t\t请输入课程名称:\n"); printf("\t\t"); scanf("%s",inf); for(b=a->lecture,ok=0;b->number!=0;b++) if(!strcmp(b->l_name,inf)){ok=1;break;} if(ok==1)break;if(ok==0) { printf("\n\t\t未查找到该课程,按任意键后重新继续...\n"); getch(); printf("\n\t\t是否继续修改该生课程信息(Y/N)");while(1) { ch=getch();if(strchr("YyNn",ch)!=NULL)break; } if(ch=='y'||ch=='Y')continue; if(ch=='n'||ch=='N')return; } } printf("\n\t\t请重新输入课程编号:\n"); printf("\t\t"); scanf("%d",&b->number); printf("\n\t\t请重新输入课程名称:\n"); printf("\t\t");scanf("%s",b->l_name); printf("\n\t\t请重新输入课程学分:\n"); printf("\t\t"); scanf("%lf",&b->point); printf("\n\t\t请重新输入学生平时成绩:\n"); printf("\t\t"); scanf("%lf",&b->daily_score); printf("\n\t\t请重新输入学生考试成绩:\n"); printf("\t\t"); scanf("%lf",&b->exam_score); printf("\n\n\n\t\t已经成功修改此课程信息,按任意键返回主菜单...\n"); getch(); break; }}voidsearch_student()//查询学生信息函数{ charch; charm[50]; intn,ok,i; Student*a; Lecture*b; value_score();while(1) { system("cls"); printf("\n\n\n\t\t学生成绩管理系统->查询学生信息");printf("\n\n\n");printf("\t\t1.按编号查询学生信息\n\n");printf("\t\t2.按姓名查询学生信息\n\n");printf("\t\t0.返回主菜单\n\n");while(1){ ch=getch(); if(strchr("120",ch)!=NULL)break; } if(ch=='0')break; if(ch=='1') {printf("\n\t\t请输入学生学号:\n"); printf("\t\t"); scanf("%d",&n); for(a=studenthead.next,ok=0;a!=NULL;a=a->next) if(a->num==n){ok=1;break;}if(ok==0) { printf("\n\t\t未查找到该学生,按任意键后重新继续...\n"); getch(); printf("\n\t\t是否继续查询其他学生信息(Y/N)");while(1) { ch=getch();if(strchr("YyNn",ch)!=NULL)break; } if(ch=='y'||ch=='Y')continue; if(ch=='n'||ch=='N')return; } } elseif(ch=='2') { printf("\n\t\t请输入学生姓名:\n"); printf("\t\t"); scanf("%s",m); for(a=studenthead.next,ok=0;a!=NULL;a=a->next) if(!strcmp(m,a->name)){ok=1;break;}if(ok==0) { printf("\n\t\t未查找到该学生,按任意键后重新继续...\n"); getch(); printf("\n\t\t是否继续查询其他学生信息(Y/N)");while(1) { ch=getch();if(strchr("YyNn",ch)!=NULL)break; } if(ch=='y'||ch=='Y')continue; if(ch=='n'||ch=='N')return; } } printf("\n\n"); printf("\t\t学生信息:\n\n"); printf("\t\t学号班级姓名年龄\n"); printf("\t\t%-16d%-18s%-10s%d\n",a->num,a->class,a->name,a->age); printf("\n\t\t课程信息:\n\n"); printf("\t\t课程编号课程名称学分平时成绩考试成绩综合成绩\n"); for(b=a->lecture,i=0;b[i].number!=0;i++) printf("\t\t%-12d%-14s%-6.1lf%-10.1lf%-10.1lf%.1lf\n",b[i].number,b[i].l_name,b[i].point,b[i].daily_score,b[i].exam_score,b[i].score);printf("\n\n\t\t按任意键继续...");getch();break; }}voiddelete_student_inf(Student*a){charch;printf("\n\n\t\t信息删除后将不能恢复,是否继续(Y/N)");while(1) { ch=getch();if(strchr("YyNn",ch)!=NULL)break; } if(ch=='n'||ch=='N')return; if(a->next==NULL) a->before->next=NULL; else { a->before->next=a->next; a->next->before=a->before; } printf("\n\n\t\t该学生信息已成功删除,按任意键继续..."); getch();}voiddelete_student()//删除学生信息函数{ charch; intn,ok; charm[50]; Student*a;while(1) { system("cls"); printf("\n\n\n\t\t学生成绩管理系统->删除学生信息");printf("\n\n\n");printf("\t\t1.按编号删除学生信息\n\n");printf("\t\t2.按姓名删除学生信息\n\n");printf("\t\t0.返回主菜单\n\n");while(1){ ch=getch(); if(strchr("120",ch)!=NULL)break; } if(ch=='0')break; if(ch=='1') {printf("\n\t\t请输入学生学号:\n"); printf("\t\t"); scanf("%d",&n); for(a=studenthead.next,ok=0;a!=NULL;a=a->next) if(a->num==n){ok=1;break;}if(ok==0) { printf("\n\t\t未查找到该学生,按任意键后重新继续...\n"); getch(); printf("\n\t\t是否继续删除其他学生信息(Y/N)");while(1) { ch=getch();if(strchr("YyNn",ch)!=NULL)break; } if(ch=='y'||ch=='Y')continue; if(ch=='n'||ch=='N')return; } } elseif(ch=='2') { printf("\n\t\t请输入学生姓名:\n"); printf("\t\t"); scanf("%s",m); for(a=studenthead.next,ok=0;a!=NULL;a=a->next) if(!strcmp(m,a->name)){ok=1;break;}if(ok==0) { printf("\n\t\t未查找到该学生,按任意键后重新继续...\n"); getch(); printf("\n\t\t是否继续删除其他学生信息(Y/N)");while(1) { ch=getch();if(strchr("YyNn",ch)!=NULL)break; } if(ch=='y'||ch=='Y')continue; if(ch=='n'||ch=='N')return; } } delete_student_inf(a); break; }}voidrank_score()//将成绩进行排名的函数{value_score(); Student*a,*b,*c;a=&studenthead;while(a->next!=NULL)a=a->next; for(;a!=&studenthead;a=a->before) for(b=studenthead.next;b!=a;) if(b!=NULL&&b->next!=NULL) { if(b->next->next==NULL) { if(b->next->total_score>b->total_score) { b->before->next=b->next; b->next->b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第二单元第一课《观照自然》教学课件- 2025-2026学年人美版(2024)初中美术七年级下册
- 《历史上的编码》教案-2025-2026学年鲁教版(新教材)小学信息技术四年级下册
- 化妆品菌落总数快速筛查检测
- 中国社交电商行业发展现状分析
- 2025-2026学年黑龙江省绥化市高考化学五模试卷(含答案解析)
- 纺织厂环保设施运行办法
- 某钢铁厂轧钢生产流程准则
- 机械加工厂设备操作规范
- AI在人文地理与城乡规划中的应用
- 某钢铁厂能源消耗控制制度
- (2026年春季新版本)人教版二年级数学下册全册教案
- 干法电极技术介绍
- 医院科室建设发展战略规划报告
- 2024年3月全国事业单位联考E类职业能力倾向测验真题试卷试卷答案解析
- 江苏省常州市区2024-2025学年三年级下学期期中数学试题一
- 国际高中入学考-数学试题(英语试题)
- 网络涉毒预警监测分析报告
- 人民医院美容中医科临床技术操作规范2023版
- 《影视光线艺术与照明技巧》word版本
- 五华区城中村改造实施办法
- 云南省住院病案首页附页
评论
0/150
提交评论