C语言实现学生证管理系统

需积分: 10 10 下载量 184 浏览量 更新于2024-07-23 4 收藏 171KB DOC 举报
"这篇文档是关于C语言实现的学生证管理系统,由湖北工业大学计算机学院的学生朱浩胜完成。系统包括录入、修改、删除、查询、显示班级信息和统计功能,使用结构体存储学生证信息,链表实现数据操作,并通过文件进行数据持久化。" 在设计C语言学生证管理系统时,我们需要考虑以下几个关键知识点: 1. **结构体**:学生证信息通常包括学生的姓名、学号、班级、出生日期等。在C语言中,这些信息可以通过定义结构体类型来组合成一个完整的“学生证”对象。例如: ```c typedef struct { char name[50]; int id; char class[20]; // 其他信息... } Student; ``` 2. **链表**:链表是一种动态数据结构,用于存储学生证信息。它允许在不预先知道学生数量的情况下添加、删除和修改学生信息。C语言中链表节点通常包含数据(如上述结构体)和指向下一个节点的指针。 3. **文件操作**:为了持久化存储学生证信息,需要实现文件读写操作。C语言中的`fopen`、`fwrite`、`fread`、`fprintf`、`fscanf`等函数用于打开、读取、写入文件。在添加、修改、删除学生信息后,需要将链表中的数据写入文件,同时在启动程序时从文件加载数据到链表。 4. **菜单驱动的用户界面**:程序通过键盘输入实现交互,提供一个菜单供用户选择操作,如录入、修改、查询、删除、显示班级信息和统计。菜单通常用循环结构实现,直到用户选择退出。 5. **函数设计**:每个功能对应一个或多个函数,如`add_student`、`update_student`、`delete_student`、`display_student`、`display_class_students`、`statistics`等。这些函数接收必要的参数(如学号、班级编号),执行相应操作,并可能与文件操作函数配合。 6. **错误处理**:在用户输入数据时,应提供清晰的提示,并进行有效性检查,防止非法输入。例如,验证学号是否为数字,班级编号是否符合格式,学生信息是否存在等。 7. **流程图和设计文档**:项目开发过程中,使用流程图帮助设计和理解程序流程,如用例图、活动图或状态机图。在文档中,详细描述每个模块的功能、接口以及它们之间的关系。 8. **调试和测试**:确保每个功能都通过了单元测试,整个系统也需进行集成测试,以验证所有功能的正确性和系统的稳定性。 通过以上知识点的实施,我们可以构建一个功能齐全、易于使用的C语言学生证管理系统,满足题目中提出的所有要求。此外,还可以考虑增加如按姓名或班级排序、导出报表等扩展功能,以提高系统的实用性和灵活性。
2011-06-03 上传
#include #include #include #include #define STU struct student STU {long num; char name[20]; int sex; long classes; long birth; }; /***************************input****************************/ void input(int k,STU *st) {int n,i; FILE *fp; long b; STU student_1; printf("Please input your number[ ]\b\b\b\b\b\b\b"); scanf("%ld",&b); for(i=0;i<k;i++) if(st[i].num==b) {printf("\nThe school number is repeat!\n"); free(st);menu();} else {printf("\nPlease input your name[ ]\b\b\b\b\b\b\b\b\b"); scanf("%s",student_1.name); printf("\nPlease input you sex male(1) or female(2)[ ]\b\b\b\b\b\b\b"); scanf("%d",&student_1.sex); printf("\nPlease input you Class[ ]\b\b\b\b\b\b\b"); scanf("%ld",&student_1.classes); printf("\nPlease input you date of birth[ ]\b\b\b\b\b\b\b"); scanf("%ld",&student_1.birth); fp=fopen("student1.txt","ab"); if(!fp) {printf("Document error! "); exit(0);} else {fprintf(fp,"%ld%s%d%ld%ld",b,student_1.name,student_1.sex,student_1.classes,student_1.birth); printf("%ld%s%d%ld%ld",b,student_1.name,student_1.sex,student_1.classes,student_1.birth); n=k+1; rewind(fp); fprintf(fp,"%d",n); fclose(fp); free(st); menu();} }} /******************************inquiries********************************/ void inquiries(int k,STU *st) {int i,j=0,n,p,w; long a; do {printf("\n\t\t**************INQUIRIE MENU**************\n\n"); printf("\t\t\t1.Inquiries school number\n"); printf("\t\t\t2.Inquiries classes\n"); printf("\t\t\t3.Inquiries date of birth\n"); printf("\t\t\t4.Back to menu\n"); printf("\n\n\t\t******************************************\n"); printf("Choice your number(1-4)[ ]\b\b\b\b\b\b\b"); scanf("%d",&n); if(n4) {w=1;getchar();} else w=0; }while(w==1); switch(n) {case 1:j=0;printf("Please input your inquiries school number[ ]\b\b\b\b\b\b\b"); scanf("%ld",&a); for(i=0;i<k;i++) {if(st[i].num==a) {j=1;p++; printf("%ld%s%d%ld%ld",st[i].num,st[i].name,st[i].sex,st[i].classes,st[i].birth);} } if(!j) {printf("There is no this school number!");} else {printf("Success.There are %d student.",p);} inquiries(k,st);break; case 2:j=0;printf("Please input you class number[ ]\b\b\b\b\b\b\b"); scanf("%ld",&a); for(i=0;i<k;i++) {if(st[i].classes==a) {i=1;p++; printf("%d%s%d%d%ld",st[i].num,st[i].name,st[i].sex,st[i].classes,st[i].birth);} } if(!j) {printf("There is no this Class!");} else {printf("Success.There are %d student.",p);} inquiries(k,st);break; case 3:j=0; printf("Please input you date of birth[ ]\b\b\b\b\b\b\b"); scanf("%ld",&a); for(i=0;i<k;i++) {if(st[i].birth==a) {i=1;p++; printf("%d%s%d%d%ld",st[i].num,st[i].name,st[i].sex,st[i].classes,st[i].birth);} } if(!j) {printf("There is no this date of birth!");} else {printf("Success.There are %d student.",p);} inquiries(k,st);break; case 4:free(st);menu();break; } } /***************************change************************/ void change(int k,STU *st) {int a,i,n,w,j=0,p,q=0; FILE *fp; fp=fopen("student1","wb"); if(!fp) {printf("Document error! "); exit(0);} printf("Plese input you change number[ ]\b\b\b\b\b\b\b"); scanf("%ld",&a); for(i=0;i<k;i++) if(st[i].num==a) {j=1;p=i; do {printf("\n\t\t***************CHANGES MENU***************"); printf("\n\t\t\t1.Change Number"); printf("\n\t\t\t2.Change Name"); printf("\n\t\t\t3.Change Sex"); printf("\n\t\t\t4.Change classes"); printf("\n\t\t\t5.Change Date of birth"); printf("\n\t\t\t6.Back"); printf("\n\t\t***********************************************\n"); printf("\nChoice your number(1-6)[ ]\b\b\b\b\b\b\b"); scanf("%d",&n); if(n6) {w=1;getchar();}