




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计实训要求一、题目1、学生成绩管理系统 现有学生成绩信息,内容如下姓名 学号 语文 数学 英语 张明明 01 67 78 82李成友 02 78 91 88张辉灿 03 68 82 56王露 04 56 45 77陈东明 05 67 38 47. . . . 请用C编写一系统,实现学生信息管理,软件的入口界面应包括如下几个方面:(一)功能要求:(1)信息维护:要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息(2)信息查询:要求:查询时可实现按姓名查询、按学号查询(3)成绩统计:要求:A输入任意的一个课程名(如数学)和一个分数段(如60-70),统计出在此分数段的学生情况。(4)排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)(二)其它要求:(1)只能使用C+语言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(3)学生可增加新功能模块(4)写出课程设计报告,具体要求见相关说明文档2、万年历显示 1)输入任一年将显示出该年的所有月份日期,对应的星期2)注意闰年情况其显示格式要求如下:1)月份:中文英文都可以,2)下一行显示星期,从周日到周六,中英文都可以3)下一行开始显示日期从1号开始,并按其是周几实际情况与上面的星期数垂直对齐当输入2004显示如下:Input the year:2004Input the file name:aThe calendar of the year 2004. Januray 1 February 2 Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat 1 2 3 1 2 3 4 5 6 7 4 5 6 7 8 9 10 8 9 10 11 12 13 14 11 12 13 14 15 16 17 15 16 17 18 19 20 21 18 19 20 21 22 23 24 22 23 24 25 26 27 28 25 26 27 28 29 30 31 29 = = March 3 April 4 Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat 1 2 3 4 5 6 1 2 3 7 8 9 10 11 12 13 4 5 6 7 8 9 10 14 15 16 17 18 19 20 11 12 13 14 15 16 17 21 22 23 24 25 26 27 18 19 20 21 22 23 24 28 29 30 31 25 26 27 28 29 30 = =二、实训报告要求1、需求分析【问题描述】【基本功能】2、概要设计:3、详细代码4、设计总结和感想经过一周的课程设计, 巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。够按要求编写课程设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图。通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。在这次课程设计中我遇到许多问题和麻烦,得到了老师的帮助和指导,才能够使得这次课程设计顺利的进行下去,另外,在程序调试过程中,也得到很多同学的帮助,给我及时指出错误,提出许多宝贵意见。在此对老师和同学们表示感谢!三、源代码1、万年历代码#include #include #include void mnuMain()/*显示菜单*/printf(n 万年历n);printf(*n);printf(t1:按年查询n);printf(t2:按月查询n);printf(t3:按日查询n);printf(t0:退出n);printf(*n);void main()/*主函数*/int date,year,month,day; int PutinYear();int PutinMonth();int PutinDay();void PrintDate(int ,int, int);char ch;int nMenu;do mnuMain(); ch=getch(); nMenu=ch-0; switch(nMenu) case 1: printf(你选择的是按年查询n); year = PutinYear (); void GetMonth(int year); GetMonth (year); break; case 2: system(cls); printf(你选择的是按月查询n); year=PutinYear (); month=PutinMonth (); void PrintMonth(int month, int year); PrintMonth(month, year); printf(n); break; case 3: system(cls); printf(你选择的是按日查询n); year=PutinYear (); month=PutinMonth (); day=PutinDay (); PrintDate(year,month,day); break; case 0: system(cls); printf(你选择的是退出); getch(); break; default: printf(你的选择是错误的!n); getch(); break; while(nMenu!=0);int PutinYear() /*按年查询*/int year;while(1) printf(请输入年份 : ); scanf(%d, &year); return year;int PutinMonth() /*按月查询*/int month;while(1) printf(请输入月份 :); scanf(%d,&month); return month;int PutinDay(void) /*按日查询*/int day;while(1) printf(请输入日期 :); scanf(%d,&day); return day;int LeapYear(int year) /*判断闰年*/ if(year%4=0&year%100|year%400=0) return 1; else return 0;void GetMonth (int year) /*求月份*/int month;for(month = 1; month = 12; month+) void PrintMonth(int month, int year); PrintMonth(month, year); printf(n);enumSunday, Monday, Tuesday, Wednesday,Thursday, Friday, Saturday;void PrintMonth(int month, int year) /*显示每月*/int weekday, ndays, day;char *MonthName(int month);printf( %s, MonthName(month);printf(n 周日 周一 周二 周三 周四 周五 周六n);int MonthDays(int year, int month);ndays = MonthDays(year, month);int FirstDay(int year, int month);weekday = FirstDay(year, month);void Blank(int weekday);Blank(weekday);for(day = 1; day = ndays; day+) printf( %4d, day); if(weekday = Saturday) printf(n); weekday = (weekday + 1) % 7;if(weekday != Sunday) printf(n);char *MonthName(int month)char *name = , 一月, 二月, 三月,四月, 五月, 六月, 七月, 八月, 九月, 十月, 十一月, 十二月 ;return (month 12) ? name1 : namemonth;int MonthDays(int year, int month) /*求每月天数*/int LeapYear(int year);switch(month) case 2 : if(LeapYear(year) return 29; return 28; case 4 : case 6 : case 9 : case 11 : return 30; default : return 31;int FirstDay(int year, int month) /*求一年第一天*/int i, weekday;weekday = Monday;for(i = 1; i year; i+) weekday = (weekday + 365) % 7; if(LeapYear(i) weekday = (weekday + 1) % 7;for(i = 1; i month; i+) int MonthDays(int year, int month); weekday = (weekday + MonthDays(year, i) % 7;return weekday;void Blank(int weekday)int i;for(i = 0; i weekday; i+) printf( );void PrintDate(int year,int month,int date) /*显示具体日期*/ int day; int getday(int year,int month,int date); day=getday(year,month,date); if(day=0) printf(n%d-%d-%d is Sunday!n,year,month,date); if(day=1) printf(n%d-%d-%d is Monday!n,year,month,date); if(day=2) printf(n%d-%d-%d is Tuesday!n,year,month,date); if(day=3) printf(n%d-%d-%d is Wednesday!n,year,month,date); if(day=4) printf(n%d-%d-%d is Thursday!n,year,month,date); if(day=5) printf(n%d-%d-%d is Friday!n,year,month,date); if(day=6) printf(n%d-%d-%d is Saturday!n,year,month,date);int getday(int year,int month,int date) /*求累计天数*/int flag,s,i;int a13=0,31,28,31,30,31,30,31,31,30,31,30,31;int cont=0;flag=LeapYear(year);if(flag=1) a2+;for(i=1;imonth;i+) cont=cont+ai;cont=cont+date;s=year+1+(year-1)/4+(year-1)/100+(year-1)/400+cont;return s%7;2、学生成绩管理系统源代码 #include #include #include #define N 100int INDEX32,m=0;struct STUDENT int id,age,chinese,math,english; char name21;students32;void page_title(char *menu_item) clrscr(); printf(tt- 学 生 管 理 系 统 -nn- %s -nn,menu_item);void return_confirm(void) printf(ntt按任意键返回n); getch(); void student_new(void) int n; page_title(录入学生基本信息);printf(“请输入学生人数”);scanf(“%d”,&m); for(n=0;nm;n+) if(studentsn.id=0) break; printf(学号:); scanf(%d,&studentsn.id); printf(姓名:); scanf(%s,&); printf(年龄:); scanf(%d,&studentsn.age); return_confirm(); int search_id(void) int n,i; printf(请输入学生学号:); scanf(%d,&i); for(n=0;n32;n+) if(studentsn.id=i&studentsn.id!=0) printf(学号:%dn,studentsn.id); printf(姓名:%sn,); printf(年龄:%dn,studentsn.age); return n; printf(ttn输入错误或学号不存在.n); return -1; void student_del(void) int n; page_title(注销学生基本信息); if(n=search_id()!=-1) studentsn.id=0; printf(ntt!该学生已注销.n); return_confirm(); void student_edit(void) int n; page_title(编辑学生基本信息); if(n=search_id()!=-1) printf(ntt请重新输入新信息:n学号:); scanf(%d,&studentsn.id); printf(姓名:); scanf(%s,&); printf(年龄:); scanf(%d,&studentsn.age); return_confirm(); void score_input(void) int s,n,t; page_title(录入成绩); printf(n请用数字键选择科目n1-语文 2-数学 3-英语n); scanf(%d,&s); for(n=0;nm;n+) if(studentsn.id!=0) printf(学号:%d 姓名:%s 成绩:,studentsn.id,); scanf(%d,&t); switch(s) case 1 : studentsn.chinese=t;break; case 2 : studentsn.math=t;break; case 3 : studentsn.english=t;break; return_confirm(); void score_edit(void) int n; page_title(修改成绩); if(n=search_id()!=-1) printf(语文:%d 数学:%d 英语:%dn,studentsn.chinese,studentsn.math,studentsn.english); printf(n请重新输入成绩:n语文:); scanf(%d,&studentsn.chinese); printf(数学:); scanf(%s,&studentsn.math); printf(英语:); scanf(%d,&studentsn.english); return_confirm(); void sort_it(char nn) int n,k,p,x,tN; for(n=0;nm;n+) switch(nn) case 1 : tn=studentsn.id;break; case 2 : tn=studentsn.chinese;break; case 3 : tn=studentsn.math;break; case 4 : tn=studentsn.english;break; case 5 : tn=studentsn.chinese+studentsn.math+studentsn.english;break; for(n=0;nm;n+) x=0; p=-1; for(k=0;kx) x=tk; p=k; tp=-1; INDEXn=p; void browser(void) int n,x; char k; sort_it(1); while(1) page_title(浏览); printf(tt按数字键选择排序方式或按 0 返回n); printf(学号-1t姓名tt年龄t语文-2t数学-3t英语-4t总分-5n); for(n=0;n32;n+) if(INDEXn!=-1) x=INDEXn; printf(%dt%st,studentsx.id,); printf(%dt%dt,studentsx.age,studentsx.chinese); printf(%dt%dt,studentsx.math,studentsx.english); printf(%dn,studentsx.chinese+studentsx.math+studentsx.english); k=getch(); if(k0) sort_it(k); else if(k=0) break; else continue; void main(void)menu: page_title(tt-操作选单-); printf(tt请用数字键选择操作nn); printf(tt1 录入学生基本信息ntt 2 修改学生基本信息n); printf(tt 3 注销学生基本信息nntt 4 录入成绩ntt 5 修改成绩nn); printf(6tt 浏览.n n0 退出n); switch(getch() case 1 : student_new();break; case 2 : student_edit();break; case 3 : student_del();break; case 4 : score_input();break; case 5 : score_edit();break; case 6 : browser();break; case 0 : exit(0); goto menu; #include #include#include#include#include#include#include#include#define NULL 0#define ESC 0x001b /* 退出 */#define F1 x3b00 /* 查看帮助信息,调用HelpMassage()函数 */#define F2 0x3c00 /*输入学生成绩*/#define F3 0x3d00 /*按学号查找*/#define F4 0x3e00 /*按姓名查找*/#define F5 0x3f00 /*列出所有学生成绩*/#define F6 0x4000 /*统计*/struct stuType /*定义结构体变量*/char NO11; /*学号长度为10*/ char XM10;float CJ4; /*包含4门成绩*/;/*-2-*/int JY_NO(char *stu_num,FILE *fp) /*检验学号的正确性*/ struct stuType stud;int NO;char *p=stu_num;if(strcmp(stu_num,#)=0) return 1; /*若输入#返回真值,不再循环输入*/while(*p!=0) /*学号必须是数字,否则返回重新输入*/ NO=(int)*p;if(NO57) puts(ttt非法学号!请重新输入!n);return 0;else p +; /*指针加1*/if(strlen(stu_num)!=10) /*若学号长度不为10,则返回重新输入*/ puts(ttt学号长度不对!n);return 0;if(getchar()!=n) /*若学号后面的字符不是回车符,则学号长度大于10*/ printf(ttt学号长度大于10个!请重新输入!n);dowhile(getchar()!=n); /*用getchar接收多余的字符*/return 0; elserewind(fp); /*使文件指针指向头*/while(!feof(fp) /*若文件指针未到结尾,就继续执行下面的循环,feof遇到文件结束符返回非零值,否则返回0*/ fread(&stud,sizeof(struct stuType),1,fp); /*读取一定长度的数据*/if(strcmp(stu_num,stud.NO)=0) /*学号的唯一性*/ printf(ttt学号重复,请重新输入!n);printf(ttt该学生成绩如下:n); printf(ttt语文:%.1fn,stud.CJ0);printf(ttt数学:%.1fn,stud.CJ1);printf(ttt英语:%.1fn,stud.CJ2);printf(ttt总评:%.1fn,stud.CJ3);return 0;return 1;/*-3-*/int JY_NO2(char *stu_num) /*检验学号*/ int NO;char *p=stu_num; if(strcmp(stu_num,#)=0)return 1; /*若输入“#”,则返回真值结束*/if(strlen(stu_num)!=10) /*学号长度为10*/ puts(ttt学号长度不对!n);return 0;while(*p!=0) /*学号必须用数字,若包含有字母,或其它字符则返回假值重新输入*/ NO=(int)*p;if(NO57) puts(ttt非法学号!请重新输入!n);return 0;else p ; /*指针加1*/if(getchar()!=n) /*检验学号长度是否大于10,并把多余的字符去掉*/ printf(ttt学号长度大于10个!请重新输入!n); dowhile(getchar()!=n);return 0; return 1;/*-4-*/int JY_XM(char *stu_XM) /*检验姓名*/ int PD;char *p;p=stu_XM;while(*p!=0) /*姓名只能用中文*/ PD=(int)*p;if(PD0) puts(ttt姓名只能用中文,请重新输入!n);return 0;else p ; /*使指针加1,指向下一汉字*/if(getchar()!=n) /*姓名长度不得大于5个*/ printf(ttt姓名长度大于5个!请重新输入!n);dowhile(getchar()!=n);return 0; return 1; /*字符串全为汉字返回真*/*-5-*/int JY_CJ(float stu_CJ) /*学生成绩只能在0100之间*/ if(stu_CJ100) printf(ttt输入错误,成绩只能在0100之间!n);return 0;return 1;/*-6-*/void CreatFile() /*输入文件*/ FILE *fp;struct stuType stu,stu0=,; /*对stu0先赋值*/fp=fopen(stu.dat,wb ); /*打开或创建一个二进制文件,打开时将原来的内容删除*/if(fp=NULL) printf(ttt文件打开失败!nttt按任意键返回.);getch();return;else while(1) stu=stu0;do printf(nttt请输入学号:); /*输入学号并检验其正确性*/scanf(s,stu.NO);while(!JY_NO(stu.NO,fp);if(strcmp(stu.NO,#)=0)break;do printf(nttt请输入姓名:); /*输入姓名并检验其正确性*/scanf(s,stu.XM);while(!JY_XM(stu.XM);do printf(nttt请输入语文成绩:); /*输入成绩并检验其正确性*/scanf(%f,&stu.CJ0);while(!JY_CJ(stu.CJ0);do printf(nttt请输入数学成绩:); /*同上*/scanf(%f,&stu.CJ1);while(!JY_CJ(stu.CJ1);do printf(nttt请输入英语成绩:);scanf(%f,&stu.CJ2);while(!JY_CJ(stu.CJ2);do printf(nttt请输入总评成绩:);scanf(%f,&stu.CJ3);while(!JY_CJ(stu.CJ3);fwrite(&stu,sizeof(struct stuType),1,fp); /*写文件*/fclose(fp); /*关闭文件*/*-7-*/void Search_Xuehao() /*按学号查询*/ FILE *fp;int flag;struct stuType stu,stud;fp=fopen(stu.dat,rb);if(fp=NULL) /*若文件打不开则输出下面的信息*/ printf(ttt文件打开失败!nttt按任意键返回.);getch();return;else do puts(nttt输入#结束查询);do printf(ttt请输入要查询的学号:);scanf(%s,stu.NO);while(!JY_NO2(stu.NO);if(strcmp(stu.NO,#)=0)break; /*若输入“#”则结束循环*/flag=0;rewind(fp);while(fread(&stud,sizeof(struct stuType),1,fp) ;/*检查文件指针结束*/ if(strcmp(stu.NO,stud.NO)=0) /*比较学号*/ puts(ttt该学生成绩如下:);printf(ttt学号:%sn,stud.NO);printf(ttt姓名:%sn,stud.XM);printf(ttt语文:%.1fn,stud.CJ0);printf(ttt数学:%.1fn,stud.CJ1);printf(ttt英语:%.1fn,stud.CJ2);printf(ttt总评:%.1fn,stud.CJ3);flag=1; /*记录学号是否查到*/if(flag=0)puts(ttt无此学号!);while(strcmp(stu.NO,#)!=0); fclose(fp); /*关闭文件*/*-9-*/int ListFile(void) /*输出文件,列出所有学生成绩*/ FILE *fp;int REC=0; /*记录学生人数*/struct stuType stu;fp=fopen(stu.dat,rb);if(fp=NULL) printf(ttt文件打开失败!
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电信消防知识培训课件
- vi设计教学课件-b 下载
- 2025年建筑工程项目管理入门知识测试卷及答案
- 申论政务上云平台课件
- 甲状腺瘤的护理课件
- 各类麻醉术前术后护理5
- 甲乙类功率放大电路课件
- 《树的日子》教学课件
- 三维目标教学课件
- 统编版语文八年级上册第7课藤野先生练习题(含答案)
- 中小学教职工开学安全培训
- 长沙市太平街、西文庙坪历史文化街区保护提升项目可行性研究报告
- 业绩分红方案(3篇)
- 中国金属材料检测服务行业市场占有率及投资前景预测分析报告
- 华润置地住宅项目实测实量操作指引
- 封阳台外包协议书
- 更年期保健专科建设和管理指南
- 教育系统安全风险管控措施
- 新一年VR虚拟现实体验馆商业计划书与运营方案41
- 2025-2030中国体外诊断行业深度分析及发展前景与发展战略研究报告
- 上海中学2024-2025学年初三二模英语试题试卷与答案含答案
评论
0/150
提交评论