

下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、封面作者:PanHongliang仅供个人学习C语言程序设计大型作业报告题目: 学生信息管理、实践的目的和要求加深对C语言课程所学知识的理解,进一步巩固C语言语法规则。学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力。二、 实践内容在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类 型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环 结构) ;大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,包括时间函数、绘 图函数,以及文件的读写操作等。三、 实践任务现有学生成绩
2、信息,内容如下姓名 学号 语文 数学 英语张明明01677882李成友02789188张辉灿03688256王露04564577陈东明05673847请用C编写一系统,实现学生信息管理,软件的入口界面应包括如下几个方面:(一)功能要求:(1)信息维护: 要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息(2)信息查询:要求:查询时可实现按姓名查询、按学号查询3)成绩统计:要求:A输入任意的一个课程名(如数学)和一个分数段(如 情况。60-70),统计出在此分数段的学生(4)排序:能对用户指定的任意课程名,按成绩升序或降序
3、排列学生数据并显示排序结果(使用 表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)(二)其它要求:(1)只能使用C语言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)学生可自动增加新功能模块(视情况可另外加分)(4)写出课程设计报告,具体要求见相关说明文档四、相关程序#include stdio.h#include stdlib.h#include string.hint shoudsave=0。/* */struct studentchar num10。/*学号*/char name20。char cgrade
4、。int aveprintf(n提示:输入错误!n)char neartime10。/*最近更新时间*/。typedef struct nodestruct student data struct node *next Node,*Link。void menu()*11printf(t1登记学生资料ttttt2删除学生资料n)printf(t3查询学生资料ttttt4修改学生资料n)printf(t5保存学生资料ttttt0退出系统n)。void printstart()printf(-n)void Wrong()printf(p
5、rintf(*n)void Nofind()printf(n=提示:没有找到该学生!n)。void printc() /*本函数用于输出中文*/printf(”学号t姓名性别英语成绩数学成绩C语言成绩总分平均分n)。void printe(Node *p)/*本函数用于输出英文*/printf(%-12s%st%st%dt%dt%dt%dt %dn,p-data.num,,p-data.sex,p-data.egrade,p-data.mgrade,p-data.cgrade,p-data.totle,p-data.ave)。Node* Locate(Link l,cha
6、r findmess,char nameornum)/*该函数用于定位连表中符合要求的接点,并返回该指针*/Node *r。if(strcmp(nameornum,num)=0) /*按学号查询*/r=l-next。while(r!=NULL)if(strcmp(r-data.num,findmess)=0)return rr=r-next。else if(strcmp(nameornum,name)=0) /*r=l-next。while(r!=NULL)if(strcmp(,findmess)=0) return r。r=r-next。return 0。void Ad
7、d(Link l) /*增加学生*/Node *p,*r,*s。char num10。r=l。s=l-next。while(r-next!=NULL)r=r-next。/*将指针置于最末尾*/while(1)printf(请你输入学号(以0返回上一级菜单:)。scanf(%s,num)。if(strcmp(num,0)=0)break。while(s)按姓名查询*/if(strcmp(s-data.num,num)=0)printf(=提示:学号为%s的学生已经存在,若要修改请你选择4修改!n,num) printstart()。printc()。printe(s)。printstart()。
8、printf(n)。return。s=s-next。p=(Node *)malloc(sizeof(Node)。strcpy(p-data.num,num)。printf(请你输入姓名:)。scanf(%s,)getchar()。printf(请你输入性别:)。scanf(%s,p-data.sex)。getchar()。printf(请你输入语文成绩:)。scanf(%d,&p-data.cgrade)。getchar()。printf(请你输入数学成绩:)。scanf(%d,&p-data.mgrade)。getchar()。printf(请你输入英语
9、成绩:)。scanf(%d,&p-data.egrade)。getchar()。p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade p-data.ave=p-data.totle / 3。/*信息输入已经完成*/p-next=NULL。r-next=p。r=p。shoudsave=1。printe(p)。void Qur(Link l) /*查询学生*/int sel。char findmess20。Node *p。if(!l-next)printf(n=提示:没有资料可以查询!n)。return。printf(n=1按学号查找
10、n=2按姓名查找n) scanf(%d,&sel)。if(sel=1)/*学号*/printf(请你输入要查找的学号:)。scanf(%s,findmess)。p=Locate(l,findmess,num)。if(p)printf(tttt查找结果n)。printstart()。printc()。printstart()elseNofind()。else if(sel=2) /*姓名*/printf(请你输入要查找的姓名:) scanf(%s,findmess)。p=Locate(l,findmess,name)。if(p)printf(tttt查找结果n)。printstart()
11、。printc()。printe(p)。printstart()。elseNofind()。elseWrong()。void Del(Link l) /*删除*/free(p)。printf(n提示:该学生已经成功删除!n)int sel。Node *p,*r。char findmess20。if(!l-next)printf(n=提示:没有资料可以删除!n)。return。printf(n=1按学号删除n=2按姓名删除n)scanf(%d,&sel)。if(sel=1)printf(请你输入要删除的学号:)。scanf(%s,findmess)。p=Locate(l,findmess
12、,num)。if(p)r=l。while(r-next!=p)r=r-next。r-next=p-next。shoudsave=1Nofind()。elseNofind()。else if(sel=2)printf(请你输入要删除的姓名:)。scanf(%s,findmess)。p=Locate(l,findmess,name)。if(p)r=l。while(r-next!=p)r=r-next。r-next=p-next。free(p)。printf(n=提示:该学生已经成功删除shoudsave=1。elseelse!n)printf(请你输入新性别(原来是%s):,p-data.sex)
13、Wrong()void Modify(Link l)Node *p。char findmess20。if(!l-next)printf(n=提示:没有资料可以修改!n)。return。printf(请你输入要修改的学生学号:)。scanf(%s,findmess)。p=Locate(l,findmess,num)。if(p)printf(请你输入新学号(原来是%s):,p-data.num) scanf(%s,p-data.num)。printf(请你输入新姓名(原来是%s):,) scanf(%s,)。getchar()。scanf(%s,p-da
14、ta.sex)printf(n提示:没有资料可以显示!n)printf(请你输入新的语文成绩(原来是%d分):,p-data.cgrade)scanf(%d,&p-data.cgrade)。getchar()。printf(请你输入新的数学成绩(原来是%d分):,p-data.mgrade) scanf(%d,&p-data.mgrade)。getchar()。printf(请你输入新的英语成绩(原来是%d分):,p-data.egrade) scanf(%d,&p-data.egrade)。p-data.totle=p-data.egrade+p-data.cgrad
15、e+p-data.mgradep-data.ave=p-data.totle/3。printf(n=提示:资料修改成功!n)。shoudsave=1elseNofind()。void Disp(Link l)int count=0。Node *p。p=l-next。if(!p)returnprintf(tttt显示结果n)。printstart()。printc()。printf(n)。while(p)printe(p)。p=p-next。printstart()。printf(n)。void Tongji(Link l)Node *pm,*pe,*pc,*pt,*pa。/*用于指向分数最高的
16、接点*/Node *r=l-next。if(!r)printf(n=提示:没有资料可以统计!n)。return。pm=pe=pc=pt=pa=rwhile(r!=NULL)if(r-data.cgrade=pc-data.cgrade)pc=r。if(r-data.mgrade=pm-data.mgrade)pm=r。if(r-data.egrade=pe-data.egrade)pe=r。if(r-data.totle=pt-data.totle)pt=r。if(r-data.ave=pa-data.ave)pa=r。r=r-next。printf(-统计结果 -n)printf(总分最高者
17、:t%s %d分n,,pt-data.totle)printf(平均分最高者:t%s %d分n,,pa-data.ave)printf(英语最高者:t%s %d分n,,pe-data.egrade) printf(数学最高者:t%s %d分n,,pm-data.mgrade)printf(c语言最高者:t%s%d分n,,pc-data.cgrade) printstart()。void Sort(Link l)Link ll。Node *p,*rr,*s。ll=(Link)m
18、alloc(sizeof(Node)。/*用于做新的连表*/ ll-next=NULL。if(l-next=NULL)printf(n=提示:没有资料可以排序!n)。return。p=l-next。while(p)s=(Node*)malloc(sizeof(Node)。/*新建接点用于保存信息*/ s-data=p-data。s-next=NULL。rr=ll。while(rr-next!=NULL & rr-next-data.totle=p-data.totle) rr=rr-next。if(rr-next=NULL)rr-next=s。elses-next=rr-nextrr-
19、next=s。p=p-next。free(l)。l-next=ll-next。printf(n=提示:排序已经完成!n)。void Save(Link l)FILE* fp。Node * flag=1,count=0。fp=fopen(c:student,wb)。if(fp=NULL)printf(n=提示:重新打开文件时发生错误exit(1)。p=l-next。while(p)!n)if(fwrite(p,sizeof(Node),1,fp)=1)p=p-next。count+。elseflag=0。break。if(flag)printf(n=提示:文件保存成功.(有%d条记录已
20、经保存.)n,count) shoudsave=0。fclose(fp)。void main()Link l。/*连表*/FILE *fp。/*文件指针*/int sel。char chchar jianint count=0。Node *p,*r。printf(tttt学生成绩管理系统)。l=(Node*)malloc(sizeof(Node)。l-next=NULL。r=l。fp=fopen(f:student,rb)。if(fp=NULL)printf(n=提示:文件还不存在,是否创建?(y/n)n)。scanf(%c,&jian)。if(jian=y|jian=Y)fp=fop
21、en(f:student,wb)。elseexit(0)。printf(n=提示:文件已经打开,正在导入记录n)。while(!feof(fp)p=(Node*)malloc(sizeof(Node)。if(fread(p,sizeof(Node),1,fp) /*将文件的内容放入接点中*/printf(n=提示:你已经退出系统,再见!n)。p-next=NULLr-next=p。r=p。/*将该接点挂入连中*/count+。fclose(fp)。/*关闭文件*/printf(n=提示:记录导入完毕,共导入%d条记录.n,count)。while(1)menu()。printf(请你选择操作:
22、)。scanf(%d,&sel)。if(sel=0)if(shoudsave=1) getchar()。printf(n=提示:资料已经改动,是否将改动保存到文件中(y/n)?n) scanf(%c,&ch)。if(ch=y|ch=Y)Save(l)。breakswitch(sel)case 1:Add(l)。break。/*增加学生*/case 2:Del(l)。break。/*删除学生*/case 3:Qur(l)。break。/*查询学生*/case 4:Modify(l)。break。/*修改学生*/case 5:Save(l)。break。/*保存学生*/case 9
23、:printf(ttt=帮助信息=n)。breakdefault: Wrong()。getchar()。break。版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整 理。版权为潘宏亮个人所有This article includes some parts, including text, pictures, and design. Copyright is Pan Hon glia ngs pers onal own ership.用户可将本文的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权 利人的书面许可,并支付报酬。Users may use the contents or services of this article for personal study, research or appreciati on, and other non-commercial
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵州中医药大学时珍学院《大学生形象与礼仪》2023-2024学年第二学期期末试卷
- 枣庄学院《生涯发展与辅导》2023-2024学年第二学期期末试卷
- 黔南民族职业技术学院《学前儿童行为观察与评价》2023-2024学年第二学期期末试卷
- 兰州交通大学《漫谈微生物》2023-2024学年第二学期期末试卷
- 宜昌科技职业学院《文学概论(双语)》2023-2024学年第二学期期末试卷
- 2024年度河北省二级造价工程师之建设工程造价管理基础知识模拟考核试卷含答案
- 2024年度河北省二级注册建筑师之法律法规经济与施工高分通关题库A4可打印版
- 2024年度河北省二级注册建筑师之建筑结构与设备通关题库(附带答案)
- 2024年度河北省二级注册建筑师之法律法规经济与施工综合练习试卷A卷附答案
- 2024年度河北省二级注册建筑师之法律法规经济与施工过关检测试卷A卷附答案
- 大象版科学一年级下册《水的特征》(省一等奖)课件
- 农夫山泉营销策划方案
- 施工图设计文件审查合格书(市政基础设施工程)
- 13价肺炎球菌多糖结合疫苗预防接种知情同意书170531
- 幼儿园绘本故事:《小熊不刷牙》 课件
- 门窗设备操作规程
- 韩茂莉中国历史地理讲义(2009年版)
- DIN32711轴环连接多边形轮廓P3G第2部分计算和定尺寸
- 叉车日常维护保养检查记录表
- 空白个人简历表格
- 吹瓶机工艺培训资料-sidel
评论
0/150
提交评论