欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言程序的设计说明.docx

    • 资源ID:92347779       资源大小:296.25KB        全文页数:35页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言程序的设计说明.docx

    .C 语言程序设计课程设计报告专业:统计学班级:088131姓名:罗钰莹指导教师:薛思清2023 年 01 月 26 日. .目录1. 课程设计目的2. 问题需求分析3. 系统设计数据构造,总体软件框架,程序模块设计 4.编程实现描述主要实现过程,主要模块设计必需用流程图或伪代码等 4.1.流程图4.2.伪代码4.3程序容5.系统测试设计测试样例,验证程序,用截图的形式表达出来 6.可选附:局部关键源程序7.实习总结评价对你所开发的软件,实习过程中的难题,解决过程,你的收获与阅历等一,课程设计的目的随着计算机的普及,计算机在生活中得到越来越多的应用其中在计算机上的运行的各种软件在解决生活中的实际问题中起着重大作用,而目前在编写程序时 C 语言是各种语言最根底的,对于一般用户能够使用 C 语言设计出小型软件对于解决生活中的繁琐问题格外必要,在学校和班级中常常会对某次考试全部学生的成绩进展统计和治理,由于学生数目常常繁多,所以在处理学生总成绩和平均成绩时工作会相对繁重,所以争对这种状况,同时对分析成绩治理所需要的功能,在利用 C 语言及 VC+6.程序运行平台之下,设计了一种小型的成绩治理系统所需要的功能,该系统具有学生成绩相关信息的录入,显示,查询,排序,修改删除和统计功能。学生成绩治理系统为供给高校信息的治理【要求】设计“学生成绩治理系统”,实现学生信息的输入,显示,查找,保存,删除以及成绩排序等功能模块。要求功能选择用菜单实现,数据输入和结果输出要求用文件存放。原始数据文件格式具体数据自行编写;学号年龄英语高等数学C 语言平均成绩1珊19858075802四2095859090.功能要求极其说明:(1) 数据录入功能:录入每个学生的学号、年龄、课程名称、英语成绩、数学成绩,C 语言成绩、平均成绩、共 7 个数据。(2) 查询功能:分为学生根本状况查询和成绩查询两种学生根本状况查询:输入一个学号或及年龄可实现选择查出此学生的根本信息并显示输出。称号查询:输入一个学号时,查出此学生全部课程状况,格式如下:学号:XX :XX 年龄:XX 英语成绩:XX 数学成绩:XX C 语言成绩 XX 平均成绩 XX(3) 添加功能:要求可以添加学生的成绩信息4)删除功能:当在 A.TXT 中删除一个学生时,自动地在 B.TXT 中删除此学生全部信息。5排序功能:能够实现按英语成绩排序,按数学成绩排序,按 C 语言成绩排序,按平均成绩排序以及按学号排序数据构造承受构造体数组,供给学生根本信息和学生成绩根本信息构造体数组。二问题需求分析依据题目要求,该程序具备的功能有程序总体设计程序总体设计1 依据题目要求,该程序应具备的功能有:(1) 数据录入功能:录入每个学生的学号、年龄、课程名称、英语成绩,数学成绩,平均成绩共 7 个数据。因而实现文章的输入输出功能。(2) 查询功能:分为学号状况查询和查询两种,要求用户可以查询各个学生的成绩,通过不同方式实现查询功能。(3) 添加功能:可以添加学生的信息,因而要供给查找和添加功能(4) 删除功能:当在 A.TXT 中删除一个学生时,自动地在 B.TXT 中删除此学生全部信息。(5) 排序功能:能实现选择按学号,英语成绩,数学成绩,C 语言成绩或平均成绩升序或降序排序并显示数据。(6) 菜单功能:应当供给键盘式的选择菜单以实现其功能选择。三总程序设计四 程序具体设计主函数主函数一般设计得比较简洁,只供给输入,处理和输出局部的函数调用。其中各功能模块用菜单方式选择。流程图::int main/主函数void Add(FILE *fp,STUDENT one);/函数声明void Show(FILE *fp);/函数声明int Find(FILE *fp,char *no,int K);/函数声明int Del(FILE *fp,char *no);/函数声明void Mod(FILE *fp,char *p);/函数声明void Zap(FILE *fp);/函数声明struct student Input(void); long num=0,iItem;int res,K; STUDENT temp; char strNo10;FILE *fp=fopen(“student.dat“,“r+“);/*推断该文件是否存在*/ if(fp=NULL)elsefp=fopen(“student.dat“,“w+“);fseek(fp,0L,SEEK_END);num=ftell(fp)/sizeof(STUDENT);/*统计多少个字节,除以一个学生需要的字节得到学生的数*/rewind(fp);while(iItem=menu(num)!=5)switch(iItem)case 1:temp=Input;Add(fp,temp); num+;printf(“学生信息已添加,按任意键返回.“); break;case 2:Show(fp);printf(“按任意键返回.“); break;case 3:if(num>0)printf(“输入要删除的学号:“); scanf(“%s“,strNo); res=Del(fp,strNo);if(res)printf(“ 学 号 %s 记 录 已 删 除 , 按 任 意 键 返回.“,strNo);Zap(fp);num-;elseelseprintf(“没有学号%s记录,按任意键返回.“,strNo);printf(“目前没有记录,无法删除!按任意键返回.“);break; case 4:if(num>0)printf(“选择查询方式n“); printf(“1-根本状况查询n“);printf(“2-成绩查询n“);scanf(“%d“,&K); switch(K)case 1:t 平均分n“);break;printf(“输入要查找的学号或:“); scanf(“%s“,strNo);printf(“tt 学号t 性别t 年龄n“);break; case 2:printf(“输入要查找的学号或:“); scanf(“%s“,strNo);printf(“tt 学号t 性别t 年龄t 英语t 高数tc 语言default :printf(“输入有误!“);res=Find(fp,strNo,K); if(!res)printf(“没有此学生记录,按任意键返回.“);elseelseprintf(“按任意键返回.“);printf(“目前没有记录,无法删除!按任意键返回.“); break;default: printf(“命令错误,按任意键返回.“);break;getch;if(fp) fclose(fp); return 0;2 菜单:先定义空函数#include “stdio.h“ #include “conio.h“ #include “stdlib.h“/函数声明/下面这些函数可以分别对应不同的功能模块,但一个功能模块可以有多个函数来实现/这些函数临时不做具体设计,包括函数参数,返回值等。/在后续逐步添加功能模块具体设计与实现这些函数int function1;/。函数void function2;/。函数void function3;/。函数int function4;/。函数void function5;/。函数void function6;/。函数int menu;/菜单程序,也可以把后面的菜单的具体实现函数放在 main 函数之前,则不需要做此声明/主函数 void main/调用菜单程序int choice; dochoice =menu;if (choice= 0)break; switch (choice) /*switch 构造*/case 1:/*case 大事*/printf(“输入入一个的学生的记录“); function1;break; case 2:printf(“查询一个学生记录“); function2;break; case 3:printf(“插入一个学生记录“); function3;break; case 4:printf(“修改一个学生记录“); function4;break; case 5:printf(“登记学生成绩“); function5;break; case 6:printf(“删除学生成绩“); function6;break;getch; while(0);/菜单程序int menuint num;do /*do-while 循环,也可以考虑用 while 循环加上 break*/system(“cls“);/清屏printf(“*n“); printf(“菜单:n“);/*输出 MENU 并换行*/ printf(“1: 输入一个生的记录【1】n“); printf(“2: 查询一个学生的记录【2】n“); printf(“3: 插入一个学生记录【3】n“); printf(“4: 修改一个学生记录【4】n“); printf(“5: 登记学生成绩【5】n“); printf(“6: 删除学生成绩【6】n“); printf(“0:退出【0】n“); printf(“*n“); printf(“请选择选项:“);scanf(“%d“, &num); while(num<0 |num>5);/*while 循环执行条件 num<1 或 num 大于 4*/ return num;/功能模块的具体实现局部/函数。:描述函数功能以及设计思路 int function1/暂不写具体语句return 0;/函数:描述函数功能以及设计思路 void function2/空函数体void function3/暂不写具体语句return;/函数:描述函数功能以及设计思路int function4/空函数体return 0;void function5/暂不写具体语句/函数:描述函数功能以及设计思路 void function6/暂不写具体语句/函数:描述函数功能以及设计思路 void function7/空函数体2 功能模块设计数据录入。流程图:数据构造我们需要录入的信息数据有两类:一类是学生根本信息,包括学号, ,年龄存放在文件 S_INFO.TXT 中。另一类信息是学生成绩根本信息,包括 :英语成绩, 数学成绩,C 语言成绩,平均成绩 4 个数据, 这些信息存放在文件 S_SCORE.TXT 中。学生根本信息的存放格式为:#include<stdio.h> #include<stdilb.h> #include<string.h> #define SIZE 50 struct studentRecordint studentNumbers; char name20;int age; float math;float English; float c language;float average score;studentRecordsSIZE; int StudentNumbers; void save/学生的人数FILE*fp; int i;if (fp = fopen(“studentRecord.dat“, “w“) = NULL)printf(“cannot open filen“); return;while (fwrite(&studentRecordsi, sizeof(struct studentRecord), 1, fp) != EOF)printf(“file write errorn“); StudentNumbers+;fclose(fp);查询功能模块流程图:需求分析该模块的功能是查询学生是否在中int search(char *name)/查找这名学生是否在中int i, flag = 0;for (i = 0; i < StudentNumbers; i+)if (strcmp(name, studentRecordsi.name) = 0)flag = 1; break;if (flag = 1)return i;elsereturn 0;三添加功能 该模块是添加学生的成绩插入学生成绩流程图:void insert(studentRecord SR)/插入学生的成绩int i, j;int flag = 0;for (i = 0; i < StuNumbers; i+)if(studentRecordsi.StuNumber<SR.StudentNumber&&SR.StudentNumber< studentRecordsi + 1.StudentNumber)break;for (j = StudentNumbers; j <= i; j-) studentRecordsj + 1 = studentRecordsj;studentRecordsi = SR;StuNumbers+;void addint n; int i;studentRecord stu;StuNOSort;printf(“输入添加学生个数mn“);scanf(“%d,&n“);if (n >= SIZE - StudentNumbers) printf(“errorn“); if (n < SIZE - StudentNumbers)for (i = 1; i <= n; i+)printf(“请输入学生信息n“); printf(“输入学生学号n“); scanf(“%d“, &stu.studentNumber); printf(“输入学生n“);scanf(“%s“, stu.name);printf(“输入学生年龄,数学成绩,英语成绩,C 语言,平均成绩n“);scanf(“%d%f%f%f%f“,&stu.age,&stu.math,&stu.English,&stu.clanguage,&stu.averagescore);insert(stu.);四排序模块该模块是将学生成绩进展排序能选择实现学号,英语,数学, C 语言,平均成绩的显示数据流程图void MathSort/依据数学成绩排序int i, j; studentRecord temp;for (i = 0; i < StudentNumbers - 1; i+) for (j = 0; j < StudentNumbers; j+)if (studentRecordsj.math > studentRecordsj + 1.math)temp = studentRecordsj; studentRecordsj = studentRecordsj + 1;studentRecordsj + 1 = temp;void EnglishSort /依据英语成绩排序int i, j; studentRecord temp;for (i = 0; i < StudentNumbers - 1; i+) for (j = 0; j < StudentNumbers; j+)if (studentRecordsj.English < studentRecordsj + 1.English)temp = studentRecordsj; studentRecordsj = studentRecordsj + 1; studentRecordsj + 1 = temp;void C languageSort/依据 C 语言成绩排序int i, j; studentRecord temp;for (i = 0; i < StudentNumbers - 1; i+) for (j = 0; j < StudentNumbers; j+)if (studentRecordsj.C language < studentRecordsj + 1.C languange)t = studentRecordsj;studentRecordsj = studentRecordsj + 1; studentRecordsj + 1 = t;void Average scoreSort/依据平均成绩排序int i, j; studentRecord temp;for (i = 0; i < StudentNumbers - 1; i+) for (j = 0; j < StudentNumbers; j+)if (studentRecordsj.Average score < studentRecordsj + 1.Average score)t = studentRecordsj;studentRecordsj = studentRecordsj + 1; studentRecordsj + 1 = t;void StudentNumberSort/依据学生学号成绩排序int i, j; studentRecord temp;for (i = 0; i < StudentNumbers - 1; i+) for (j = 0; j < StudentNumbers; j+)if (studentRecordsj.stuNo < studentRecordsj + 1.stuNo)temp = studentRecordsj; studentRecordsj = studentRecordsj + 1; studentRecordsj + 1 = temp;五 修改模块,完成程序的修改和添加流程图:void modifyint i; int n;char name20;printf(“输入要修改学生记录的学生数量“); scanf(“%d“, &n);for (i = 0; i < n; i+)printf(“输入要修改记录的学生的“); scanf(“%s“, name);i = search(name); if (i = 0)printf(“查无此人!“); return;printf(“输入要修改学生记录的学生学号:“); scanf(“%d“, &studentRecordsi.stuNo); printf(“输入要修改学生记录的学生的年龄:“); scanf(“%d“, &studentRecordsi.age);printf(“输入要修改学生记录的学生的成绩:n“); printf(“数学:“);scanf(“%f“, &studentRecordsi.math); printf(“英语:“);scanf(“%f“, &studentRecordsi.English);printf(“C 语言:“);scanf(“%f“, &studentRecordsi.C language); printf(“平均成绩:”); scanf(“%f”,&studentRecordsi.Average.score);六删除模块流程图:void Deletechar name20; int stuNO;int i,j;printf(“输入要删除的学生的“); scanf(“%s“, &name);i = search(name); if (i = 0)printf(“查无此人!“); return;for (j = i; j <= StuNumbers; j+) studentRecordsj = studentRecordsj + 1;StuNumbers-;七扫瞄模块void browseint i; int j;StuNumberSort;printf(“要扫瞄的学生数量:“); scanf(“%d“, &i);for (j = 0; j<i; j+);printf(“studentRecord:%-5d%-5s%-5f,%-5f,%-5f“,studentRecordsj.stuNo, studentRecordsj.name,studentRecordsj.age, studentRecordsj.math, studentRecordsj.English, studentRecordsj.C language,studentRecordsj.Average score);五 上机操作编译、连接和运行下面是运行后各个模块的界面图:1 主菜单函数2 数据录入功能3 查询功能1学生根本信息查询2 依据成绩查询4 删除功能:删除你不想要的学生信息或输入错误的学生信息五扫瞄功能#include<stdio.h>#include<stdlib.h> #include<conio.h> #include<string.h>typedef struct student/构造体floatfloatSTUDENT;fScore3;fAve;/*三门课程成绩*/*平均分*/long menu(long num)/菜单函数long nSelect=0; dosystem(“cls“); /*执行DOS下的清屏命令*/ printf(“n“);printf(“学生成绩治理系统(已有记录数:%4d)n“,num); printf(“n“);printf(“tt1添加数据n“);printf(“tt2列表显示n“);printf(“tt3删除数据n“);附录:程序源代码:intnFlag;/*标志0-完好,1-被删除*/charstrName12;/*/charstrNo10;/*学号*/charsex3;charage3;printf(“tt4查找数据n“);printf(“tt5退出n“);printf(“n“);printf(“请选择命令号:“); scanf(“%d“,&nSelect); if(nSelect>=1)&&(nSelect<=5)return nSelect;else printf(“输入错误!按任意键返回“);getchar;getchar;while(1); return 0;int main/主函数void Add(FILE *fp,STUDENT one);/函数声明void Show(FILE *fp);/函数声明int Find(FILE *fp,char *no,int K);/函数声明int Del(FILE *fp,char *no);/函数声明void Mod(FILE *fp,char *p);/函数声明void Zap(FILE *fp);/函数声明struct student Input(void); long num=0,iItem;int res,K; STUDENT temp; char strNo10;FILE *fp=fopen(“student.dat“,“r+“);/*推断该文件是否存在*/ if(!fp)fp=fopen(“student.dat“,“w+“);elsefseek(fp,0L,SEEK_END);num=ftell(fp)/sizeof(STUDENT);统计多少个字节,除以一个学生需要的字节得到学生的数量rewind(fp);while(iItem=menu(num)!=5)switch(iItem)case 1:temp=Input;Add(fp,temp); num+;printf(“学生信息已添加,按任意键返回.“); break;case 2:Show(fp);printf(“按任意键返回.“); break;case 3:if(num>0)printf(“输入要删除的学号:“); scanf(“%s“,strNo); res=Del(fp,strNo);if(res)printf(“学号%s记录已删除,按任意键返回.“,strNo);Zap(fp);num-;elseprintf(“没有学号%s记录,按任意键返回.“,strNo);elseprintf(“目前没有记录,无法删除!按任意键返回.“); break;case 4:if(num>0)printf(“选择查询方式n“); printf(“1-根本状况查询n“);printf(“2-成绩查询n“);scanf(“%d“,&K); switch(K)case 1:printf(“输入要查找的学号或:“); scanf(“%s“,strNo);printf(“tt学号t性别t年龄n“);break; case 2:printf(“输入要查找的学号或:“); scanf(“%s“,strNo);printf(“tt学号t性别t年龄t英语t高数tc语言t平均分n“);break;default :printf(“输入有误!“);res=Find(fp,strNo,K); if(!res)printf(“没有此学生记录,按任意键返回.“); elseprintf(“按任意键返回.“);elseprintf(“目前没有记录,无法删除!按任意键返回.“); break;default: printf(“命令错误,按任意键返回.“);break;getch;if(fp) fclose(fp); return 0;void Add(FILE *fp,STUDENT one)/添加rewind(fp); fseek(fp,0L,SEEK_END);fwrite(&one,sizeof(STUDENT),1,fp); fflush(fp);void Show(FILE *fp)/扫瞄void OutputB(STUDENT one); STUDENT temp;int num=0; rewind(fp);printf(“tt学号t性别t年龄t英语t高数tc语言t平均分n“); while(!feof(fp)if(fread(&temp,sizeof(STUDENT),1,fp)>0)if(temp.nFlag=0)printf(“%4d“,+num); OutputB(temp);rewind(fp);int Find(FILE *fp,char *no,int K) /查找void OutputA(STUDENT one); void OutputB(STUDENT one); int res=0;STUDENT temp;int num =0;rewind(fp); while(!feof(fp)if(fread(&temp,sizeof(STUDENT),1,fp)>0)if(temp.nFlag=0)if(strcmp(temp.strNo,no)=0|strcmp(temp.strName,no)=0)printf(“%4d“,+num); if(K=1)OutputA(temp);res=1;elseOutputB(temp); res=1;rewind(fp); return res;int Del(FILE *fp,char *no)/删除int res=0; STUDENT temp; rewind(fp); while(!feof(fp)if(fread(&temp,sizeof(STUDENT),1,fp)>0)if(temp.nFlag=0)if(strcmp(temp.strNo,no)=0)temp.nFlag=1;fseek(fp,-(long)sizeof(STUDENT),SEEK_CUR); fwrite(&temp,sizeof(STUDENT),1,fp);res=1; break;rewind(fp); return res;void Zap(FILE *fp)/整理删除的关心函数long num,i; STUDENT *buffer; fflush(fp);fseek(fp,0L,SEEK_END); num=ftell(fp)/sizeof(STUDENT); rew

    注意事项

    本文(C语言程序的设计说明.docx)为本站会员(1564****060)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开