学生信息管理系统C语言课程设计报告1
- 格式:pdf
- 大小:1.15 MB
- 文档页数:41


c语言课程设计学生信息管理系统一、背景介绍二、需求分析1.功能需求2.性能需求三、系统设计1.系统架构设计2.数据库设计3.界面设计四、系统实现与测试1.环境搭建与配置2.代码实现3.测试与调试五、总结一、背景介绍学生信息管理系统是一个基本的信息管理系统,用于管理学生的基本信息和课程成绩等数据。
在高校中,学生信息管理系统是一个非常重要的工具,可以帮助教师和管理员更好地了解学生情况,为教育教学提供数据支持。
C语言作为一门非常重要的编程语言,在计算机科学领域得到了广泛应用。
在C语言课程设计中,开发一个学生信息管理系统是非常有意义的。
二、需求分析1.功能需求(1)添加学生信息:包括姓名、性别、年龄等基本信息以及选修课程成绩等详细信息。
(2)删除学生信息:根据学号或姓名删除已有的学生信息。
(3)修改学生信息:根据学号或姓名修改已有的学生信息。
(4)查询学生信息:根据姓名或年龄等条件查询学生基本信息以及选修课程成绩等详细信息。
(5)统计学生信息:统计学生的人数、男女比例、平均年龄等信息。
2.性能需求(1)系统响应速度快,操作简单方便。
(2)数据存储稳定可靠,数据安全性高。
三、系统设计1.系统架构设计本系统采用B/S架构,即浏览器/服务器架构。
用户通过浏览器访问服务器上的网站,进行学生信息管理操作。
服务器端采用C语言编写,通过CGI技术实现与客户端的交互。
客户端使用HTML、CSS和JavaScript等技术实现用户界面。
2.数据库设计本系统采用MySQL数据库存储学生信息和课程成绩等数据。
数据库中包含两张表:学生表和成绩表。
其中,学生表包含字段:学号、姓名、性别、年龄;成绩表包含字段:学号、课程名称、成绩。
3.界面设计本系统的界面应该简洁明了,易于操作。
主要分为以下几个模块:(1)登录模块:用户输入账号和密码登录系统。
(2)添加模块:用户可以添加新的学生信息和课程成绩等数据。
(3)删除模块:用户可以根据学号或姓名删除已有的学生信息。
《高级语言程序设计》说明书设计题目:学籍信息管理系统目录题目要求 (3)需求分析 (3)总体设计 (3)需求分析 (3)解题的思路 (3)定义结构 (3)主程序的结构 (3)功能菜单模块 (6)输入模块 (6)检查输入错误模块 (6)输出模块 (7)查询模块 (7)排序模块 (8)保存模块 (9)读入模块 (10)运行与测试报告 (11)设计体会 (13)附录 (13)参考文献 (20)学籍信息管理系统一,题目要求1、需求分析:学生基本信息、学生成绩基本信息要存入文件当中,因而要提供文件的输入输出操作;查询功能要求提供查找和显示操作;删除功能要求实现删除操作;排序功能要求实现排序操作;另外还应该提供键盘式选择菜单以实现功能选择。
2、总体设计:整个系统可以设计为数据录入模块、数据查询模块、数据删除模块和数据排序模块。
二,需求分析根据题目要求,学籍信息管理系统需要输入和输出等操作,在程序中,需要数据录入,查询,删除,删除和排序功能。
三,解题的思路typedef struct stud // 学生信息结构{long num;char name[20];float score;}Stud;struct stud_type{struct stud;char k[3];int jilu;};typedef struct node{Stud student;struct node *next;}Node;2.主程序的结构void main(){char choose;int flag=1;while (flag){duru(stu); // 调用读入函数,读取文件信息;menu(); // 调用功能菜单函数,显示菜单项。
printf("请选择:");choose=getchar();switch(choose){case '1': read(); //调用建立链表的函数;输出链表信息;print();printf("\nPress any key Continue ");//getchar();getchar();break;case '2': //调用按学号查找学生信息的函数;并输出查找结果信息; long c;printf("input the number you want to find:");scanf("%ld",&c);find(c);printf("\nPress any key Continue.");break;case '3'://调用按姓名查找学生信息的函数;并输出查找结果信息;char s[20];printf("input the name you want to find:");scanf("%s",s);searchname(s);printf("\n Press any key Continue.");getchar();getchar();break;case '4'://调用根据学号删除某个学生信息的函数;并输出删除后的链表信息; Node *h;long n;printf("input the number you want to delete:");scanf("%ld",&n);h=del(n);if(h==NULL) printf("No find the student \n");else print();printf("\n Press any key Continue.");getchar();getchar();break;case '5'://调用插入新的学生信息的函数;并输出插入后的链表信息;long a;printf("input the number for the new:\n");scanf("%ld",&a);inser(a); 2 ;print();printf("\n Press any key Continue.");getchar();getchar();break;case '6'://调用按分数降序排序输出的函数;并输出排序后的链表信息;sort(1);print();sort(0);printf("\nPress any key Continue.");getchar();getchar();case '7': Save(stu); //调用保存函数,保存文件信息;print();printf("\nPress any key Continue ");//getchar();getchar();break;case '0'://结束程序运行!flag=0;printf("\n *** The End! ***\n");break;default: printf("\n Wrong Selection ! (选择错误,重选) \n");getchar();}}}学籍管理系统数数数数数据据据据据录查删排储入询除序存程序结束3.功能菜单模块void menu() // 综合作业功能菜单{printf(" \n 学生信息管理系统 \n");printf(" \n 菜单 \n\n");printf(" \n 1. 数据录入 \n");printf(" \n 2. 数据查询(学号) \n");printf(" \n 3. 数据查询(姓名) \n");printf(" \n 4. 数据删除 \n");printf(" \n 5.数据插入\n");printf(" \n 6.数据排序\n");printf(" \n 7.保存文件信息\n");printf(" \n 0.退出\n\n"); }4.输入模块void read(void){long a;printf("input the number:");scanf("%ld",&a);while(a>0){ 3 ;inser(a);printf("input the number:");scanf("%ld",&a);}5.检查输入错误模块void inser(long b){Node *last,*current,*p;current=head;while(current!=NULL&&b>current->student.num){last=current;current=current->next;}if(current==NULL||b<current->student.num){printf("input the name,score:");p=(Node *)malloc(sizeof(Node));p->student.num=b;scanf("%s%f",p->,&p->student.score);p->next=NULL;if(current==head){p->next=head;head=p;}Else{p->next=current;last->next=p;}else if(b==current->student.num)printf("error input a different number:");}6.输出模块void print(){Node *p=head;printf(" 学号姓名成绩:\n");while(p!=NULL){printf("%ld %s %f\n",p->student.num,p->,p->student.score);p=p->next;} 4 ;printf("\n");}7.查询模块void find(long b){Node *p=head;while(p!=NULL&&b!=p->student.num)p=p->next;if(!p) printf("No found\n");else{printf(" 学号姓名成绩\n");printf("%ld %s %f\n",p->student.num,p->,p->student.score);}}void searchname(char *s){Node *p=head;int flag=0;printf(" 学号姓名成绩:\n");while(p!=NULL){if(strcmp(p->,s)==0){printf("%ld %s %f\n",p->student.num,p->,p->student.score);flag=1;p=p->next;continue;}else p=p->next;if(!flag) printf("No find");}Node * del(long n){Node *p=head,*last;while(p->student.num!=n){last=p;p=p->next;}if(p==NULL) return p;else if(p==head) head=p->next;else last->next=p->next; 5 ;return head;}8.排序模块void sort(int flag){/*flag==1按分数排序else 按学号排序 */Node *p1,*p2,*k;float t1;long t2;char s[20];for(p1=head;p1->next;p1=p1->next){k=p1;for(p2=p1->next;p2;p2=p2->next)if(flag==1&&k->student.score<p2->student.score||!flag&&k->student.num>p2->student .num)k=p2;if(k!=p1){t1=p1->student.score;p1->student.score=k->student.score;k->student.score=t1;t2=p1->student.num;p1->student.num=k->student.num;k->student.num=t2;strcpy(s,p1->);strcpy(p1->,k->);strcpy(k->,s);}}}9.保存模块void Save(struct stud_type stu[])/* 保存模块 */{int i;FILE *fp1;/* 指向文件的指针*/stu[0].jilu=r;if((fp1=fopen("E:\\cj1.txt","wb"))==NULL)/* 打开文件,并判断打开是否正常, wb 指只写打开或建立一个二进制文件,只允许写数据*/{printf("----------打开文件失败!----------\n\n");return;}printf(" 开始存盘 !\n");for(i=0;i<r;i++)if(fwrite(&stu[i],sizeof(struct stud_type),1,fp1)==0)printf("---------- 数据存盘失败!----------\n\n");fclose(fp1);printf("----------存盘成功!----------\n");/* 显示保存成功*/}10.读入模块void duru(struct stud_type stu[])/* 数据读入模块*/{int i;FILE *fp;/* 指向文件的指针*/if((fp=fopen("E:\\cj1.txt","rb"))==NULL)/* 打开文件,并判断打开是否正常 ,rb 指读写打开一个二进制文件,允许读和写*/{printf(" 打开文件失败!\n");return;}printf(" 文件开始读取 !\n");rewind(fp);for(i=0;i<=r;i++){fread(&stu[i],sizeof(struct stud_type),1,fp);r=stu[0].jilu;}printf("\n文件成功读取!\n");fclose(fp);r=stu[0].jilu;}}四,运行与测试报告五,设计体会通过这次的程序设计实习,自己编写程序,从上百个错误慢慢的修改,经过自己的努力和老师的细心教导之下,错误逐渐的变少,最终可以运行了,这次的实习中,我磨练了自己的毅力和耐力,让我的信心倍增,在这短短的 24 的学时里,我体会到了苦与甜,更让我学到了很多的知识,在以后的工作中肯定会非常有用的,使对未来的生活充满了信心。
C语言程序设计实践报告题目学生信息管理系统#include <string.h>#include <windows.h>struct student{long int num;char name[20];int age;char sex[4];int class;int pt; /*定义一个变量来储存大学物理的考试成绩*/int ps; /*定义一个变量来储存大学物理的平时成绩*/int et; /*定义一个变量来储存英语的考试成绩*/int es; /*定义一个变量来储存英语夫人平时成绩*/int ct; /*定义一个变量来储存微积分的考试成绩*/int cs; /*定义一个变量来储存微积分的平时成绩*/int xt; /*定义一个变量来储存信号的考试成绩*/int xe; /*定义一个变量来储存信号的平时成绩*/};int n=0;struct student stu[100];struct student *p;void tc();void tc()void lr();/*录入函数*/void ll();void cx();/*查询函数*/void xg();/*修改函数*/void sc();/*删除函数*/void bj();/*不及格学生列表函数*/void pj();/*平均成绩计算函数*/void kc();/*课程查询函数*/②主函数模块:一般比较简单,只提供输入,处理,输出的调用函数,即只有界面显示语句,子函数选择语句,主要的调用语句。
void main(){int z;printf("\t\t\t +---------------------------+\n");printf("\t\t\t | 学生信息管理系统欢迎您 |\n");printf("\t\t\t +---------------------------+\n");printf("\t\t\t + 设计者:张眼\n");printf("\t\t\t + 指导老师:刘伟荣\n");printf("重要提示:为保证您的操作得到保存,请按正常顺序退出系统!谢谢合作\n");do{printf("\n\t\t\t+++++++++++++++++++++++++++++\n");printf("\t\t\t|** 菜单 **|\n");printf("\t\t\t+++++++++++++++++++++++++++++++++\n");printf("\t\t\t* [1]----录入/插入学生信息 *\n");printf("\t\t\t* [2]----浏览学生信息 *\n");printf("\t\t\t* [3]----查询学生信息 *\n");printf("\t\t\t* [4]----删除学生信息 *\n");printf("\t\t\t* [5]----修改学生信息 *\n");printf("\t\t\t* [6]----不及格学生列表 *\n");printf("\t\t\t* [7]----成绩信息查询 *\n");printf("\t\t\t* [8]----平均成绩 *\n");printf("\t\t\t* [0]----退出系统 *\n");printf("\t\t\t********************************\n"); printf("请输入您的选择:");scanf("%d", &z);switch(z){case 0 :tc();break;case 1 :lr();break;case 2 :ll();break;case 3 :cx();break;case 4 :sc();break;case 5 :xg();break;case 6 :bj();break;case 7 :kc();break;case 8 :pj();break;default:printf("\n无效选项!");}}while(z!= 0);}运行结果:③输入模块:输入部分包括学生的姓名,学号等基本信息以及学生的大学物理,英语,微积和信号的成绩,主要是通过指针来实现数据的输入。