源码传送门:
课程设计,班级档案管理系统-学生信息管理2,源代码-C++文档类资源-CSDN文库
课程设计报告
1、课程设计目的 |
C语言程序设计课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C语言的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C语言程序设计这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。
|
2、课程设计任务与要求: |
本次课程设计利用《C语言程序设计》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。
要求: 1、对系统进行功能需求分析 2、设计合理的数据结构和系统框架 3、编程简练,程序功能齐全,能正确运行 4、说明书、流程图要清楚 5、课题完成后必须按要求提交课程设计报告
任务: 班级档案管理系统 对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。
实现功能: 功能要求: (1)本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、年龄、备注。 (2)本系统显示这样的菜单: 请选择系统功能项:
(3)执行一个具体的功能之后,程序将重新显示菜单。 (4)将学生基本信息保存到文件中。 (5)进入系统之前要先输入密码。
1、分析课程设计题目的要求 2、写出详细设计说明 3、编写程序代码,调试程序使其能正确运行 4、设计完成的软件要便于操作和使用 5、设计完成后提交课程设计报告,课程设计报告内容包括:课程设计目的、设计任务与要求、设计说明书、设计成果和设计心得五个部分,具体要求见设计报告模板。
|
详细设计 1.需求分析 对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作管理。 本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、年龄、备注。 班级档案管理系统有7个功能,把这7个功能做成7个子函数,最后在main函数里进行对这8个子函数实现,来实现整个系统的操作。 2.设计思路 结构体数组: struct student { char name [20]; int num; char sex[4]; int age; char note[30]; /*备注*/ }; 程序的模块组成: bool Check(char pas[6])//密码验证,读取c:\1.txt void Get(struct student *arr , int n)//学生基本信息录入 void Display(struct student *arr , int n)//学生基本信息显示 void Save(struct student *arr,int n)//学生基本信息保存,保存在c:\student.txt void Modify(struct student *arr , int n)//学生基本信息修改 { 修改学号 修改姓名 修改性别 修改年龄 } void Delete(struct student *arr , int n)//学生基本信息删除 void Search(struct student *arr , int n)//学生基本信息查询 { 学号查询 姓名查询 性别查询 年龄查询 } 各函数的主要功能 密码验证函数:进入系统需要验证的密码,修改学生信息时也需要验证密码 录入函数:随时输入学生信息 显示函数:显示所有学生信息 删除函数:删除某学生的信息 修改函数:修改学生基本信息 查找函数:方便查找某个学生的信息 保存函数:保存好学生信息,以免丢失
|
4.课程设计成果 |
#include <stdio.h> #include <string.h> #include<stdlib.h>
struct student { int num; char name[20]; int age; char sex[4]; char note[30]; }; int n=0; struct student stu[100]; struct student *p;
bool Check(char ps[6]) //密码验证 { FILE *fp; char ch; char a[7]={""}; int i=0; if((fp=fopen("c:\1.txt","r"))==NULL) { printf("打开文件失败!n"); exit(0); } ch=fgetc(fp); while(ch!=EOF&&i<6) { a[i]=ch; ch=fgetc(fp); i++; } a[6]=''; if(!strcmp(ps,a)) { return true; } else { printf("密码错误n"); return false; } fclose(fp); }
void Save(struct student *arr,int n)//学生基本信息保存 { FILE *fp; fp=fopen("c:\student.txt","w+"); if(fp==NULL) { printf("文件不存在!n"); exit(0); } fwrite(stu,sizeof(struct student)*n,n,fp); fclose(fp); }
void Get()//录入函数 { int y; if(n==0) p=stu; do { printf("--------------------n"); printf("请输入学生的学号:"); scanf("%d",&p->num); printf("请输入学生的姓名:"); scanf("%s",p->name); printf("请输入学生的年龄:"); scanf("%d",&p->age); printf("请输入学生的性别:"); scanf("%s",p->sex); printf("请输入备注:"); scanf("%s",p->note); n++; p++; printf("n1.继续输入.n0.输入完毕.n"); printf("请选择:"); scanf("%d",&y); } while(y==1); printf("提示:输入完毕!你一共输入%d个n",n); }
void Display()//浏览函数 { int i; if(n!=0) { printf("学生总数:%dn", n); printf("学号t姓名t年龄t性别t备注n"); printf("-----------------------------------------------------n"); for(i=0;i<n;i++) printf("%dt%st%dt%st%sn",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].note); } else printf("提示:无学生数据,请输入数据!"); }
void fileread()//?????????????? { int i; FILE*fp; if((fp=fopen("c:\student.txt","r"))==NULL) { printf("文件不存在!n"); exit(0); } for(i=0;i<n;i++) { fread(stu,sizeof(struct student)*n,n,fp); printf("%dt%st%dt%st%sn",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].note); } fclose(fp); }
void Search()//查询函数 { int c; int w,x,i,j=0; char name[20],sex[20]; if(n!=0) { do { printf("n"); printf("|--------------------|n"); printf("| 按学号查询 请按 1 |n"); printf("| 按姓名查询 请按 2 |n"); printf("| 按性别查询 请按 3 |n"); printf("| 按年龄查询 请按 4 |n"); printf("| 取消 请按 0 |n"); printf("|--------------------|n"); printf("请输入您的选择:"); scanf("%d", &c); switch(c) { case 0:break; case 1: printf("请输入学生的学号;"); scanf("%d", &w); printf("n"); for(i=0;i<n;i++) if(stu[i].num==w) { printf("n学号t姓名t年龄t性别t备注n"); printf("%dt%st%dt%st%sn",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].note); j=1; } if(j==0) printf("提示:没有该学生记录,请核对!"); break; case 2: printf("请输入学生的姓名:"); scanf("%s", name); printf("n"); for(i=0;i<n;i++) if(strcmp(name,stu[i].name)==0) { printf("n学号t姓名t年龄t性别t备注n"); j=1; printf("%dt%st%dt%st%sn",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].note); } if(j==0) printf("提示:没有该学生记录,请核对!"); break; case 3: printf("请输入学生的性别:"); scanf("%s", sex); printf("n"); for(i=0;i<n;i++) if(strcmp(sex,stu[i].sex)==0) { printf("n学号t姓名t年龄t性别t备注n"); j=1; printf("%dt%st%dt%st%sn",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].note); } if(j==0) printf("提示:没有该学生记录,请核对!"); break; case 4: printf("请输入学生的年龄:"); scanf("%d",&x); printf("n"); for(i=0;i<n;i++) if(stu[i].age==x) { printf("n学号t姓名t年龄t性别t备注n"); j=1; printf("%dt%st%dt%st%sn",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].note); } if(j==0) printf("提示:没有该学生记录,请核对!"); break; default: printf("n提示:无效选项!"); break; } } while(c!= 0); } else printf("提示:无学生数据,请输入数据!"); return; }
void Modify()//修改函数 { long int num; int i,j,c; if(n!=0) { printf("请输入您要修改的学生的学号:"); scanf("%d", &num); printf("n"); for(i=0;i<n;i++) if(stu[i].num==num) j=i; do { printf("请选择您要修改的学生的信息内容:n"); printf("|----------------------|n"); printf("| 姓名 请按 1 |n"); printf("| 年龄 请按 2 |n"); printf("| 性别 请按 3 |n"); printf("| 学号 请按 4 |n"); printf("| 备注 请按 5 |n"); printf("| 取消 请按 0 |n"); printf("|----------------------|n"); printf("请输入您的选择:"); scanf("%d", &c); printf("n"); switch(c) { case 0:break; case 1:printf("请输入新姓名:"); scanf("%s",stu[j].name); break; case 2:printf("请输入新年龄:"); scanf("%d",&stu[j].age); break; case 3:printf("请输入新性别:"); scanf("%s",stu[j].sex); break; case 4:printf("请输入新学号:"); scanf("%d",&stu[j].num); break; case 5:printf("请输入新备注:"); scanf("%s",stu[j].note); break; default: printf("n无效选项!"); break; }
} while(c!= 0); } else printf("提示:无学生数据,请输入数据!"); }
void Delete()//删除函数 { long int num; int i,j,e; if(n!=0) { printf("学号t姓名t年龄t性别t备注n"); printf("-----------------------------------------------------n"); for(i=0;i<n;i++) printf("%dt%st%dt%st%sn",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].note); printf("请输入您要删除的学生的学号:"); scanf("%d", &num); printf("n"); for(i=0;i<n;i++) if(num==stu[i].num) j=i; if(j!=(n-1)) { for(e=i-1;e<n;e++,j++) { stu[j].num=stu[j+1].num; strcpy(stu[j].name,stu[j+1].name); strcpy(stu[j].sex,stu[j+1].sex); stu[j].age=stu[j+1].age; strcpy(stu[j].note,stu[j+1].note); n--;p--; } } else {n--;p--;} printf("提示:删除完毕!"); } else printf("提示:无学生数据,请输入数据!"); }
void main() { char ps[6]; bool flag=false; printf("请输入密码:n"); scanf("%s",ps); flag=Check(ps); if(flag) { int z; printf("+---------------------------+n"); printf("| 欢迎使用学生信息管理系统 |n"); printf("+---------------------------+n"); printf("提示:为保证您的操作得到保存,请按正常顺序退出系统^_^n"); do { printf("nt|------------------------------|n"); printf("t| 主菜单 |n"); printf("t|------------------------------|n"); printf("t| [1]----录入学生信息 |n"); printf("t| [2]----浏览学生信息 |n"); printf("t| [3]----查询学生信息 |n"); printf("t| [4]----删除学生信息 |n"); printf("t| [5]----修改学生信息 |n"); printf("t| [0]----退出系统并保存 |n"); printf("t|------------------------------|n"); printf("请输入您的选择:"); scanf("%d", &z); switch(z) { case 0 :Save(stu,n);break; case 1 :Get();break; case 2 :Display();break; case 3 :Search();break; case 4 :Delete();break; case 5 :Modify();break; default:printf("n无效选项!"); } } while(z!= 0); } }
|
5.课程设计心得 班级档案管理系统,我感觉和书上的例题10.4相似,但是多了一些其他功能,我一开始是想将功能先全部实现,然后在将文件的保存、文件的显示输入,程序中,多次用到选择case,一开始不知道,一直用if else,不断重复,后来翻书偶尔看见,才使用。Bool check()这个是网上查的,一开是用for()if{i!=x} 实现的,但感觉有点烦,所以换了,最终感觉差不多。不知道为什么,我用TXT保存,最终直接看时没有我想要的效果。 做这次课设,我感觉将c语言复习了一遍,能力说没提高是假的,提高太多也不可能,总之,就是能够自己编译一个能运用到实际生活中的系统,也许功能上有些欠缺,界面不好看,但这是从无到有的过程,我相信自己以后的计算机生涯会越来越好。 |
最后
以上就是英勇耳机最近收集整理的关于班级档案管理系统_学生信息管理2的全部内容,更多相关班级档案管理系统_学生信息管理2内容请搜索靠谱客的其他文章。
发表评论 取消回复