学生学籍管理系统源码怎么弄_学籍学历查询

学生学籍管理系统源码怎么弄_学籍学历查询

C语言课程设计-学生学籍管理系统源码


主要内容:


开发一个简单的学生学籍管理系统 ,实现以下功能:
【基本功能】

  1. 实现学院、专业和班级信息的维护管理。
  2. 实现学生信息的维护管理。
  3. 实现学生学籍信息的维护管理。
  4. 实现学生学籍信息的查询管理。

【扩展功能】
可以按照自己对学生学籍管理系统的需求理解进行扩展。比如:(1)权限处理 (2)模糊查询(3)综合查询(4)统计功能等。总之,可以根据自己的需求分析进行功能扩展。


任务要求:


一、提交材料应包括:(1)系统源代码 (2)课程报告
二、整个设计过程具体要求
(1)需求分析 要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;
(2)设计过程 要求学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等);
(3)实现过程 要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;
(4)总结阶段 按照要求完成系统设计和实现报告,并进行总结、答辩。


源码:

myproject.h

#include<stdio.h> #include<stdlib.h> #include<string.h>  #define LEN 16//最大字符数,可根据实际修改  struct student { 
    char StudentId[LEN]; //学生学号  char StudentName[LEN]; //学生姓名  char StudentAge[LEN]; //学生年龄  char StudentSex[LEN]; //学生性别  char StudentCollege[LEN]; //学生学院  char StudentMajor[LEN]; //学生专业  char StudentClass[LEN]; //学生班级  char StudentTelephoneNumber[LEN]; //学生电话  struct student *next; }*head,*p,*q,*p1,*p2,*q1,*q2;//head表示开头,*p,*q,*p1,*p2,*q1,*q2是在函数中用到的结构体指针  void Add(void); //增添函数  void Delete(void); //删除函数  void Seek(void); //查找函数  void Modify(void); //修改函数  void Browse(void); //浏览函数  void Statistics(void); //统计函数  void Save(void); //保存函数  void Read(void); //读取函数  

Main.c

#include"myproject.h" int n = 0;//n用来记录学生信息数据输入量 int main(void) { 
    system("color 0F");//背景色为黑色,前景色为亮白色  int a=1;//main中两个循环的执行条件和switch的表达式  char acc[16],pas[16]; while(a!=0)//a判断循环的执行  { 
    system("cls"); printf("★请输入账号:\n"); scanf("%s",acc); printf("★请输入密码:\n"); scanf("%s",pas); if((strcmp(acc,"admin")==0)&&(strcmp(pas,"")==0)) { 
    system("cls"); printf("欢迎使用学生学籍管理系统\n"); printf("\n★第一次进入系统请先保存学生信息建立相关文档!★\n"); printf("\n★每次使用该系统时请读取学生信息以便对其操作!★\n"); printf("\n★每次退出该系统时请保存学生信息一方数据丢失!★\n"); printf("\n★请按系统显示序号正确输入,否则将会出现错误!★\n"); printf("\n★系统还有很多功能有待完善,欢迎联系提供意见!★\n\n"); system("pause"); while(a!=0) { 
    system("cls"); 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("* ★0.退出学生系统 *\n"); printf("\n"); printf(" 请从序号0-8中选择:"); scanf("%d",&a); if(a>=0 && a<=8) { 
    switch(a)//a控制子函数的调用  { 
    case 1: Add();break; case 2: Browse();break; case 3: Seek();break; case 4: Delete();break; case 5: Modify();break; case 6: Statistics();break; case 7: Read();break; case 8: Save();break; } } else//a的值输入错误  { 
    printf("★您的输入错误,将返回主菜单!★\n"); system("pause"); } } } else//账号密码输入错误  { 
    printf("★账号或密码输入错误,请再次尝试!★\n"); system("pause"); } } return 0; } 

Add.c

#include"myproject.h" extern int n; void Add(void) { 
    p1=(struct student *)malloc(sizeof(struct student));//动态内存分配  int m; printf("*输入样例: lihua 20 M xinxixueyuan jisuanji jike2001 *\n"); printf("*请 不 要 重 复 输 入 学 号 哦 !*\n"); if(n==0) { 
    head=p1; printf("学生学号:"); scanf("%s",&p1->StudentId); } else { 
    p2->next=p1; loop: printf("学生学号:"); scanf("%s",&p1->StudentId); q=head; m = n; while(m--)//m控制循环次数  { 
    if(strcmp(p1->StudentId,q->StudentId)==0) { 
    printf("\n您输入的学号重复,请重新输入!\n"); goto loop; } q=q->next; } } printf("学生姓名:"); scanf("%s",&p1->StudentName); printf("学生年龄:"); scanf("%s",&p1->StudentAge); printf("学生性别:"); scanf("%s",&p1->StudentSex); printf("学生学院:"); scanf("%s",&p1->StudentCollege); printf("学生专业:"); scanf("%s",&p1->StudentMajor); printf("学生班级:"); scanf("%s",&p1->StudentClass); printf("学生电话:"); scanf("%s",&p1->StudentTelephoneNumber); p2=p1; //p2指向p1所在的地址 p2->next=NULL; //链表结束标志 n++; //n用于记录数据输入量  system("pause"); //系统暂停函数  system("cls"); //系统清屏函数  } 

Delete.c

#include"myproject.h" extern int n; void Delete(void) { 
    if(n!=0) { 
    char a[LEN]; int flag=0;//flag为标志变量,用于判断输入学号后是否能正常操作  printf("请输入要删除的学号:"); scanf("%s",&a); p=head; if(strcmp(head->StudentId,a)==0) { 
    q1=head; head=head->next; free(q1);//释放该内存地址  flag=1; } else { 
    p=head; do { 
    if(strcmp(p->StudentId,a)==0) { 
    q1=p; q2->next=p->next; free(q1); flag=1; break; } q2=p; //q2暂时指向p,之后p再指向下一个节点,如果这个是要删除的节点那么q2指向这个节点的next的地址  p=p->next; }while(p!=NULL); } if(flag==0)//对输入学号进行判断  { 
    printf("\n★学号输入有误,返回主菜单!★\n"); } else { 
    printf("\n★数据已经被删除!★\n"); n--; } } else { 
    printf("\n★出错啦,还没有添加数据呢!★\n"); } system("pause"); system("cls"); } 

Seek.c

#include"myproject.h" extern int n; void Seek(void) { 
    int b,flag=0;//flag为标志变量,用于判断输入学号后是否能正常操作 char a[LEN]; if(n!=0) { 
    printf("\n1.按学号查找:\n"); printf("2.按学院查找:\n"); printf("3.按专业查找:\n"); printf("4.按班级查找:\n"); printf("请从序号1-4中选择:"); scanf("%d",&b); if(b>=1 && b<=4) { 
    printf("请输入要查找的名称:"); scanf("%s",&a); p=head;//指针指向开头 switch(b) { 
    case 1://按学号查找  do { 
    if(strcmp(a,p->StudentId)==0) { 
    printf("\n信息已被找到:\n学号\t\t姓名\t\t年龄\t性别\t学院\t\t专业\t\t班级\t\t电话\n"); printf("%-16s%-16s%-8s%-8s%-16s%-16s%-16s%-16s\n",p->StudentId,p->StudentName,p->StudentAge,p->StudentSex,p->StudentCollege,p->StudentMajor,p->StudentClass,p->StudentTelephoneNumber); flag=1; } p=p->next;//指针指向下一个节点  }while(p!=NULL); break; case 2://按学院查找  do { 
    if(strcmp(a,p->StudentCollege)==0) { 
    printf("\n学号\t\t姓名\t\t年龄\t性别\t学院\t\t专业\t\t班级\t\t电话\n"); printf("%-16s%-16s%-8s%-8s%-16s%-16s%-16s%-16s\n",p->StudentId,p->StudentName,p->StudentAge,p->StudentSex,p->StudentCollege,p->StudentMajor,p->StudentClass,p->StudentTelephoneNumber); flag=1; } p=p->next; }while(p!=NULL); break; case 3://按专业查找  do { 
    if(strcmp(a,p->StudentMajor)==0) { 
    printf("\n学号\t\t姓名\t\t年龄\t性别\t学院\t\t专业\t\t班级\t\t电话\n"); printf("%-16s%-16s%-8s%-8s%-16s%-16s%-16s%-16s\n",p->StudentId,p->StudentName,p->StudentAge,p->StudentSex,p->StudentCollege,p->StudentMajor,p->StudentClass,p->StudentTelephoneNumber); flag=1; } p=p->next; }while(p!=NULL); break; case 4://按班级查找  do { 
    if(strcmp(a,p->StudentClass)==0) { 
    printf("\n学号\t\t姓名\t\t年龄\t性别\t学院\t\t专业\t\t班级\t\t电话\n"); printf("%-16s%-16s%-8s%-8s%-16s%-16s%-16s%-16s\n",p->StudentId,p->StudentName,p->StudentAge,p->StudentSex,p->StudentCollege,p->StudentMajor,p->StudentClass,p->StudentTelephoneNumber); flag=1; } p=p->next; }while(p!=NULL); break; } system("pause"); if(flag==0)//a的值输入错误  { 
    printf("\n★输入有误,返回主菜单!★\n"); system("pause"); } } else//b的值输入错误  { 
    printf("★输入错误,返回主菜单!★\n"); system("pause"); } } else//未添加数据  { 
    printf("\n★出错啦,还没有添加数据呢!★\n"); system("pause"); } } 

Modify.c

#include"myproject.h" extern int n; void Modify(void) { 
    if(n!=0) { 
    int b,flag=0;//flag为标志变量,用于判断输入学号后是否能正常操作  char a[LEN]; printf("请输入要修改的学号:"); scanf("%s",&a); p=head; do { 
    if(strcmp(a,p->StudentId)==0) { 
    printf("\n被修改人信息如下:\n学号\t\t姓名\t\t年龄\t性别\t学院\t\t专业\t\t班级\t\t电话\n"); printf("%-16s%-16s%-8s%-8s%-16s%-16s%-16s%-16s\n",p->StudentId,p->StudentName,p->StudentAge,p->StudentSex,p->StudentCollege,p->StudentMajor,p->StudentClass,p->StudentTelephoneNumber); flag=1; break; } p=p->next; }while(p!=NULL); if(flag==0) { 
    printf("\n★学号输入有误,返回主菜单!★\n"); } else { 
    printf("\n\n1.修改学号\n2.修改姓名\n3.修改年龄\n4.修改性别\n5.修改学院\n6.修改专业\n7.修改班级\n8.修改电话\n9.退出修改\n\n"); scanf("%d",&b); switch(b) { 
    case 1: printf("学号修改为:"); scanf("%s",&p->StudentId);break; case 2: printf("姓名修改为:"); scanf("%s",&p->StudentName);break; case 3: printf("年龄修改为:"); scanf("%s",&p->StudentAge);break; case 4: printf("性别修改为:"); scanf("%s",&p->StudentSex);break; case 5: printf("学院修改为:"); scanf("%s",&p->StudentCollege);break; case 6: printf("专业修改为:"); scanf("%s",&p->StudentMajor);break; case 7: printf("班级修改为:"); scanf("%s",&p->StudentClass);break; case 8: printf("电话修改为:"); scanf("%s",&p->StudentTelephoneNumber);break; case 9: break; } printf("\n\n★操作成功!★\n\n"); } } else { 
    printf("\n★出错啦,还没有添加数据呢!★\n"); } system("pause"); system("cls"); } 

SaveRead.c

#include"myproject.h" extern int n; void Save(void) { 
    FILE *fp; if((fp=fopen("studentdata.txt","wb"))==NULL)//只写打开或新建一个二进制文件,只允许写数据 { 
    printf("\n错误,无法打开文件!\n"); exit(0); } p=head; while(p!=NULL) { 
    if(fwrite(p,sizeof(struct student),1,fp)!=1)//将数据写入文件  { 
    printf("\n写入数据出错\n"); fclose(fp); break; } p=p->next; } fclose(fp);//文件关闭  printf("\n★存储完成★\n"); system("pause"); system("cls"); } void Read(void) { 
    FILE *fp; if((fp=fopen("studentdata.txt","rb+"))==NULL)//读写打开一个二进制文件,允许读数据  { 
    printf("\n错误,无法打开文件!\n"); exit(0); } do { 
    p1=malloc(sizeof(struct student)); if(n==0)//判断链表开头  { 
    head=p1; } else { 
    p2->next=p1; //p2的结尾所指向的地址是p1  } fread(p1,sizeof(struct student),1,fp);//对文件数据进行读取  p2=p1; n++; }while(p2->next!=NULL); fclose(fp); printf("\n★读取完成!★\n"); system("pause"); system("cls"); } 

Statistics.c

#include"myproject.h"  extern int n; void Statistics(void) { 
    int c,d=0; char a[LEN]; printf("\n当前已存储%d个学生的学籍信息!\n",n); printf("请输入你想统计的人数:\n"); printf("1:统计学院人数\n"); printf("2:统计专业人数\n"); printf("3:统计班级人数\n"); scanf("%d",&c); if(c>=1&&c<=3) { 
    printf("请输入要统计的名称:"); scanf("%s",a); p=head; switch(c) { 
    case 1://统计学院人数  do { 
    if(strcmp(a,p->StudentCollege)==0) { 
    d++; } p=p->next; }while(p!=NULL); break; case 2://统计专业人数  do { 
    if(strcmp(a,p->StudentMajor)==0) { 
    d++; } p=p->next; }while(p!=NULL); break; case 3://统计班级人数  do { 
    if(strcmp(a,p->StudentClass)==0) { 
    d++; } p=p->next; }while(p!=NULL); break; } printf("统计得到人数为%d人\n",d); system("pause"); } else { 
    printf("★输入错误,返回主菜单!!★\n"); system("pause"); } } 

Browse.c

#include"myproject.h" extern int n; void Browse(void) { 
    if(n!=0) { 
    p=head;//p先指向开头 printf("学号\t\t姓名\t\t年龄\t性别\t学院\t\t专业\t\t班级\t\t电话\n");//\t为水平制表符,相当于8个空格  do { 
    printf("%-16s%-16s%-8s%-8s%-16s%-16s%-16s%-16s\n",p->StudentId,p->StudentName,p->StudentAge,p->StudentSex,p->StudentCollege,p->StudentMajor,p->StudentClass,p->StudentTelephoneNumber); p=p->next;//p打印结束 把p指向next以判断下一个区域有没有内容 }while(p!=NULL);//只要p指向的内存区域有数据,就打印内容 } else { 
    printf("\n★还没有添加数据呢!★\n"); } system("pause"); system("cls"); } 

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/168043.html

(0)
上一篇 2024年 7月 2日
下一篇 2024年 7月 2日

相关推荐

关注微信