学生学籍信息管理系统_第1页
学生学籍信息管理系统_第2页
学生学籍信息管理系统_第3页
学生学籍信息管理系统_第4页
学生学籍信息管理系统_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、c语言课程设计综合实习报告题目:学籍信息管理系统 姓名: 黄凯 学号:20081000153班级号: 052081 院(系):工程学院专业: 土木工程 指导教师: 曹弘 一 ,题目要求1. 学生学籍信息管理系统设计 要求 使用下面的数据设计一个简单的学籍管理系统。 学生基本信息文件(a.txt)极其内容: 学号 姓名 性别 宿舍号码 电话号码 01 张成成 男 501 87732111 02 李成华 女 101 87723112 03 王成凤 女 101 87723112 04 张明明 男 502 87734333 05 陈东 男 501 87732111 06 李果 男 502 877343

2、33 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,则表无实验成绩,综合成

3、绩=平时成绩*30%+卷面成绩*70% b.如果实验成绩不为-1,表示本课程有实验成绩,综合成绩=平时成绩*15%+实验成绩*15%+卷面成绩*70% 实得学分的计算:采用等级学分制。 综合成绩在90100之间,应得学分=学分*100% 综合成绩在8090之间,应得学分=学分*80% 综合成绩在7080之间,应得学分=学分*75% 综合成绩在6070之间,应得学分=学分*60% 综合成绩在60分以下,应得学分=学分*0% (2)查询功能:分为学生基本情况查询和成绩查询两种 学生基本情况查询: 输入一个学号或姓名(可实现选择)查出此学生的基本信息并显示输出。 输入一个宿舍号码,可查出本室所有学生

4、的基本信息并显示输出。 称号查询: 输入一个学号时,查出此学生所有课程情况,格式如下: 学号:xx 课程名称:xxxx综合成绩:xx实得学分:xxx . 共修:x科,实得总分为:xxx (3)删除功能:当在a.txt中删除一个学生时,自动地在b.txt中删除此学生所有信息。 (4)排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。 提示 数据结构采用结构体数组,提供学生基本信息和学生成绩基本信息结构体数组。二 ,需求分析 根据题目要求,该程序应具备的功能有:(1)数据录入功能:录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据。实得成绩、实得学

5、分根据条件自动运算。(2)查询功能:分为学生基本情况查询和成绩查询两种(3)删除功能:当在a.txt中删除一个学生时,自动地在b.txt中删除此学生所有信息。(4)排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。三, 程序总体设计学生学籍信息管理系统menu(菜单)退出排序功能模块删除功能模块查询功能模块数据录入功能模块按学分降序排列按综合成绩降序排列按综合成绩升序排列按学分升序排列查询功能模块查询功能模块退出四, 程序详细设计主函数主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。流程图 程序void main()while(1)

6、 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();

7、break; case 4:sort(); getch();break; case 5:exit(0); default: continue; 个功能模块设计数据录入。数据结构 我们需要录入的信息数据有两类:一类是学生基本信息,包括学号,学号 姓名 性别 宿舍号码 电话号码,存放在文件s_info.txt中。另一类信息是学生成绩基本信息,包括学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据。实得成绩、实得学分根据条件自动运算。 这些信息存放在文件s_score.txt中。学生基本信息的存放格式为:struct info int smingci; /名次char xueha

8、o8; 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;/实际学分cours

9、e_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:); g

10、ets(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(dat

11、a.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

12、();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 i

13、nput 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);pri

14、ntf(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+(co

15、urse_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_xuef

16、en=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查询功能模块。需求分析该模块的功能分为学生基本情况查询和成绩查询两种。学生基本情况查询是根据输入的学号或姓名查出此学生的基本信息并显示输出;或者根据

17、输入的宿舍号码,查出本室所有学生的基本信息并显示输出。成绩查询的功能是根据输入的学号,查出此学生的所有课程情况。 流程图选择基本信息查询还是成绩查询b/ba/a学生成绩查询学生基本情况查询输入学号选择根据学号,姓名,宿舍号码查找是否找到信息根据选择,输入学号/姓名/宿舍号码是否找到信息提示没找到,按任意键继续显示找到的信息提示没找到,按任意键继续显示找到的信息 程序void search() printf(n select form: a(student information) b(socre information); ch=getch(); if(ch=a|ch=a) if(fp=fop

18、en(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(fre

19、ad(&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 na

20、me:); 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

21、 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,dat

22、a.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 th

23、is 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+cour

24、se_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(

25、error ); fclose(fp1);删除功能模块。需求分析该模块的功能是当在学生基本信息文件中删除一个学生时,自动在成绩信息文件中删除此人的所有信息。 程序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()

26、;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)

27、; 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);排序功能模块。需求分析 该模块的功能是能实现选择根据综合成绩或实得学分升序或降序排序显示数据。流程图输入要排

28、序的课程名称是否找到该课程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_dat

29、a.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) tem

30、p_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(

31、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_cour

32、sej.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

33、(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_cour

34、sek.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.z_chengji); /ch1 else printf(illegal select); getch(); 五 ,上机操作编译、连接和运行下面是运行后各个模块的界面图:1 主菜单函数2.数据录入3,查询功能(1)学生基本信息查询(2)学生成绩查询4 删除功能5 排序功能源程序:#include stdio.h /*i/o函数*/ #include stdlib.h /*其它说明*/ #inclu

温馨提示

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

评论

0/150

提交评论