2022年C语言课程设计学生信息管理系统 .pdf

上传人:C****o 文档编号:39679870 上传时间:2022-09-07 格式:PDF 页数:18 大小:106.89KB
返回 下载 相关 举报
2022年C语言课程设计学生信息管理系统 .pdf_第1页
第1页 / 共18页
2022年C语言课程设计学生信息管理系统 .pdf_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《2022年C语言课程设计学生信息管理系统 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言课程设计学生信息管理系统 .pdf(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C语言课程设计学生信息管理系统#include#include#include#include#define STU_LEN 10 int N;/定义学生人数struct student/定义一个“学生型”数据类型char number12;char name10;char sex;int age;char addr20;float cpt;float eng;float math;float sum;struct student stuSTU_LEN;struct student temSTU_LEN;/为了排序,定义一个存放排序结果的数组struct student cpt_max,eng

2、_max,math_max,sum_max,cpt_min,eng_min,math_min,sum_min;/这 8 个变量存放最高分及最低分的学生信息struct user char name10;char password7;int renshu;/学生人数;char yonghuming10;char password7=0;struct user user1;/这里是主函数!int main()void log_in();/登录函数声明void new_file();/新建void browse();/浏览void add();void add_1();/三种追加方式void add

3、_2();void add_3();/追加void found();void change_this(int X);void del_this(int X);/查询void found_od();名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 18 页 -void found_nu();void found_na();void del();void save();/删除void put_in();void new_here();void js_score();void order();void ord(int x);void order_1();void order_2();vo

4、id order_3();void order_sum();void serch();void serch_maxmin();void avg();int opt;new_here();log_in();if(strcmp(yonghuming,user1.name)=0)&(strcmp(password,user1.password)=0)system(cls);printf(登录成功!n);printf(请输入学生人数:);scanf(%d,&N);do printf(nn 主菜单);printf(n*-*n);printf(n 请选择操作类型,按回车确认:n);printf(1.新建文

5、件 n 2.浏览记录 n 3.追加方式 n 4.查 询 信 息 n5.删除操作 n 6.排序检索 n 7.退出程序 n);scanf(%d,&opt);if(opt=1)new_file();else if(opt=2)browse();else if(opt=3)add();else if(opt=4)found();名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 18 页 -else if(opt=5)del();else if(opt=6)js_score();else if(opt=7)exit(0);while(opt!=7);printf(n);return 0;/以

6、下是登录函数的定义void log_in()int i,m,n;/m,n 分别表示用户名和密码输入错误的次数printf(nnn);printf(*n);printf(*学 生 信 息 管理 系统V 1.0.0*n);printf(*作者:古名壬学号:1040000001*n);printf(*n);printf(请输入用户名:);scanf(%s,yonghuming);while(strcmp(yonghuming,user1.name)!=0)scanf(%s,yonghuming);m=m+1;printf(!);if(m2)printf(用户名输入错误达到三次,请按任意键退出!);e

7、xit(0);printf(n 请输入密码:);n=0;do for(i=0;i3)printf(n 密码错误超过三次,请按任意键退出!n);exit(0);if(n1)printf(n 密码错误,请重试:);while(strcmp(password,user1.password)!=0);return;/定义新建文件的函数void new_file()void save();void put_in();put_in();printf(输入完毕,正在保存文件.n);save();/因保存功能其它地方还要用,写成独立函数printf(保存成功!);void save()FILE*fp;int

8、i;if(fp=fopen(student1.gmr,wb)=NULL)printf(文件打开失败!n);return;for(i=0;iN;i+)if(fwrite(&stui,sizeof(struct student),1,fp)!=1)printf(写入错误!n);return;fclose(fp);/以下是浏览函数的定义void browse()printf(n 序号 学号 姓名 性别 年龄 住址 计算机 英语 高数 总分n);int i;FILE*fp;名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 18 页 -if(fp=fopen(student1.gmr,rb)

9、=NULL)printf(读取失败!n);return;for(i=0;iN;i+)fseek(fp,i*sizeof(struct student),0);fread(&stui,sizeof(struct student),1,fp);stui.sum=stui.cpt+stui.eng+stui.math;printf(%d%s,%s,%c,%d,%s,%4.2f,%4.2f,%4.2f,%4.2fn,i+1,stui.number,stui.name,stui.sex,stui.age,stui.addr,stui.cpt,stui.eng,stui.math,stui.sum);fc

10、lose(fp);return;/追加记录的主函数void add()int option;void add_1();void add_2();void add_3();do printf(n 请选择追加记录的位置:n 1.文件首 n 2.文件中 n 3.文件尾 n4.返回n);scanf(%d,&option);if(option=1)add_1();else if(option=2)add_2();else if(option=3)add_3();while(option!=4);return;/以下函数用来往数组写数据void put_in()int i;for(i=0;i0;i-)st

11、ui=stui-1;N+;stu0=temp1;save();/文件中追加void add_2()struct student temp1;int i,m;printf(在第几个学生后插入新记录?n);do scanf(%d,&m);if(mN)printf(输入不合法,请重试!n);while(mN);printf(n 请输入学生的信息,n);printf(请以以下顺序输入,每项之间用空格格开!n 学号 姓名 性别 年龄住址 计算机 英语 高数n);scanf(%s%s%c%d%s%f%f%f,&temp1.number,&temp1.name,&temp1.sex,&temp1.age,&

12、temp1.addr,&temp1.cpt,&temp1.eng,&temp1.math);for(i=N;im;i-)stui=stui-1;N+;stum=temp1;save();/文件尾追加void add_3()struct student temp1;printf(n 请输入学生的信息,n);名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 18 页 -printf(请以以下顺序输入,每项之间用空格格开!n 学号 姓名 性别 年龄住址 计算机 英语 高数n);scanf(%s%s%c%d%s%f%f%f,&temp1.number,&temp1.name,&temp1.

13、sex,&temp1.age,&temp1.addr,&temp1.cpt,&temp1.eng,&temp1.math);stuN=temp1;N+;save();/查询信息的主函数void found()void found_od();void found_nu();void found_na();int opt;do printf(请选择查询的字段:n 1.序号n 2.学号n 3.姓名n 4.返回n);scanf(%d,&opt);if(opt=1)found_od();else if(opt=2)found_nu();else if(opt=3)found_na();while(opt

14、!=4);return;/按序号查询学生信息void found_od()void change_this(int x);void del_this(int x);int opt,option;struct student temp;do printf(n 请输入序号:);scanf(%d,&opt);while(optN);printf(n 学号 姓名 性别 年龄 住址 计算机 英语 高数 总分n);FILE*fp;if(fp=fopen(student1.gmr,rb)=NULL)printf(读取失败!n);名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 18 页 -ret

15、urn;fseek(fp,(opt-1)*sizeof(struct student),0);fread(&temp,sizeof(struct student),1,fp);printf(%d%s,%s,%c,%d,%s,%4.2f,%4.2f,%4.2f,%4.2fn,opt,temp.number,temp.name,temp.sex,temp.age,temp.addr,temp.cpt,temp.eng,temp.math,temp.sum);fclose(fp);printf(1.修改本条记录 n 2.删除本条记录 n 3.返回上级 n);scanf(%d,&option);if(

16、option=1)change_this(opt);else if(option=2)del_this(opt-1);return;/以下修改当前记录void change_this(int x)void save();int opt;do printf(请选择要更改的字段 n 1.学号n 2.姓名n 3.性别n 4.年 龄n 5.住址n 6.计算机n 7.英语n 8.高数n 9.返回n);scanf(%d,&opt);if(opt=1)printf(请输入该生的学号:);scanf(%s,&stux-1.number);else if(opt=2)printf(请输该生的姓名:);scanf

17、(%s,&stux-1.name);else if(opt=3)printf(请输该生的性别:);scanf(%c,&stux-1.sex);else if(opt=4)printf(请输入该生的年龄:);scanf(%d,&stux-1.age);else if(opt=5)printf(请输入该生的住址:);名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 18 页 -scanf(%s,&stux-1.addr);else if(opt=6)printf(请输入该生的计算机成绩:);scanf(%f,&stux-1.cpt);else if(opt=7)printf(请输入该生

18、的英语成绩:);scanf(%f,&stux-1.eng);else if(opt=8)printf(请输入该生的英语成绩:);scanf(%f,&stux-1.math);else return;save();while(opt!=9);return;/按学号查询学生信息void found_nu()void change_this(int x);void del_this(int X);int i,option;char nu12;printf(请输入学号:n);scanf(%s,&nu);for(i=0;iN;i+)if(strcmp(nu,stui.number)=0)printf(n

19、 序号 学号 姓名 性别 年龄 住址 计算机 英语 高数 总分n);printf(%d%s,%s,%c,%d,%s,%4.2f,%4.2f,%4.2f,%4.2fn,i+1,stui.number,stui.name,stui.sex,stui.age,stui.addr,stui.cpt,stui.eng,stui.math,stui.sum);printf(1.修改本条记录 n 2.删除本条记录 n 3.继续查找(未找到符合条件记录则返回上层)n 4.返回n);scanf(%d,&option);if(option=1)change_this(i);else if(option=2)del

20、_this(i);名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 18 页 -else if(option=4)return;/以下函数用来册除当前记录void del_this(int x)void save();int i;char opti;printf(确认删除这条记录?删除后无法恢复!n 1.确认n 2.取消n);scanf(%d,&opti);if(opti=1)for(i=x;iN;i+)stui=stui+1;N-;save();else return;/以下是以姓名查询的函数void found_na()int i,option;char temp10;prin

21、tf(n 请输入姓名:);scanf(%s,temp);for(i=0;iN;i+)if(strcmp(temp,stui.name)=0)printf(n 序号 学号 姓名 性别 年龄 住址n);printf(%d%s,%s,%c,%d,%s,%4.2f,%4.2f,%4.2f,%4.2fn,i+1,stui.number,stui.name,stui.sex,stui.age,stui.addr,stui.cpt,stui.eng,stui.math,stui.sum);printf(1.修改本条记录 n 2.删除本条记录 n 3.继续查找(未找到符合条件记录则返回上层)n 4.返回n);

22、scanf(%d,&option);if(option=1)change_this(i);else if(option=2)del_this(i);else if(option=4)return;名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 18 页 -/删除文件或记录函数void del()int nu,opt,opti;printf(n 请选择操作类型:n 1.删除整个文件 n 2.删除一条记录 n);scanf(%d,&opt);if(opt=1)printf(确认删除整个文件吗?删除后无法恢复!n 1.确定n 2.取 消 n);scanf(%d,&opti);if(o

23、pti=1)unlink(student1.gmr);else return;else if(opt=2)printf(请输入要删除的记录号,如果不知记录号,请先浏览记录获取:);scanf(%d,&nu);del_this(nu-1);/判断用户是否第一次使用本程序,是则注册帐号void new_here()int i;char password27=0;FILE*fp;if(fp=fopen(user1.gmr,rb)=NULL)数据文件不存在!请在本程序根目录下建立一个纯文体文件,并重命名为“user1.gmr”!给您带来不便,请谅解!nn);fseek(fp,sizeof(struct

24、 user),0);fread(&user1,sizeof(struct user),1,fp);N=user1.renshu;fclose(fp);if(strcmp(user1.name,)=0&strcmp(user1.password,)=0)printf(欢迎使用学生信息管理系统v 0.0.9!n 请先注册一个用户帐号!n请输入用户名:);scanf(%s,&user1.name);do printf(n 请设置您的密码:);for(i=0;i6;i+)user1.passwordi=getch();名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 18 页 -prin

25、tf(*);printf(n 请再次输入您的密码:);for(i=0;i6;i+)password2i=getch();printf(*);while(strcmp(user1.password,password2)!=0);if(fp=fopen(user1.gmr,wb)=NULL)printf(n 文件打开失败!n);fseek(fp,sizeof(struct user),0);if(fwrite(&user1,sizeof(struct user),1,fp)!=1)printf(写入错误!n);return;else printf(n 新用户注册成功!);fclose(fp);/检

26、索排功能的主函数void js_score()int opt;void order();void serch();void avg();do printf(n 使用此功能前,请先浏览记录,以便将数据从文件读到内存中供计算机调用!);printf(n 1.排序n 2.检索最值 n 3.查看平均分 n 4.返回n);scanf(%d,&opt);if(opt=1)order();else if(opt=2)serch();else if(opt=3)avg();while(opt!=4);return;名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 18 页 -/排序核心void

27、ord(int x)/排序函数int i,j,k;struct student t;/交换的临时变量for(k=0;kN;k+)temk=stuk;/把 stu数组复制到 tem 数组中,用来存放排序后的结果if(x=1)printf(计算机降序 n);for(i=0;iN;i+)for(j=0;jN-i;j+)if(temj.cpttemj+1.cpt)t=temj;temj=temj+1;temj+1=t;else if(x=2)printf(英语降序 n);for(i=0;iN;i+)for(j=0;jN-i;j+)if(temj.engtemj+1.eng)t=temj;temj=te

28、mj+1;temj+1=t;else if(x=3)printf(高数降序 n);for(i=0;iN;i+)for(j=0;jN-i;j+)if(temj.mathtemj+1.math)t=temj;temj=temj+1;temj+1=t;else if(x=4)printf(总分降序 n);for(i=0;iN;i+)for(j=0;jN-i;j+)if(temj.sumtemj+1.sum)t=temj;temj=temj+1;temj+1=t;名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 18 页 -else return;/选择排序方式void order()v

29、oid order_1();void order_2();void order_3();void order_sum();int opt;do printf(n 请选择排序方式 n);printf(n 1.计算机成绩降序 n 2.英语成绩降序 n 3.高数成绩降序n4.总分降序 n 5.返回n);scanf(%d,&opt);if(opt=1)order_1();else if(opt=2)order_2();else if(opt=3)order_3();else if(opt=4)order_sum();while(opt!=5);return;/按计算机降序void order_1()i

30、nt i,z;void ord(int x);z=1;ord(z);printf(排序结果如下:);printf(n 序号 学号 姓名 计算机 英语 高数 总分n);for(i=0;iN;i+)printf(NO.%d%s%s%4.2f%4.2f%4.2f%4.2fn,i+1,temi.number,temi.name,temi.cpt,temi.eng,temi.math,temi.sum);return;名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 18 页 -/按英语降序void order_2()int i,z;void ord(int x);z=2;ord(z);p

31、rintf(排序结果如下:);printf(n 序号 学号 姓名 计算机 英语 高数 总分n);for(i=0;iN;i+)printf(NO.%d%s%s%4.2f%4.2f%4.2f%4.2fn,i+1,temi.number,temi.name,temi.cpt,temi.eng,temi.math,temi.sum);return;/按高数降序void order_3()int i,z;void ord(int x);z=3;ord(z);printf(排序结果如下:);printf(n 序号 学号 姓名 计算机 英语 高数 总分n);for(i=0;iN;i+)printf(NO.%

32、d%s%s%4.2f%4.2f%4.2f%4.2fn,i+1,temi.number,temi.name,temi.cpt,temi.eng,temi.math,temi.sum);return;/按总分降序排序void order_sum()int i,z;void ord(int x);z=4;ord(z);printf(排序结果如下:);printf(n 序号 学号 姓名 计算机 英语 高数 总分n);for(i=0;iN;i+)printf(NO.%d%s%s%4.2f%4.2f%4.2f%4.2fn,i+1,temi.number,temi.name,temi.cpt,temi.en

33、g,temi.math,temi.sum);return;/以下函数用来打印最值名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 18 页 -void serch()int opt;void serch_maxmin();do printf(n 1.检索最高分 n 2.检索最低分 n 3.返回n);scanf(%d,&opt);serch_maxmin();if(opt=1)printf(n计 算 机 最 高 分:学 号:%s 姓 名:%s 分数:%4.2f,cpt_max.number,cpt_max.name,cpt_max.cpt);printf(n英 语 最 高 分:学

34、号:%s 姓 名:%s 分数:%4.2f,eng_max.number,eng_max.name,eng_max.eng);printf(n高 数 最 高 分:学 号:%s 姓 名:%s 分数:%4.2f,math_max.number,math_max.name,math_max.math);printf(n总 分 最 高 分:学 号:%s 姓 名:%s 分数:%4.2f,sum_max.number,sum_max.name,sum_max.sum);else if(opt=2)printf(n计 算 机 最 低 分:学 号:%s 姓 名:%s 分数:%4.2f,cpt_min.numbe

35、r,cpt_min.name,cpt_min.cpt);printf(n英 语 最 低 分:学 号:%s 姓 名:%s 分数:%4.2f,eng_min.number,eng_min.name,eng_min.eng);printf(n高 数 最 低 分:学 号:%s 姓 名:%s 分数:%4.2f,math_min.number,math_min.name,math_min.math);printf(n总 分 最 低 分:学 号:%s 姓 名:%s 分数:%4.2f,sum_min.number,sum_min.name,sum_min.sum);while(opt!=3);return;/

36、以下函数用来找出单科成绩及总分最高分及最低分void serch_maxmin()int i,j,k;struct student t;for(k=0;kN;k+)temk=stuk;for(i=0;iN;i+)for(j=0;jN-i;j+)if(temj.cpttemj+1.cpt)t=temj;名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 18 页 -temj=temj+1;temj+1=t;cpt_max=tem0;cpt_min=temN-1;for(i=0;iN;i+)for(j=0;jN-i;j+)if(temj.engtemj+1.eng)t=temj;tem

37、j=temj+1;temj+1=t;eng_max=tem0;eng_min=temN-1;for(i=0;iN;i+)for(j=0;jN-i;j+)if(temj.mathtemj+1.math)t=temj;temj=temj+1;temj+1=t;math_max=tem0;math_min=temN-1;for(i=0;iN;i+)for(j=0;jN-i;j+)if(temj.sumtemj+1.sum)t=temj;temj=temj+1;temj+1=t;sum_max=tem0;sum_min=temN-1;/以下函数用来打印各科平均分void avg()int i;名师资料

38、总结-精品资料欢迎下载-名师精心整理-第 17 页,共 18 页 -float avg_cpt=0.0;float avg_eng=0.0;float avg_math=0.0;float avg_sum=0.0;float cpt_sum=0.0;float eng_sum=0.0;float math_sum=0.0;float sum_sum=0.0;for(i=0;iN;i+)cpt_sum=cpt_sum+stui.cpt;eng_sum=eng_sum+stui.eng;math_sum=math_sum+stui.math;sum_sum=sum_sum+stui.sum;avg_cpt=cpt_sum/N;avg_eng=eng_sum/N;avg_math=math_sum/N;avg_sum=sum_sum/N;printf(n 全班各科平均分如下:);printf(n 计算机平均分:%6.2f,avg_cpt);printf(n 英语平均分:%6.2f,avg_eng);printf(n 高数平均分%6.2f,avg_math);printf(n 总分平均分:%6.2f,avg_sum);return;名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 18 页 -

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

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

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

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