版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、班级学生信息管理设计系统课程:C语言程序设计班级:计算机软件技术*班 学号:*姓名:* 2014年6月目 录一、设计目的1二、总体设计1三、详细设计 1四、调试与测试1五、源程序清单和执行结果1六、总结1一、 设计目的(1)基本掌握面向过程程序设计的基本思路和方法; (2)达到熟练掌握C语言的基本知识和技能; (3)能够利用所学的基本知识和技能,解决简单的程序设计问题二、 总体设计本设计有1个C文件(11个函数)和一个头文件组成关系如表所示。 程序包含头文件的存、取过程,其功能就是按输入学号大小的顺序建立记录。程序自动建立一个文件来保存学生信息记录。源文件函数名功能demo.cmenu接受用户
2、选择的菜单命令。help给用户一些提示和帮助。readfile新增或修改学生信息以后,刷新信息seek可以找到想要查询的某个学生信息记录。modify找到指定记录并修改。insert增加学生记录。del删除指定学号的学生信息记录。display显示当前学生记录的信息。save可以保存新增的或修改的学生信息记录。sort按照学号进行准确的排序。main结束程序运行。分析系统:根据题目的需求分析,可将这个系统设计为九大函(见下图):系统帮助及说明,刷新学生信息,查询,修改,插入,删除,显示,保存,退出。(组成框图)学生信息管理系统查询插入修改删除显示保存退出帮助刷新流程图:显示菜单开始输入0-8输
3、入0-8系统帮助及说明刷新学生信息退出系统查询学生信息修改学生信息增加学生信息按学号删除信息显示当前信息保存当前学生信息YNN结果Y三、 详细设计数据结构设计:结构数组:struct student /*结构体*/char xuehaoLEN+1; /* 学号 */char nameLEN+1; /* 姓名 */int age; /* 年龄 */char sex3; /* 性别 */char timeLEN+1; /* 出生年月 */char add30; /* 家庭地址 */char telLEN+1; /* 电话号码 */char mail30; /* 电子邮件地址 */char sush
4、e30;/* 宿舍 */char koukou20;/* qq */ char banjizhiwu30;/* 班级职务 *stuN;功能模块设计:本程序执行的入口是menu函数,然后用switch句实现对各个函数的调用。被调用的函数都是没有形参的,函数直接实现所需要的功能。最后再从main函数中结束整个程序的运行。 0、界面函数:函数原型:void menu() 功能:接受用户选择的菜单命令.若果输入不符合要 求,则提醒用户重新输入。参数:无。返回值:无工作方式:根据命令,调用相应函数。1、帮助函数:函数原型:void help()功能:给用户一些提示和帮助。参数:无。返回值:无2、刷新函数
5、:函数原型:void readfile()功能:新增或修改学生信息以后,刷新信息。参数:无。返回值:无 3、查询函数:函数原型:void seek()功能:可以找到想要查询的某个学生信息记录。可以按照学号、姓名来查询。参数:无。返回值:无工作方式:可选择按照学号或姓名来查询。 4、修改函数: 函数原型:void modify() 功能:找到指定记录并修改。如果有的学生信息发生改 变,你可以丢它进行修改,修改之前,你必须找到你修 改学生的记录,你可以根据学号找到要改学生的信息,找到之后,若要修改,可以选择某一项(如:姓名、年龄、性别等)对它进行修改。参数:无。返回值:无工作方式:可以按照学号、姓
6、名活名次找到要修改的记录,确认后方可修改。 5、插入函数:函数原型:void insert()功能:增加学生记录。参数:无。返回值:无。工作方式:其中通过学号的大小来比较的,并且以此来排序插入记录。 6、删除函数: 函数原型:void del()功能:删除指定学号的学生信息记录。删除之前,需要判定该学生的学号是否存在,若存在,就可以对它进行删除。参数:无。返回值:无工作方式:根据给定的学号,查找符合的记录并删除之。 7、显示函数: 函数原型:void display() 功能:显示当前学生记录的信息。 参数:无。 返回值:无 工作方式:显示当前学生记录记录内容。8、保存函数:函数原型:void
7、 save()功能:可以保存新增的或修改的学生信息记录。参数:无。返回值:无工作方式:将学生信息记录写入student.txt中。 9、排序函数:函数原型:void sort()功能:对学生进行排序,可以按照学号进行准确的排序。参数:无。返回值:无工作方式:对学生进行排序,可以根据需要,对学生的学号或者成绩进行升序。 10、退出系统:函数原型:int main()功能:结束程序运行。参数:无。返回值:无工作方式:根据要求选择退出。四、 调试与测试问题一、学生显示信息函数:其中包括学生的学号,姓名,年龄,性别,出生年月,地址,电话,E-mail,宿舍,扣扣,班级职务等相关信息;可用函数displ
8、ay()来实现此操作。当正确输入存在的学生学号,系统进行判断时,提示不存在此学生。解决办法及步骤:1、一个个输出所有的学生的学号,检查文件中是否有此学生,发现有。2、既然有此学生,那么检查循环判断是否有此学生的语句发现没有错3、输出用于循环检查语句中的学生信息,发现乱码4、仔细分析乱码的原因,最后发现是变量的类型错误,错将学生类型的结构体指针变量定义为了其他类型的指针变量。 问题二、查询函数:可用seek()来实现。找到就输出此学生全部信息学生的学号,姓名,年龄,性别,出生年月,地址,电话,E-mail,宿舍,扣扣,班级职务。当正确输入查找信息时,系统却不能够得到所要查找的学生信息。解决办法及
9、步骤:1、检查所编写的程序代码是否完全正确,若不是,则改之,然后再继续正确输入查找信息看能否得到所要查找的学生信息。2、检查当我们在输入查找信息时,看是否我们输入的信息有误,若是这样的话,我们应当仔细输入查找信息。五、 源程序清单和执行结果源代码:#include<stdio.h> /*I/O函数*/#include<stdlib.h> /*其它说明*/#include<string.h> /*字符串函数*/#define BUFLEN 100 /* 缓冲区最大字符数 */#define LEN 15 /* 学号和姓名最大字符数,实际请更改 */#defin
10、e N 100 /* 最大学生人数,实际请更改*/struct student /*结构体*/char xuehaoLEN+1; /* 学号 */char nameLEN+1; /* 姓名 */int age; /* 年龄 */char sex3; /* 性别 */char timeLEN+1; /* 出生年月 */char add30; /* 家庭地址 */char telLEN+1; /* 电话号码 */char mail30; /* 电子邮件地址 */char sushe30; /* 宿舍 */char koukou20; /* qq */ char banjizhiwu30; /* 班
11、级职务 */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(); /* 当k=0,调用menu函数,退出系统*/system(
12、"pause");return 0; void help() /*帮助函数*/ printf("n0.欢迎使用系统帮助!n");printf("n1.进入系统后,先刷新学生信息,再查询;n");printf("n2.按照菜单提示键入数字代号;n");printf("n3.增加学生信息后,切记保存按7;n");printf("n4.谢谢您的使用!n"); void readfile() /* 刷新函数(建立信息) */char *p="student.txt"
13、;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 %s %s",stui.xuehao,,&stui.age, stui.sex,stui.time,stui.ad
14、d,stui.tel,stui.mail,stui.sushe,stui.koukou, stui.banjizhiwu)=11)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");print
15、f("-n");while(1)printf("请选择子菜单编号:");scanf("%d",&item);flag=0;switch(item)case 1:printf("请输入要查询的学生的学号:n");scanf("%s",s1);for(i=0;i<n;i+)if(strcmp(stui.xuehao,s1)=0)flag=1;printf(" 学号 姓名 年龄 性别 出生年月 地址 电话 E-mail 宿舍 扣扣 班级职务n");printf(&qu
16、ot;-n");printf("%4s %7s %4d %4s %9s %8s %10s %16s %7s %7s %4sn",stui.xuehao,,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail,stui.sushe,stui.koukou,stui.banjizhiwu);if(flag=0)printf("该学号不存在!n"); break;case 2:printf("请输入要查询的学生的姓名:n");scanf("%s&
17、quot;,s1);for(i=0;i<n;i+)if(strcmp(,s1)=0)flag=1;printf(" 学号 姓名 年龄 性别 出生年月 地址 电话 E-mail 宿舍 扣扣 班级职务n");printf("-n");printf("%4s %7s %4d %4s %9s %8s %10s %16s %7s %7s %4sn",stui.xuehao,,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail,stui.sush
18、e,stui.koukou,stui.banjizhiwu);if(flag=0)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;i<n;i+)if(st
19、rcmp(stui.xuehao,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"
20、);printf("9.修改扣扣号n");printf("10.修改班级职务名称n");printf("11.退出本菜单n");printf("-n");while(1)printf("请选择子菜单编号:");scanf("%d",&item);switch(item)case 1:printf("请输入新的姓名:n");scanf("%s",s2);strcpy(,s2); break;case 2:pr
21、intf("请输入新的年龄: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.time,s2);break;case 5:printf("请输入新的地址:n");scan
22、f("%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:printf("请输入新的宿舍地址:n");scanf("%s",
23、s2);strcpy(stunum.sushe,s2); break;case 9:printf("请输入新的扣扣号:n");scanf("%s",s2);strcpy(stunum.koukou,s2); break;case 10:printf("请输入新的班级职务名称:n");scanf("%s",s2);strcpy(stunum.banjizhiwu,s2); break;case 11:return;default:printf("请在1-11之间选择n"); void sort()
24、/*按学号排序*/ int i,j,*p,*q,s; char temp10; for(i=0;i<n-1;i+) for(j=n-1;j>i;j-) if(strcmp(stuj-1.xuehao,stuj.xuehao)>0) strcpy(temp,stuj-1.xuehao); strcpy(stuj-1.xuehao,stuj.xuehao); /*比较学号的大小,交换学号*/ strcpy(stuj.xuehao,temp); strcpy(temp,); strcpy(,); /*同时,交换姓名*/
25、strcpy(,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); s
26、trcpy(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); /*同时,交换E-mail地址 */ strcpy(stuj.mail,temp); strcpy(temp,stuj-1.sushe); strcpy(stuj-1.sushe,stuj.sushe); /*同时,交换宿舍地址*/ strcpy(stuj.sushe,temp); strcpy(temp
27、,stuj-1.koukou); strcpy(stuj-1.koukou,stuj.koukou); /*同时,交换qq号*/ strcpy(stuj.koukou,temp); strcpy(temp,stuj-1.banjizhiwu); strcpy(stuj-1.banjizhiwu,stuj.banjizhiwu); /*同时,交换班级职务名称*/ strcpy(stuj.banjizhiwu,temp); p=&stuj-1.age; q=&stuj.age; s=*q; *q=*p; *p=s; void insert() /*插入函数*/ int i=n,j,
28、flag; printf("请输入待增加的学生数:n"); scanf("%d",&m); do flag=1; while(flag) flag=0; printf("请输入第 %d 个学生的学号:n",i+1); scanf("%s",stui.xuehao); for(j=0;j<i;j+) if(strcmp(stui.xuehao,stuj.xuehao)=0) printf("已有该学号,请检查后重新录入!n"); flag=1; break; /*如有重复立即退出该层
29、循环,提高判断速度*/ printf("请输入第 %d 个学生的姓名:n",i+1); scanf("%s",); printf("请输入第 %d 个学生的年龄:n",i+1); scanf("%d",&stui.age); printf("请输入第 %d 个学生的性别:n",i+1); scanf("%s",stui.sex); printf("请输入第 %d 个学生的出生年月:(格式:年.月)n",i+1); scanf(&q
30、uot;%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); printf("请输入第 %d 个学生的宿舍地址:n",i+1); scan
31、f("%s",stui.sushe); printf("请输入第 %d 个学生的扣扣号:n",i+1); scanf("%d",stui.koukou); printf("请输入第 %d 个学生的班级职务名称:n",i+1); scanf("%s",stui.banjizhiwu); if(flag=0) i=i;i+; while(i<n+m); n+=m; printf("录入完毕!nn"); sort(); void del() /* 删除函数 */int i,j
32、,flag=0;char s1LEN+1;printf("请输入要删除学生的学号:n");scanf("%s",s1);for(i=0;i<n;i+)if(strcmp(stui.xuehao,s1)=0) flag=1;for(j=i;j<n-1;j+)stuj=stuj+1;if(flag=0)printf("该学号不存在!n");if(flag=1)printf("删除成功,显示结果请选择菜单6n");n-; void display() /*显示函数*/ int i;printf("所
33、有学生的信息为:n");printf(" 学号 姓名 年龄 性别 出生年月 地址 电话 E-mail 宿舍 扣扣 班级职务n");printf("-n");for(i=0;i<n;i+) printf("%4s %7s %4d %4s %9s %8s %10s %16s %7s %7s %4sn",stui.xuehao,,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail,stui.sushe,stui.koukou,stui.banjiz
34、hiwu); void save() /*保存函数*/int i;FILE *fp;fp=fopen("student.txt","w"); /*写入*/for(i=0;i<n;i+)fprintf(fp,"%s %s %d %s %s %s %s %s %s %s %sn",stui.xuehao,,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail,stui.sushe,stui.koukou,stui.banjizhiwu);fclose(fp)
35、;printf("保存成功"); void menu()/* 菜单界面函数 */int num;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.退出系统 n");printf(" n");printf("
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年山东德州经开区抬头寺中学初三第三次质检数学试题含解析
- 2026年四川省广安市武胜县重点名校初三下学期第二次诊断性测验物理试题试卷含解析
- 河北省新乐市重点达标名校2026年中考数学试题全真模拟密押卷(六)含解析
- 2026年大学大一(建筑施工技术)混凝土施工工艺操作阶段测试题及答案
- 2025年前台防疫接待礼仪真题解析
- 护理文件书写的患者参与
- 护理教育创新竞赛课件模板
- 急救护理标准化培训
- 临床医学教材课件内科学第八篇风湿性疾病第二章风湿热
- 护理课件制作软件分享
- 四川省拟任县处级党政领导职务政治理论水平任职资格考试题全套共12套
- 园长证挂靠免责协议书
- 机电一体化技术与系统第2版龚仲华教学课件全套
- 住宅经营民宿合同范本
- 浙江省强基联盟2025-2026学年高三上学期10月联考生物试题(含答案)
- 思维导图与信息技术结合
- 项目部安全生产管理目标考核表
- 天津市2025天津市文化和旅游局直属艺术院团招聘23人笔试历年参考题库附带答案详解
- 量具储存知识培训课件
- 煤矿无轨胶轮车司机试卷与答案
- 电动车考试试题及答案
评论
0/150
提交评论