学生成绩管理系统.doc_第1页
学生成绩管理系统.doc_第2页
学生成绩管理系统.doc_第3页
学生成绩管理系统.doc_第4页
学生成绩管理系统.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

程序设计基础课程设计报告 题 目:学生成绩管理系统姓 名: 班 级:学 号:指导教师: 完成地点: 完成时间: 目 录一 设计题目及要求1 二 主要数据结构2三 模块设计3四 流程图 .3五 源代码 .5六 测试结果及分析 8七 小 结.10参考文献及网站.10高级语言程序设计课程设计任务书设计题目1学生信息管理系统设计任务和目标任务:独立设计学生信息管理系统,实现以下功能:一、 基本功能1、 信息录入录入学生成绩信息(包括学生学号、姓名、各门课程的成绩等)。2、信息查询输入学号,查询某学生各门课程的成绩及平均成绩;查询所有学生各门课程的成绩;3、 信息删除与修改输入学号,删除该学生的成绩信息;输入学号,查询并显示出该学生的成绩信息,并在此基础上进行修改。二、扩充功能1、排序对学生数据按可选的自定义规则进行排序,显示出排序结果。2、 信息保存 将学生的学号、姓名及各门课程的成绩等信息保存于外部存储器的文件中。3、信息装载从已保存好的文件中将信息读入内存,在此基础上可以进行各种基本操作。设计内容与步骤1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。2、建立一个文件,将每位学生的信息写入文件中(人数利用宏定义设定)并能显示于屏幕上。3、完成上述显示、查找(姓名,性别等)、修改等功能。4、进一步要求,修改记录设置密码操作。设计要求1、用C语言实现程序设计;2、利用结构体数组实现学生信息的数据结构设计;3、系统的各个功能模块要求用函数的形式实现;4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:1、题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分 。2、流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案/主要数据结构struct studentint iNum;/学号char name10; /姓名char sex5; /姓别float english; /英语成绩float cyuyan; /c语言成绩float shuxu; /数学成绩 float total; /总成绩double aver; /平均成绩struct student *pStrNext;学生成绩管理系统删除学生信息信息查询基本数据信息管理保存学生信息输入学生成绩输出学生信息插入学生成绩 按学号查询按姓名查询针对各个模块不同的表实现添加记录、修改记录、删除记录以及查询显示记录等功能。/源代码/*/* 课程设计:学生成绩管理系统。 */* 作者:陈新卫 */* 班级:计算机科学与技术1101B */* 编制时间:2012年 */*/库函数# include# include# include/自定义数据类型struct studentint iNum;char name10;char sex5;float english;float cyuyan;float shuxu; float total;double aver;struct student *pStrNext;/调用辅助函数输入要求学生填写的信息void print_biaotou() printf(=n);printf(学号 | 姓名 | 性别 |英语成绩|c语言成绩|数学成绩|总成绩|平均成绩|n);/输入学生信息/调用输出函数输入学生信息struct student *input() char sign; struct student *pStrStuHead=0,*pStrStuTemp,*pStrStuTail=0;pStrStuTemp=(struct student *)malloc(sizeof(struct student);printf(请输入学生的学号、姓名、性别、英语成绩、c语言成绩、数学成绩:n); scanf(%d%s%s%f%f%f,&pStrStuTemp-iNum,pStrStuTemp-name,pStrStuTemp-sex,&pStrStuTemp-english,&pStrStuTemp-cyuyan,&pStrStuTemp-shuxu);pStrStuTemp-total=pStrStuTemp-english+pStrStuTemp-cyuyan+pStrStuTemp-shuxu;pStrStuTemp-aver=pStrStuTemp-total/3.0; pStrStuTemp-pStrNext=0;/*接入链表getchar();printf(是否继续输入?(Y:继续/N: 不继续):n);/判断是否继续输入,继续输入y,不继续输入Nscanf(%c,&sign); while(sign!=n&sign!=N) if(!pStrStuHead)/*接入第一个结点,头指针,尾指针均指向该结点pStrStuHead=pStrStuTail=pStrStuTemp;else /接入非第一个结点pStrStuTail-pStrNext=pStrStuTemp;/接在尾指针所指结点之后pStrStuTail=pStrStuTemp; /尾指针指向新加入结点 pStrStuTemp=(struct student *)malloc(sizeof(struct student); printf(请输入学生的学号、姓名、性别、英语成绩、c语言成绩、数学成绩:n); scanf(%d%s%s%f%f%f,&pStrStuTemp-iNum,pStrStuTemp-name,pStrStuTemp-sex,&pStrStuTemp-english,&pStrStuTemp-cyuyan,&pStrStuTemp-shuxu); pStrStuTemp-total=pStrStuTemp-english+pStrStuTemp-cyuyan+pStrStuTemp-shuxu; pStrStuTemp-aver=pStrStuTemp-total/3.0; pStrStuTemp-pStrNext=0; getchar(); printf(是否继续输入?(Y/N):n); scanf(%c,&sign); if(!pStrStuHead)/*接入第一个结点,头指针,尾指针均指向该结点pStrStuHead=pStrStuTail=pStrStuTemp;else /接入非第一个结点pStrStuTail-pStrNext=pStrStuTemp;/接在尾指针所指结点之后pStrStuTail=pStrStuTemp; /尾指针指向新加入结点return pStrStuHead;/按学号查找学生信息void search_bynum(struct student *p1)struct student *p2;int num; char continue_input=N;printf(请输入你要查找学生的学号);scanf(%d,&num); p2=p1; while(p2)if(p2-iNum=num)break;p2=p2-pStrNext;if(p2=NULL)printf(没有找到姓名是%d的学生!,num); else print_biaotou();printf(%d,t%s,t%s,t%.1f,t%.1f,t%.1f,t%.1f,t%.1f,tn,p2-iNum,p2-name,p2-sex,p2-english,p2-cyuyan,p2-shuxu,p2-total,p2-aver);getchar();printf(是否继续查询?(Y:继续,N:不继续); /判断是否继续输入,继续输入y,不继续scanf(%c,&continue_input);if(continue_input=Y|continue_input=y)search_bynum(p1);/按姓名查找学生信息void search_byname(struct student *p1)struct student *p2;char cname5; char continue_input=N;printf(请输入你要查找学生的姓名);scanf(%s,cname); p2=p1; while(p2)if(strcmp(p2-name,cname)=0)break;p2=p2-pStrNext;if(p2=NULL)printf(没有找到姓名是%s的学生!,cname); else print_biaotou();printf(%d,t%s,t%s,t%.1f,t%.1f,t%.1f,t%.1f,t%.1f,tn,p2-iNum,p2-name,p2-sex,p2-english,p2-cyuyan,p2-shuxu,p2-total,p2-aver);getchar();printf(是否继续查询?(Y:继续,N:不继续);scanf(%c,&continue_input);if(continue_input=Y|continue_input=y)search_byname(p1);/调用辅助函数输出要求学生填写的信息信息void list(struct student *pStrStuHead) print_biaotou();while(pStrStuHead) printf(%-4d | %s | %s |%8.0f|%9.0f|%8.0f|%6.0f|%8.0f|n,pStrStuHead-iNum,pStrStuHead-name,pStrStuHead-sex,pStrStuHead-english,pStrStuHead-cyuyan,pStrStuHead-shuxu,pStrStuHead-total,pStrStuHead-aver); pStrStuHead=pStrStuHead-pStrNext;/调用辅助函数输出标题信息void print_biaoti() printf(*n);printf(* 学生成绩管理系统 *n);printf(*n);/辅助函数输出主菜单信息void print_menu_main() printf( |=|n);printf( | |n);printf( | 主 菜 单 |n);printf( | 1,输入学生成绩。 |n);printf( | 2,显示学生成绩。 |n);printf( | 3,查询学生成绩。 |n);printf( | 4,插入学生成绩。 |n);printf( | 5,删除学生成绩。 |n);printf( | 6,计算并按平均成绩排序输出。 |n);printf( | 7,保存学生成绩。 |n);printf( | 0,退出系统。 |n);printf( |-|n);/辅助函数输出查找菜单信息void print_menu_search()printf(|n);printf(1,按照学号查询。n);printf(2,按照姓名查询。n); printf(3,返回上级菜单。n);printf(4,直接退出学生管理系统n);printf(|n);/struct student* get_last_student(struct student* p)if(p-pStrNext=NULL)return p;else get_last_student(p-pStrNext);return p;/插入链表struct student *insert(struct student *head)struct student *ptr,*ptr1,*ptr2,*stu;char continue_choice;continue_choice=N;ptr2=head; /*ptr指向待插入的新的学生记录点*/stu=(struct student *)malloc(sizeof(struct student);printf(请输入学生的学号、姓名、性别、英语成绩、c语言成绩、数学成绩:n); scanf(%d%s%s%f%f%f,&stu-iNum,stu-name,stu-sex,&stu-english,&stu-cyuyan,&stu-shuxu);stu-total=stu-english+stu-cyuyan+stu-shuxu;stu-aver=stu-total/3.0;stu-pStrNext=0;ptr=stu; if(head=NULL)head=ptr; /*新插入结点为头结点*/head-pStrNext=NULL;else /*原链表不为空时插入*/ while(ptr-iNumptr2-iNum)&(ptr2-pStrNext!=NULL)ptr1=ptr2; /*ptr1,ptr2各后移一个结点*/ptr2=ptr2-pStrNext;if(ptr-iNumiNum) /*在ptr1,ptr2之间插入新结点*/if(head=ptr2) head=ptr;elseptr1-pStrNext=ptr;ptr-pStrNext=ptr2;else /*新插入节点为尾结点*/ptr2-pStrNext=ptr;ptr-pStrNext=NULL;getchar();printf(是否继续添加?(Y:继续,N:不继续);scanf(%c,&continue_choice);if(continue_choice=Y|continue_choice=y)insert(head);return head;/删除学生信息struct student *del(struct student *pStrStuHead) int inum;int n,sign;printf(请输入删除学生信息所需要的密码:);scanf(%d,&sign);if(sign=123) printf(请输入学生的学号:); scanf(%d,&inum);struct student *p1,*p2;if(pStrStuHead=pStrStuHead=NULL)printf(n list null!n);return(pStrStuHead);p1=pStrStuHead; while(inum!=p1-iNum&p1-pStrNext!=NULL) p2=p1;p1=p1-pStrNext; if(inum=p1-iNum) if(p1=pStrStuHead) pStrStuHead=p1-pStrNext; else p2-pStrNext=p1-pStrNext; printf(delete:%dn,inum); n=n-1; else printf(%d not been found!n,inum);else printf(输入密码错误你将不能删除此学生的信息!n); return(pStrStuHead);/文件读取void duqu(struct student *pStrStuHead)FILE *fp;fp=fopen(student,rb);if(fp=0)printf(不能打开文件!);exit(0);else while(1)fread(pStrStuHead,sizeof(struct student),1,fp); pStrStuHead=pStrStuHead-pStrNext;fclose(fp);/存入文件void baocun(struct student *pStrStuHead) struct student *p; FILE *fp; fp=fopen(student原始数据保存.txt,w);if(fp=0)printf(不能打开文件!n);exit(0);elsefor(p=pStrStuHead;p;p=pStrStuHead-pStrNext)fwrite(p,sizeof(struct student),1,fp);fclose(fp);/排序函数struct student *sort(struct student *h) struct student *p,*q,*t,*h1; if(h-pStrNext=NULL) printf(error); else h1=h-pStrNext; h1-pStrNext=NULL; while(h1!=NULL) t=h1; h1=h1-pStrNext; p=h; q=h; while(t-averaver&p!=NULL) q=p; p=p-pStrNext; if(p=q) t-pStrNext=p; h=t; else t-pStrNext=p; q-pStrNext=t; p=h; return h;void main() struct student *strStuTemp;struct student *pStrStuHead; pStrStuHead=(struct student *)malloc(sizeof(struct student); char s10=xxx;char a5= xxx; pStrStuHead-iNum=0;strcpy(pStrStuHead-name,s);strcpy(pStrStuHead-sex,s);pStrStuHead-english=0;pStrStuHead-cyuyan=0;pStrStuHead-shuxu=0;pStrStuHead-total=0;pStrStuHead-aver=0; pStrStuHead-pStrNext=0;print_biaoti();system(cls);int menu_choice=0,menu_search_choice,sign1=1,sign2=1,sign3=1,sign4=1;while(sign1!=0) sign2=1;while(sign2!=0) print_menu_main(); printf(请选择:); scanf(%d,&menu_choice); switch(menu_choice) case 1:pStrStuHead-pStrNext=input();break; case 2:list(pStrStuHead);break; case 3: sign3=1; while(sign3!=0) sign4=1; while(sign4!=

温馨提示

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

评论

0/150

提交评论