




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课程设计院系:姓名:学号:班号:指导教师:日期:2007年9月一 题目要求1. 学生学籍信息管理系统设计 要求 使用下面的数据设计一个简单的学籍管理系统。 学生基本信息文件(A.TXT)极其内容: 学号 姓名 性别 宿舍号码 电话号码 01 张成成 男 501 87732111 02 李成华 女 101 87723112 03 王成凤 女 101 87723112 04 张明明 男 502 87734333 05 陈东 男 501 87732111 06 李果 男 502 87734333 07 张园园 女 102 87756112 学生成绩基本信息文件(B.TXT)极其内容: . 学号 课程编号 课程名称 学分平时成绩 实验成绩 卷面成绩 综合成绩 实得学分 01 A01 大学物理 3 66 78 82 02 B03 高等数学 4 78 -1 90 01 B03 高等数学 4 45 -1 88 02 C01 VF 3 65 76 66 . 功能要求极其说明: (1)数据录入功能:录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据。实得成绩、实得学分根据条件自动运算。 综合成绩的计算: a.如果本课程的实验成绩为-1,则表无实验成绩,综合成绩=平时成绩*30%+卷面成绩*70% b.如果实验成绩不为-1,表示本课程有实验成绩,综合成绩=平时成绩*15%+实验成绩*15%+卷面成绩*70% 实得学分的计算:采用等级学分制。 综合成绩在90100之间,应得学分=学分*100% 综合成绩在8090之间,应得学分=学分*80% 综合成绩在7080之间,应得学分=学分*75% 综合成绩在6070之间,应得学分=学分*60% 综合成绩在60分以下,应得学分=学分*0% (2)查询功能:分为学生基本情况查询和成绩查询两种 学生基本情况查询: 输入一个学号或姓名(可实现选择)查出此学生的基本信息并显示输出。 输入一个宿舍号码,可查出本室所有学生的基本信息并显示输出。 称号查询: 输入一个学号时,查出此学生所有课程情况,格式如下: 学号:XX 课程名称:XXXX综合成绩:XX实得学分:XXX . 共修:X科,实得总分为:XXX (3)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此学生所有信息。 (4)排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。 提示 数据结构采用结构体数组,提供学生基本信息和学生成绩基本信息结构体数组。二 需求分析 根据题目要求,该程序应具备的功能有:(1)数据录入功能:录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据。实得成绩、实得学分根据条件自动运算。(2)查询功能:分为学生基本情况查询和成绩查询两种(3)删除功能:当在A.TXT中删除一个学生时,自动地在B.TXT中删除此学生所有信息。(4)排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。三 程序总体设计学生学籍信息管理系统MENU(菜单)退出排序功能模块删除功能模块查询功能模块数据录入功能模块按学分降序排列按综合成绩降序排列按综合成绩升序排列按学分升序排列查询功能模块查询功能模块退出四 程序详细设计主函数主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。流程图显示一系列功能选项选择输入n,判断n是否是1-5根据n的值调用个功能模块函数程序void main()while(1) clrscr(); /*清屏幕*/ gotoxy(1,1); /*移动光标*/ textcolor(BLACK); /*设置文本显示颜色为黄色*/ textbackground(GREEN); /*设置背景颜色为蓝色*/ window(1,1,99,99); /* 制作显示菜单的窗口,大小根据菜单条数设计*/ clrscr(); printf(nnn); printf(* = * n); printf(* 1input 2cha zhao * n); printf(* 3delete 4paixu xianshi * n); printf(* 5exit * n); printf(* * n); printf(* - * n); printf( Please input which you want(1-5):); ch=getch(); switch(ch) case 1:input();break; case 2:search(); getch();break; case 3:delete();getch(); break; case 4:sort(); getch();break; case 5:exit(0); default: continue; 个功能模块设计数据录入。数据结构 我们需要录入的信息数据有两类:一类是学生基本信息,包括学号,学号 姓名 性别 宿舍号码 电话号码,存放在文件S_INFO.TXT中。另一类信息是学生成绩基本信息,包括学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据。实得成绩、实得学分根据条件自动运算。 这些信息存放在文件S_SCORE.TXT中。学生基本信息的存放格式为:struct info int sMingci; /名次char xuehao8; char name10; char sex2;char d_num4;/宿舍号码char tel_num9; /宿舍电话号码data,s_info100;成绩基本信息的存放格式为:struct coursechar xuehao8; char course_No6; /课程代号 char course_name10;/课程名字 float xuefen;/学分 float p_chengji; /平时成绩 float s_chengji;/实验成绩 float j_chengji;/卷面成绩 float z_chengji;/综合成绩 float s_xuefen;/实际学分course_data,s_course100; 需求分析数据录入模块的功能是用户通过输入选项在基本信息和成绩信息的输入之间进行选择。程序void input() while(1)printf(nwhich information do you want to input: b(base) s(socre) e(exit);ch=getch(); if(ch=b|ch=B) if(fp=fopen(s_info.txt,at+)=NULL) printf(cannot open this file.n); getch();exit(0); printf(nPlease input xuehao:); gets(sn);while(fread(&data,sizeof(data),1,fp)=1) if(strcmp(sn,data.xuehao)=0)flag=1;if(flag=1)printf(n the number has exist,press ang key continue:n);flag=0;getch();continue;elsestrcpy(data.xuehao,sn); printf(Please input name:); gets(); printf(Please input sex:M(male)/F(female):n); gets(data.sex);printf(Please input your dormitory No:); gets(data.d_num);printf(Please input telephone Number:); gets(data.tel_num);fwrite(&data,sizeof(data),1,fp); /写入数据fclose(fp); /ifelse if(ch=s|ch=S) if(fp1=fopen(s_score.txt,at+)=NULL|(fp=fopen(s_info.txt,rt)=NULL) printf(cannot open this file.n); getch();exit(0); printf(nPlease input xuehao:); gets(sn);while(fread(&data,sizeof(data),1,fp)=1) if(strcmp(sn,data.xuehao)=0)flag=1;if(!flag)printf(nthis number is not existn);continue;else flag=0;strcpy(course_data.xuehao,sn);printf(nPlease input course No:); gets(course_data.course_No);printf(nPlease input course name:); gets(course_data.course_name);printf(nPlease input course xuefeng:); gets(temp);course_data.xuefen=atof(temp);printf(nPlease input pingshi chengji:); gets(temp);course_data.p_chengji=atof(temp);printf(nPlease input shiyan chengji:); gets(temp);course_data.s_chengji=atof(temp);printf(nPlease input juanmian chengji:); gets(temp);course_data.j_chengji=atof(temp);/以下是综合成绩计算if(course_data.s_chengji=-1) /如果有实验 course_data.z_chengji=(course_data.p_chengji)*0.3+(course_data.j_chengji)*0.7;else /如果无实验course_data.z_chengji=(course_data.p_chengji)*0.15+(course_data.s_chengji)*0.15+(course_data.j_chengji)*0.7;/以下是实际学分计算 if(course_data.z_chengji)60) course_data.s_xuefen=0; else if(course_data.z_chengji)70) course_data.s_xuefen=course_data.xuefen*0.6; else if(course_data.z_chengji)80) course_data.s_xuefen=course_data.xuefen*0.75; else if(course_data.z_chengji)90) course_data.s_xuefen=course_data.xuefen*0.8; else course_data.s_xuefen=course_data.xuefen; fwrite(&course_data,sizeof(course_data),1,fp1); /写入数据fclose(fp1);fclose(fp);/else ifelsebreak; printf(another?y/n); ch=getch(); if(ch=n|ch=N)break;/input查询功能模块。需求分析该模块的功能分为学生基本情况查询和成绩查询两种。学生基本情况查询是根据输入的学号或姓名查出此学生的基本信息并显示输出;或者根据输入的宿舍号码,查出本室所有学生的基本信息并显示输出。成绩查询的功能是根据输入的学号,查出此学生的所有课程情况。 流程图选择基本信息查询还是成绩查询b/Ba/A学生成绩查询学生基本情况查询输入学号选择根据学号,姓名,宿舍号码查找是否找到信息根据选择,输入学号/姓名/宿舍号码是否找到信息提示没找到,按任意键继续显示找到的信息提示没找到,按任意键继续显示找到的信息 程序void search() printf(n select form: a(student information) b(socre information); ch=getch(); if(ch=a|ch=A) if(fp=fopen(s_info.txt,rt)=NULL) printf(nCannot open this file.n); exit(0);printf(nselectway: a(student Number) b(student name) c(dormitory NO):n);ch1=getch(); /按照学号查找 if(ch1=a|ch1=A) printf(nplease input the student number:); gets(temp_NO); printf( xuehao name sex sushe hao telephone );printf(n-n);while(fread(&data,sizeof(data),1,fp)=1) if(strcmp(temp_NO,data.xuehao)=0)flag=1;printf(n%8s%10s%12s%14s%20sn,data.xuehao,,data.sex,data.d_num,data.tel_num);if(!flag)printf(nthis number is not exist,press any key to continuen);getch();elseflag=0;/按照名字查找else if(ch1=b|ch1=B) printf(nplease input the name:); gets(temp_name); printf( xuehao name sex sushe hao telephone );printf(n-n); while(fread(&data,sizeof(data),1,fp)=1) if(strcmp(temp_name,)=0)flag=1;printf(n%8s%10s%12s%14s%20sn,data.xuehao,,data.sex,data.d_num,data.tel_num);if(!flag)printf(nthis name is not exist,press any key to continue:n);getch();elseflag=0; /按照宿舍号码查找 else if(ch1=c|ch1=C) printf(nplease input the dormitory number:); gets(temp_dnum); printf( xuehao name sex sushe hao telephone );printf(n-n);while(fread(&data,sizeof(data),1,fp)=1) if(strcmp(temp_dnum,data.d_num)=0)flag=1;printf(n%8s%10s%12s%14s%20sn,data.xuehao,,data.sex,data.d_num,data.tel_num);if(!flag)printf(this dormitory is not exist,press any key continue:);getch();elseflag=0; else printf(nselect errorn); fclose(fp); /ch if /学生成绩查找 else if(ch=b|ch=B) j=0; z_fen=0; z_xuefen=0; if(fp1=fopen(s_score.txt,rt)=NULL) printf(nCannot open this file.n); exit(0);printf(nplease input student number:);gets(temp_NO);printf( xuehao course_No course_name xuefen chengji );printf(n-n); while(fread(&course_data,sizeof(course_data),1,fp1)=1) if(strcmp(temp_NO,course_data.xuehao)=0)flag=1;j+;z_fen=z_fen+course_data.z_chengji;z_xuefen=z_xuefen+course_data.s_xuefen;printf(n%10s%10s%10s%15.1f %18.1fn,course_data.xuehao,course_data.course_No,course_data.course_name,course_data.s_xuefen,course_data.z_chengji);if(!flag)printf( is not exist);elseflag=0;printf(n-n);printf( z_gong:%3d ke z_xuefen:%3.1f z_cheng ji:%6.1f,j,z_xuefen,z_fen); else printf(error ); fclose(fp1);删除功能模块。需求分析该模块的功能是当在学生基本信息文件中删除一个学生时,自动在成绩信息文件中删除此人的所有信息。流程图输入学号在基本信息文件中是否找到信息Y N提示没找到删除该学生信息退出在成绩信息文件中查找该学生信息是否找到信息 Y N 删除该学生信息提示没找到提示删除成功退出程序void delete()printf(ninput the number of student you want to delete:);gets(temp_NO);if(fp1=fopen(s_score.txt,rt)=NULL|(fp=fopen(s_info.txt,rt)=NULL|(fp2=fopen(temp.txt,wt+)=NULL) printf(cannot open this file.n); getch();exit(0); while(fread(&data,sizeof(data),1,fp)=1)if(strcmp(temp_NO,data.xuehao)!=0)fwrite(&data,sizeof(data),1,fp2);remove(s_info.txt); rename(temp.txt,s_info.txt);fclose(fp);fclose(fp2);if(fp1=fopen(s_score.txt,rt)=NULL|(fp2=fopen(temp.txt,wt+)=NULL) printf(cannot open this file.n); getch();exit(0); while(fread(&course_data,sizeof(course_data),1,fp1)=1)if(strcmp(temp_NO,course_data.xuehao)!=0)fwrite(&course_data,sizeof(course_data),1,fp2);remove(s_score.txt); rename(temp.txt,s_score.txt);fclose(fp1);fclose(fp2);printf(n delete successful);排序功能模块。需求分析 该模块的功能是能实现选择根据综合成绩或实得学分升序或降序排序显示数据。流程图输入要排序的课程名称是否找到该课程YN选择排序根据:根据学分还是综合成绩提示没找到退出选择排序方法:升序还是降序根据选择对数据进行排序显示 程序void sort()printf(nplease input course number:);gets(tempcn); if(fp1=fopen(s_score.txt,rt)=NULL) printf(cannot open this file.n); getch();exit(0); i=0;while(fread(&course_data,sizeof(course_data),1,fp1)=1)if(strcmp(tempcn,course_data.course_No)=0)s_coursei=course_data;i+;flag=1;if(!flag)printf(nno such coursen);elseflag=0; printf(nplease select way : a(xuefen) b(zhong he cheng ji)n); ch=getch(); printf(nselect: s(sheng xu) j(jiang xu); ch1=getch(); if(ch=a|ch=A) /升序排列 if(ch1=s) for(j=0;ji-1;j+) for(k=j;ks_coursek.s_xuefen) temp_course=s_coursej; s_coursej=s_coursek; s_coursek=temp_course; printf(nnxuehao course_number course_name xuefen chengjin); printf(n-n); for(j=0;ji;j+) printf(n%6s%10s%16s%13.1f%13.1fn,s_coursej.xuehao,s_coursej.course_No,s_coursej.course_name,s_coursej.s_xuefen,s_coursej.z_chengji); /降序排列 else for(j=0;ji-1;j+) for(k=j;ki;k+) if(s_coursej.s_xuefens_coursek.s_xuefen) temp_course=s_coursej; s_coursej=s_coursek; s_coursek=temp_course; printf(nnxuehao course_number course_name xuefen chengjin); printf(n-n); for(j=0;ji;j+) printf(n%6s%10s%16s%13.1f%13.1fn,s_coursej.xuehao,s_coursej.course_No,s_coursej.course_name,s_coursej.s_xuefen,s_coursej.z_chengji); /ch1 /ch if else if(ch=b|ch=B) /升序排列 if(ch1=s|ch1=S) for(j=0;ji-1;j+) for(k=j;ks_coursek.z_chengji) temp_course=s_coursej; s_coursej=s_coursek; s_coursek=temp_course; printf(nnxuehao course_number course_name xuefen chengjin); printf(n-n); for(j=0;ji;j+) printf(n%6s%10s%16s%13.1f%13.1fn,s_coursej.xuehao,s_coursej.course_No,s_coursej.course_name,s_coursej.s_xuefen,s_coursej.z_chengji); /降序排列 else for(j=0;ji-1;j+) for(k=j;ki;k+) if(s_coursej.z_chengjis_coursek.z_chengji) temp_course.z_chengji=s_coursej.z_chengji; s_coursej.z_chengji=s_coursek.z_chengji; s_coursek.z_chengji=temp_course.z_chengji; printf(nnxuehao course_number course_name xuefen chengjin); printf(n-n); for(j=0;ji;j+) printf(n%6s%10s%16s%13.1f%13.1fn,s_coursej.xuehao,s_coursej.course_No,s_coursej.course_name,s_coursej.s_xuefen,s_coursej.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年【R1快开门式压力容器操作】考试题库及答案
- 2025年公路水运工程试验检测师公共基础试题库及答案(法规与技术标准)
- 2025年监理工程师之交通工程目标控制考试题库含答案a卷
- 桥梁招标课件
- 2025年品牌营销经理招聘面试模拟题与技巧解析
- 2026届安徽省亳州市第三十二中学高三化学第一学期期中联考模拟试题含解析
- 2025年电商运营岗位笔试模拟题及答案解析
- 2025护士资格证考试题库及答案
- 2025年大数据与人工智能课程考试试题及答案
- 2025年旅游管理与规划项目的考试试题及答案
- 土地出租合同书电子版
- 小升初测试(试题)-2023-2024学年六年级下册数学苏教版
- 《化妆品稳定性试验规范》
- 二氧化碳静态爆破施工方案样本
- 青少年抑郁症的预防和干预策略
- 考公行测言语理解与表达题库之选词填空公考公务员考试省考国考310题(含答案)
- 2021年度计算机审计初级网络培训测试题
- 康复科康复评定表
- 八年级年级主任工作计划
- 英汉互译单词练习打印纸
- 四川JS-004竣工验收报告
评论
0/150
提交评论