版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计报告 班 号 : 054073 姓 名 :曹震 学 号 : 20071001865 中国地质大学工程学院2008年12月2009年1月目录学生成绩管理程系题目要求 ·············· 3需求分析 ·············· 3总体设计 ·····
2、;········· 4详细设计 ·············· 4上机操作 ·············· 11源程序 ·········
3、183;···· 13总结 ·············· 19学生成绩管理程序一 题目要求 1. 问题描述:对在校学生几门课程的考试成绩进行统一管理.每个学生记录包括学号,姓名,年龄,数学,英语,物理成绩,默认以学号为序存放.2. 要求:(1):一个文件按以班为单位存储学生记录.(2)将允许的操作分为四种,以A,B ,C,D,E,F为标志:A:插入一个学生记录;B:修改学生记录;C:删除一个学生记录;D:查找一个学生
4、记录;E:浏览学生成绩:F:退出3. 计算学生的总成绩.4. 按学号排序输出全班学生成绩表.二 需求分析根据题目要求,由于学生信息是存放在文件中,所以应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.三 总体设计根据上面的需求分析,可以将这个系统分为以下模块:输入模块,修改模块,删除模块,查找模块,显示模块.学生成绩管理系统数据输入数据显示数据修改数据删除数据查找四 详细设计1. 主函数:主函数一般设计得比较简单,只提供输入,处理和输出部分的函数调用,其中各功能模块用菜单方式选择.流程图:显示一系列功能模块 N输入n
5、,判断n是否是A-F Y根据n的值调用各功能模块函数程序:main() while(1) clrscr();printf("*welcome to use student manage*n"); printf("*menu*n"); printf("* = * n"); printf("* A>shuru B>xiugai * n"); printf("* C>shanchu D>chazhao * n"); printf("*E>xianshi F>
6、;exit * n"); printf("* * n"); printf("* - * n"); printf(" Please input which you want(A-F):"); ch=getch(); switch(ch) case 'A':shuru();break; case 'B':xiugai(); break; case 'C':shanchu(); break; case 'D':chazhao(); break; case 'E
7、':xianshi(); break; case 'F':exit(0); default: continue; 2. 输入模块:分析:单独看各数据信息,学号,姓名是字符型,可以采用字符型数组;分数为整数,采用整数;数据信息存放在文件中,一条记录对应一个学生,既符合习惯又方便信息管理.如果要存放若干学生信息就用结构体数组:struct score /*结构体score*/ int mingci; char xuehao8; char mingzi20; char nianling3;float score6; data,info1000; int i,j,k=0; ch
8、ar temp20,ch; FILE *fp,*fp1;程序:void shuru() if(fp=fopen("s_score.txt","ab+")=NULL) /*以读写方式打开名为s_score的文件*/ printf("cannot open this file.n"); getch();exit(0); for(i=0;i<=1000;i+) printf("nPlease shuru xuehao:"); gets(data.xuehao); printf("Please shuru
9、mingzi:"); gets(data.mingzi); printf("please shuru nianling:");gets(data.nianling);printf("Please shuru shuxue score:"); gets(temp);data.score0=atof(temp); printf("Please input yingyu score:"); gets(temp);data.score1=atof(temp); printf("Please shuru wuli score
10、:"); gets(temp);data.score2=atof(temp); data.score3=data.score0+data.score1+data.score2;fwrite(&data,sizeof(data),1,fp); printf("another?y/n"); ch=getch(); if(ch='n'|ch='N') break; fclose(fp); 3. 修改模块:分析:用户输入要修改学生的学号,根据学生的学号查找学生记录,并提示用户修改该记录的哪部分信息.根据用户选择修改相应的信息.流程图
11、:输入要修改的学号找到? Y N提示没有找到显示记录,调用修改函数返回主菜单继续? Y N程序:void xiugai() if(fp=fopen("s_score.txt","rb+")=NULL|(fp1=fopen("temp.txt","wb+")=NULL) /*检查是否出错*/ printf("Cannot open this file.n"); exit(0); printf("nPLease shuru xiugai xuehao:"); scanf(&quo
12、t;%d",&i); getchar(); while(fread(&data,sizeof(data),1,fp)=1) j=atoi(data.xuehao); if(j=i) printf("xuehao:%snmingzi:%snnianling:%sn",data.xuehao,data.mingzi,data.nianling); printf("Please shuru mingzi:"); gets(data.mingzi); printf("Please shuru shuxue score:&quo
13、t;); gets(temp);data.score0=atof(temp); printf("Please input yingyu score:"); gets(temp);data.score1=atof(temp); printf("Please input wuli score:"); gets(temp);data.score2=atof(temp); data.score3=data.score0+data.score1+data.score2; fwrite(&data,sizeof(data),1,fp1); fseek(fp,
14、0L,0); /*将位置指针移到离头文件0个字节处*/fseek(fp1,0L,0); while(fread(&data,sizeof(data),1,fp1)=1) fwrite(&data,sizeof(data),1,fp); fclose(fp); fclose(fp1); 4. 删除模块: 分析:该模块的功能是,用户输入要删除的学生的学号,根据学生学号查找记录并删除.流程图: 输入要删除的学号找到? Y N提示没有找到显示记录,调用删除函数返回主菜单继续? Y N程序:void shanchu() if(fp=fopen("s_score.txt"
15、;,"rb+")=NULL|(fp1=fopen("temp.txt","wb+")=NULL) printf("nopen score.txt was failed!"); getch(); exit(0); printf("nPlease input ID which you want to del:"); scanf("%d",&i);getchar(); while(fread(&data,sizeof(data),1,fp)=1) j=atoi(da
16、ta.xuehao); if(j=i) printf("Anykey will delet it.n"); getch(); continue; fwrite(&data,sizeof(data),1,fp1); fclose(fp); fclose(fp1); remove("s_score.txt"); rename("temp.txt","s_score.txt"); printf("Data delet was succesful!n"); printf("Anykey
17、 will return to main."); getch(); 5. 查找模块:需求分析:该模块的功能是根据输入的学生的姓名查找对应的记录,找到以后,显示相应的学生信息.流程图:输入学生学号返回主菜单询问是否继续提示没有找到显示找到的记录是否找到学生记录 Y N N Y程序:void chazhao() if(fp=fopen("s_score.txt","rb")=NULL) printf("nCannot open this file.n"); exit(0); printf("nPLease shuru
18、xuehao chakan:"); scanf("%d",&i); while(fread(&data,sizeof(data),1,fp)=1) j=atoi(data.xuehao); if(i=j) printf("xuehao:%s mingzi:%sn nianling:%sn shuxue:%fn yingyu:%fn wuli:%fn zongfen:%fn",data.xuehao,data.mingzi,data.nianling,data.score0,data.score1,data.score2,data
19、.score3); getch(); 6. 显示模块:需求分析:该模块的功能是显示所有学生记录信息.程序:void xianshi() float s;int n; if(fp=fopen("s_score.txt","rb+")=NULL) /*以读写方式打开名为s_score的文件*/ printf("Cannot reading this file.n"); /*先检查打开的操作是否出错*/exit(0); for(i=0;i<=1000;i+) if(fread(&infoi,sizeof(infoi),1,fp
20、)!=1) /*检查是否出错*/break; /*指针 要读写字节数 要读写size字节的数据项 文件型指针*/ printf("nxuehao mingzi nianling shuxue yingyu wuli zongfenn"); for(j=0,k=1;j<i;j+,k+) infoj.mingci=k; printf("%6s %8s %3s %3.1f %3.1f %3.1f %3.1f n",infoj.xuehao,infoj.mingzi,infoj.nianling,infoj.score0,infoj.score1,info
21、j.score2,infoj.score3); getch(); fclose(fp); 五 上机操作下面是各个模块的界面图:(1): 主菜单函数:(2): 输入模块:(3): 显示模块:(包含了按学号排序功能)(4): 删除模块:(5): 查找模块:(6): 修改模块:六 源程序#include "stdio.h" /*I/O函数*/#include "stdlib.h" /*其它说明*/ #include "string.h" /*字符串函数*/ #include "conio.h" /*屏幕操作函数*/ #i
22、nclude "mem.h" /*内存操作函数*/ #include "ctype.h" /*字符操作函数*/ #include "alloc.h" /*动态地址分配函数*/ struct score /*结构体score*/ int mingci; char xuehao8; char mingzi20; char nianling3;float score6; data,info1000; int i,j,k=0; char temp20,ch; FILE *fp,*fp1; void shuru() if(fp=fopen(&q
23、uot;s_score.txt","ab+")=NULL) /*以读写方式打开名为s_score的文件*/ printf("cannot open this file.n"); getch();exit(0); for(i=0;i<=1000;i+) printf("nPlease shuru xuehao:"); gets(data.xuehao); printf("Please shuru mingzi:"); gets(data.mingzi); printf("please shu
24、ru nianling:");gets(data.nianling);printf("Please shuru shuxue score:"); gets(temp);data.score0=atof(temp); printf("Please input yingyu score:"); gets(temp);data.score1=atof(temp); printf("Please shuru wuli score:"); gets(temp);data.score2=atof(temp); data.score3=d
25、ata.score0+data.score1+data.score2;fwrite(&data,sizeof(data),1,fp); printf("another?y/n"); ch=getch(); if(ch='n'|ch='N') break; fclose(fp); /*读文件结束*/ void xianshi() float s;int n; if(fp=fopen("s_score.txt","rb+")=NULL) /*以读写方式打开名为s_score的文件*/ printf(
26、"Cannot reading this file.n"); /*先检查打开的操作是否出错*/exit(0); for(i=0;i<=1000;i+) if(fread(&infoi,sizeof(infoi),1,fp)!=1) /*检查是否出错*/break; /*指针 要读写字节数 要读写size字节的数据项 文件型指针*/ printf("nxuehao mingzi nianling shuxue yingyu wuli zongfenn"); for(j=0,k=1;j<i;j+,k+) infoj.mingci=k; p
27、rintf("%6s %8s %3s %3.1f %3.1f %3.1f %3.1f n",infoj.xuehao,infoj.mingzi,infoj.nianling,infoj.score0,infoj.score1,infoj.score2,infoj.score3); getch(); fclose(fp); void xiugai() if(fp=fopen("s_score.txt","rb+")=NULL|(fp1=fopen("temp.txt","wb+")=NULL) /
28、*检查是否出错*/ printf("Cannot open this file.n"); exit(0); printf("nPLease shuru xiugai xuehao:"); scanf("%d",&i); getchar(); while(fread(&data,sizeof(data),1,fp)=1) j=atoi(data.xuehao); if(j=i) printf("xuehao:%snmingzi:%snnianling:%sn",data.xuehao,data.min
29、gzi,data.nianling); printf("Please shuru mingzi:"); gets(data.mingzi); printf("Please shuru shuxue score:"); gets(temp);data.score0=atof(temp); printf("Please input yingyu score:"); gets(temp);data.score1=atof(temp); printf("Please input wuli score:"); gets(te
30、mp);data.score2=atof(temp); data.score3=data.score0+data.score1+data.score2; fwrite(&data,sizeof(data),1,fp1); fseek(fp,0L,0); /*将位置指针移到离头文件0个字节处*/fseek(fp1,0L,0); while(fread(&data,sizeof(data),1,fp1)=1) fwrite(&data,sizeof(data),1,fp); fclose(fp); fclose(fp1); void chazhao() if(fp=fope
31、n("s_score.txt","rb")=NULL) printf("nCannot open this file.n"); exit(0); printf("nPLease shuru xuehao chakan:"); scanf("%d",&i); while(fread(&data,sizeof(data),1,fp)=1) j=atoi(data.xuehao); if(i=j) printf("xuehao:%s mingzi:%sn nianling:%
32、sn shuxue:%fn yingyu:%fn wuli:%fn zongfen:%fn",data.xuehao,data.mingzi,data.nianling,data.score0,data.score1,data.score2,data.score3); getch(); void shanchu() if(fp=fopen("s_score.txt","rb+")=NULL|(fp1=fopen("temp.txt","wb+")=NULL) printf("nopen scor
33、e.txt was failed!"); getch(); exit(0); printf("nPlease input ID which you want to del:"); scanf("%d",&i);getchar(); while(fread(&data,sizeof(data),1,fp)=1) j=atoi(data.xuehao); if(j=i) printf("Anykey will delet it.n"); getch(); continue; fwrite(&data,si
34、zeof(data),1,fp1); fclose(fp); fclose(fp1); remove("s_score.txt"); rename("temp.txt","s_score.txt"); printf("Data delet was succesful!n"); printf("Anykey will return to main."); getch(); main() while(1) clrscr();printf("*welcome to use student m
35、anage*n"); printf("*menu*n"); printf("* = * n"); printf("* A>shuru B>xiugai * n"); printf("* C>shanchu D>chazhao * n"); printf("*E>xianshi F>exit * n"); printf("* * n"); printf("* - * n"); printf(" Plea
36、se input which you want(A-F):"); ch=getch(); switch(ch) case 'A':shuru();break; case 'B':xiugai(); break; case 'C':shanchu(); break; case 'D':chazhao(); break; case 'E':xianshi(); break; case 'F':exit(0); default: continue; ···················
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年山东(专升本)理化真题试卷及答案
- 苗绣纹样复刻设计技师(初级)考试试卷及答案
- 锂电池正极材料研发工程师岗位招聘考试试卷及答案
- 老年慢病用药指导师岗位招聘考试试卷及答案
- 网络攻击防护策略
- 社会福利机构管理制度手册
- 城市排水管网养护与维护手册(标准版)
- 房地产物业管理操作流程手册
- 印刷行业生产与管理手册
- 渔业资源养护与开发手册
- 智能网联汽车感知技术与应用 课件 项目3 环境感知传感器技术应用
- 2026年春大象版新教材小学科学二年级下册(全册)教学设计(附目录P130)
- 2026年二手车评估与交易流程优化指南
- 2025年中西医结合执业医师考试知识试题(附含答案)
- 汽车运输专业毕业论文
- 2025及未来5年光学及摄像仪器项目投资价值分析报告
- 2026年渭南职业技术学院单招职业技能测试题库必考题
- 2025比亚迪供应商审核自查表
- 河北省唐山市二中学2026届中考数学全真模拟试题含解析
- B细胞淋巴瘤课件
- 谷雨生物2024环境、社会及管治(ESG)报告
评论
0/150
提交评论