c语言课程设计报告—学籍管理系统.doc_第1页
c语言课程设计报告—学籍管理系统.doc_第2页
c语言课程设计报告—学籍管理系统.doc_第3页
c语言课程设计报告—学籍管理系统.doc_第4页
c语言课程设计报告—学籍管理系统.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

c语言程序设计课程报告所在学院地学院所在班级012101班级学号20101000689_03姓 名周 豪指导老师宋 军中国地质大学(武汉)2012年1月1日目 录(一)题目要求1(二)需求分析1(三)详细说明1 1、总体设计2、主程序23、主要功能模块说明4(四)上机操作14(五)源代码19(六)附题外作业源代码编写三人选举投票系统34(七)编程小结调试中出现的问题、解决方法及本次编程的感受37(一)题目要求用下面的数据设计一个简单的学籍管理系统。学生基本信息文件(a.txt)及其内容:学号 姓名 性别 宿舍号码 电话号码01 张成成 男 501 8773211102 李成华 女 101 8772311203 王成凤 女 101 8772311204 张明明 男 502 8773433305 陈东 男 501 8773211106 李果 男 502 8773433307 张园园 女 102 87756112学生成绩基本信息文件(b.txt)及其内容:.学号 课程编号 课程名称 学分平时成绩 实验成绩 卷面成绩 综合成绩 实得学分01 a01 大学物理 3 66 78 8202 b03 高等数学 4 78 -1 9001 b03 高等数学 4 45 -1 8802 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、总体设计根据上面的需求分析,可以将这个系统的设计分为以下模块退出系统保存函数学生信息管理系统主程序欢迎界面 主菜单输入函数删除函数增加函数查询函数排序函数修改函数显示函数按学分排序按成绩排序基本信息查询成绩查询2、主函数 流程图程序(预处理命令)#include /*i/o函数*/#include /*其他说明*/#include /*字符串函数*/#define len 30 /*学号和姓名最大学生人数*/#define n 100 /*最大学生人数*/struct record /*声明函数体*/ char code20; /*学号*/ char name10; /*姓名*/ int domitory; /*宿舍号*/ char sex5; /*性别*/ char tel20; /*电话*/ int kcbh; /*课程编号*/ char kc_name15; /*课程名称*/ int cridit; /*学分*/ int ps_grade; /*平时成绩*/ int sy_grade; /*实验成绩*/ int jm_grade; /*卷面成绩*/ float sum; /*综合成绩*/ float c_cridit; /*应得学分*/stun;int k=1,m,n;void enter();void search();void modify();void add();void del();void display();void save();void menu();void sort();void tuichuxitong(); void welcome_page(); /.主函数./int main() while(k) welcome_page(); system(pause); /*暂停*/ system(cls); /*清屏*/ printf(请按任意键进入主菜单!n); system(cls); menu(); system(pause); return 0; 3、主要功能模块设计【菜单功能模块】void menu()int num;system(color 1f);printf(nn 学生信息管理系统nn);printf(= n);printf( =制作人:周豪=n);printf(n);printf( =系统功能菜单=n);printf( =友情提醒:查询前请刷新系统!=n);printf( =n);printf( |=|n);printf( | 0.系统帮助说明 1.输入学生信息 |n);printf( |-|n);printf( | 2.查询学生信息 3.修改学生信息 |n);printf( |-|n);printf( | 4.增加学生信息 5.按学号删信息 |n);printf( |-|n);printf( | 6.显示当前信息 7.保存当前信息 |n);printf( |-|n);printf( | 8.排序 9.退出系统 |n);printf( |=|n);printf( =n);printf(请选择菜单编号: );scanf(%d,&num);switch(num)case 0:system(cls);help();break;case 1:system(cls);enter();break;case 2:system(cls);search();break;case 3:system(cls);modify();break;case 4:system(cls);add();break;case 5:system(cls);del();break;case 6:system(cls);display();break;case 7:system(cls);save();break;case 8:system(cls);sort();break;case 9:system(cls);k=0;tuichuxitong();break;default:printf(请在0-9之间选择n);【数据录入模块】【流程图】程序void enter() /* 实现录入学生基本信息功能 */ /输入功能模块 int i,flag=1; while(flag) flag=0; printf(请输入需要创建信息的学生人数(1-100):n); scanf(%d,&n); if(n100) flag=1; printf(输入数值超过范围,检查后请重新输入!n); for(i=0;i=90&stui.sum=80&stui.sum=70&stui.sum=60&stui.sum70) stui.c_cridit=(float)stui.cridit*0.6; else stui.c_cridit=(float)stui.cridit*0; printf(录入信息完毕!,按任意键继续。n); save();【查询模块】 流程图程序/*查询模块*/ voidsearch() int h,i,t,flag,ts1; float s=0; char s130; system(color 5f); printf(n =n); printf( | 1.按学号查询 |n); printf( | 2.按姓名查询 |n); printf( | 3.按寝室查询 |n); printf( | 4.成绩查询 |n); printf( | 5.退出本菜单 |n); printf( =n);while(1) flag=0; printf( 请输入子菜单编号: ); scanf(%d,&t); switch(t) case 1: printf( 请输入要查询的学生的学号:); scanf(%s,s1); for(i=0;in;i+) if(strcmp(stui.code,s1)=0) flag=1; printf(学生学号 姓名 性别 电话 宿舍号n); printf(=n); printf(%12s %7s %6s %15s %5d n, stui.code,,stui.sex,stui.tel,stui.domitory); if(flag=0) printf(该学号不存在! n);break;case 2: printf( 请输入要查询的学生的姓名: ); scanf(%s,s1); for(i=0;in;i+) if(strcmp(,s1)=0) flag=1; printf(学生学号 姓名 性别 电话 宿舍号n); printf(=n); printf(%6s %7s %6s %15s %5d n, stui.code,,stui.sex,stui.tel,stui.domitory); if(flag=0) printf(该姓名不存在!n);break; case 3: printf( 请输入要查询的学生的寝室: n); scanf(%d,&ts1); for(i=0;in;i+) if(stui.domitory=ts1) flag=1; printf(学生学号 姓名 性别 电话 宿舍号n); printf(=n); printf(%6s %7s %6s %15s %5d n, stui.code,,stui.sex,stui.tel,stui.domitory); i+; break; for(;in;i+) if(stui.domitory=ts1) printf(%6s %7s %6s %15s %5d n, stui.code,,stui.sex,stui.tel,stui.domitory); if(flag=0) printf(该寝室不存在!n);break;case 4: printf( 请输入要查询学生的学号:); scanf(%s,s1); for(i=0;in;i+) if(strcmp(stui.code,s1)=0) flag=1; if(i=0) printf( 学号 %s 姓名 %s,stui.code,); printf(n课程编号 %s 课程名称 %s 综合成绩 %.2f 实得学分 %.2f n,&stui.kcbh,stui.kc_name,stui.sum,stui.c_cridit); s+=stui.c_cridit; printf(n共修%d科,实得学分为%.2fn,i+1,s);break; if(flag=0) printf(该学号不存在!n);break;case 5: return; default: printf(请在1-5之间选择n); 【删除模块】流程图删除方式选择选择方式按姓名按学号程序void del() /删除功能模块 int i,j,flag=0; char s115; printf(请输入将要删除的学生的学号:n); scanf(%s,s1); for(i=1;in;i+) if(strcmp(stui.code,s1)=0) flag=1; for(j=i;jn-1;j+) stuj=stuj+1; if(flag=0)printf(该学号不存在!n);if(flag=1) printf(删除成功!显示结果请按6!n); n-;void display() /显示功能模块 int i; file *fp; if(fp=fopen(student.txt,rb)=null) printf(打开文件时错误!请按任意键退出!); system(pause); exit(0); printf( *所有学生的信息为*n); printf(=n); for(i=0;in;i+) fread(&stui,sizeof(struct record),1,fp); printf(学生学号: %s 姓名: %s 性别: %s 电话: %s 宿舍: %dn,stui.code,,stui.sex,stui.tel,stui.domitory);printf(n课程编号: %d 课程名称: %s 学分: %d 平时成绩: %d 实验成绩: %d 卷面成绩: %dn,stui.kcbh,stui.kc_name,stui.cridit,stui.ps_grade,stui.sy_grade,stui.jm_grade,stui.c_cridit,stui.sum); printf(n应得学分: %.2f 综合成绩: %.2fn,stui.c_cridit,stui.sum); printf(*n); 【排序模块】流程图排序方式选择方式按学分按综合成绩程序/*排序模块*/void sort() /排序功能模块 int i,j,flag=0,tempcn; int ch,ch1; struct record temp; file *fp; while(1) printf(n*请输入课程编号:*n); printf(*退出请输入-1*n); scanf(%d, &tempcn); if(tempcn=-1) return; /scanf(%c,&ch); if(fp=fopen(student.txt,rb)=null) printf(不能打开此文件.n); exit(0); i=0;while(fread(&stui,sizeof(struct record),1,fp) if(tempcn=stui.kcbh) i+; flag=1; fclose(fp); if(!flag)printf(n没有这种课程n);continue;elseflag=0; printf(n+请选择排序对象+n);printf(*| 1.按学分排序 |*n);printf(*| 2.按综合成绩排序 |*n);printf(*| 3.退出子菜单 |*n)printf(+n); scanf(%d,&ch); if(ch3)printf(没有这个选项n); continue; if(ch=3)return; printf(n*请选择排序方式*n);printf(|+| 1.按升序排列 |+|n);printf(|+| 2.按降序排列 |+|n);printf(|+| 3.退出子菜单 |+|n); printf(*n); scanf(%d,&ch1); if(ch1=3)return; if(ch=1) if(ch1=1) /升序排列 for(j=0;ji-1;j+) for(k=j;kstuk.c_cridit) temp=stuj; stuj=stuk; stuk=temp; printf(n 学生学号 学生姓名 课程编号 课程名称 应得学分 综合成绩n); /printf(nnxuehao course_number course_name xuefen chengjin); printf(=n); for(j=0;ji;j+) printf(n%10s %10s %10d %8s %6.2f %7.4fn,stuj.code,,stuj.kcbh,stuj.kc_name,stuj.c_cridit,stuj.sum); elseif(ch1=2) /降序排 for(j=0;ji-1;j+) for(k=j;ki;k+) if(stuj.c_criditstuk.c_cridit) temp=stuj; stuj=stuk;stuk=temp; printf(n 学生学号 学生姓名 课程编号 课程名称 学分 综合成绩n) printf(=n); for(j=0;ji;j+) printf(n%10s %10s %10d %8s %6.2f %7.4fn,stuj.code,,stuj.kcbh,stuj.kc_name,stuj.c_cridit,stuj.sum); /ch if else if(ch=2) /升序排列 if(ch1=1) for(j=0;ji-1;j+) for(k=j;kstuk.sum) temp=stuj; stuj=stuk; stuk=temp; printf(n 学生学号 学生姓名 课程编号 课程名称 学分 综合成绩n); printf(=n); for(j=0;ji;j+)printf(n%10s %10s %10d %8s %6.2f %7.4fn,stuj.code,,stuj.kcbh,stuj.kc_name,stuj.c_cridit,stuj.sum); /降序排列 else if(ch1=2) for(j=0;ji-1;j+) for(k=j;ki;k+) if(stuj.sumstuk.sum) temp=stuj; stuj=stuk; stuk=temp; printf(n 学生学号 学生姓名 课程编号 课程名称 学分 综合成绩n); printf(=n); for(j=0;ji-1;j+) printf(n%10s %10s %10d %8s %6.2f %7.4fn,stuj.code,,stuj.kcbh,stuj.kc_name,stuj.c_cridit,stuj.sum); else printf(没有这个选项n); getchar(); (四)上机操作1、 主菜单函数2、 数据录入模块3、 查询模块4、 删除模块5、修改功能模块6、排序模块7、显示功能模块8、 增加功能模块;9、欢迎界面模块10退出系统模块(五)源代码#include /*i/o函数*/#include /*其他说明*/#include /*字符串函数*/#define len 30 /*学号和姓名最大学生人数*/#define n 100 /*最大学生人数*/struct record /*声明函数体*/ char code20; /*学号*/ char name10; /*姓名*/ int domitory; /*宿舍号*/ char sex5; /*性别*/ char tel20; /*电话*/ int kcbh; /*课程编号*/ char kc_name15; /*

温馨提示

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

评论

0/150

提交评论