6.2.6 删除记录
删除后的结果:
- 31 -
七、总结
本次C语言课程设计非常有意义,它锻炼了我们解决实际问题的能力。由于本人对编程
感兴趣,在编程方面有一定基础,因此尝试着由自己完成整个系统,在设计的过程里也遇到了很多麻烦,但是通过查询参考书和网络,一个个疑难迎刃而解。通过这次实践课,不只是强化了我们C语言编程的能力,更重要的是使我们学会了一种工作方法,学会了如何规划、组织、设计、实施项目,从整体到局部,从局部又到整体。此外,在设计流程图和编制报告的过程里也学了不少东西,学会了用office visio制作流程图,学会了组织报告等等。
八、源代码
#include
struct Class
//班级
//班名 //班号 //学生 //姓名 //性别 //学号
//年龄
//嵌套结构体,表示班级信息
{
char Cname[20]; char Cno[20]; };
struct Student
{
char Sname[20]; char Sex[10]; char Sno[20]; int Age; struct Class CInfo;
}StuInfo[N];
void menu(); //主菜单 void add(); //添加模块 void modify(); //修改模块 void Delete(); //删除模块 void browse(); //浏览模块 void quiry(); //查询模块 void stastic(); //统计模块
void bySname(); //按姓名查询,子模块 void bySno(); //按学号查询,子模块 void byCno(); //按班号查询,子模块
- 32 -
void StuMsg(); //返回全体学生统计信息,子模块 void Female(); //女生统计信息,子模块 void Male(); //男生统计信息,子模块 int FemaleNum(); //返回女生人数,子函数 float FemaleMG(); //返回女生平均年龄,子函数 int MaleNum(); //返回男生人数,子函数 float MaleMG(); //返回男生平均年龄,子函数 int StuNum(); //返回全体学生人数,子函数
float MG(); //返回全体学生的平均年龄,子函数
void main() {
menu(); getchar();
}
void menu() //菜单 {
int chose;
int right; do
{ system(\ //清屏 printf(\学生证管理系统\\n\
printf(\·······································\
printf(\ 菜单:\\t1-添加\\t2-修改\\t3-浏览全部\\t4-查询\\t5-统计\\t6-删除\\t7-退出\\n\ printf(\·······································\ printf(\请输入数字选择:\ scanf(\ if(chose<1||chose>7) {
printf(\输入错误,请重新输入!\\n\ right=1;
getchar();
}
else right=0; }while(right==1); switch(chose) { case 1:add(); break; case 2:modify(); break; case 3:browse(); break; case 4:quiry(); break;
case 5:stastic(); break;
- 33 -
case 6:Delete(); break;
case 7:exit(0); } }
void add() //添加学生信息,一次添加一条记录 { int num; int i; int age; char sno[20]; char sex[20]; char cno[20]; int right;
FILE*fp;
if((fp=fopen(\ //以读写方式打开 {
if((fp=fopen(\文件不存在则创建文件 {
printf(\文件不存在且创建失败,返回!\\n\
menu();
} printf(\请按照提示输入学生信息:\\n\\n\ printf(\姓名:\
scanf(\ do {
printf(\性别(男或女):\
scanf(\
if((strcmp(sex,\男\女\ {
printf(\输入错误,请输入男或女!\\n\ right=1;
getchar();
}
else right=0;
}while(right==1); strcpy(StuInfo[0].Sex,sex); do {
printf(\学号(11位):\ scanf(\ if(strlen(sno)!=11) {
- 34 -
printf(\输入错误,学号长度应为11位数!\\n\
right=1; getchar(); }
else right=0;
}while(right==1);
strcpy(StuInfo[0].Sno,sno); do {
printf(\年龄:\ scanf(\ if(age<=0||age>100)
{
printf(\年龄应在0-100之间,请重新输入年龄!\\n\
right=1; getchar();
}
else right=0; }while(right==1);
StuInfo[0].Age=age; do
{
printf(\班号(6位):\ scanf(\ if(strlen(cno)!=6)
{
printf(\输入错误,班号长度应为6位数!\\n\ right=1; getchar(); }
else right=0; }while(right==1);
strcpy(StuInfo[0].CInfo.Cno,cno); printf(\班名:\
scanf(\
fprintf(fp,\].CInfo.Cno,StuInfo[0].CInfo.Cname); fclose(fp); printf(\保存成功!\\n\ printf(\请按enter键返回主菜单!\\n\ getchar(); getchar(); menu();
- 35 -