(学籍管理系统)C语言程序设计报告

合集下载

C语言课程设计报告—学籍信息管理系统剖析.doc

C语言课程设计报告—学籍信息管理系统剖析.doc

《高级语言程序设计》说明书设计题目:学籍信息管理系统目录题目要求 (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语言学籍管理系统设计报告

c语言学籍管理系统设计报告

C语言学籍管理系统设计报告1. 引言学籍管理系统作为一种信息化管理工具,已经在现代教育管理中得到广泛应用。

本文将介绍一个基于C语言的学籍管理系统的设计方案。

2. 系统概述学籍管理系统是一个用于管理学生信息的软件系统。

它能够提供学生信息的录入、查询、修改、删除等功能,实现了学生信息的统一管理和快速检索。

本系统旨在简化教务管理流程,提高教务工作效率。

3. 功能需求学籍管理系统应满足以下功能需求:1.学生信息录入:系统提供学生信息录入界面,包括学生姓名、学号、性别、年龄、班级等基本信息。

2.学生信息查询:系统提供学生信息查询界面,可以按照学号、姓名、班级等条件进行查询,并能够显示查询结果。

3.学生信息修改:系统提供学生信息修改界面,可以修改学生的基本信息。

4.学生信息删除:系统提供学生信息删除功能,可以删除学生的信息。

5.成绩管理:系统可以记录学生的成绩信息,并提供相应的成绩查询和统计功能。

4. 系统设计学籍管理系统的设计主要包括以下几个方面:4.1 数据库设计系统使用数据库来存储学生信息和成绩信息。

可以使用关系型数据库(如MySQL)或者文件系统来实现。

•学生信息表:包括学生姓名、学号、性别、年龄、班级等字段。

•成绩信息表:包括学号、科目、成绩等字段。

4.2 用户界面设计系统的用户界面应简洁、直观,方便用户进行操作。

可以使用命令行界面或者图形界面来实现。

•学生信息录入界面:用户可以通过可视化界面输入学生信息,系统将学生信息添加到数据库中。

•学生信息查询界面:用户可以输入查询条件,系统将根据条件从数据库中检索学生信息并显示。

•学生信息修改界面:用户可以修改学生的基本信息,系统将修改后的信息更新到数据库中。

•删除学生信息界面:用户可以指定学生,系统将删除该学生的信息。

4.3 系统模块设计学籍管理系统可以将功能划分为多个模块,每个模块负责一个具体的功能。

下面列举几个主要的系统模块:•学生信息管理模块:负责学生信息的录入、查询、修改和删除。

c语言课程设计学生学籍管理系统

c语言课程设计学生学籍管理系统

c语言课程设计学生学籍管理系统一、教学目标本课程的教学目标是使学生掌握C语言的基本语法和编程方法,能够运用C语言设计学生学籍管理系统。

具体分为三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识。

2.技能目标:学生能够运用C语言进行程序设计,具备编写和调试程序的能力。

3.情感态度价值观目标:学生通过完成学生学籍管理系统的设计和实现,培养对计算机科学和编程的兴趣和热情,提高解决实际问题的能力。

二、教学内容根据课程目标,教学内容主要包括C语言的基本语法和编程方法,具体包括以下部分:1.C语言的基本语法:数据类型、变量、运算符、控制结构等。

2.函数:函数的定义、调用、参数传递、返回值等。

3.学生学籍管理系统的需求分析:系统的功能、数据结构、界面设计等。

4.编程实践:学生通过编写和调试程序,完成学生学籍管理系统的实现。

三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。

1.讲授法:教师通过讲解C语言的基本语法和编程方法,为学生提供系统的知识结构。

2.讨论法:教师引导学生进行问题讨论,培养学生的思考和解决问题的能力。

3.案例分析法:教师通过分析学生学籍管理系统的案例,引导学生理解和应用C语言编程。

4.实验法:学生通过动手编写和调试程序,提高编程实践能力。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备等。

1.教材:选用权威、实用的C语言教材,为学生提供系统的知识结构。

2.参考书:提供相关的参考书籍,丰富学生的知识视野。

3.多媒体资料:制作多媒体课件,生动、形象地展示C语言编程的方法和技巧。

4.实验设备:提供计算机实验室,让学生进行编程实践。

五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面、客观、公正地评价学生的学习成果。

1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。

C程实验报告(学籍管理系统)

C程实验报告(学籍管理系统)

实验题目:使用 C 编程实现一个学籍管理系统1。

程序设计与分析1.1程序实现的功能主要用于学籍管理,实现对于多个学生信息(姓名、班级、学号、成绩)的输入、删除、查找、排序和输出,达到基本的学籍管理的功能。

同时,在学生数量过多或者在一定范围内的不正常的操作时,给出警告。

1.2采用的数据类型采用结构体“Result”来存储每个学生的信息,其中Id为字符型数组,班级(cla)为整型,姓名(nam)为字符型数组,三门功课的分数(s)为浮点型数组,总分(sum)为浮点型。

鉴于学生数和课程数在整个程序中是恒定的,为程序的可扩充性,将学生数和课程数设为符号常量.1.3核心算法存储:采用结构体,储存信息。

输入:设一个暂时的结构数组元素,再将其导入正式的结构数组中,使得程序方便修改,并且方便输出。

删除:首先用string。

h中的strcmp完成查找。

调用deleteRecord()函数,以完成对于信息的删除,即将后面是的信息覆盖代替选中的学生的信息,期间调用cpyRecord()函数完成覆盖。

查找:启用flag做标记,已达到若输入的信息难以匹配,警告.用string。

h中的strcmp 和strcpy完成查找,用printRecord()函数输出。

排序:将比较与交换分开,用dicSort()函数完成比较,再调用exchange()函数完成交换,期间用选择法进行排序。

输出:再次调用printRecord()函数,输出所要值。

自定义函数的各项功能:void input(int x):根据输入的选择数字进行不同的调用void informationInput():将信息导入暂存结构体数组void put2result(struct Result tmp):将暂存数组导入正式数组void deleteInformation():进入删除的过程,完成比较void deleteRecord(int iRecord):完成需要改变位置的数组的循环void cpyRecord(int dst, int src):完成相应两个数组的覆盖void selectInformation():完成转换和比较void orderInformation():完成相应数组的循环int dicSort(int dst, int src):比较int exchange(int x, int y):交换void printRecord(int i):暂时输出void printInformation():最终输出2。

C语言课程设计报告-学生学籍管理系统

C语言课程设计报告-学生学籍管理系统

信息学院课程设计I报告课程名称C语言程序设计_____ 题目名称学生学籍管理系统学生学院一信息学院______专业班级_ 计科12 _________ 学号___________________________ 学生姓名________________________指导教师______________________2013 年 12 月 26 日目录一、设计目的与要求 .... 错误! 未定义书签题目与设计要求 ........ 错误! 未定义书签本程序设计的知识点 ..... 错误! 未定义书签二、功能设计 .......... 错误! 未定义书签总体设计 .............. 错误! 未定义书签详细设计 .............. 错误! 未定义书签测试结果及分析 ........ 错误! 未定义书签五、总结 .............. 错误! 未定义书签六、参考文献错误! 未定义书签........................设计目的与要求题目与设计要求题目:学生学籍管理系统目的: 1、了解和熟悉 Visual C++ 软件编程开发环境2、熟练掌握结构化程序设计的步骤和模块化设计方法3、熟练掌握C语言数据类型,熟记字符型数据和整形数据的定义和使用4、熟练掌握用 while语句、do…while语句和for语句实现循环结构程序设计的方法5、掌握一维数组、二维数组的定义、赋值和输入输出的方法6、掌握与数组有关的算法(特别是排序算法,熟练掌握冒泡排序法)7、熟悉函数的定义、声明方法及全局变量和局部变量的概念与用法,掌握函数的调用方法8、掌握结构体类型变量的定义和使用及结构体类型数组的概念和应用设计要求:学生学籍信息管理系统设计删除1需求分析学生基本信息、学生成绩基本信息要存入文件当中,因而 要提供文件的输入输出操作;查询功能要求提供查找和显示操 作;删除功能要求实现删除操作;排序功能要求实现排序操作; 另外还应该提供键盘式选择菜单以实现功能选择。

学籍管理系统c语言课程设计报告

学籍管理系统c语言课程设计报告

学籍管理系统c语言课程设计报告一、引言学籍管理系统是一种管理学生信息的工具,它可以帮助学校更好地管理学生的个人信息、课程信息、成绩信息等。

本报告旨在介绍一个基于C语言的学籍管理系统的设计与实现。

二、需求分析1. 功能需求(1)学生信息管理:包括添加、修改和删除学生个人信息。

(2)课程信息管理:包括添加、修改和删除课程信息。

(3)成绩录入:可以输入每个学生在每门课程中的成绩。

(4)成绩查询:可以查询每个学生在每门课程中的成绩。

(5)统计分析:可以统计每门课程的平均分和及格率。

2. 非功能需求(1)界面友好:界面简洁明了,易于操作。

(2)数据安全性高:能够保证数据安全性,避免数据丢失或泄露等问题。

三、系统设计1. 总体设计思路本系统采用模块化设计思路,将整个系统划分为多个模块,以便于开发和维护。

主要模块包括:(1)学生信息模块;(2)课程信息模块;(3)成绩录入模块;(4)成绩查询模块;(5)统计分析模块。

2. 数据结构设计本系统采用链表存储学生和课程信息,每个节点包含学生或课程的基本信息,以及指向下一个节点的指针。

成绩信息则采用二维数组存储。

3. 界面设计本系统采用控制台界面,通过菜单进行操作。

每个菜单选项对应一个功能模块。

四、系统实现1. 学生信息模块(1)添加学生信息:输入学生姓名、性别、年龄等基本信息,并将该学生添加到链表中。

(2)修改学生信息:根据学生ID修改相应的学生信息。

(3)删除学生信息:根据学生ID删除相应的学生信息。

(4)显示所有学生信息:遍历链表输出所有学生的基本信息。

2. 课程信息模块(1)添加课程信息:输入课程名称、授课教师、上课时间等基本信息,并将该课程添加到链表中。

(2)修改课程信息:根据课程ID修改相应的课程信息。

(3)删除课程信息:根据课程ID删除相应的课程信息。

(4)显示所有课程信息:遍历链表输出所有课程的基本信息。

3. 成绩录入模块输入学生ID和课程ID,然后输入该学生在该课程中的成绩,将成绩保存到二维数组中。

c语言学生管理系统课程设计报告(一)

c语言学生管理系统课程设计报告(一)

c语言学生管理系统课程设计报告(一)C语言学生管理系统课程设计报告1. 项目介绍•课程名称:C语言学生管理系统课程设计•项目类型:学生管理系统•设计时间:2021年1月•设计人员:XXX2. 项目背景•学生管理系统是一种常见的信息管理系统,用于管理学校、学院或班级的学生信息。

•C语言是一种常用的编程语言,具有良好的跨平台性和高效性。

3. 功能需求设计一个C语言学生管理系统,能够实现以下功能:•学生信息录入:输入学生的基本信息,包括学号、姓名、性别、年龄等。

•学生信息查询:根据学号或姓名查询学生的基本信息。

•学生成绩录入:输入学生的各科成绩,包括语文、数学、英语等。

•学生成绩统计:计算学生的总成绩、平均成绩,并根据成绩进行排名。

•学生信息修改:对已有的学生信息进行修改,包括基本信息和成绩信息。

•学生信息删除:根据学号或姓名删除学生的信息。

4. 技术实现在C语言学生管理系统的设计中,使用到以下技术:•结构体:用于定义学生的基本信息,如学号、姓名、性别、年龄等。

•数组:用于存储多个学生的信息。

•文件读写:将学生信息保存到文件中,实现信息的长久保存和读取。

5. 项目结构•主函数:包括用户菜单的选择和对应功能的调用。

•学生信息模块:实现学生信息的录入、查询、修改和删除等功能。

•成绩管理模块:实现学生成绩的录入、统计等功能。

6. 开发流程•需求分析:明确项目需求,确定功能设计。

•系统设计:设计程序的整体结构,划分模块和函数。

•编码实现:使用C语言编写各个模块的代码,并进行调试测试。

•系统测试:对系统进行整体测试,修复错误和漏洞。

•系统部署:将系统部署到目标环境中,进行性能优化和问题排查。

•用户培训:对系统进行使用说明和培训,保证用户能够熟练使用学生管理系统。

7. 总结与展望通过C语言学生管理系统的设计,我学到了很多关于C语言的基础知识和编程技巧。

在项目开发过程中,我充分利用了C语言的特点,编写出高效、稳定的代码。

学籍管理系统_C语言程序课设报告

学籍管理系统_C语言程序课设报告

北****学课程设计报告课程名称:C语言程序设计课设项目名称:学籍管理系统学院:专业:姓名:学号:指导教师:成绩:2010年6月4日目录第1部分课程设计题目与要求 (1)1.问题描述 (1)2.功能要求 (1)3。

任务分工 (3)第2部分《学籍管理系统》的设计与功能实现 (4)1。

总体设计 (4)2。

数据结构 (5)3。

算法设计 (5)4.程序代码设计 (11)5。

测试与调试 (19)第3部分课程设计总结 (28)1.个人总结 (28)2。

结束语 (29)附录Ⅰ程序清单 (30)附录Ⅱ用户使用说明书 (58)参考文献 (60)第1部分课程设计题目与要求1.问题描述为了分析教学效果并进行相应的学籍处理,各学校每到学期末都对综合成绩进行分类统计、上报成绩汇总结果等,这给每位老师和学籍管理人员带来很大的工作量。

使用学籍管理系统可以减少工作者的工作负担.为了方便管理人员查找学生信息,在创新功能中,增加查询成绩功能,增加按学科成绩排名的功能,由于学籍管理系统涉及学生成绩及信息的安全,所以有必要给系统增加密码保护的功能,以保护系统信息的安全。

2.功能要求循环显示如图-1所示的主菜单.其中,原始数据的排列是无序的.系统应能够保留原始成绩单。

图-1在主菜单选择1:可以进行成绩的录入。

在主菜单选择2:进入如图-2的子菜单,并统计成绩。

在此可以计算平均、统计各分数段、按学号排序、按平均分排序。

在子菜单选择1时,将该班学生的成绩按学号升序排序后的顺序存入std.dat文件中,以方便打印。

在子菜单选择2时,求出每位学生的平均分,并按平均分从高到低的顺序进行排序后,写入文件sort.dat中。

在子菜单选择3时,统计出各门课、各分数段学生的人数,并如下表的形式输出。

在子菜单选择4,返回主菜单;选择0,退出整个系统。

图-2在主菜单选择3:进入如图—3所示的子菜单,处理学籍。

在子菜单中选择1,为不及格的学生打印重考通知单时,应在通知单上写明重考的课程、时间和地点(由键盘输入)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1C 语言课程设计实习报告班 级: 学生姓名: 学 号: 指导老师: 日 期:目录一、程序分析与设计 (1)二、流程图 ........................................................................................ 错误!未定义书签。

三、源程序清单 (1)四、调试过程 (14)五、程序有待改进的地方 (15)六、本次实习的收获和建议 (15)附录................................................................................................... 错误!未定义书签。

2C语言课程设计实习报告一、程序分析与设计设计一个学籍管理系统,该系统应该具备以下功能:1.通过键盘能够对一批学生(学生数量自定义)的学籍信息进行注册并保存在文件中,结构体应该包括:学号,姓名,性别,年龄,专业,班级,籍贯等信息;2.给定学号或姓名,能够查询到其籍贯信息3.能够随时添加任意多个人的学籍信息4.已知一个人的学号或是姓名能够对其学籍信息进行删除5.已知学号或是姓名,能够对其学籍信息进行修改6.根据学号的大小,对学籍信息进行从小到大或是从从大到小的进行排序7.用户有困难,能够获得帮助8.系统界面不能有太多的信息,使界面显得杂乱,应该随时清屏9.用文件的形式对录入的学籍信息进行存储,并从文件中读取信息设计一个学籍管理系统,从以下方面入手:1.数据录入:录入所需的学籍信息,可以用fprintf`,fscanf方式录入2.数据存储:将录入的信息存储,以文件的方式将录入的文件存储3.数据读取:用fcanf ,scanf进行数据的读取4.数据的修改:可以插入新数据,并对旧数据更替5.数据的添加:在原有的信息数据的基础上,加入新的数据6.数据的删除:删除旧的数据,后面的数据对删除的数据进行覆盖7.数据查询:先对文本的数据导出,然后输出要查询的数据8.数据排序:根据学号的大小进行升序或降序9.系统帮助:简单问题可以得到结局方案10.界面:设计总体界面,以弹出方式工作二.程序流程图主函数文件读取写文件注册信息添加信息删除信息修改信息查询信息信息排序帮助地理信息系统专业10 级三.源程序清单源程序包括以下几个模块:1.结构体数组2.清屏函数3.文本保存函数4.文本输出函数5.注册函书6.添加函数7.删除函数8.查找函数9.修改函数10.排序函数11.文本调用函数12.帮助函数13.主函数(包括菜单)程序代码如下:#include<stdio.h>#include <stdlib.h>#include<string.h>#include<conio.h>#define size 100static int n;struct student_information{int num;char name[20];char sex[10];int age;char major[20];char clas[20];char addr[50];}student[size];//清屏int system(const char *string);//文件保存void save(int n){C语言课程设计实习报告FILE *fp1;int i;if((fp1=fopen("005.txt","w"))==NULL){printf("can't open file\n");return;}for(i=0;i<n;i++){fprintf(fp1,"%-6d%10s%10s%6d%10s%10s%10s\n",student[i].num,student[i].name,student[i].sex,student[i]. age,student[i].major,student[i].clas,student[i].addr);}fclose(fp1);}//文本显示void screen(int n){int i;for(i=0;i<n;i++){printf("%-6d%10s%10s%-6d%10s%10s%10s\n",student[i].num,student[i].name,student[i].sex,student[i].age, student[i].major,student[i].clas,student[i].addr);}}//注册学籍信息void enroll(){int i;system("cls");printf("请输入你要注册的人数:");scanf("%d",&n);printf("\n请输入:\n");printf("学号姓名性别年龄专业班级籍贯\n");for(i=0;i<n;i++){scanf("%d%s%s%d%s%s%s",&student[i].num,student[i].name,student[i].sex,&student[i].age,student[i].major,stud地理信息系统专业10 级ent[i].clas,student[i].addr);}n=i;save(n);screen(n);printf("完成学籍信息录入\n");}//添加学生信息void add(){int a,j;FILE *fp;system("cls");if((fp=fopen("005.txt","a"))==0){printf("文件打不开\n");return;}while(1){printf("1添加学生信息0返回菜单\n");printf("请输入功能号:");scanf("%d",&j);getchar();if(!j) break;printf("学号姓名性别年龄专业班级籍贯\n");scanf("%d%s%s%d%s%s%s",&student[0].num,student[0].name,student[0].sex,&student[0].age,student[0].m ajor,student[0].clas,student[0].addr);fprintf(fp,"%-6d%10s%10s%6d%10s%10s%10s\n",student[0].num,student[0].name,student[0].sex,student[0 ].age,student[0].major,student[0].clas,student[0].addr);}fclose(fp);}//del 删除void del(){int j,i,k,xuehao;char mingzi[20];FILE *fp,*fp1;system("cls");C语言课程设计实习报告if((fp=fopen("005.txt","r"))==NULL){printf("文件打不开\n");return;}for(i=0;i<size;i++){fscanf(fp,"%d%s%s%d%s%s%s",&student[i].num,student[i].name,student[i].sex,&student[i].age,student[i].major,student[i].clas,student[i].addr);if(student[i].num==0)break;}fclose(fp);k=i;printf(" 1.按照学号删除学籍 2.按照姓名删除学籍3返回菜单\n"); printf("请选择输入功能号1\\2:");scanf("%d",&j);if(j==1){printf("请输入要删除学生的学号:");scanf("%d",&xuehao);i=0;while(student[i].num!=xuehao)i++;for(;i<k;i++){student[i]=student[i+1];}k--;printf("\n");}if(j==2){printf("请输入学生学籍的姓名:");scanf("%s",mingzi);i=0;地理信息系统专业10 级while(strcmp(student[i].name,mingzi)!=0)i++;for(;i<k;i++){student[i]=student[i+1];}k--;printf("\n");}save(k);system("cls");printf("删除信息后的列表为:\n");screen(n);printf("完成删除\n");return;}//search 查询void search(){int i,j,k,xuehao;char mingzi[20];FILE *fp;system("cls");if((fp=fopen("005.txt","r"))==NULL){printf("文件打不开!");return;}for(i=0;i<size;i++){fscanf(fp,"%d%s%s%d%s%s%s",&student[i].num,student[i].name,student[i].sex,&student[i].age,student[i].major,student[i].clas,student[i].addr);C语言课程设计实习报告if(student[i].num==0)break;}k=i;printf(" 1.按学生学号查询 2.按学生姓名查询\n"); printf("请输入功能号1\\2:");scanf("%d",&j);if(j==1){printf("请输入要查寻学生的学号:");scanf("%d",&xuehao);i=0;while(student[i].num!=xuehao)i++;printf("%-6d%10s%10s%6d%10s%10s%10s\n",student[i].num,student[i].name,student[i].sex,student[i].age,student[i].major,student[i].clas,student[i].addr);fclose(fp);}if(j==2){printf("请输入学生学籍的姓名:");scanf("%s",mingzi);i=0;while(strcmp(student[i].name,mingzi)!=0)i++;// screen()printf("%-6d%10s%10s%6d%10s%10s%10s\n",student[i].num,student[i].name,student[i].sex,student[i].age,student[i].major,student[i].clas,student[i].addr地理信息系统专业10 级);fclose(fp);}return;}//output 文本数据导出/*int output(FILE *fp){int i,k;// FILE *fp;for(i=0;i<size;i++){fscanf(fp,"%d%s%s%d%s%s%s",&student[i].num,student[i].name,student[i].sex,&student[i].age,student[i].major,student[i].clas,student[i].addr);if(student[i].num==0)break;}fclose(fp);k=i;return(k);}*///change 修改学生信息void change(){FILE *fp,*fp1;int i,k,j,xuehao,nianji;char mingzi[20],xinbie[10],zhuanye[20],banji[20],jiguan[50];system("cls");if((fp=fopen("005.txt","r"))==NULL){printf("文件打不开!");return;}for(i=0;i<size;i++){fscanf(fp,"%d%s%s%d%s%s%s",&student[i].num,student[i].name,student[i].sex,&student[i].age,student[i].major,student[i].clas,student[i].addr);if(student[i].num==0)break;}k=i;printf(" 1.已知学号修改信息 2.已知姓名修改信息\n"); printf("请输入1\\2:");scanf("%d",&j);if(j==1){printf("请输入要修改信息人的学号:");scanf("%d",&xuehao);printf("\n");i=0;while(student[i].num!=xuehao){i++;if(i>k){printf("无此人学籍信息!\n");break;}}printf("此人的原信息为:");printf( "%-6d%10s%10s%6d%10s%10s%10s\n",student[i].num,student[i].name,student[i].sex,student[i].age,student[i].major,student[i].clas,student[i].addr);printf("请输入修改的信息为:\n");scanf("%d%s%s%d%s%s%s",&xuehao,mingzi,xinbie,&nianji,zhuanye,banji,jiguan);student[i].num=xuehao;student[i].age=nianji;strcpy(student[i].name,mingzi);strcpy(student[i].sex,xinbie);strcpy( student[i].major,zhuanye);strcpy( student[i].clas,banji);strcpy(student[i].addr,jiguan);}if(j==2){printf("请输入要修改信息人的姓名:");scanf("%s",mingzi);i=0;while(strcmp(student[i].name,mingzi)!=0){i++;if(i>k){printf("无此人学籍信息!\n");break;}}printf("此人的原信息为:");printf( "%-6d%10s%10s%6d%10s%10s%10s\n",student[i].num,student[i].name,student[i].sex,student[i].age,student[i].major,student[i].clas,student[i].addr);printf("\n请输入修改的信息为:\n");scanf("%d%s%s%d%s%s%s",&xuehao,mingzi,xinbie,&nianji,zhuanye,banji,jiguan);student[i].num=xuehao;student[i].age=nianji;strcpy(student[i].name,mingzi);strcpy(student[i].sex,xinbie);strcpy( student[i].major,zhuanye);strcpy( student[i].clas,banji);strcpy(student[i].addr,jiguan);}save(k);system("cls");printf("修改后的信息列表为:\n");screen(k);printf("删除成功\n");return;}//sort 排序void sort(){FILE *fp,*fp1;int i,j,k,s;system("cls");if((fp=fopen("005.txt","r"))==NULL){printf("文件打不开!");return;}for(i=0;i<size;i++){fscanf(fp,"%d%s%s%d%s%s%s",&student[i].num,student[i].name,student[i].sex,&student[i].age,student[i].major,student[i].clas,student[i].addr);if(student[i].num==0)break;}k=i;fclose(fp);printf(" 1.按学号从小到大排序 2.按学号从大到小排序\n");printf("请根据要求输入功能号:");scanf("%d",&s);if(s==1){for(j=0;j<k-1;j++)for(i=0;i<k-1-j;i++){if(student[i].num>student[i+1].num){student[k+1]=student[i];student[i]=student[i+1];student[i+1]=student[k+1];}}}elseif(s==2){for(j=0;j<k-1;j++)for(i=0;i<k-j;i++){if(student[i].num<student[i+1].num){student[k+1]=student[i];student[i]=student[i+1];student[i+1]=student[k+1];}}}elseprintf("输入功能号错误\n");save(k);system("cls");printf("排序后列表如下:\n");screen(k);printf("\n完成排序\n");return;}//help 帮助void help(){ system("cls");printf("1.第一次使用学籍管理系统请先注册学生学籍信息!\n\n");printf("2.文件打不开可能是应为文本文件为空!\n\n");printf("3.最大注册学生人数为1000人!\n");}//mnue 菜单void main(){ char j;printf("\n\n\n\t\t\t 欢迎使用学生学籍管理系统");printf("\n\n\n\t\t\t 制作人:李军");printf("\n\n\n\t\t\t 制作时间:2013.1.13");printf("\n\n\n进入系统请按空格键:");getchar();system("cls");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\n\t\t\t1.录入学生信息 2.添加学生信息\n");printf("\t\t\t3.删除学生信息 4.查询学生信息\n");printf("\t\t\t5.修改学生信息 6.学生信息排序\n");printf("\t\t\t7.帮助(help)\n");printf("请按你所需要的功能选择序号1\\2\\3\\4\\5\\6\\7:");j=getchar();switch(j){case'1': enroll();break;case'2': add() ;break;case'3': del();break;case'4': search();break;case'5': change();break;case'6': sort();break;case'7': help();break;default: printf("错误");}printf("\n");}四、调试过程1.菜单界面:输入空格键后:根据你的要求输入功能号2.学籍信息注册生成的005.txt文件如下3.添加学生信息4.删除学籍信息6.查询学籍信息按学号查询按姓名查询7.修改学生信息按学号查询按姓名查询八.排序学号从小到大排序学号从大到小排序九.帮助五、程序有待改进的地方1.程序在修改,删除,查询时一次只能完成一个人的功能,希望能根据用户需求完成任意人信息的修改,查询,删除2.界面还不够友好,太呆板3.没有完成按学号或是专业输出籍贯表的功能4.无法检测到学生学籍的变化情况5.此学籍管理系统要是能够使用密码登录就更加的好了6.用户也要设置权限,普通用户只能使用一部分功能,只有系统管理员才有权对学籍信息删除,修改,添加以及注册六、本次实习的收获和建议通过编写学籍管理系统,我用到结构体数组,充分利用结构体数组让程序更好理解。

相关文档
最新文档