欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言课程设计报告书--薛波.doc

    • 资源ID:52202705       资源大小:78.50KB        全文页数:19页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言课程设计报告书--薛波.doc

    连云港职业技术学院 信息工程学院C语言程序设计专业实训文档题目: 学生成绩管理系统 组别: 第 8组 姓名: 薛波 学号: 专业: 微机 导师: 吴成州 连云港职业技术学院信息工程学院 二一 年 六 月目 录目 录2第一章 系统分析与系统设计1第二章 主函数设计4功能说明:4程序流程图4源程序7第三章 输入输出函数设计9功能说明:9程序流程图9源程序10第四章 查询、修改、删除函数设计13功能说明:13程序流程图14源程序14第五章 系统调试16成绩评定17第一章 系统分析与系统设计目的: 1.了解系统分析与系统设计的概念及过程。 2.了解需求报告的写法。详细步骤:1.需求分析通过对用户需求进行调查分析,写出需求分析文档作为项目设计的基本准则要求,以及作为系统分析员进行系统分析和测试人员进行测试时的手册 需求概述:设计一个学生信息管理系统,使之能提供以下功能:1) 录入学生信息并保存2) 显示所有学生信息3) 查询学生信息4) 修改学生信息并保存5)  删除学生信息 需求说明:学生信息包括学生号、姓名、性别、出生年月、学历、职务、住址、电话等,并且要求学生学号不重复;录入的学生信息要求用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作;学生信息的显式要求有一定的规范格式;对学生信息应能够分别按工资及按学历两种方式进行,要求能返回所有符合条件的学生的信息;对学生信息的修改应逐个地进行,一个学生信息的更改不应影响其他的学生记录;所设计的系统应以菜单方式工作,应为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并要求在此过程中能够尽可能的兼容用户使用过程中的异常情况2.总体设计根据需求分析文档,初步提出问题的解决方案,以及软件系统的体系结构和数据结构的设计方案并写出书面文档总体设计说明书,为下一步进行备。总体设计:1)该系统可以按功能进行模块划分,其模块图如下:学生信息管理系统按学号查询按姓名查询信息浏览信息查询信息输入信息修改信息删除菜单选择 系统模块图 其中:信息输入模块完成学生信息的输入功能,输入信息包括学生号、姓名、性别、出生年月、学历、职务、工资、住址、电话等;信息浏览模块完成已录入学生信息的显示;信息查询模块完成学生信息的查询,查询时对应有按工资查询和按学历查询两种方式;信息修改模块完成学生信息的修改功能;信息删除模块完成学生信息的删除功能;菜单选择模块完成用户命令的接收,此模块也是学生信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能;2)数据结构本系统中主要的数据结构就是学生的信息,包含学生号、姓名、性别、出生年月、学历、职务、工资、住址、电话等,在处理过程中各项可以作为一个学生的不同属性来进行处理3)程序流程系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如下: 程序流程图 第二章 主函数设计功能说明:根据项目概要设计说明书,在项目概要设计的基础之上,对系统进行详细设计,以便下一步进行程序编码工作。程序流程图    信息输入模块:打开学生信息文件;while (继续输入 ) 读入学生信息;将读入信息添加到学生信息文件中;提示是否继续输入;关闭学生信息文件;    信息浏览模块:打开学生信息文件;while ( 不到文件结束 ) 从文件中顺序读出一个学生的信息;按指定格式输出该学生的信息;关闭学生信息文件;    信息查询模块:while ( 仍继续查询 ) if( 按工资查询 ) 读入查询的学生工资条件; 打开学生信息文件;while( 不到文件结束 ) 顺序读出一个学生的信息;if( 该学生信息的工资符合条件 ) 输出该学生的信息;关闭学生信息文件;提示共有几条符合条件的记录; else if ( 按学历查询 ) 读入学历查询的条件; 打开学生信息文件;while( 不到文件结束 ) 顺序读出一个学生的信息;if( 该学生信息的学历符合条件 ) 输出该学生的信息;关闭学生信息文件;提示符合条件的记录数; else 提示输入不合适;提示是否继续查询;    信息修改模块:while( 继续修改 )从给出信息文件中所有的记录情况;提示并读入待修改的记录的学生的学生号;打开学生信息文件;查找并读出该学生的信息到一个中间变量中;提示并读入要针对该学生的哪个属性进行修改;根据用户的选择提示并读入所要修改属性的新值;在该学生的中间变量中修改刚刚读入的属性值;提示是否确定要进行修改;如果用户确定则将中间变量重新写回到原学生信息文件中;关闭学生信息文件;    信息删除模块:while( 继续删除 ) 显示所有学生的信息; 提示并读入待删除的学生的学生号; 打开学生信息文件; 查找是否有符合条件的学生记录; if( 有符合条件的记录) 提示是否确认该删除操作;if (用户确认此操作) 创建一个新的临时文件; 打开原信息文件; while( 原信息文件中记录未读完 ) 读出原信息文件中的下一条记录; if( 此条记录不是待删除记录) 写入临时文件中去;关闭原信息文件;关闭临时文件;读方式打开临时文件;写方式重建与原信息文件同名的新信息文件;将临时文件中的内容写入到新信息文件中去;关闭新信息文件;关闭临时文件;删除临时文件;else 提示没有符合条件的记录存在;    菜单选择模块:给出信息提示;清屏;绘制菜单(包含输入、显示、查询、修改、删除、退出);提示菜单选择并读入到变量;根据读入变量的值调用不同的模块函数;源程序性别: enum Sex male, female ; 学历 :enum Education high, junior, college, master, doctor; 日期 :struct Date int year;int month; int day;学生信息:struct Info char num5; /* 学生号 */char name8; /* 姓名 */ enum Sex sex; /* 性别 */ struct Date birthday; /* 出生年月*/enum Education education; /* 学历 */char duty8; /* 职务 */double wage; /* 工资 */char addr12; /* 地址 */char phone8; /* 电话 */;void menu() /*菜单选择界面*/ int n, w1; /* n记录选择的菜单, w1记录选择是否合法 */ do clrscr(); /*清屏*/  puts("ttt Welcome to employee mangement system "); puts("tt*MENU*nn"); puts("tttt1.Append inform"); puts("tttt2.Display inform"); puts("tttt3.Search inform"); puts("tttt4.Modify inform"); puts("tttt5.Delete inform"); puts("tttt6.Exit"); puts("nntt*n"); printf("Choice your number(1-6): bb"); scanf("%d",&n); getchar(); if(n<1|n>6) /*对选择的数字作判断*/ w1=1;getchar(); else w1=0; while(w1=1);  switch(n) /*菜单选择功能*/ case 1:append();break; /*信息添加模块*/ case 2:display();break; /*信息显示模块*/ case 3:search();break; /*信息查询模块*/ case 4:modify();break; /*信息修改模块*/ case 5:delete();break; /*信息删除模块*/ case 6:exit(0); /*退出*/   main() menu();第三章 输入输出函数设计功能说明:函数功能:输入学生学号、姓名和成绩,输入后有一个提示语句是否继续输入。根据需要选择Y:继续输入记录;选择N:停止输入。算法描述:使用while循环和标准输入函数进行数据的输入。程序流程图 结束信息输入开始菜单选项程序流程图输入源程序1.输入函数void append() /* 信息添加函数 */ struct Info info; FILE * fp; int flag = 1; char temp10;  if(fp=fopen("inform.txt","ab") = NULL) if(fp=fopen("inform.txt","wb")=NULL) printf("tCan not open the inform file!"); getch(); exit(1);   do printf("tnum:");gets(info.num); printf("tname:");gets(info.name); printf("tsex:");gets(temp); if(!strcmp(temp,"female") info.sex=female; else info.sex=male;printf("tbirthday(yyyy/mm/dd):");scanf("%d/%d/%d",&info.birthday.year,&info.birthday.month,&info.birthday.day); getchar(); printf("teducation:");gets(temp);if(!strcmp(temp,"doctor") info.education=doctor;else if(!strcmp(temp,"master") info.education=master;else if(!strcmp(temp,"college") info.education=college;else if(!strcmp(temp,"junior") info.education=junior;else info.education=high; printf("tduty:");gets(info.duty); printf("twage:");gets(temp); info.wage=atof(temp); printf("taddress:");gets(info.addr); printf("tphone:");gets(info.phone); if(fwrite(&info, sizeof(info), 1, fp) != 1) printf("nfile input wrong!n"); getch(); exit(1); printf("Any more ? t1).Yest2).No: bb"); scanf("%d",&flag); getchar();  while(flag = 1); fclose(fp);  menu(); 2.输出函数 void display() /* 职工信息显示函数 */ int amount; /* 信息文件中的记录总数 */ struct Info info; FILE * fp; int total = 0; char temp10, temp110;  amount=load("inform.txt");  if(fp=fopen("inform.txt","rb") = NULL) printf("tCan not open the inform file!"); getch(); exit(1); printf("%-5s%-8s%-8s%-11s%-10s%-8s%-8s%-12s%-8sn","nun","name","sex","birthday","education","duty","wage","address","phone"); for(;total<amount;) if(fread(&info, sizeof(info), 1, fp) != 1) printf("nfile read wrong!n"); getch(); exit(1); total+; if(info.sex=male) strcpy(temp,"male"); else strcpy(temp,"female"); if(info.education=doctor) strcpy(temp1,"doctor"); else if(info.education=master) strcpy(temp1,"master"); else if(info.education=college) strcpy(temp1,"college"); else if(info.education=junior) strcpy(temp1,"junior"); else strcpy(temp1,"high");  printf("%-5s%-8s%-8s%-4d/%-2d/%-2d%-10s%-8s%-8.2lf%-12s%-8sn",info.num,info.name,temp,info.birthday.year,info.birthday.month,info.birthday.day,temp1,info.duty,info.wage,info.addr,info.phone);  if(total != 0) && (total%10 =0) printf("nntPress any key to continue."); getch(); puts("nn"); printf("%-5s%-8s%-8s%-11s%-10s%-8s%-8s%-12s%-8sn","nun","name","sex ","birthday","education","duty","wage","address","phone"); fclose(fp);  printf("nntThere are %d record in all!",total); getch();  menu();第四章 查询、修改、删除函数设计 功能说明函数功能:定义该函数为无返回值的的有参函数,根据输入的姓名查找并显示学生的学生号、身份证号、住址、电话。算法描述:运用标准的输入函数输入要查找的学生姓名,然后进行while循环,用if语句进行判断是否存在该学生信息,无则显示“无法找到该信息”,有则将该学生信息运用标准输出函数输出。修改函数:输入学生学号,在学生信息文件中找出该学生信息。在屏幕上逐条显示该学生的各条信息。每显示一条,询问是否修改,如果”Y“输入修改后的数据,将文件原记录删除,保存新的记录。删除记录函数:函数功能:按姓名将需要删除的记录删除。首先输入姓名,判断是否存在该学生信息,如果存在,回车后,显示“删除成功”;如果不存在,显示“无法找到该信息”。算法描述:运用标准输入函数输入需要删除记录的学生的姓名,通过用while循环查找该学生信息,再运用if语句看是否存在该学生,无则返回“无法找到该信息”,有则运用for循环进行删除操作,即找到记录后用后面记录覆盖前面的记录。这种方法虽不是直接将记录删除,只是将后边的学生记录复制到要删除的学生记录,但实现的功能是相同的。执行完删除命令后返回“删除成功”。:程序流程图 信息浏览信息修改开始菜单选项查询删除浏览修改按姓名信息删除结束否是源程序 find() struct info *p; FILE *fp; int i; if(fp=fopen("inform.txt","r")=NULL) printf("can't open filen"); exit(0); clrscr(); p=(struct info *)malloc(LEN); gotoxy(20,10); printf("请输入姓名:"); scanf("%s",p->name); for(i=0;!feof(fp);i+) fread(&infoi,LEN,1,fp); if(strcmp(p->name,infoi.name)=0) clrscr(); gotoxy(20,10); printf("); getch(); fclose(fp); 2.删除函数 delete() FILE *fp; struct info *p; int i,m,n; if(fp=fopen("inform.txt","r")=NULL) printf("can't open filen"); exit(0); clrscr(); p=(struct info *)malloc(LEN); gotoxy(20,10); printf("请输入要删除的姓名:"); scanf("%s",p->name); for(i=0;fread(&infoi,LEN,1,fp);i+) if(strcmp(p->name,infoi.name)=0) m=i; n=i; fclose(fp); fp=fopen("inform.txt","w"); for(i=0;i<m;i+) fwrite(&infoi,LEN,1,fp); for(i=m+1;i<n;i+) fwrite(&infoi,LEN,1,fp); fclose(fp); 第五章 系统调试调试是软件开发过程中最艰巨的脑力劳动,调试开始时,软件开发者仅仅面对着错误的征兆,然而在问题的外部现象和内在原因之间往往并没有明显的联系,在组成程序的密密麻麻的元素中,每一个都可能是错误的根源。如何能在浩如烟海的程序元素中找到有错误的那个(或几个)元素,这是调试过程中最关键的技术问题12。本设计中调试的方法主要是设置断点跟踪。使用断点跟踪可以找到程序的出错位置,缩小查找错误的范围,提高调试的效率。调试的任务是及时改正测试过程中发现的软件错误。具体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。然后仔细研究推断代码以确定问题的原因,并设法改正。现阶段已研究出一些帮助调试的技术,主要有输出存储器内容、打印语句和自动工具。当然更重要的还是调试的策略。调试的策略主要有以下几种方法:1.试探法调试人员分析错误征兆,猜想故障的大致位置,然后使用调试的技术获取程序中被怀疑的地方附近的信息。这种策略通常是缓慢而低效的。一般不被采用。2.回溯法回溯法是调试人员检查错误征兆,确定最先发现“症状”的地方,然后人工沿程序的控制流往回追踪源程序代码,直到找出错误根源或确定故障范围为止。回溯法对小程序而言是一种比较好的调试策略,但是对于一些大规模的程序来说,就不适合用此方法了。3.对分查找法如果知道每个变量在程序内若干个关键点的正确值,则可以用赋值语句或输入语句在程序中点附近“注入”这些变量的正确值,然后检查程序的输出。如果输出结果是正确的,则故障在程序的前半部分;反之,在后半部分。对于程序中有故障的那部分再重复使用这个方法,直到把故障范围缩小到容易诊断的程度为止。4.归纳法所谓归纳法就是从个别推断一般的方法,这种方法从线索出发,通过分析这些线索之间的关系而找到故障。5.演绎法是从一般原理或前提出发,经过删除和精化的过程推导出结论。用演绎法调试开始时先列出可能成立的原因或假设,然后依次地排除列举出的原因。最后,证明剩下的原因是错误的根源。以上是一些调试策略的介绍,在这些策略中较普遍的调试策略是归纳法和演绎法。调试工具推荐WinDbg,这是微软开发的免费源码级调试工具。Windbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。成绩评定鉴定意见 日期 年 月 日指导教师 成绩

    注意事项

    本文(C语言课程设计报告书--薛波.doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开