2022年c程序设计大作业 .pdf

上传人:C****o 文档编号:39886621 上传时间:2022-09-08 格式:PDF 页数:29 大小:630.13KB
返回 下载 相关 举报
2022年c程序设计大作业 .pdf_第1页
第1页 / 共29页
2022年c程序设计大作业 .pdf_第2页
第2页 / 共29页
点击查看更多>>
资源描述

《2022年c程序设计大作业 .pdf》由会员分享,可在线阅读,更多相关《2022年c程序设计大作业 .pdf(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C 语言课程设计09 电信集成班陈颖宏课程设计说明书C 程序设计大作业学生成绩管理系统班级:电信 2009 级集成班学生:陈颖宏学号:200930251378 序号:提交日期:2010 年3 月 27日成绩评定:分任课教师签名:年月日前言名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-1-页 共 29 页本课程设计题目是“学生成绩管理系统设计”,其内容是设计一个使用二进制文件方式存储数据,并且以菜单方式工作的管理系统。设计目的是设计一个能够方便、直观地管理学生相关信息的系统。该系统可以实现以下功能:1 能按学期、按班级完成对学

2、生成绩的录入、修改;2 能按班级统计显示的成绩,计算学生的总分及平均分;3 能查询学生的成绩,不及格科目及学生名单;4 能按班级输出学生的成绩单。正文名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-2-页 共 29 页1.需求分析:本程序主要用于输入、查询、统计、导入以及导出学生的成绩。主要的输入方式是利用键盘输入,且输入的字符最好是英文及数字,输入中文时有时会出现错误。程序的有效窗口大小一般为半个屏幕,以至于有些功能的版面出现显示方面的错误。经测试,程序基本可以正常工作:当在主菜单输入“1”时,可以正常初始化,输入余下的菜单

3、选项时也能按要求跳转到指定画面;各子菜单选项也都能正常运行;但是输入班级、姓名等字符时,有时会显示错误的字符。2 概要设计1抽象数据类型的定义:学生结构体定义为struct stu,变量为student;学期数组定义为char term7;班别数组定义为char banbie20;学号数组定义为char no15;姓名数组定义为char name20;科目数组定义为int scoreMAXSUB;总成绩变量定义为int sum;平均成绩变量定义为float average。2抽象函数类型的定义:菜单选择程序“menu_select()”为 int型;初始化函数“initialize(stude

4、nt*)”为 void 型;数据输入函数“input(student*)”为 void 型;数据编辑函数“editmenu(student*)”为 void 型;数据查询查询函数“searchmenu(student*)”为void型;数据统计函数“total(student*)”为 void型;数据导出函数“save(student*)”为 void 型;数据导入函数“load(student*)”为 void 型;数据导出函数“output(student*)”为 void 型;添加学生记录函数“add_record(student*)”为 void 型;删除学生记录“delete_rec

5、ord(student*)”为 void 型;修改学生记录函数“student*edit_record(student*)”为 void 型;按学名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-3-页 共 29 页号查询函数“student*no_search(student*)”为 void型;按姓名查询函数“student*name_search(student*)”为 void 型。3主程序的流程如Main()函数流:4各程序模块之间的层次(调程图用)关系图:3 详细设计1各个操作及模块的伪代码:Main()函数的伪代码

6、算法:printf(欢迎使用学生成绩管理系统(请按回车键!).n);for(;)switch(menu_select()选择选项 1:初始化;break;选择选项 2:数据录入;主函数:main.c 自定义函数:student.c 调用调用头文件:student.h 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-4-页 共 29 页break;选择选项 3:数据编辑;break;选择选项 4:数据统计;break;选择选项 5:数据查询;break;选择选项 6:数据导出;break;选择选项 7:数据显示;数据导出;pri

7、ntf(导出成功!n)break;选择选项 0:printf(nnnntttt_感谢您使用本系统!n);退出系统;退出应用程序;初始化函数的伪代码:查找每一个学生记录 初始化当前学生记录为空记录 printf(记录已经初始化!n按任意键继续!);结束初始化函数并返回主菜单;数据录入函数的伪代码:对学生信息数组中的每条记录进行循环 为数组 stuArrayi分配内存;如果数组stuArrayi为空;printf(分配内存失败!);return;do 名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-5-页 共 29 页 print

8、f(目前容量可以存储%d条记录,继续请输入y or Y,返回请输入n or N!n,MAXNUM-i);接受输入字符;如果输入字符为y 或Ybreak;如果输入字符为n 或Nreturn;else printf(输入错误!请重新输入 n);while输入字符不为 y、Y、n、N 中的一个;printf(请输入需要录入的班级:);接收输入的班别;printf(请输入学期(如 08-09-1 表示 08-09 学年第一学期):);接收输入的学期;printf(请输入第%d位同学学号(共 12 位):,i+1);接收输入的学号;printf(请输入第%d位同学姓名:,i+1);接收输入的姓名;pri

9、ntf(请输入%d门成绩 n,MAXSUB);for(j=0;jMAXSUB;j+)do printf(课程%d成绩(语文为 1,数学为 2,英语为3,计算机为4),j+1);接收成绩;刷新内存缓冲区;检查输入的成绩是否在要求范围内;printf(错误数据!请重新输入 n);;while输入的成绩不在要求范围内;临时统计总成绩;保存当前学生的总成绩;算出当前学生的平均成绩;结束函数return;编辑函数的伪代码:do printf(nt请输入菜单项数字(14):);接受输入选项;while选项不在范围内;switch(menuitem)选项 1:增加记录;名师资料总结-精品资料欢迎下载-名师精

10、心整理-第 6 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-6-页 共 29 页break;选项 2:删除记录;break;选项 3:修改记录;break;选项 4:返回主菜单;退出 return;增加记录函数的伪代码:对学生信息数组中的每条记录进行循环;如果当前记录是空记录;break;学生信息数组是否存满;printf(该组已经存满!);getch();return;为新记录创建一个保存空间;创建保存空间是否成功;printf(n内存不足!);getch();return;printf(输入学号:);接收输入的学号;printf(请输入第%d位学生姓名:,i+1);接收输

11、入的姓名;printf(请输入%d门成绩 n,MAXSUB);对各科目进行循环;do printf(科目%d成绩(语文为 1,数学为2,英语为3,计算机为4),j+1)名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-7-页 共 29 页接收输入的成绩;输入的成绩是否在范围内;printf(错误数据,请重新输入n);getch();while输入的成绩不在范围内;临时统计总成绩;保存当前学生的总成绩;算出当前学生的平均成绩;将当前学生的信息存入学生信息数组;删除记录函数的伪代码:printf(n请输入要删除的学生学号:);接收输

12、入的学号;对学生信息数组中每条学生记录进行循环;学生信息数组中是否存在与用户输入学号相同的学生;printf(n存在要删除的学生记录!);getch();break;是否找遍数组中的所有记录;printf(n不存在要删除的学生记录!);getch();return;输出要删除的学生信息printf(你确定要删除该记录吗?Y or N!n);接收删除指令;从当前删除记录位置到最后一个记录循环;将记录向上移动一行;数组 stuArrayj内存为空;printf(正在删除.n);printf(n.已经删除学号为%s的学生记录.n,s);else 返回编辑子菜单;名师资料总结-精品资料欢迎下载-名师精

13、心整理-第 8 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-8-页 共 29 页修改记录函数的伪代码:printf(n请输入要修改的学生学号:);接收输入的学号;对学生信息数组中的每条学生记录进行循环;学生信息数组中是否存在与输入的学号相同的学生;printf(n存在要修改的学生记录!);getch();break;是否找遍数组所有记录;printf(n不存在要修改的学生记录!);getch();返回菜单选择界面return;开始修改学生信息;printf(你确定要修改该记录吗?Y or Nn);scanf(%s,&c);接收确认指令;确认修改;修改状态标志为1 确认修改;e

14、lse /*不修改;返回编辑子菜单;while(m=1)/*确认修改;printf(要修改哪个科目的成绩(语文为1,数学为2,英语为 3,计算机为4)n)接收修改科目的编号;进入科目修改循环;printf(科目%d成绩,j);接收新的成绩;输入的成绩是否在范围中;printf(错误数据,请重新输入!n);while输入的成绩不在范围中;对当前学生每个科目进行循环;临时统计当前学生总成绩;名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-9-页 共 29 页 计算当前学生的平均成绩;printf(还要继续修改此记录吗?Y or N

15、!n);接收确认指令;确认指令;修改状态标志为1 确认修改;else 跳出确认循环break;返回修改后的学生记录;数据查询函数的伪代码:接收选择 选择 1:学号查询;break;选择 2:姓名查询;break;选择 3:返回主菜单return;学号查询函数的伪代码:printf(n请输入要查询的学生的学号:);接收输入的学号;对学生信息数组中的每条学生记录进行循环;学生信息数组中是否存在与收入的学号相同的记录;printf(n存在要查询的学生记录!);getch();跳出循环,不再查找break;是否找遍数组中所有的记录;printf(n不存在要查询的学生记录!);getch();返回菜单选

16、择界面return;名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-10-页 共 29 页输出要查询的学生信息开始do printf(返回请输入b or B!n);接收输入字符;若字符为 b 或B 返回菜单选择;else printf(输入错误!请重新输入 n);while字符不为 b 或B;姓名查询函数的伪代码:printf(n请输入要查询的学生姓名:);接收输入的姓名;对学生信息数组中的每条学生信息进行循环;学生信息数组中是否存在与输入的学生姓名相同的记录;printf(n存在要查询的学生记录!);getch();跳出循

17、环,不再查找;是否找遍数组中的所有记录;printf(n不存在要查询的学生记录!);getch();返回菜单选择界面;输出要查询的学生信息开始printf(返回请输入b or B!n);接收输入字符;若字符为 b 或B 返回菜单选择;else printf(输入错误!请重新输入 n);while字符不为 b 或B;数据统计函数的伪代码:对学生信息数组中的每条学生记录进行循环;把当前学生班别放到班级变量中;把当前学生学期放到学期变量中);把当前学生总分放到班级总分变量中;把当前学生平均分放到班级平均分变量中;把当前学生各科成绩分别计算总分;记录班级学生数;从学生信息数组中的第i+1 条记录循环到

18、最后一条记录;当学生记录存在 名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-11-页 共 29 页把当前 l 另一学生班别放到班级变量中;把当前 l 另一学生学期放到学期变量中);比较两个学生是否同一班级;将当前学生成绩加入本班总成绩;将当前学生平均成绩加入本班平均成绩;计算各科成绩的总分;统计班级学生数;不是同一班级;跳出循环,结束当前统计break;输出统计界面;如果同一班级下条记录没有,跳出循环;break;else 否则将当前记录作为新的班级的第一条记录开始新的比较;2函数和过程的调用关系图:名师资料总结-精品资料

19、欢迎下载-名师精心整理-第 12 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-12-页 共 29 页4 调试分析1每个选择界面之后,前一屏幕的内容依旧存在,影响界面的美观;经过同学的帮助及上网搜索,发现利用“system(“cls”);”可以消去前一屏幕的内容;然而接下来又出现新的问题:有些函数会出现错误;经过多次调试和修改,才发现把“system(“cls”);”放在调用的函数之前以及适当的位臵可以解决此问题。2有些显示画面中,本该在同一行出现的内容会由于太长以至于在两行中出现;于是不停地改动该行的内容使之能够出现在同一行中。3在数据录入界面中,原来是先输入班级、学期及学号

20、后判断输入的内容是否为“no”,然后根据输入选择是返回还是继续输入数据,然而会导致查询及导出界面查询乱码;经调试,在录入数据之前加上名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-13-页 共 29 页“do printf(目前容量可以存储%d 条记录,继续请输入y or Y,返回请输入n or N!n,MAXNUM-i);c=getch();if(c=y|c=Y)break;else if(c=n|c=N)return;else printf(输入错误!请重新输入 n);while(c!=y&c!=Y&c!=n&c!=N)

21、;”可以先判断再输入。5 用户使用说明本程序在VC+软件中运行无误,主要运行系统为windows xp、windows Vista和 windows 7,但是在 windows 7 中运行有时会出现兼容性错误,故推荐在 windows Xp中使用。使用方法:双击启动程序student.exe,会出现欢迎界面,按回车键继续;出现主菜单界面,第一次使用时要进行初始化:输入1 回车可成功初始化;回到主菜单界面,输入 2 回车进行学生成绩输入,最多可输入70位学生的成绩,输入过程中输入 y 回车可返回主菜单界面;输入 3 回车可进行学生成绩的编辑,在出现的子菜单界面可以选择“1 增加数据、2 删除数据

22、、3 修改数据”中任一项进行编辑,输入 4 回车可返回主菜单;在主菜单界面输入4 可进行学生成绩的统计,统计结果包括每班各科成绩的总分、平均分;在主菜单界面输入5 可进行学生成绩的查询,在子菜单界面可以选择“1 按学号查询和 2 按姓名查询”中的任一项,输入 3 回车返回主菜单界面;在主菜单界面输入6 可以把已经保存的数据导入到系统中(前提是已经有保存的文件);在主菜单界面中输入7 可以进行数据的保存;在主菜单界面中输入0 会退出系统。6 测试结果(列出你的测试结果,包括输入和输出。这里的测试数据应该完整和严格,最好多于需求分析中所列。)错误 1(如图 1):查询时出现乱码;名师资料总结-精品

23、资料欢迎下载-名师精心整理-第 14 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-14-页 共 29 页7 本次课程设计总结(个人收获和体会:在程序设计中碰到的问题及其解决方法;学习 C语言的体会,和老师分享你对这门课程的见解,提出你的建议和意见)附录带注释的源程序:#ifndef _STUDENT_H/*是否编译过STUDENT_H段*/#define _STUDENT_H/*声明 STUDENT_H条件编译段*/*头文件*/#include#include /*引入动态存储分配函数库*/#include /*引入输入输出函数库*/#include string.h/*引入

24、字符和字符串函数库*/*定义常数名*/#define MAXNUM 70/*定义最大学生记录数*/#define MAXSUB 4/*定义最大科目数*/*定义学生结构变量*/typedef struct stu/*定义学生结构体*/char term7;/*定义学期数组*/char banbie20;/*定义班别数组*/char no15;/*定义学号数组*/char name20;/*定义姓名数组*/int scoreMAXSUB;/*定义科目数组*/图 1 名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-15-页 共 2

25、9 页int sum;/*定义总成绩变量*/float average;/*定义平均成绩变量*/student;/*定义一个学生结构体变量student*/*定义菜单选项*/int menu_select();/*菜单选择程序*/void initialize(student*);/*初始化*/void input(student*);/*数据输入*/void editmenu(student*);/*数据编辑*/void add_record(student*);/*添加学生记录*/void delete_record(student*);/*删除学生记录*/student*edit_rec

26、ord(student*);/*修改学生记录*/void search_select(struct stu*stuArrayMAXNUM);/*数据查询*/student*no_search(student*);/*按学号查询*/student*name_search(student*);/*按姓名查询*/void total(student*);/*数据统计*/void save(student*);/*数据导出*/void load(student*);/*数据导入*/void output(student*);#endif/*STUDENT_H条件编译段结束*/#includestude

27、nt.h /*引入预定义文件*/int main()student*p;/*保存单个学生信息*/student*stuArrayMAXNUM;/*保存所有学生信息的数组*/p=(student*)malloc(sizeof(student);/*创建一个空的学生记录*/stuArray0=p;/*将该学生信息放入数组第一个位臵*/printf(欢迎使用学生成绩管理系统(请按回车键!).n);/*输出提示信息*/getch();/*等待使用者回应*/for(;)/*进入主菜单*/switch(menu_select()/*等待使用者输入选择*/case 1:/*选择选项1*/system(cls

28、);initialize(stuArray);/*初始化*/break;/*跳出,重新进行菜单选择*/case 2:/*选择选项2*/system(cls);input(stuArray);/*数据录入*/break;/*跳出,重新进行菜单选择*/case 3:/*选择选项3*/system(cls);名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-16-页 共 29 页editmenu(stuArray);/*数据编辑*/break;/*跳出,重新进行菜单选择*/case 4:/*选择选项4*/system(cls);to

29、tal(stuArray);/*数据统计*/getch();break;/*跳出,重新进行菜单选择*/case 5:/*选择选项5*/system(cls);search_select(stuArray);/*数据查询*/getch();break;/*跳出,重新进行菜单选择*/case 6:/*选择选项6*/system(cls);load(stuArray);/*数据导出*/break;/*跳出,重新进行菜单选择*/case 7:/*选择选项7*/system(cls);output(stuArray);/*数据显示*/save(stuArray);/*数据导出*/printf(导出成功!

30、n);getch();break;/*跳出,重新进行菜单选择*/case 0:/*选择选项0*/system(cls);printf(nnnntttt_感谢您使用本系统!n);getch();exit(0);/*退出系统*/return 0;/*退出应用程序*/int menu_select()int menuItem=-1;system(cls);printf(nnnnn);/*输出开始菜单界面*/printf(|*学生成绩管理系统*|n);printf(|-|n);printf(|主菜单项|n);printf(|-|n);printf(|1-初始化|n);printf(|2-数据录入|n)

31、;printf(|3-数据编辑|n);名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-17-页 共 29 页printf(|4-数据统计|n);printf(|5-数据查询|n);printf(|6-数据导入|n);printf(|7-数据导出|n);printf(|0-退出系统|n);printf(|-|n);printf(n 请输入菜单项数字(07)(第一次进入系统请先初始化!):);do/*进入菜单选择循环*/scanf(%d,&menuItem);if(menuItem7)puts(输入有误,请重新输入:);whil

32、e(menuItem7);return menuItem;void initialize(student*stuArrayMAXNUM)int i=0;/*学生记录行号*/for(i=0;iMAXNUM;i+)/*查找每一个学生记录*/stuArrayi=NULL;/*初始化当前学生记录为空记录*/printf(记录已经初始化!n 按任意键继续!);getch();return;/*结束初始化函数并返回主菜单*/void input(student*stuArrayMAXNUM)int i=0;/*学生记录行号*/int j=0;/*学生功课号*/int s=0;/*总成绩*/char c;f

33、or(i=0;ibanbie);/*接收输入的班别*/printf(请输入学期(如 08-09-1 表示 08-09 学年第一学期):);/*提示输入学期*/scanf(%s,&stuArrayi-term);/*接收输入的学期*/printf(请输入第%d 位同学学号(共 12 位):,i+1);/*提示输入学号*/scanf(%s,&stuArrayi-no);/*接收输入的学号*/printf(请输入第%d 位同学姓名:,i+1);/*提示输入姓名*/scanf(%s,&stuArrayi-name);/*接收输入的姓名*/printf(请输入%d 门成绩 n,MAXSUB);/*提示输

34、入成绩*/for(j=0;jscorej);/*接收成绩*/fflush(stdin);/*刷新内存缓冲区*/if(stuArrayi-scorej100)|(stuArrayi-scorejscorej100)|(stuArrayi-scorejscorej;/*临时统计总成绩*/stuArrayi-sum=s;/*保存当前学生的总成绩*/stuArrayi-average=s/MAXSUB;/*算出当前学生的平均成绩*/return;/*结束函数*/void editmenu(struct stu*stuArrayMAXNUM)int menuitem=-1;名师资料总结-精品资料欢迎下载

35、-名师精心整理-第 19 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-19-页 共 29 页printf(nnn);printf(t|-*-*-|n);printf(t|-*编辑子菜单*-|n);printf(t|-*-*-|n);printf(t|1-增加记录|n);printf(t|2-删除记录|n);printf(t|3-修改记录|n);printf(t|4-返回主菜单|n);printf(t|-*-*-|n);do printf(nt请输入菜单项数字(14):);scanf(%d,&menuitem);while(menuitem4);switch(menuitem)

36、case 1:add_record(stuArray);break;case 2:delete_record(stuArray);break;case 3:edit_record(stuArray);break;case 4:return;return;void add_record(student*stuArrayMAXNUM)int i=0;/*学生记录行号*/int j=0;/*科目号*/student*info;/*临时保存当前学生的信息*/int s=0;/*临时保存总成绩*/system(cls);/*搜查最新记录*/for(i=0;ino);/*接收输入的学号*/printf(请

37、输入第%d 位学生姓名:,i+1);/*提示输入姓名*/scanf(%s,&info-name);/*接收输入的姓名*/printf(请输入%d 门成绩 n,MAXSUB);/*提示输入成绩*/for(j=0;jscorej);/*接收输入的成绩*/if(info-scorej100)|(info-scorejscorej100)|(info-scorejscorej;/*临时统计总成绩*/info-sum=s;/*保存当前学生的总成绩*/info-average=s/MAXSUB;/*算出当前学生的平均成绩*/stuArrayi=info;/*将当前学生的信息存入学生信息数组*/void d

38、elete_record(student*stuArrayMAXNUM)int i=0;/*学生记录行号*/int j=0;/*科目号*/char s11;/*学号*/char c;/*确认指令 Y 删除 N 不删除*/system(cls);名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-21-页 共 29 页printf(n请输入要删除的学生学号:);/*提示输入学生学号*/scanf(%s,&s);/*接收输入的学号*/j=i+1;for(i=0;ino,s,11)=0)/*学生信息数组中是否存在与用户输入学号相同的学

39、生*/printf(n存在要删除的学生记录!);getch();/*找到指定学号的学生记录*/break;if(i=MAXNUM)|(stuArrayi=NULL)/*是否找遍数组中的所有记录*/printf(n不存在要删除的学生记录!);getch();/*没有找到与指定学号相同的学生*/return;/*输出要删除的学生信息开始*/printf(n*-*这是要删除的记录吗?*-*n);printf(|学期|学号|班别|姓名|语文|数学|英语|计算机|总分|平均分|n);printf(|-|-|-|-|-|-|-|-|-|-|n);printf(|%-7s|%-12s|%-6s|%-6s|%

40、6d|%6d|%7d|%6d|%6d|%7.2f|n,stuArrayi-term,stuArrayi-no,stuArrayi-banbie,stuArrayi-name,stuArrayi-score0,stuArrayi-score1,stuArrayi-score2,stuArrayi-score3,stuArrayi-sum,stuArrayi-average);printf(n*-*这是要删除的记录吗?*-*n);/*输出要删除的学生信息结束*/printf(你确定要删除该记录吗?Y or N!n);/*提示确认删除*/scanf(%s,&c);if(c=Y)|(c=N)/*接收删

41、除指令*/for(j=i+1;jMAXNUM-i;j+)/*从当前删除记录位臵到最后一个记录循环*/stuArrayj-1=stuArrayj;/*将记录向上移动一行*/stuArrayj=NULL;printf(正在删除.n);printf(n.已经删除学号为%s的学生记录.n,s);else/*不删除*/editmenu(stuArray);/*返回编辑子菜单*/名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-22-页 共 29 页student*edit_record(student*stuArrayMAXNUM)in

42、t i=0;/*学生记录行数*/int j=0;/*科目数*/int m=0;/*修改状态标志0 不修改*/int sum=0;/*总成绩*/char s11;/*学号*/char c;/*确认指令 Y 修改 N 不修改*/system(cls);printf(n请输入要修改的学生学号:);/*提示输入学号*/scanf(%s,&s);/*接收输入的学号*/for(i=0;(ino,s,11)=0)/*学生信息数组中是否存在与输入的学号相同的学生*/printf(n存在要修改的学生记录!);getch();/*找到指定的学生记录*/break;/*跳出循环,不再查找*/if(i=MAXNUM)

43、|(stuArrayi=NULL)/*是否找遍数组所有记录*/printf(n不存在要修改的学生记录!);getch();/*没有找到指定的学生记录*/return;/*返回菜单选择界面*/*开始修改学生信息*/printf(n*-*这是要修改的记录吗?*-*n);printf(|学期|学号|班别|姓名|语文|数学|英语|计算机|总分|平均分|n);printf(|-|-|-|-|-|-|-|-|-|-|n);printf(|%-7s|%-12s|%-6s|%-6s|%6d|%6d|%7d|%6d|%6d|%7.2f|n,stuArrayi-term,stuArrayi-no,stuArray

44、i-banbie,stuArrayi-name,stuArrayi-score0,stuArrayi-score1,stuArrayi-score2,stuArrayi-score3,stuArrayi-sum,stuArrayi-average);printf(n*-*这是要修改的记录吗?*-*n);/*结束修改学生信息*/printf(你确定要修改该记录吗?Y or Nn);/*提示确认修改*/scanf(%s,&c);/*接收确认指令*/if(c=Y)|(c=y)/*确认修改*/m=1;/*修改状态标志为1 确认修改*/else/*不修改*/editmenu(stuArray);/*返回

45、编辑子菜单*/名师资料总结-精品资料欢迎下载-名师精心整理-第 23 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-23-页 共 29 页while(m=1)/*确认修改*/printf(要修改哪个科目的成绩(语文为1,数学为2,英语为3,计算机为4)n);/*输出修改科目编号的询问*/scanf(%d,&j);/*接收修改科目的编号*/do/*进入科目修改循环*/printf(科目%d 成绩,j);/*提示当前修改的是哪个科目成绩*/scanf(%d,&stuArrayi-scorej-1);/*接收新的成绩*/if(stuArrayi-scorej-1100)|(stuAr

46、rayi-scorej-1scorej-1100)|(stuArrayi-scorej-10);/*输入的成绩是否在范围内*/for(j=0;jscorej;/*临时统计当前学生总成绩*/stuArrayi-average=sum/MAXSUB;/*计算当前学生的平均成绩*/printf(还要继续修改此记录吗?Y or N!n);/*提示是否继续修改*/scanf(%s,&c);/*接收确认指令*/if(c=Y)|(c=y)/*确认指令*/m=1;/*修改状态标志为1 确认修改*/else/*不修改*/break;/*跳出确认循环*/return stuArrayi;/*返回修改后的学生记录*

47、/void search_select(struct stu*stuArrayMAXNUM)int menuitem=-1;printf(nnn);printf(t|-*-*-|n);printf(t|-*查询子菜单*-|n);printf(t|-*-*-|n);printf(t|1-学号查询|n);printf(t|2-姓名查询|n);名师资料总结-精品资料欢迎下载-名师精心整理-第 24 页,共 29 页 -C 语言课程设计09 电信集成班陈颖宏第-24-页 共 29 页printf(t|3-返回主菜单|n);printf(t|-*-*-|n);do printf(nt请输入菜单项数字(1

48、3):);scanf(%d,&menuitem);while(menuitem3);switch(menuitem)case 1:no_search(stuArray);break;case 2:name_search(stuArray);break;case 3:return;return;student*no_search(student*stuArrayMAXNUM)int i=0;/*学生记录行号*/char s12;/*学号*/char c;system(cls);printf(n请输入要查询的学生的学号:);/*提示输入学号*/scanf(%s,&s);/*接收输入的学号*/for

49、(i=0;ino,s,11)=0)/*学生信息数组中是否存在与收入的学号相同的记录*/printf(n存在要查询的学生记录!);getch();/*找到了指定的记录*/break;/*跳出循环,不再查找*/if(i=MAXNUM)|(stuArrayi=NULL)/*是否找遍数组中所有的记录*/printf(n不存在要查询的学生记录!);getch();/*没有找到指定的记录*/return;/*返回菜单选择界面*/*输出要查询的学生信息开始*/printf(n*-*这是要查询的记录吗?*-*n);名师资料总结-精品资料欢迎下载-名师精心整理-第 25 页,共 29 页 -C 语言课程设计09

50、 电信集成班陈颖宏第-25-页 共 29 页printf(|学期|学号|班别|姓名|语文|数学|英语|计算机|总分|平均分|n);printf(|-|-|-|-|-|-|-|-|-|-|n);printf(|%-7s|%-12s|%-6s|%-6s|%6d|%6d|%7d|%6d|%6d|%7.2f|n,stuArrayi-term,stuArrayi-no,stuArrayi-banbie,stuArrayi-name,stuArrayi-score0,stuArrayi-score1,stuArrayi-score2,stuArrayi-score3,stuArrayi-sum,stuAr

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

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

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