《语言专业课程设计方案报告.doc》由会员分享,可在线阅读,更多相关《语言专业课程设计方案报告.doc(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、设计思想一方面建立主函数实现功能选取,然后通过调用函数来分别实现;1.学生信息录入功能(以文献方式保存);2.学生信息浏览功能;3.学生信息查询功能(可以按学号,班级,性别分别进行查询,用子菜单,可显示多条记录);4.学生信息删除功能(按学号进行删除);5.学生信息修改功能(按学号修改);6.不及格学生成绩汇总功能。二 概要设计1. 模块简介程序由十一种模块构成,分别是:主菜单模块、录入信息模块、保存信息模块、浏览信息模块、查询菜单模块、按学号查询模块、按姓名查询模块、按性别查询模块、修改信息模块、删除信息模块、不及格学生信息汇总模块。2.函数功能lr()函数是实现信息录入功能函数;bc(
2、)函数是将录入信息保存到文献中额函数;ll()是实现浏览功能函数;cx()是实现信息查询功能函数,在cx()函数调用了xuehao();xingming();xingbie()这三个函数,这三个函数分别实现按学号查找、按姓名查找、按性别查找学生信息 功能;sc()函数是实现删除学生信息功能;xg()实现信息修改功能;hz()实现不及格学生汇总功能3、系统流程开始输入0-6选取功能输入5输入4输入3输入2退出程序输入0输入6输入学生信息将学生信息保存到文献浏览学生信息查询学生信息,输入1-3选取查询方式输入1,按学号查询输入2,按姓名查询输入3,按性别查询修改学生信息输入1输入0取消查询输入所需
3、修改学生学号输入0-9选取所需修改内容输入新信息修改完毕删除信息输入学生学号删除完毕不及格学生信息汇总三 详细设计 1、代码#include #include #includestruct student char num13; char name15; char cla10; int age; char sex4; char bir8; char addr15; char tele15; char course10; int score;int n=0;struct student stu100; /定义变量struct student *p;FILE *fp;void lr();void
4、ll();void cx();void sc();void xg();void hz();void bc();void xuehao();void xingming();void xingbie(); /定义函数void main() /主函数 int z; printf(+-+n); printf(| 欢迎使用学生信息管理系统 |n); printf(+-+n); printf(提示:为保证您操作得到保存,请按正常顺序退出系统_n); do printf(nttt-n); printf(ttt+ 主菜单 |n); printf(ttt-n); printf(ttt+ 1-录入学生信息 |n)
5、; printf(ttt+ 2-浏览学生信息 |n); printf(ttt+ 3-查询学生信息 |n); printf(ttt+ 4-删除学生信息 |n); printf(ttt+ 5-修改学生信息 |n);printf(ttt+ 6-不及格学生成绩汇总 |n); printf(ttt+ 0-退出系统 |n); printf(ttt-n); printf(请输入您选取:); scanf(%d,&z); switch(z) case 0 : break; case 1 :lr();break; case 2 :ll();break; case 3 :cx();break; case 4 :sc
6、();break; case 5 :xg();break;case 6 :hz();break; /函数调用 default:printf(n无效选项!); while(z!= 0);void lr() /录入函数 int y;if(n=0) p=stu; printf(-n); printf(ntt请输入学生学号:); scanf(%s,&stun.num); printf(ntt请输入学生姓名:); scanf(%s,&stun.name); printf(ntt请输入学生班级:); scanf(%s,&stun.cla); printf(ntt请输入学生年龄:); scanf(%d,&s
7、tun.age); printf(ntt请输入学生性别:); scanf(%s,&stun.sex); printf(ntt请输入学生出生年月:); scanf(%s,&stun.bir); printf(ntt请输入学生地址:); scanf(%s,&stun.addr); printf(ntt请输入学生电话:); scanf(%s,&stun.tele); printf(ntt请输入学生课程:); scanf(%s,&stun.course); printf(ntt请输入学生成绩:); scanf(%d,&stun.score); /输入学生信息 n+; p+; printf(请输入 0以
8、保存信息:); scanf(%d,&y); if(y=0) bc(); /调用函数 else printf(无效选项);return;void bc()/*保存函数*/ int i;if (fp=fopen(fstudent.txt,wb)=NULL) /打开一种只写文献,将要打开文献指针赋给fp,使fp与文献相联系 printf(ntt文献打开失败);exit(0); for (i=0;i100;i+) fwrite(&stui,sizeof(struct student),1,fp);/把信息输出大奥fp所指向文献中,返回值为写到 fp文献中数据项个数 fclose(fp); /关闭fp所
9、指文献,有错返回非0,否则返回0printf(ntt通讯录文献已保存);printf(ntt按回车键退出程序ntt);void ll()/*浏览函数*/int i;if(n!=0) printf(ntt* 如下为学生管理系统所有信息*);for (i=0;in;i+) printf(ntt学号: %s,stui.num);printf(ntt姓名: %s,stui.name); printf(ntt班级: %s,stui.cla);printf(ntt年龄: %d,stui.age);printf(ntt性别: %s,stui.sex);printf(ntt出生年月: %s,stui.bir)
10、;printf(ntt地址: %s,stui.addr);printf(ntt电话: %s,stui.tele);printf(ntt课程: %s,stui.course);printf(ntt成绩: %d,stui.score);printf(ttn); printf(ntt*);void cx()/*查询函数*/int c; do printf(n); printf(+-+n); printf(| 按学号查询 请按 1 |n); printf(| 按姓名查询 请按 2 |n); printf(| 按性别查询 请按 3 |n); printf(| 取消 请按 0 |n); printf(+-
11、+n); printf(请输入您选取:); scanf(%d,&c); switch(c) case 0:break; case 1:xuehao();break; case 2:xingming();break; case 3:xingbie();break; /调用函数 default: printf(n提示:无效选项!); break; while(c!= 0);void xingming()/按姓名查询int i;int j=0;char name15;printf(ntt* 按姓名查找 *);printf(ntt请输入要查学生姓名:);scanf(%s,name);for(i=0;i
12、n;i+)if(strcmp(name,stui.name)=0) /比较两个字符串,若相等,返回0j+;printf(ntt* 如下是您查找学生信息 *);printf(ntt学号: %s,stui.num);printf(ntt姓名: %s,stui.name); printf(ntt班级: %s,stui.cla);printf(ntt年龄: %d,stui.age);printf(ntt性别: %s,stui.sex);printf(ntt出生年月: %s,stui.bir);printf(ntt地址: %s,stui.addr);printf(ntt电话: %s,stui.tele)
13、;printf(ntt课程: %s,stui.course);printf(ntt成绩: %d,stui.score);printf(ntt*);printf(ntt与否继续查询?(y/n);getchar(); /输入选取if (getchar()=y) xingming(); /函数递归调用return ;if(j=0)printf(ntt未查找该学生信息:);printf(ntt按回车键返回菜单:);getchar();getchar();return;printf(ntt按回车键返回主菜单:);getchar();getchar(); void xuehao()/*按学号查询int i
14、;int j=0;char num13;printf(ntt* 按学号查找 *);printf(ntt请输入要查学生学号:);scanf(%s,&num);for(i=0;in;i+)if(strcmp(num,stui.num)=0)j+;printf(ntt* 如下是您查找学生信息 *);printf(ntt学号: %s,stui.num);printf(ntt姓名: %s,stui.name); printf(ntt班级: %s,stui.cla);printf(ntt年龄: %d,stui.age);printf(ntt性别: %s,stui.sex);printf(ntt出生年月:
15、%s,stui.bir);printf(ntt地址: %s,stui.addr);printf(ntt电话: %s,stui.tele);printf(ntt课程: %s,stui.course);printf(ntt成绩: %d,stui.score);printf(ntt*);printf(ntt与否继续查询?(y/n);getchar();if (getchar()=y) xuehao(); /函数递归调用return ;if(j=0)printf(ntt未查找该学生信息:);printf(ntt按回车键返回菜单:);getchar();getchar();return;printf(n
16、tt按回车键返回主菜单:);getchar();getchar(); void xingbie()/按性别查询int i;int j=0;char sex4;printf(ntt* 按性别查找 *);printf(ntt请输入要查学生性别:);scanf(%s,&sex);for(i=0;in;i+)for(i=0;in;i+)if(strcmp(sex,stui.sex)=0)j+;printf(ntt* 如下是您查找学生信息 *);printf(ntt学号: %s,stui.num);printf(ntt姓名: %s,stui.name); printf(ntt班级: %s,stui.cl
17、a);printf(ntt年龄: %d,stui.age);printf(ntt性别: %s,stui.sex);printf(ntt出生年月: %s,stui.bir);printf(ntt地址: %s,stui.addr);printf(ntt电话: %s,stui.tele);printf(ntt课程: %s,stui.course);printf(ntt成绩: %d,stui.score);printf(ntt*);printf(ntt与否继续查询?(y/n);getchar();if (getchar()=y) xingbie(); /函数递归调用return;if(j=0)prin
18、tf(ntt未查找该学生信息:);printf(ntt按回车键返回菜单:);getchar();getchar();return;printf(ntt按回车键返回主菜单:);getchar();getchar(); void xg()/*修改函数*/ char num13; char name15; char cla10; int age; char sex4; char bir8; char addr15; char tele15; char course10; char score; int i,j,c; if(n!=0) printf(请输入您要修改学生学号:); scanf(%s,&n
19、um); printf(n); for(i=0;in;i+) if(strcmp(num,stui.num)=0) j=i; printf(请选取您要修改学生信息内容:n); printf(+-+n); printf(| 姓名 请按 1 |n); printf(| 班级 请按 2 |n); printf(| 年龄 请按 3 |n); printf(| 性别 请按 4 |n); printf(| 出生年月 请按 5 |n); printf(| 地址 请按 6 |n); printf(| 电话 请按 7 |n); printf(| 课程 请按 8 |n); printf(| 成绩 请按 9 |n)
20、; printf(| 取消 请按 0 |n); printf(+-+n); printf(请输入您选取:); scanf(%d,&c); printf(n); switch(c) case 0:break; case 1:printf(请输入新姓名:); scanf(%s,stuj.name); strcpy(name,stuj.name); /复制字符串,返回name break; case 2:printf(请输入新班级:); scanf(%s,stuj.cla); strcpy(cla,stuj.cla); break; case 3:printf(请输入新年龄:); scanf(%d,
21、&stuj.age); strcpy(age,stuj.age);break; case 4:printf(请输入新性别:); scanf(%s,stuj.sex); strcpy(sex,stuj.sex);break; case 5:printf(请输入新出生年月:); scanf(%s,stuj.bir); strcpy(bir,stuj.bir);break; case 6:printf(请输入新地址:); scanf(%s,stuj.addr); strcpy(addr,stuj.addr);break; case 7:printf(请输入新电话:); scanf(%s,stuj.t
22、ele); strcpy(tele,stuj.tele);break; case 8:printf(请输入新课程:); scanf(%s,stuj.course); strcpy(course,stuj.course);break;case 9:printf(请输入新成绩:); scanf(%d,stuj.score); strcpy(score,stuj.score);break; default: printf(n无效选项!); break; printf(ntt按回车键返回主菜单:); getchar(); getchar(); /输入回车键 return; else printf(提示
23、:无学生数据,请输入数据!);void sc()/*删除函数*/int e=0;char name15;int j;int i;char id20;printf(ntt请输入要删除联系人姓名:);scanf(%s,name);getchar();for (i=0;in;i+) if (strcmp(stui.name,name)=0) printf(ntt如下是您要删除学生纪录:);e+;printf(ntt*);printf(ntt学号: %s,stui.num);printf(ntt姓名: %s,stui.name); printf(ntt班级: %s,stui.cla);printf(n
24、tt年龄: %d,stui.age);printf(ntt性别: %s,stui.sex);printf(ntt出生年月: %s,stui.bir);printf(ntt地址: %s,stui.addr);printf(ntt电话: %s,stui.tele);printf(ntt课程: %s,stui.course);printf(ntt成绩: %d,stui.score);printf(ntt*);printf(ntt与否删除?(y/n);if (getchar()=y) for (j=i;jn;j+)stuj=stuj+1;n-; printf(ntt删除成功);printf(ntt与否
25、继续删除?(y/n);getchar();if (getchar()=y) sc(); if (e=0) printf(ntt没有该学生纪录);printf(ntt与否继续删除?(y/n);if (getchar()=y) sc(); /函数递归调用 void hz()/*汇总函数*/int score;int i;int *p;for(i=0;in;i+)for(p=&stui.score;p(stui.score+n);p+) /用指针变量指向数组元素printf(%d,*p); /*p即为学生成绩if(*p60)printf(ntt* 如下是不及格学生信息 *);printf(ntt学号
26、: %s,stui.num);printf(ntt姓名: %s,stui.name); printf(ntt班级: %s,stui.cla);printf(ntt年龄: %d,stui.age);printf(ntt性别: %s,stui.sex);printf(ntt出生年月: %s,stui.bir);printf(ntt地址: %s,stui.addr);printf(ntt电话: %s,stui.tele);printf(ntt课程: %s,stui.course);printf(ntt成绩: %d,stui.score);printf(ntt*);四、 总结在这为期一周课程设计中,我发现了诸多问题,也正是由于发现了问题,我也学到了诸多东西。在写程序过程中总是会发现许多错误,并且发现自己诸多知识都没掌握好,因此在开始设计之前我把课本后几章又看了一遍。在写时候,我也是把书放在旁边,随时翻阅。这不但让我巩固了已学到知识,也让我弄懂了诸多问题。在这一周里,诸多时候程序没有错误却无法运营,本来束手无策我也学会通过调试程序来发现问题所在,然后解决问题。通过这一周实践操作,我学到了诸多有用东西,这无论是对后来学习还是生活均有无比重要价值。