C语言课程设计-学生信息管理系统.doc

上传人:豆**** 文档编号:17404151 上传时间:2022-05-23 格式:DOC 页数:13 大小:302.50KB
返回 下载 相关 举报
C语言课程设计-学生信息管理系统.doc_第1页
第1页 / 共13页
C语言课程设计-学生信息管理系统.doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《C语言课程设计-学生信息管理系统.doc》由会员分享,可在线阅读,更多相关《C语言课程设计-学生信息管理系统.doc(13页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流C语言课程设计-学生信息管理系统.精品文档.南京工程学院 课程设计说明书(论文) 题 目 学生信息管理系统 课 程 名 称 高级语言程序设计(C) 院(系、部、中心) 通信工程学院 专 业 电子信息工程 班 级 电信082 学 生 姓 名 * 学 号 * 设 计 地 点 * 指 导 教 师 * _ 目 录 一、课程设计任务。2 二、系统设计方案。 2 三、数据结构描述与定义。2 四、程序主要代码分析。2 五、测试结果与分析。 2 六、课程设计总结。 2 七、参考文献:。 2 一、课程设计任务 (一)前言 本课程是继高级语言程序设计(C)课程之

2、后,训练学生综合运用本课程知识,结合实际系统运用C语言进行系统设计以及调试,加深对本课程的理解,提高学生综合应用知识的能力、分析问题、解决问题的能力和利用C语言进行综合系统设计的实践技能。 学C语言程序设计已有1学期了,对C语言的基本概念和常用算法也有了一定的了解,平时虽然也做过一些练习,也看了不少程序从而掌握一定的语法知识和编程经验。但是对于有些功能强大的软件还是没有尝试过能否编得起来。所以决定在所学知识的基础上,再加以拓展,利用4个半天时间编个主题明确、具有一定使用价值的中小程序,以提高自身的编程水平与上机调试技能。 (二)课程设计题目及要求 学生信息管理系统设计: 学生信息包括:学号,姓

3、名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以功能: 系统以菜单方式工作 学生信息录入功能(学生信息用文件保存)-输入 学生信息浏览功能-输出 查询、排序功能-算法 按学号查询、按姓名查询 学生信息的删除与修改 二、系统设计方案 (一)总体框架图: 学生管理系统:1、录入学生信息 2、修改学生信息 3、查询学生信息 4、浏览学生信息 5、增加学生信息 6、推出信息系统 (二)模块设计 模块一:头文件,变量定义,函数的声明 对系统所使用的变量进行定义,对函数进行声明 模块二:学生信息系统使用帮助 声明函数void help(),对整个系统进行使用说明

4、 模块三:录入学生信息 声明函数void readfile(),说明一个文件指针FILE *fp 打开文件student.txt 模块四:学生信息的查找 声明void seek()为查找函数,通过switch(item)设定用学号查找,用姓名查找两个分支 模块五:学生信息的修改 声明void modify()为学生信息修改函数,通过switch(item)设定所要修改的项目 模块六:学生信息按学号排序 声明void sort()将录入学生系按升序排列,用的是“冒泡排序法”实现排序 模块七:增加学生信息 声明void insert()插入学生信息,先通过判断学生是否存在,若否则继续输入,若是跳出

5、,重新循环 模块八:删除学生信息 声明void del()实现学生信息删除,通过学号对比确定要删除的信息,然后用后一个替换掉。 模块九:显示学生信息 通过display()函数输出学生信息 模块十:保存信息 通过fp=fopen(student.txt,w);写入信息 模块十一:界面菜单 通过switch(num)调用,以上各函数,实现功能 三、数据结构描述与定义 (一)结构体: “结构体名”用作结构体类型的标志,它又称“结构体标记”。声明一个结构体类型的一般形式为: Struct 结构体名 成员表列; 大括弧内是该结构体中的各个成员,由它们组成一个结构体。对各成员都应进行类型声明,即 类型名

6、 成员名 也可以把“成员表列”称为“域表”。每一个成员也称为结构体中的一个域。成员名定名规与变量名同。 (二)结构体数组: 一个结构体变量中可以存放一组数据(如本程序中一个学生的学号、姓名、成绩等)。因为程序中需存放若干个学生的信息,这些数据需要参加运算,就得运用数组即结构体数组。结构体数组的每个数组元素都是一个结构体类型的数据,它们分别包括各个成员(分量)项。 四、程序主要代码分析 #include /*I/O函数*/#include /*其它说明*/#include /*字符串函数*/#define BUFLEN 100 /* 缓冲区最大字符数 */#define LEN 15 /* 学号

7、和姓名最大字符数,实际请更改 */#define N 100 /* 最大学生人数,实际请更改*/struct record /*结构体*/char codeLEN+1; /* 学号 */char nameLEN+1; /* 姓名 */int age; /* 年龄 */char sex3; /* 性别 */char timeLEN+1; /* 出生年月 */char add30; /* 家庭地址 */char telLEN+1; /* 电话号码 */char mail30; /* 电子邮件地址 */stuN;int k=1,n,m; /* 定义全局变量 */ void readfile();/*

8、 函数声明 */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.进入系统后,先刷新学生信息,再查询;n);printf(n2.按照菜单提示键入数字代号;n);printf(n3.增加学生信息后,切记保存按7;n);printf(n4.谢谢您的使用!n); void readfile

9、()/* 建立信息 */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,stui.code,stui.name,&stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail)=8)i+;i=i;fclose(fp);n=i;pr

10、intf(录入完毕!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,&item);flag=0;switch(item)case 1:printf(请输入要查询的学生的学号:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.code,s1)=

11、0)flag=1;printf(学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E-mailn);printf(-n);printf(%6s %7s %6d %5s %9s %8s %10s %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)f

12、lag=1;printf(学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E-mailn);printf(-n);printf(%6s %7s %6d %5s %9s %8s %10s %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); void modify() /*修改信息*/int i,item,num;char sex

13、13,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.退出本菜单n);printf(-n);wh

14、ile(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);strcpy(stunum.ti

15、me,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); void sort()/*按学号排序*/int i,j,*p,*q,

16、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);strcpy(stuj.sex,temp);strcpy(t

17、emp,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);strcpy(stuj.mail,temp);p=&s

18、tuj-1.age;q=&stuj.age;s=*q;*q=*p;*p=s; void insert() /*插入函数*/int i=n,j,flag;printf(请输入待增加的学生数:n);scanf(%d,&m);doflag=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(已有该学号,请检查后重新录入!n);flag=1;break; /*如有重复立即退出该层循环,提高判断速度*/print

19、f(请输入第 %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);printf(请输入第 %d 个学生的电话:n,i+1);scanf(%s,stui.tel);prin

20、tf(请输入第 %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(删

21、除成功,显示结果请选择菜单6n);n-; void display()int i;printf(所有学生的信息为:n);printf(学生学号 学生姓名 年龄 性别 出生年月 地址 电话 E-mailn);printf(-n);for(i=0;in;i+)printf(%6s %7s %5d %5s %9s %8s %10s %14sn,stui.code,stui.name,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail); void save()int i;FILE *fp;fp=fopen(student.txt,w); /

22、*写入*/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); void menu()/* 界面 */int num;printf( nn 电信082学生信息管理系统 nn);printf( * nn);printf( * 制作人:顾加楠 * n n);printf( * nn); printf(*系统功能菜单* n);printf(友情提醒:查询前请先刷新系统! n);p

23、rintf( - - 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.退出系统 * n);printf( * n);printf( - - n);printf(请选择菜单编号:);scanf(%d,&num);switch(num) case 0:help();break;case 1:readfile();break;case 2:seek();break;case 3:modify();break;case 4:insert();break;case 5:del();break;case 6:display();break;case 7:save();break;case 8:k=0;break;default:printf(请在0-8之间选择n);

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

当前位置:首页 > 教育专区 > 小学资料

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com