ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:212.13KB ,
资源ID:4267895      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4267895.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言课程设计报告1doc.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言课程设计报告1doc.docx

1、C语言课程设计报告1doc学生信息管理程序一、设计目的:使用结构体数组结构实现简单的学生信息管理功能,要求具有数据输入、数据输出、数组排序、元素插入、元素删除、查询信息等功能。程序最多容纳60名学生的记录。二、设计要求:1、int Input(void);/使用程序中一个空白结构体,输入一名学生的个人及学习信息信息。此功能区返回一个值记录程序存储学生记录的数量*/2、 void Change_record(void);/修改学生的记录选项。3、void Delete_record(void);/删除学生记录选项。4、void Sort_record(void);/根据学生某项信息排序学生记录选

2、项。5、 void Query_record(void);/查询学生记录选项。6、void Display(void);/显示出当前程序存储的所有学生信息选项。7、void Add_from_text(int e);/从文本中提取学生记录输入程序进行处理。8、void Write_to_text(void);/将当前程序中存储的学生记录写入一个文本文件中。9、void Ending(void);/退出选项。三、总体设计:1、主函数模块: 主函数设计较为简单,主要是使用switch语句通过选择结构将整个程序能够实现的功能提示用户选择。具体流程图:主函数代码:int main(void)/对主函数

3、的定义。 n = 0; for (i = 0; i N; i+) strcpy(stui.name, 0); stui.num = 0; stui.score = 0; for (;)/通过for语句实现使用户自由决定是否重复使用此程序。 switch (Menu_select1()/使用switch语句调用用户指定菜单项对应的函数。 case 1: Input(n);/插入学生记录函数。 for (i = 0, n = 0; i N; i+) if (stui.num != 0) n+; break; case 2: Change_record();/修改学生的记录函数。 break; ca

4、se 3: Delete_record();/删除学生记录函数。 break; case 4: Sort_record();/排序函数。 break; case 5: Query_record();/查询函数。 break; case 6: Dispaly();/展示函数。 break; case 7: printf(请输入文件的路径:); scanf(%s, name0); printf(请输入此文本中有多少名学生的记录:); scanf(%d, &j); Add_from_text(j, name0);/从文本中添加学生记录的函数。 n += j; break; case 8: print

5、f(请输入文件的路径:); scanf(%s, name0); Write_to_text();/将学生记录写入文本的函数。 break; case 9:/结束程序使用界面选项。 Ending(); break; default: continue;/菜单循环显示。 system(cls); system(pause);/防止程序运行窗口闪退。 return 0;2、菜单模块:菜单模块包括主菜单和部分功能中要调用的附属菜单,作用是向用户说明其输入的选择信息将使程序实现什么样的功能。具体流程图:3、功能模块 功能模块的设计就是通过编写多个的函数对应程序所要求实现的功能。函数在主函数中将被编号,使

6、用户向程序输入的编号就能调用相应的函数体现程序的功能。具体流程图:四、详细设计及源代码:#include#include/提供system();语句。#include/提供strlen()函数。#define N 60 /定义全局常量N作为结构体数组stu下标。 int b, c, num0, n, i = 0, j = 0;char name040;/*将程序中多次定义的标识符设置为全局变量。*/struct student char name40; int num; int score;stuN;int Menu_select1(void);int Menu_select2(void);i

7、nt Menu_select3(void);int Menu_select4(void);int Menu_select5(void);int Menu_select6(void);int Menu_select7(void);int Menu_select8(void);int Menu_select9(void);/声明程序中用到的多种菜单函数。struct student *point1, *point2;/全局定义程序中多次用到得结构体指针变量。int(*pot2)(void) = Menu_select2;int(*pot4)(void) = Menu_select4;int(*po

8、t6)(void) = Menu_select6;int(*pot8)(void) = Menu_select8;/定义指向菜单函数的指针。int judgement(void);int judgement_small(void);/声明程序要调用的两个判断特殊情况的函数。FILE *fp;/定义指向文件型数据的指针变量。void Change_service(void);void Query_service(void);void Delete_service(void);void(*ser1)(void) = Change_service;void(*ser2)(void) = Delete

9、_service;void(*ser3)(void) = Query_service;/定义指向在有特定功能的函数内部使用的函数的指针。void Sort_service1(int po);void Sort_service2(int po);/声明两个在有排序功能的函数中腰使用的函数。void swap(struct student *po1, struct student *po2);/对交换函数的声明。void Ending(void);/对有结束功能的函数的声明。void find(int(*p)(void), void(*q)(void);/对一个形参是指向函数的指针的函数的声明。v

10、oid Input(int n)/对有插入学生记录功能的函数的定义。 printf(请输入学生姓名:); scanf(%s, &stun.name); printf(请输入学生序号:); stun.num = judgement(); printf(请输入学生信息:); scanf(%d, &stun.score); system(cls);/此语句执行后将清除运行窗口显示的结果。void Change_record(void)/对有修改学生记录功能的函数的定义。 find(pot2, ser1);/在函数内部调用函数。void Delete_record(void)/对有删除学生记录功能的函

11、数的定义。 find(pot4, ser2);void Sort_record(void)/对有排序学生记录功能的函数的定义。 j = Menu_select8();/通过菜单函数的返回值提供用户的选择信息来执行用户选定的功能 for (; judgement_small() 0;)/for语句中的判断用判断函数处理后以提示是否输入错误。 if (j = 1) j = Menu_select9(); Sort_service1(j);/通过菜单函数的返回值作为另一个函数的实参来执行用户选定的功能。 break; else if (j = 2) j = Menu_select9(); Sort_

12、service2(j); break; else continue; void Query_record(void)/对有查询学生记录功能的函数的定义。 find(pot6, ser3);void Dispaly(void)/对有显示全部学生记录功能的函数的定义。 for (i = 0; i n; i+)/for语句打印出当时的所有学生记录。 printf(第%d位学生姓名为%sn, i + 1, stui.name); printf(班内序号为%dn, stui.num); printf(学习信息为%dnn, stui.score); system(pause);/防止运行窗口闪退。void

13、 Ending(void)/对有退出功能的函数的定义。 system(cls); printf(nt *nnnn); printf(nttt 欢迎下次继续使用,再见!nn); printf(nnnt *nnt); exit(0);/正常退出程序。void Add_from_text(int e, char ch)/对有可从文本文件中提取学生记录的函数的定义。 fp = fopen(name0, r);/使指针指向文件。 if (fp = fopen(name0, r) = NULL)/判断指针所指向的文件是否存在,不存在退出此函数。 printf(无法找到路径为%s的文本文件。n, name0

14、); system(pause); return; else/存在则从此文件中提取学生记录。 for (i = n; i (n + e + 1); i+) fscanf(fp, %s%d*%d, &stui.name, &stui.num, &stui.score); printf(已提取出文本文件名称为%s中的所有学生记录!n, name0); system(pause); fclose(fp);/关闭文本文件,即指针fp不再指向任何文件。void Write_to_text(void)/对可将程序中存储并处理后的学生记录输出至一个文本文件。 fp = fopen(name0, w);/使指

15、针指向文件。 if (fp = fopen(name0, w) = NULL)/判断指针所指向的文件是否存在,不存在退出此函数。 printf(无法找到名为%d的文本文件。n, name0); system(pause); return; else/存在则将程序中储存的学生记录写入该文件。 fprintf(fp, 姓名ttttt*班内序号t *学习信息*n); for (i = 0; i name, temp1); break; case 2: printf(此学生当前序号为%d,请输入要修改后的序号;, (*point1).num); temp2 = judgement(); (*point

16、1).num = temp2; break; case 3: printf(此学生当前信息为%d,请输入要修改后的信息;, (*point1).score); scanf(%d, &temp3); (*point1).score = temp3; break; default: break; void Query_service(void)/对在有查询学生记录功能的函数中要调用的函数的定义。 switch (Menu_select7()/同上,选择项较多用switch语句。 case 1: printf(此学生当前姓名为%s,班级内序号为%d,学习信息为%dn, point1-name, po

17、int1-num, point1-score);/*由于此函数作为实参在find()函数被调用,在其内调用前已经将寻找到得项的地址付给了 全局指针变量point1*/ system(pause); break; case 2: printf(此学生当前姓名为%d。n, point1-name); system(pause); break; case 3: printf(此学生当前班内序号为%d。n, point1-num); system(pause); break; case 4: printf(此学生当前班内序号为%d。n, point1-score); system(pause); de

18、fault: break; void Delete_service(void)/对在有删除学生记录功能的函数中要调用的函数的定义。 j = Menu_select5();/选择项较少用if语句。 if (j = 1) char sure; printf(此学生当前姓名为%s,班级内序号为%d,学习信息为%dn, point1-name, point1-num, point1-score);/*由于此函数作为实参在find()函数被调用,在其内调用前已经将寻找到得项的地址付给了全局指针变量point1*/ printf(请按回车键确认您的操作!n); for (;) if (getchar(su

19、re) = n) point2 = &stun - 1; swap(point1, point2); n-; break; system(cls); printf(删除记录成功,感谢使用!); system(pause); /*这里删除一个学生的全部记录的实现方法是:锁定要删除的学生记录将其地址赋给point1,通过地址来 把此时存入得学生记录中最后一位的信息存入该名学生信息存储的位置,然后清空最后一位学生的占用的结构体 数组元素并对程序中记录存入学生记录数量的全局变量n做减一处理*/ else if (j = 2)/只删除一名学生的信息的功能。 point1-score = 0;/指定学生信

20、息清零。 else system(pause);void Sort_service1(int po)/对在有排序学生记录功能的函数中要调用的第一个函数的定义,即通过班内序号排序。 int m = judgement_small(); if (po = 1)/成立做降序处理。 for (i = 0; i m; i+) for (c = i + 1; c stub.num) point1 = &stuc; point2 = &stub; b = c; swap(point1, point2);/调用函数交换两个结构体数组元素内的所有信息。 printf(排序成功!感谢使用!n); system(p

21、ause); else/不成立则做升序处理。 for (i = 0; i m; i+) for (c = i + 1; c m + 1; c+) b = i; if (stuc.num stub.num) point1 = &stuc; point2 = &stub; b = c; swap(point1, point2); printf(排序成功!感谢使用!n); system(pause); void Sort_service2(char po)/对在有排序学生记录功能的函数中要调用的第二个函数的定义,即通过学习信息排序。 int m = judgement_small(); if (po

22、 = 1)/做升序处理 for (i = 0; i m; i+) for (c = i + 1; c stub.score) point1 = &stuc; point2 = &stub; b = c; swap(point1, point2); printf(排序成功!感谢使用!n); system(pause); return; else/做降序处理。 for (i = 0; i m; i+) for (c = i + 1; c m + 1; c+) b = i; if (stuc.score stub.score) point1 = &stuc; point2 = &stub; b =

23、c; swap(point1, point2); printf(排序成功!感谢使用!n); system(pause); return; void swap(struct student *po1, struct student *po2)/*对一个具有交换值功能的函数的定义,具体功能是交换两个结构体数组元素内的所有信息*/ struct student temp0; temp0 = *po1; po1 = po2; *po2 = temp0;void find(int(*p)(void), void(*q)(void)/*对一个形参是指向函数的指针的函数的定义,此函数将在查询、删除、修改函数

24、中被使用,即通过用户输入的一名学生的名字或班内序号锁定该名学生记录的地址,保存在全局指针变量point1中,然后用_service函数处理*/ for (;) j = p();/通过函数的指针调用函数 if (j = 1) printf(请输入学生的姓名:); scanf(%s, name0); name0strlen(name0) + 1 = 0;/防止字符数组越界。 for (i = 0; i n)/对特殊情况的处理。 printf(经寻找后没有发现姓名为%s的学生记录存入程序!n, name0); system(pause); break; else if (j = 2) printf(请输入学生的序号:); scanf(%d, &num0); fo

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1