最新《C程序设计》课程设计报告完成.doc

上传人:1595****071 文档编号:47995781 上传时间:2022-10-04 格式:DOC 页数:33 大小:588.50KB
返回 下载 相关 举报
最新《C程序设计》课程设计报告完成.doc_第1页
第1页 / 共33页
最新《C程序设计》课程设计报告完成.doc_第2页
第2页 / 共33页
点击查看更多>>
资源描述

《最新《C程序设计》课程设计报告完成.doc》由会员分享,可在线阅读,更多相关《最新《C程序设计》课程设计报告完成.doc(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC程序设计课程设计报告完成黄淮学院计算机科学系 课程设计报告题目学生信息管理系统系别数学与计算机科学系班级10数学与应用数学姓名彭伟学号10061310张兵1006131054张祥建1006131059张志波1006131063刘越10061310指导教师束红职称讲师二一 一年 六 月-一课程设计目的1. 训练学生灵活应用所学知识,独立完成问题分析,结合C程序设计理论

2、知识,编写程序求解指定问题。 2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3. 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4. 训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。二课程设计任务与要求:任务学生信息管理 问题描述:已知某学生信息表中现有N位同学的信息(要求各人数据不同),如:学号姓名年龄性别出生年月地址电话E-mail001彭伟20男92.09安徽187676543211192866112002张兵21男91.07安徽18767854354

3、1192866121 现需要删除已转学的某位同学的信息,同时添加某位同学的信息(学号、姓名),插入位置按学号升序排列。 请根据所学过的知识用C/C+编程实现此操作。程序要求: 1. 现有N位同学的数据要求从数据文件中读入,不用交互方式录入;2. 删除及插入操作完毕,需将信息表中的所有记录按学号升序方式显示出来;3. 将更新后的信息表保存到另一个数据文件中;4. 可以增加功能:如修改某位同学的信息。要求:1. 在处理每个题目时,要求从分析题目的需求入手,设计算法、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段

4、应尽量利用已有的标准函数,加大代码的重用率。 2. 设计的题目要求达到一定工作量(300行以上代码),并具有一定的深度和难度。3. 程序设计语言推荐使用C/C+,程序书写规范,源程序需加必要的注释;4. 每组同学需提交可独立运行的程序;5. 每组同学需独立提交设计报告书(每组一份),要求编排格式统一、规范、内容充实,不少于10页(代码不算);6. 课程设计实践作为培养学生动手能力的一种手段,单独考核。三课程设计说明书1、需求分析要求用到课本上学到的知识,所以就要充分而清晰的理解关于数组、指针、结构体等知识。要求实现的基本功能很简单,只有删除和插入,增加功能也不过是加上修改。问题是将输入的信息保

5、存入文件和从文件输出。这里基本是自学的内容,而且要考虑到是否要自行选择保存的磁盘。综上,做这个课题,要具备的知识就是数组、指针、结构体等基本知识,文件的保存和读取算法,以及丰富的程序调适经验。2、概要设计 首先由于程序中要有对学生信息的增加和减少,定义三个全局变量k,n,m,在此程序的任意的模块中均可以使用。宏定义,用LEN来代替开辟地址空间,定义八个结构体变量,学号code,姓名name,年龄age,出生年月time,家庭住址add,电话号码tel,电子邮件地址mail. 设计实现主要功能的函数有:创建学生信息的子函数void readfile();查找的子函数void seek();修改的

6、子函数void modify();排序的子函数void sort();增添信息的子函数void insert();删除信息的子函数void del();显示当前信息的子函数void display();保存信息的子函数del();然后在main()函数中使用一个menu()实现对各个子函数的调用。为了使用的方便,程序中将设计一种排序的方式,按照学号排序void sort()为了直观的看到操作以后的结果,还要有一个输出显示的函数void display()。程序运行中,为了保持屏幕的清楚和美观,时刻进行清屏也是必要的。3、详细设计1)宏定义,定义全局变量、结构体:#include /*I/O函数

7、*/#include /*其它说明*/#include /*字符串函数*/#define BUFLEN 100 /* 缓冲区最大字符数 */#define LEN 15 /* 学号和姓名最大字符数,实际请更改 */#define N 100 /* 最大学生人数,实际请更改*/struct record /*结构体*/char codeLEN+1; /* 学号 */char nameLEN+1; /* 姓名 */int age; /* 年龄 */char sex3; /* 性别 */char timeLEN+1; /* 出生年月 */char add30; /* 家庭地址 */char telL

8、EN+1; /* 电话号码 */char mail30; /* 电子邮件地址 */stuN;int k=1,n,m; /* 定义全局变量 */ void readfile();/* 函数声明 */void seek();void modify();void insert();void del();void display();void save();void menu();2)主函数的算法如下:main() while(k)menu();system(pause);return 0; /*结束main函数*/ 3)建立信息的算法如下:void readfile()/* 建立信息 */char

9、*p=student.txt;FILE *fp;int i=0;if (fp=fopen(student.txt,r)=NULL) printf(Open file %s error! Strike any key to exit!,p);system(pause);exit(0);while(fscanf(fp,%s %s%d%s %s %s %s %s,stui.code,stui.name,&stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail)=8)i+;i=i;fclose(fp);n=i;printf(录入完毕!n);4)查

10、找学生信息的算法如下:void seek() /*查找*/int i,item,flag;char s121; /* 以姓名和学号最长长度+1为准 */printf(-n);printf(-1.按学号查询-n);printf(-2.按姓名查询-n);printf(-3.退出本菜单-n);printf(-n);while(1)printf(请选择子菜单编号:);scanf(%d,&item);flag=0;switch(item)case 1:printf(请输入要查询的学生的学号:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.code,s1)=0)f

11、lag=1;printf(学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E-mailn);printf(-n);printf(%-10s%-10s%-6d%-7s%-11s%-9s%-14s%-14sn,stui.code,stui.name,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail);if(flag=0)printf(该学号不存在!n); break;case 2:printf(请输入要查询的学生的姓名:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.name,s1)=0)

12、flag=1;printf(学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E-mailn);printf(-n);printf(%-10s%-10s%-6d%-7s%-11s%-9s%-14s%-14sn,stui.code,stui.name,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail);if(flag=0)printf(该姓名不存在!n); break;case 3:return;default:printf(请在1-3之间选择n);5)修改学生信息的算法如下:void modify() /*修改信息*/int i

13、,item,num;char sex13,s1LEN+1,s2LEN+1; /* 以姓名和学号最长长度+1为准 */printf(请输入要要修改的学生的学号:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.code,s1)=0) /*比较字符串是否相等*/num=i;printf(-n);printf(1.修改姓名n);printf(2.修改年龄n);printf(3.修改性别n);printf(4.修改出生年月n);printf(5.修改地址n);printf(6.修改电话号码n);printf(7.修改E-mail地址n);printf(8.退出本

14、菜单n);printf(-n);while(1)printf(请选择子菜单编号:);scanf(%d,&item);switch(item)case 1:printf(请输入新的姓名:n);scanf(%s,s2);strcpy(stunum.name,s2); break;case 2:printf(请输入新的年龄:n);scanf(%d,&stunum.age);break;case 3:printf(请输入新的性别:n);scanf(%s,sex1);strcpy(stunum.sex,sex1); break;case 4:printf(请输入新的出生年月:n);scanf(%s,s2

15、);strcpy(stunum.time,s2); break;case 5:printf(请输入新的地址:n);scanf(%s,s2);strcpy(stunum.add,s2); break;case 6:printf(请输入新的电话号码:n);scanf(%s,s2);strcpy(stunum.tel,s2); break;case 7:printf(请输入新的E-mail地址:n);scanf(%s,s2);strcpy(stunum.mail,s2); break;case 8:return;default:printf(请在1-8之间选择n);6)排序的算法如下:void so

16、rt()/*按学号排序*/int i,j,*p,*q,s; char temp10;for(i=0;ii;j-)if(strcmp(stuj-1.code,stuj.code)0)strcpy(temp,stuj-1.code);strcpy(stuj-1.code,stuj.code);strcpy(stuj.code,temp);strcpy(temp,stuj-1.name);strcpy(stuj-1.name,stuj.name);strcpy(stuj.name,temp);strcpy(temp,stuj-1.sex);strcpy(stuj-1.sex,stuj.sex);st

17、rcpy(stuj.sex,temp);strcpy(temp,stuj-1.time);strcpy(stuj-1.time,stuj.time);strcpy(stuj.time,temp);strcpy(temp,stuj-1.add);strcpy(stuj-1.add,stuj.add);strcpy(stuj.add,temp);strcpy(temp,stuj-1.tel);strcpy(stuj-1.tel,stuj.tel);strcpy(stuj.tel,temp);strcpy(temp,stuj-1.mail);strcpy(stuj-1.mail,stuj.mail)

18、;strcpy(stuj.mail,temp); p=&stuj-1.age; q=&stuj.age; s=*q; *q=*p; *p=s;7)增添学生信息的算法如下:void insert() /*插入函数*/ int i=n,j,flag;printf(请输入待增加的学生数:n);scanf(%d,&m);do flag=1;while(flag)flag=0;printf(请输入第 %d 个学生的学号:n,i+1);scanf(%s,stui.code);for(j=0;ji;j+)if(strcmp(stui.code,stuj.code)=0)printf(已有该学号,请检查后重新

19、录入!n);flag=1;break; /*如有重复立即退出该层循环,提高判断速度*/printf(请输入第 %d 个学生的姓名:n,i+1);scanf(%s,stui.name);printf(请输入第 %d 个学生的年龄:n,i+1);scanf(%d,&stui.age);printf(请输入第 %d 个学生的性别:n,i+1);scanf(%s,stui.sex);printf(请输入第 %d 个学生的出生年月:(格式:年.月)n,i+1);scanf(%s,stui.time);printf(请输入第 %d 个学生的地址:n,i+1);scanf(%s,stui.add);prin

20、tf(请输入第 %d 个学生的电话:n,i+1);scanf(%s,stui.tel);printf(请输入第 %d 个学生的E-mail:n,i+1);scanf(%s,stui.mail);if(flag=0) i=i;i+;while(in+m);n+=m;printf(录入完毕!nn);sort(); 8)删除信息的算法如下:void del()int i,j,flag=0;char s1LEN+1;printf(请输入要删除学生的学号:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.code,s1)=0) flag=1;for(j=i;jn-

21、1;j+)stuj=stuj+1;if(flag=0)printf(该学号不存在!n);if(flag=1)printf(删除成功,显示结果请选择菜单6n);n-; 9)显示当前信息的算法如下:void display() int i;printf(所有学生的信息为:n);printf(学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E-mailn);printf(-n);for(i=0;in;i+) printf(%-10s%-10s%-6d%-7s%-11s%-9s%-14s%-14sn,stui.code,stui.name,stui.age,stui.sex,stui.time,

22、stui.add,stui.tel,stui.mail);10)保存当前学生信息的算法:void save()int i;FILE *fp;fp=fopen(student.txt,w); /*写入*/for(i=0;in;i+)fprintf(fp,%s %s %d %s %s %s %s %sn,stui.code,stui.name,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail);fclose(fp);11)各个模块之间调用关系如下:主函数建立信息查找信息写入文件读取文件修改信息删除信息插入信息按姓名查找按学号查找输出显示

23、信息按学号排序按学号排序按学号排序4、设计与调试分析从上面的算法和调用关系可以看出,这个程序的基本样子已经非常的清楚,但是真正的程序中还要考虑各种限制条件。例如在查找的过程中,可能不存在要查找的信息,就要给出不存在此信息的提示等。还有就是涉及到返回值得问题和程序中所要用到的变量的问题。在调试的过程中所遇到的问题很多,其中最难的两个问题是给出的六个警告错误,在5.0的版本下就是两个使得程序无法运行的错误。其中五个是因为在变量的声明中因为使用了浮点型和双精度型两种而造成在某些模块中两个变量相互赋值时类型不匹配。另一个是在查找的子函数中忘记了需要的返回语句,return 1.5、用户手册1)本程序可

24、以在vc+5.0和vc+6.0 的环境下运行。2)在vc中创建一个工程,将源程序复制到.cpp中,编译链接就可以。3)选择编译、运行以后会出现运行界面,选择相应的选项,根据提示即可进行演示。界面如下:4)创建信息就是把最开始要输入的信息输入到系统里。5)浏览信息就是按照要求的顺序浏览已经输入的信息。6)保存信息就是把输入的信息保存如指定的磁盘。7)打开文件就是把保存的信息从磁盘读取保存的信息。8)插入,修改,删除分别是对指定的某信息进行相应的操作。6、测试成果查询时,当输入学号不存在时系统提示学号不存在。删除信息时学号不存在时提示。删除前。001号学生被删除。7、附录(源程序清单)#inclu

25、de /*I/O函数*/#include /*其它说明*/#include /*字符串函数*/#define BUFLEN 100 /* 缓冲区最大字符数 */#define LEN 15 /* 学号和姓名最大字符数,实际请更改 */#define N 100 /* 最大学生人数,实际请更改*/struct record /*结构体*/char codeLEN+1; /* 学号 */char nameLEN+1; /* 姓名 */int age; /* 年龄 */char sex3; /* 性别 */char timeLEN+1; /* 出生年月 */char add30; /* 家庭地址 *

26、/char telLEN+1; /* 电话号码 */char mail30; /* 电子邮件地址 */stuN;int k=1,n,m; /* 定义全局变量 */ void readfile();/* 函数声明 */void seek();void modify();void insert();void del();void display();void save();void menu(); int main() while(k)menu();system(pause);return 0; void help() printf(n0.欢迎使用系统帮助!n);printf(n1.进入系统后,先

27、刷新学生信息,再查询;n);printf(n2.按照菜单提示键入数字代号;n);printf(n3.增加学生信息后,切记保存按7;n);printf(n4.谢谢您的使用!n); void readfile()/* 建立信息 */char *p=student.txt;FILE *fp;int i=0;if (fp=fopen(student.txt,r)=NULL) printf(Open file %s error! Strike any key to exit!,p);system(pause);exit(0);while(fscanf(fp,%s %s%d%s %s %s %s %s,s

28、tui.code,stui.name,&stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail)=8)i+;i=i;fclose(fp);n=i;printf(录入完毕!n); void seek() /*查找*/int i,item,flag;char s121; /* 以姓名和学号最长长度+1为准 */printf(-n);printf(-1.按学号查询-n);printf(-2.按姓名查询-n);printf(-3.退出本菜单-n);printf(-n);while(1)printf(请选择子菜单编号:);scanf(%d,&ite

29、m);flag=0;switch(item)case 1:printf(请输入要查询的学生的学号:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.code,s1)=0)flag=1;printf(学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E-mailn);printf(-n);printf(%-10s%-10s%-6d%-7s%-11s%-9s%-14s%-14sn,stui.code,stui.name,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail);if(flag=0)p

30、rintf(该学号不存在!n); break;case 2:printf(请输入要查询的学生的姓名:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.name,s1)=0)flag=1;printf(学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E-mailn);printf(-n);printf(%-10s%-10s%-6d%-7s%-11s%-9s%-14s%-14sn,stui.code,stui.name,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail);if(flag=0)

31、printf(该姓名不存在!n); break;case 3:return;default:printf(请在1-3之间选择n); void modify() /*修改信息*/int i,item,num;char sex13,s1LEN+1,s2LEN+1; /* 以姓名和学号最长长度+1为准 */printf(请输入要要修改的学生的学号:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.code,s1)=0) /*比较字符串是否相等*/num=i;printf(-n);printf(1.修改姓名n);printf(2.修改年龄n);printf(3.

32、修改性别n);printf(4.修改出生年月n);printf(5.修改地址n);printf(6.修改电话号码n);printf(7.修改E-mail地址n);printf(8.退出本菜单n);printf(-n);while(1)printf(请选择子菜单编号:);scanf(%d,&item);switch(item)case 1:printf(请输入新的姓名:n);scanf(%s,s2);strcpy(stunum.name,s2); break;case 2:printf(请输入新的年龄:n);scanf(%d,&stunum.age);break;case 3:printf(请输

33、入新的性别:n);scanf(%s,sex1);strcpy(stunum.sex,sex1); break;case 4:printf(请输入新的出生年月:n);scanf(%s,s2);strcpy(stunum.time,s2); break;case 5:printf(请输入新的地址:n);scanf(%s,s2);strcpy(stunum.add,s2); break;case 6:printf(请输入新的电话号码:n);scanf(%s,s2);strcpy(stunum.tel,s2); break;case 7:printf(请输入新的E-mail地址:n);scanf(%s

34、,s2);strcpy(stunum.mail,s2); break;case 8:return;default:printf(请在1-8之间选择n); void sort()/*按学号排序*/int i,j,*p,*q,s; char temp10;for(i=0;ii;j-)if(strcmp(stuj-1.code,stuj.code)0)strcpy(temp,stuj-1.code);strcpy(stuj-1.code,stuj.code);strcpy(stuj.code,temp);strcpy(temp,stuj-1.name);strcpy(stuj-1.name,stuj

35、.name);strcpy(stuj.name,temp);strcpy(temp,stuj-1.sex);strcpy(stuj-1.sex,stuj.sex);strcpy(stuj.sex,temp);strcpy(temp,stuj-1.time);strcpy(stuj-1.time,stuj.time);strcpy(stuj.time,temp);strcpy(temp,stuj-1.add);strcpy(stuj-1.add,stuj.add);strcpy(stuj.add,temp);strcpy(temp,stuj-1.tel);strcpy(stuj-1.tel,st

36、uj.tel);strcpy(stuj.tel,temp);strcpy(temp,stuj-1.mail);strcpy(stuj-1.mail,stuj.mail);strcpy(stuj.mail,temp); p=&stuj-1.age; q=&stuj.age; s=*q; *q=*p; *p=s; void insert() /*插入函数*/ int i=n,j,flag;printf(请输入待增加的学生数:n);scanf(%d,&m);do flag=1;while(flag)flag=0;printf(请输入第 %d 个学生的学号:n,i+1);scanf(%s,stui.c

37、ode);for(j=0;ji;j+)if(strcmp(stui.code,stuj.code)=0)printf(已有该学号,请检查后重新录入!n);flag=1;break; /*如有重复立即退出该层循环,提高判断速度*/printf(请输入第 %d 个学生的姓名:n,i+1);scanf(%s,stui.name);printf(请输入第 %d 个学生的年龄:n,i+1);scanf(%d,&stui.age);printf(请输入第 %d 个学生的性别:n,i+1);scanf(%s,stui.sex);printf(请输入第 %d 个学生的出生年月:(格式:年.月)n,i+1);s

38、canf(%s,stui.time);printf(请输入第 %d 个学生的地址:n,i+1);scanf(%s,stui.add);printf(请输入第 %d 个学生的电话:n,i+1);scanf(%s,stui.tel);printf(请输入第 %d 个学生的E-mail:n,i+1);scanf(%s,stui.mail);if(flag=0) i=i;i+;while(in+m);n+=m;printf(录入完毕!nn);sort(); void del()int i,j,flag=0;char s1LEN+1;printf(请输入要删除学生的学号:n);scanf(%s,s1);for(i=0;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(删除成功,显示结果请选择菜单6n);n-; void display() int

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

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

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