c语言课设学生信息管理系统

上传人:s****a 文档编号:118121211 上传时间:2022-07-11 格式:DOCX 页数:20 大小:24.36KB
收藏 版权申诉 举报 下载
c语言课设学生信息管理系统_第1页
第1页 / 共20页
c语言课设学生信息管理系统_第2页
第2页 / 共20页
c语言课设学生信息管理系统_第3页
第3页 / 共20页
资源描述:

《c语言课设学生信息管理系统》由会员分享,可在线阅读,更多相关《c语言课设学生信息管理系统(20页珍藏版)》请在装配图网上搜索。

1、程序1#include #include #include#include#includevoid leap_year();void output_year(int year);void output_month(int month,int year);void output_day(int day);void yue();void calc();/计算两个日期相差几天的函数以上代码申明函数int mon_first,mon_last;int year,month,day,weekday,days;char x,m;HANDLE hwnd;以上代码定义全局变量int main()while(1

2、)hwnd=FindWindow(NULL,C:Documents and SettingsAdministrator 桌面Debug1.exe);printf(* 菜单显示 *n);printf(*1.查询某年的日历*n);printf(*2.查询某月的日历*n);printf(*3.查询特定的日期*n);printf(&*n);printf(请输入菜单代码:); scanf(%d”,&x);switch(x)case 1: output_year(year); break;case 2: output_month(year,month);break;case 3: output_day(d

3、ay); break;default : MessageBox(hwnd,输入的菜单代码错误,请重新输入,标题 ”,MB_OK|MB_ICONERROR);break;以上代码为main函数,下面的为各个子函数的定义void output_year(int year)printf(-请输入年份:);scanf(%d”,&year);if(year2040 | year2040 | year1940) MessageBox(hwnd,输入的年超出范围1940-2040,请重新输入,标题”,MB_OK|MB_ICONERROR);output_year(month);if(month12) Mes

4、sageBox(hwnd,输入的月出范围1-12,请重新输入,标题”,MB_OK|MB_ICONERROR);output_year(month);以上代码判断输入的月份是否超出范围switch(month)case 1:printf(tJanuary %dn,year);days=31;break;case 2:printf(tFebruary %dn”,year);if(year%4=0 & year%100!=0 | year%400=0) days=29;else days=28;break;case 3:printf(tMarch %dn”,year);days=31;break;c

5、ase 4:printf(tApril %dn,year);days=30;break;case 5:printf(tMay %dn,year);days=31;break;case 6:printf(tJune %dn,year);days=30;break;case 7:printf(tJuly %dn,year);days=31;break;case 8:printf(tAugust %dn,year);days=31;break;case 9:printf(tSeptember %dn,year);days=30;break;case 10:printf(tOctober %dn,ye

6、ar);days=31;break;case 11:printf(tNovember %dn,year);days=30;break;case 12:printf(tDecember %dn,year);days=31;break;default:printf(error);以上代码判断输入的月份,调用子函数yue()输出月份printf( S M T W T F Sn);if(month=1)month=13;year-;if(month=2)month=14;year-;mon_first= (1+1 + 2*month + 3*(month+1)/5 + year + year/4 -

7、year/100 + year/400)%7)+1;for(i=1;imon_first*3-2;i+) printf();for(i=1;i2040 II year1940)_MessageBox(hwnd,”输入的年超出范围1940-2040,请重新输入”,”标题 ”,MB_OKIMB_ICONERROR);output_year(day);if(month12)_MessageBox(hwnd,”输入的月出范围1-12,请重新输入,标题 ”,MB_OKIMB_ICONERROR);output_year(month);if(month=4 & month=6 & month=9 & mo

8、nth=11)if(day30)_MessageBox(hwnd,”该月只有30天,请重新输入,标题”,MB_OKIMB_ICONERROR);output_year(day);if(month=2)if(year%4=0 & year%100!=0 | year%400=0)if(day29)_MessageBox(hwnd,该月只有29天,请重新输入,标题”,MB_OKMB_ICONERROR);output_year(day);elseif(day28)_MessageBox(hwnd,该月只有28天,请重新输入,标题”,MB_OK|MB_ICONERROR);output_year(d

9、ay);以上代码判断日期输入是否超出范围if(month=1)month=13;year-;if(month=2)month=14;year-;weekday= (day+1 + 2*month + 3*(month+1)/5 + year + year/4 - year/100 + year/400)%7;switch(weekday)case 0:printf(那天是星期天n);break;case 1:printf(那天是星期一 n);break;case 2:printf(那天是星期二 n);break;case 3:printf(那天是星期三n);break;case 4:print

10、f(那天是星期四 n);break;case 5:printf(那天是星期五 n);break;case 6:printf(那天是星期六n);break;以上计算星期的算法参考网络,基姆拉尔森计算公式if(month=1)if(day=1)printf(那天是元旦n);if(month=3)if(day=8)printf(”那天是国际妇女节n);if(day=12)printf(那天是植树节n);if(month=4)if(day=5)printf(”那天是清明节n);if(month=5)if(day=1)printf(”那天是劳动节n”);if(day=4)printf( ”今天是五四青年

11、节n);if(month=6)if(day=1)printf(那天是儿童节n);if(month=7)if(day=1)printf(那天是中国建党节n);if(month=8)if(day=1)printf(那天是建军节n);if(month=9)if(day=3)printf(-那天是抗日战争胜利纪念日n);if(day=10)printf(那天是教师节n);if(month=10)if(day=1)printf(那天是国庆节n);/以上代码计算输入的日期是否为公历节日calc();/调用函数,计算相差的时间void leap_year(int m,int year)int i;for (

12、month=1;month=12;month+)switch(month)case 1:printf(ntJanuary %dn”,year);days=31;break;case 2:printf(ntFebruary %dn,year);if(m=1)days=29;elsedays=28;break;case 3:printf(ntMarch %dn,year);days=31;break;case 4:printf(ntApril %dn”,year);days=30;break;case 5:printf(ntMay %dn,year);days=31;break;case 6:pr

13、intf(ntJune %dn,year);days=30;break;case 7:printf(ntJuly %dn,year);days=31;break;case 8:printf(ntAugust %dn,year);days=31;break;case 9:printf(ntSeptember %dn,year);days=30;break;case 10:printf(ntOctober %dn,year);days=31;break;case 11:printf(ntNovember %dn,year);days=30;break;case 12:printf(ntDecemb

14、er %dn,year);days=31;break;default:printf(error);printf( S M T W T F Sn);if(month=1)mon_first= (1+1 + 2*13 + 3*(13+1)/5 + (year-1) + (year-1)/4 - (year-1)/100 + (year-1)/400)%7)+1;mon_last=(days-8+mon_first)%7;elsemon_first=(mon_last=7)?1:mon_last+1;mon_last=(days-8+mon_first)%7;以上代码计算每个月的第一天for(i=1

15、;imon_first*3-2;i+)printf();for(i=1;i=days;i+)printf(%3d”,i);if(i-(7-mon_first+1)%7=0)printf(n); 以上代码打印输出日历 void yue(char month )int i;switch(month)case 1:printf(ntJanuary %dn,year);days=31;break;case 2:printf(ntFebruary %dn,year);if(m=1)days=29;else days=28;break;case 3:printf(ntMarch %dn,year);day

16、s=31;break;case 4:printf(ntApril %dn,year);days=30;break;case 5:printf(ntMay %dn,year);days=31;break;case 6:printf(ntJune %dn,year);days=30;break;case 7:printf(ntJuly %dn,year);days=31;break;case 8:printf(ntAugust %dn,year);days=31;break;case 9:printf(ntSeptember %dn,year);days=30;break;case 10:prin

17、tf(ntOctober %dn,year);days=31;break;case 11:printf(ntNovember %dn,year);days=30;break;case 12:printf(ntDecember %dn,year);days=31;break;default:printf(error);printf( S M T W T F Sn);if(month=1)mon_first= (1+1 + 2*13 + 3*(13+1)/5 + (year-1) + (year-1)/4 - (year-1)/100 + (year-1)/400)%7)+1;mon_last=(

18、days-8+mon_first)%7;elsemon_first=(mon_last=7)?1:mon_last+1;mon_last=(days-8+mon_first)%7;以上代码计算每个月的第一天for(i=1;imon_first*3-2;i+) printf();for(i=1;i=days;i+)printf(%3d”,i);if(i-(7-mon_first+1)%7=0) printf(n); 以上代码打印输出日历 void calc()time_t t1,t2;struct tm timeptr1,timeptr2;timeptr1.tm_mday=3;timeptr1.

19、tm_mon=3;timeptr1.tm_year=2015-1900;timeptr1.tm_sec=0;timeptr1.tm_min=46;timeptr1.tm_hour=11;timeptr1.tm_wday=2;timeptr1.tm_yday=0;timeptr1.tm_isdst=0;timeptr2.tm_mday=day;timeptr2.tm_mon=month;timeptr2.tm_year=year-1900;timeptr2.tm_sec=timeptr2.tm_min=timeptr2.tm_hour=timeptr2.tm_wday=timeptr2.tm_y

20、day=timeptr2.tm_isdst=0;t1=mktime(&timeptr1);t2=mktime(&timeptr2);printf(时间差:%d n,abs(difftime(t2,t1)/(60*24*60);以上代码是计算输入日期距离今天 天数的代码,算法参考网络程序2#include#includevoid add();void sub();/函数的申明int x,y,answer,daan,score=0,k,num=0,error;/error 记录错误的次数,num 记录做的题目数量, answer为正确答案/daan为学生输入的答案,score为得分int main

21、()while(num10)/最外层的循环,控制10道题目error=0;/错误的次数清零while(1)y = rand() % 50; 产生随机数x = rand() % 50;/产生随机数if(x+yy)printf(%d-%d=,x,y);answer=x-y;scanf(%d”,&daan);elseprintf(%d-%d=,y,x);answer=y-x;scanf(%d”,&daan);程序3#include #include #define N 10void intput();void show();void save();void paixu();void change()

22、;void tongji();void show_best();void show_average();void show_num();void jiazai();void search();struct studentlong num;char name30;float china;float math;float english;float score;struct student stuN;char x,i=0;int main ()while(1)printf(* 菜单显示 *侦,printf(*a、成绩录入*n);printf(*j、成绩载入*n);printf(*b、成绩显示*n)

23、;printf(*c、成绩保存*n);printf(*d、成绩排序*n);printf(*e、成绩修改(要求先输入密码)*n);printf(*f、成绩统计*n);printf(*s、学生信息查找*n);printf(*g、退出系统*n);printf(*n );printf(请输入菜单代码:);scanf(%c”,&x);switch(x)case a:intput();break;case j:jiazai();break;case b:show();break;case c:save();break;case d:paixu();break;case e:change();break;c

24、ase f:tongji();break;case s:search();break;case g:return 0;default :printf(您的输入有误,请重新输An);getchar();voidintput()/这个函数录入学生的成绩printf(-请输入学生的学号:);scanf(%ld,&stui.num);printf( ”请输入学生的姓名:);scanf(%s”,&stui.name);printf(请输入学生的语文成绩:);scanf(%f,&stui.china);printf(-请输入学生的数学成绩:);scanf(%f,&stui.math);printf(请输入

25、学生的英语成绩:);scanf(%f,&stui.english);stui.score =(stui.china+stui.math +stui.english);getchar();i+;void jiazai()int x=i;FILE *fp2;getchar();fp2=fopen(成绩.txt”,r+);if(fp2=NULL)printf( ”文件打开错误勺;rewind(fp2);while(!feof(fp2)x+;fscanf(fp2,%ld”,&stux.num );fscanf(fp2,%s”,&stux.name );fscanf(fp2,%f,&stux.china

26、);fscanf(fp2,%f,&stux.math);fscanf(fp2,%f,&stux.english);fscanf(fp2,%f,&stux.score);/printf(%ld,%s,%f,%f,%f,%fn,stux.num ,stux.name ,stux.china ,stux.math ,stux. english ,stux.score);i=x;fclose(fp2);printf(成绩载入成功! n);void show() /这个函数显示所有学生的成绩 int j;for(j=1;ji;j+) printf(n);printf(-学号 姓名 语文 数学 英语总分蛆

27、);printf(%10d %s %6.0f%6.0f%6.0f %6.0fn,stuj.num,stuj.name,stuj.china,stuj.math,stuj.english,stuj.score );printf(n); getchar(); void save()/这个函数把所有学生的成绩写到文件int j;FILE *fp1;fp1=fopen(成绩.txt”,a+);for(j=0;ji;j+)fprintf(fp1,%ld %s %10.2f %10.2f %10.2f %10.2fn,stuj.num,stuj.name ,stuj.china ,s tuj.math ,

28、stuj.english ,stuj.score );fclose(fp1);printf(”已保存到成绩.txt中蛆);getchar(); void paixu()/这个函数把所有学生按分数从高到低排序 int j,k,minci=1;struct student t;getchar();for(j=0;j=i-1;j+ )for(k=0;kstuk+1.score )t=stuk;stuk=stuk+1;stuk+1=t;for(j=i-1;j0;j-)printf(n);printf(-名次学号 姓名 语文 数学 英语总分/);printf( %d %10d %s %6.0f%6.0f

29、%6.0f %6.0fn,minci,stuj.num,stuj.name,stuj.china,stuj.math,stuj.english,stuj.score );minci+;printf(n); void change()/这个函数修改学生的成绩int password,j,change_num;printf(请输入密码:);scanf(%d,&password);if(password=8888)printf(”请输入要修改的学号:”);scanf(%ld”,&change_num);getchar();for(j=0;ji;j+)if(change_num=stuj.num)pr

30、intf(”请输入你要修改的语文成绩:”);scanf(%f,&stuj.china);printf(-请输入你要修改的数学成绩:,scanf(%f,&stuj.math);printf(”请输入你要修改的英语成绩:”);scanf(%f,&stuj.english);stuj.score =(stuj.china+stuj.math +stuj.english);getchar();elseprintf(您输入的密码错误,请您重新输入:n);change();void search()long cha;int j;getchar();printf(-请输入你要查找的学生的学号:,scanf(

31、%ld”,&cha);for(j=0;ji)printf(n没有这个学生/);getchar();printf(*1.显示每门课程成绩最高的学生的基本信息*n);*n);printf(*2.显示每门课程的平均成绩*n);printf(*3.显示超过某门课程平均成绩的学生人数&tVr 1=1* 菜单 显 示void tongji()/这个函数统计学生的成绩 int choose;printf(*n );printf(*n );printf(请输入菜单代码:);scanf(%d”,&choose);getchar();switch(choose)case 1:show_best();break;c

32、ase 2:show_average();break;case 3:show_num();break;void show_best()/这个函数显示每门课程成绩最高的学生的基本信息int j ,t=0;float max_china=stu0.china ,max_math=stu0.math ,max_english=stu0.english;printf(n);for(j=0;ji;j+)if(max_chinastuj.china)max_china=stuj.china ;t=j;printf(语文的最高分学生的信息:n);printf( 学号姓名分数蛆);for(j=0;ji;j+)

33、if(stuj.china =stut.china )printf(%ld %s %5.2fn,stuj.num,stuj.name,stuj.china);printf(n);t=0;for(j=0;ji;j+)if(max_mathstuj.math)max_math=stuj.math ;t=j;printf(数学的最高分学生的信息:n);printf( 学号姓名分数蛆);for(j=0;ji;j+)if(stuj.math =stut.math )printf(%ld %s %5.2fn,stuj.num,stuj.name,stuj.math);printf(n);t=0;for(j

34、=0;ji;j+)if(max_englishstuj.english)max_english=stuj.english ;t=j;printf(英语的最高分学生的信息:n);printf( 学号姓名分数蛆);for(j=0;ji;j+)if(stuj.english =stut.english )printf(%ld %s %5.2fn,stuj.num,stuj.name,stuj.english);printf(n);void show_average()/这个函数显示每门课程的平均成绩 int j;float ave=0;printf(n);for (j=0;ji;j+)ave+=st

35、uj.china/i;printf(语文的平均分为:5.2fn”,ave);ave=0;for (j=0;ji;j+)ave+=stuj.math/i;printf(数学的平均分为:%5.2fn,ave);ave=0;for (j=0;ji;j+)ave+=stuj.english/i;printf(英语的平均分为:%5.2fn,ave);printf(n);void show_num() /这个函数 显示超过某门课程平均成绩的学生人数 int j,count=0;float ave=0;printf(n);for (j=0;ji;j+)ave+=stuj.china/i;printf(以下同

36、学的语文分数高于平均分%5.2f:n,ave);printf(学号 姓名语文得分n);for (j=0;jave)printf(%ld %s %5.2fn”,stuj.num,stuj.name ,stuj.china);count+;printf(一共:d Ann,count);count=0;ave=0;for (j=0;ji;j+)ave+=stuj.math/i;printf(”以下同学的数学分数高于平均分5.2f:n,ave);printf(”学号姓名数学得分侦,for (j=0;jave)printf(%ld %s %5.2fn,stuj.num,stuj.name ,stuj.math ); count+;printf(一共:d Ann,count);count=0;ave=0;for (j=0;ji;j+)ave+=stuj.english/i;printf(以下同学的英语分数高于平均分5.2f:n,ave);printf(-学号姓名英语得分定”);for (j=0;jave)printf(%ld %s %5.2fn,stuj.num,stuj.name ,stuj.english ); count+;printf(一共:d Ann,count);

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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