c语言程序学生籍贯信息记录簿设计
学生籍贯记录簿设计
目录第一章课程设计的目的和要求 (1)1.1课程设计的目的: (1)1.2课程设计的要求: (2)第二章课程设计任务内容 (2)2.1考核内容 (2)2.1.1编写C++语言程序 (2)2.1.2课程设计报告 (3)2.2课题 (3)第三章详细设计说明 (3)3.1总体设计: (3)3.2函数功能说明: (3)3.3详细设计流程图: (4)3.4运行结果: (6)第四章软件使用说明 (8)4.1程序运行环境 (9)4.2程序操作方法 (9)第五章课程设计心得与体会 (9)附录一参考文献 (10)附录二程序清单 (11)第一章课程设计的目的和要求1.1课程设计的目的用高级程序语言设计出学生籍贯纪录系统,实现查找方便快捷。
通过用高级程序语言制作程序,熟悉用高级程序语言编程的操作和步骤,学习高级程序语言的运用,以及高级程序语言实验报告的书写格式,使学生掌握一门高级程序设计语言,了解面向对象程序设计的基本概念与方法,进而学会利用C++语言学会解决一般应用问题,并为后续的专业课程奠定程序设计基础。
1.2课程设计的要求课程设计要求学会分析研究计算机加工的数据结构的特性,了解并掌握涉及的数据选择的适当的逻辑结构、存储结构及其相应的算法等,同时要求在掌握的基础上学会编写程序,使程序结构清楚和正确易读,符合软件工程的规范。
通过编写C++程序,设计学生籍贯信息管理系统,可以方便对学生信息进行查找及管理,或者添加、删除及修改学生信息,将信息永久保存。
第二章课程设计任务内容2.1考核内容2.1.1编写C++语言程序●针对编写的C++程序,应该主要考查下列内容:●是否符合题目要求,是否完成了主要功能;●是否存在语法错误、逻辑错误及运行错误;●程序设计是否合理;●程序是否具有良好的可读性和可靠性;●是否符合结构化程序设计所倡导的基本理念;●用户界面是否友好。
2.1.2课程设计报告●针对提交的课程设计报告,应该主要考查下列内容:●程序设计的报告内容是否全面,观点是否正确;●设计过程是否符合结构化程序设计方法的基本原则;●层次是否清楚,语言是否通顺;●各种图表是否规范;是否具有良好的程序设计习惯。
程序设计--学生籍贯信息记录簿
程序设计--学生籍贯信息记录簿一、需求分析为了方便管理和查询,需要对全体学生的籍贯信息进行记录和统计。
本系统需要满足以下功能要求:1. 记录学生的籍贯信息,包括省、市、县/区。
2. 可以查询某个省、市、县/区的学生人数及比例。
3. 可以查看某个学生的详细信息,包括学号、姓名、性别、身份证号、电话号码等。
二、概要设计本系统采用MVC架构,前端使用HTML+CSS+Javascript,后端使用Java语言和MySQL数据库实现。
1. 数据库设计数据库中包含两个表:学生表和籍贯表。
学生表包含学生的基本信息,籍贯表包含省、市、县/区的信息。
学生表字段如下:| 字段名 | 类型 | 说明 || ---------- | ------ | -------- || id | int | 主键 || name | varchar(20) | 姓名 || gender | int | 性别(0: 男, 1: 女) || id_card | varchar(18) | 身份证号码 || phone_num | varchar(11) | 电话号码 || province_id | int | 省id || city_id | int | 市id || county_id | int | 县/区id |2. 功能实现实现方法:1. 添加学生信息用户在前端输入学生信息,包括姓名、性别、身份证号码、电话号码和籍贯信息,点击保存按钮后将学生信息插入数据库中。
2. 查询某个省、市、县/区的学生人数及比例用户在前端选择省、市、县/区,点击查询按钮后,后端计算该地区的学生人数及比例,将结果在前端显示。
3. 查看某个学生的详细信息三、详细设计省、市、县/区的信息分别封装在Province、City和County类中。
学生信息封装在Student类中。
Province:public class Province {private int id;private String name;// getter和setter方法}City:Student:public class Student {private int id;private String name;private int gender;private String id_card;private String phone_num;private Province province;private City city;private County county;2. DAO层设计数据访问层(DAO)通过封装SQL查询语句,对数据库进行操作。
学生籍贯信息记录簿系统
#include "stdio.h"#include "stdlib.h"#include "conio.h"#include "string.h"#define N 20struct student//结构体,用于存储学生的籍贯信息{char studentID[20];char name[20];char sex[20];char age[20];char province[20];};void Menu1(){puts("\t\t-----欢迎进入学生籍贯信息记录簿系统-----");puts("\t\t 1----添加学生籍贯信息");puts("\t\t 2----显示学生籍贯信息");puts("\t\t 3----删除学生籍贯信息");puts("\t\t 4----修改学生籍贯信息");puts("\t\t 5----查询系统");puts("\t\t 6----退出");puts("\t\t 请选择……");}void Menu2(){puts("\t\t-----欢迎进入学生籍贯查询子系统-----");puts("\t\t 1---按姓名查询");//按学号或姓名查询其籍贯;puts("\t\t 2---按学号查询");puts("\t\t 3---按籍贯查询");//按籍贯查询并输出该籍贯的所有学生;puts("\t\t 4---返回");puts("\t\t 请选择……");}int reads(struct student stu[N]) // 读取文件中的内容{FILE *fp;int i=0;if((fp=fopen("学生籍贯信息记录簿.txt","r"))==NULL){printf("文件打开失败!\n");return 0;}else{for(i=0;!feof(fp);i++)fscanf(fp,"%s %s %s %s %s\n",stu[i].studentID,stu[i].name,stu[i].sex,stu[i].age,stu[i].province);}fclose(fp);return i;}void save(struct student stu[N],int n) // 学生籍贯信息改变后更新并保存文件{FILE *fp;int i=0;if((fp=fopen("学生籍贯信息记录簿.txt","w"))==NULL){printf("文件打开失败!\n");return ;}else{for(i=0;i<n;i++)fprintf(fp,"%s %s %s %s %s\n",stu[i].studentID,stu[i].name,stu[i].sex,stu[i].age,stu[i].provin ce);}fclose(fp);}void show() // 学生籍贯信息显示函数{struct student stu[N];int i,n;n=reads(stu);printf("*********************所有的学生信息如下**********************\n\n");printf(" 学号姓名性别年龄籍贯\n");printf("*************************************************************\n");for(i=0;i<n;i++)printf("%s\t%s\t\t%s\t%s\t\t%s\n",stu[i].studentID,stu[i].name,stu[i].sex,stu[i].age,stu[i].province) ;getch();}void add()/*添加学生籍贯信息*/{FILE *fp;int n,i;struct student stu;if((fp=fopen("学生籍贯信息记录簿.txt","a"))==NULL) //向文件中添加学生信息{printf("文件打开失败!\n");return;}printf("请输入要添加的学生信息数量,按回车键确认:");scanf("%d",&n);for(i=1;i<=n;i++){printf("\n请输入第%d个学生的学号、姓名,性别,年龄,籍贯,用空格分开,并按回车键确认:\n",i);scanf("%s%s%s%s%s",stu.studentID,,stu.sex,&stu.age,stu.province);fprintf(fp,"\n%s\t%s\t\t%s\t%s\t\t%s\n",stu.studentID,,stu.sex,stu.age,stu.province);}fclose(fp);}void del() /*删除学生籍贯信息*/{struct student stu[N];char number[20];int n,i,j;n=reads(stu);printf("\n请输入要删除学生信息的学号,按回车键确认:");scanf("%s",number);for(i=0;i<n;i++)if(strcmp(number,stu[i].studentID)==0) break;if(i>=n){printf("没有该学生信息!\n");return;}else{for(j=i+1;j<n;j++)stu[j-1]=stu[j];}save(stu,n-1);printf("删除成功!\n");}void change() //更改学生籍贯信息{struct student stu[N];int n,i;char number[20];printf("\n请输入要更改信息的学生学号,按回车键确认:");scanf("%s",number);n=reads(stu);for(i=0;i<n;i++)if(strcmp(number,stu[i].studentID)==0)break;if(i>=n){printf("没有该学生信息!");return;}printf("\n请输入更改后学生的学号,姓名,性别,年龄,籍贯按回车键确认:\n");scanf("%s %s %s %s %s\n",stu[i].studentID,stu[i].name,stu[i].sex,stu[i].age,stu[i].province);save(stu,n);}void find1()//按姓名查询籍贯{struct student stu[N];int n,i;char name[20];printf("\n请输入要查询的学生的姓名,按回车键确认:");scanf("%s",name);n=reads(stu);for(i=0;i<n;i++)if(strcmp(name,stu[i].name)==0)printf("该学生的籍贯为%s",stu[i].province);else if(i>=n){printf("没有该学生信息!");return;}}void find2()//按学号查询籍贯{struct student stu[N];int n,i;char xuehao[20];printf("\n请输入要查询的学生的学号,按回车键确认:");scanf("%s",xuehao);n=reads(stu);for(i=0;i<n;i++)if(strcmp(xuehao,stu[i].studentID)==0)printf("该学生的籍贯为%s",stu[i].province);else if(i>=n){printf("没有该学生信息!");return;}}//查询子函数void find3()//按籍贯查询并输出该籍贯的所有学生{struct student stu[N];int n,i;char pro[20];printf("\n请输入要查询籍贯,按回车键确认:");scanf("%s",pro);n=reads(stu);for(i=0;i<n;i++)if(strcmp(pro,stu[i].province)==0)printf("%s\t",stu[i].name);else if(i>=n){printf("无此学生信息!");return;}}void main(){int choice1,choice2;Menu1();while(12){scanf("%d",&choice1);switch(choice1){//调用子函数。
课程设计报告 学生籍贯信息记录簿(源程序)
void () //读取文本文件student.dat的信息
{
FILE *fp;
if((fp=fopen("student.dat","r"))==NULL) return ;//以只读的方式打开student.dat文件
n=0;
scanf("%s",&choose);
switch(choose)
{
case '1':{Input();Save1();}break;
case '2':{Readfile();Display();}break;
case '3':{Readfile();Find(1);}break;
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<windows.h> //开始界面
#define MAX 50 //宏定义最多输入人数
fprintf(fp,"%s %s %s\n",stu[i].num,stu[i].name,stu[i].address);//用格式化输出函数输出内容到student.dat
}
fclose(fp);
}
void Display() //2.读取信息并显示
{
int i;
printf(" 学号 姓名 籍贯:\n");
for(i=0;i<n;i++)
C语言程序设计报告——学生学籍管理(程序)
#include"conio.h"
#include"stdlib.h"
#include"string.h"
#define N 1000 //N为可输入的学生总人数,可根据需要更改
#define M 2 //M为宏定义的(在创建密码函数中)可建立的登陆用户个数,可更改
printf("该学生籍贯:%s\n",stu[i].add);
a=0; //找到该生,a=0;
break; //出for循环
}
}
if(a==1) //若没有找到该生,a=1,输出提示语句
printf("\n\n该学号不存在!请重新输入学号:\n");
printf("\n请录入院系:");
scanf("%s",stu[i].depar);
printf("\n请录入专业:");
scanf("%s",stu[i].zhuanye);
printf("\n请录入班级:");
scanf("%s",stu[i].classes);
if((strcmp(name1,co[i].name)==0)) //如果输入的用户名与已存在用户名相同,再比较密码是否相同,否则进行下一个用户名的比较
{
if((strcmp(code1,co[i].code)==0)) //比较此用户名下的密码是否一致
return 1; //验证成功后回到主函数
printf("\n请录入民族:");
C语言程序设计学生籍贯信息记录簿
C语言程序设计学生籍贯信息记录簿编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。
具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的籍贯信息;(3)按学号或姓名查询其籍贯;(4)按籍贯查询并输出该籍贯的所有学生;(5)能添加、删除和修改学生的籍贯信息;#include<conio.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>typedef struct{char id[12];char name[21];char origin[101];}student;FILE *fp;student stu,cache;void Menu(){system("cls");time_t t = time(0);char tmp[64];strftime(tmp, sizeof(tmp), "%Y/%m/%d %A",localtime(&t));puts(tmp);printf("\n");printf("1 --输入信息\n");printf("2 --显示所有信息\n");printf("3 --按学号查询\n");printf("4 --按姓名查询\n");printf("5 --按籍贯查询\n");printf("0 --退出\n\n\n请输入选项:");}void Creat_add(){system("cls");fp=fopen("stu_origin.dat","rb+");if(fp==NULL){fp=fopen("stu_origin.dat","wb+");if(fp==NULL){printf("can't creat the filestu_origin.dat!\n");printf("Press any key to exit...");getch();} }fseek(fp,0,SEEK_END);char next='y';while(next=='y'||next=='Y'){printf("请输入学号:");scanf("%s",stu.id);printf("请输入姓名:");scanf("%s",);printf("请输入籍贯:");scanf("%s",stu.origin);printf("\n\n确定写入数据?(y/n)");if(getch()=='y'||getch()=='Y') fwrite(&stu,sizeof(stu),1,fp);printf("\n\n是否继续输入?(y/n)");next=getch();system("cls");}fclose(fp);}void Display_all(){system("cls");fp=fopen("stu_origin.dat","rb");if(fp==NULL) {printf("can't open the file stu_origin.dat!\nPress any key to get back...");getch();}else{rewind(fp);printf("\n\n学号\t\t姓名\t\t籍贯\n");while(fread(&stu,sizeof(stu),1,fp))printf("%s\t%s\t%s\n",stu.id,,stu.origin);fclose(fp);printf("\n\nPress any key to get back...");getch();}}int Check_Id(char *Id,char c){rewind(fp);while(fread(&cache,sizeof(stu),1,fp)){if(strcmp(Id,cache.id)==0){printf("\n\n学号\t\t姓名\t\t籍贯\n");printf("%s\t%s\t%s\n",cache.id,,cache.origin);return 0;}}printf("\n\n无此学生!\n");return 1;}int Check_Name(char *Name,char c){int n=0;rewind(fp);while(fread(&cache,sizeof(stu),1,fp)){if(strcmp(Name,)==0){if(++n==1)printf("\n\n学号\t\t姓名\t\t籍贯\n");printf("%s\t%s\t%s\n",cache.id,,cache.origin);}}if(!n){printf("\n\n无此学生!\n");return 1;}return 0;}int Check_Orgin(char *Origin,char c){int n=0;rewind(fp);while(fread(&cache,sizeof(stu),1,fp)){if(strcmp(Origin,cache.origin)==0){if(++n==1)printf("\n\n学号\t\t姓名\t\t籍贯\n");printf("%s\t%s\t%s\n",cache.id,,cache.origin);}}if(!n){printf("\n\n无此学生!\n");return 1;}return 0;}void Search_id(){fp=fopen("stu_origin.dat","rb");if(fp==NULL) {printf("can't open the file stu_origin.dat!\nPress any key to get back...");getch();}char k;do{system("cls");do{printf("请输入学号:");gets(stu.id);}while(Check_Id(stu.id,'s'));printf("\n\n继续查询?(y/n)");k=getch();}while(k=='y'||k=='Y');fclose(fp);printf("\nPress any key to get back...");getch();}void Search_name(){fp=fopen("stu_origin.dat","rb");if(fp==NULL) {printf("can't open the file stu_origin.dat!\nPress any key to get back...");getch();}do{system("cls");do{printf("请输入姓名:");gets();}while(Check_Name(,'s'));printf("\n\n继续查询?(y/n)");}while(getch()=='y'||getch()=='Y');fclose(fp);printf("\nPress any key to get back...");getch();}void Search_origin(){fp=fopen("stu_origin.dat","rb");if(fp==NULL) {printf("can't open the file stu_origin.dat!\nPress any key to get back...");getch();}do{system("cls");do{printf("请输入籍贯:");gets(stu.origin);}while(Check_Orgin(stu.origin,'s'));printf("\n\n继续查询?(y/n)");}while(getch()=='y'||getch()=='Y');fclose(fp);printf("\nPress any key to get back...");getch(); }void Call(){char key=getch();if(key=='1') Creat_add();if(key=='2') Display_all();if(key=='3') Search_id();if(key=='4') Search_name();if(key=='5') Search_origin();if(key=='0') exit(1);}void main(){while(1){Menu();Call();}}该程序还不能删除和修改信息。
程序设计--学生籍贯信息记录簿
程序设计--学生籍贯信息记录簿-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN程序设计报告( 2012 /2013 学年第二学期)题目:学生籍贯信息记录簿专业学生姓名班级学号指导教师指导单位日期学生籍贯信息记录簿一、课题内容和要求编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。
具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的籍贯信息;(3)按学号或姓名查询其籍贯;(4)按籍贯查询并输出该籍贯的所有学生;(5)能添加、删除和修改学生的籍贯信息;(6)显示输出江苏籍和非江苏籍学生的信息并可分别存盘。
二、需求分析模块1:显示基本信息(创建信息链表并以磁盘文件保存,读取磁盘文件)模块2:输出籍贯信息(显示输出所有学生的籍贯信息)模块3:根据条件查询(按学号或姓名查询其籍贯,按籍贯查询)模块4:输出学生信息(输出该籍贯的所有学生)模块5:基本信息管理(添加、删除和修改学生的籍贯信息)模块6:分别显示存盘(显示输出江苏籍和非江苏籍学生的信息并可分别存盘)模块7:结束程序(退出系统)三、概要设计四、源程序代码#include<>#include<>#include<>#include<>#define MAX 100 取最初输入的信息并显示void Readfile(); 改第i个学生的姓名和籍贯void Save1(); 示输出江苏,非江苏学生信息void Find(int i); 学号或姓名查询籍贯void Finds(); 入信息并存档\n");printf("2.读取信息并显示\n");printf("3.按学号或姓名查询籍贯\n");printf("4.按籍贯查询学生\n");printf("5.修改(删除)指定姓名或学号的学生的姓名和籍贯\n");printf("6.显示输出江苏,非江苏学生信息\n");printf("**********************************************************\n");scanf("%s",&choose);switch(choose){case '1':{Input();Save1();}break;case '2':{Readfile();Display();}break;case '3':{Readfile();Find(1);}break;case '4':{Readfile();Finds();}break;case '5':{Readfile();Find(0);}break;case '6':{Readfile();Dis();}break;default:printf("输入错误,请重新输入:\n");}}while(1);}void Save2(int t) um,stu[t].name,stu[t].address);um);if(strcmp(stu[n].num,"Finish")==0) break;scanf("%s",stu[n].name);scanf("%s",stu[n].address);n++;}while(1);}void Save1() um,stu[i].name,stu[i].address);取信息并显示{int i;printf(" 学号姓名籍贯:\n");for(i=0;i<n;i++){printf("%5s %5s %5s\n",stu[i].num ,stu[i].name ,stu[i].address);}}void Find(int f) 学号或姓名查询籍贯{int i;int choose,k;char ans[50]; 学号查询\n");printf("2.按姓名查找\n");printf("3.返回主菜单\n");scanf("%d",&choose);if(choose==1){printf("请输入学号\n");scanf("%s",ans);k=-1;for(i=0;i<n;i++)if(strcmp(ans,stu[i].num)==0){k=i;break;}if(k==-1)printf("不存在该学生信息\n");else{if(f==1)printf("%s %s %s\n",stu[k].num,stu[k].name,stu[k].address);elseModify(k);ame)==0){k=i;break;}if(k==-1)printf("不存在该学生信息\n");else{if(f==1)printf("%s %s %s\n",stu[k].num,stu[k].name,stu[k].address);elseModify(k);改第t个学生的姓名和籍贯{int choose;int i;printf("1.删除\n");printf("2.修改\n");scanf("%d",&choose);if(choose==1){for(i=t;i<n-1;i++){stu[i]=stu[i+1];}n--;}else{printf(">>>>请重新输入该学生信息:\n");scanf("%s %s %s",stu[t].num,stu[t].name,&stu[t].address);}Save2(t); um,stu[n].name,&stu[n].address);示输出江苏,非江苏学生信息{int i;printf("江苏学生:\n");printf("学号姓名籍贯\n");for(i=0;i<n;i++){if(strcmp(stu[i].address,"江苏")==0)um,stu[i].name,stu[i].address);}}printf("\n");printf("\n");printf("非江苏学生:\n");printf("学号姓名籍贯\n");for(i=0;i<n;i++){if(strcmp(stu[i].address,"江苏")!=0){printf("%s %7s %5s\n",stu[i].num,stu[i].name,stu[i].address);}}}void Finds(){int i,k=-1;int choose;char ans[50];printf("请输入籍贯\n");scanf("%s",ans);for(i=0;i<n;i++)if(strcmp(ans,stu[i].address)==0){k=1;printf("%s %s %s\n",stu[i].num,stu[i].name,stu[i].address);}if(k=-1)printf("无此省份学生信息\n");return;}五、测试数据及其结果分析截取了调试时的图片,基本符合要求,但然后一些不人性化的地方值得修改。
学生籍贯信息记录簿设计c语言
学生籍贯信息记录簿设计c语言学生籍贯信息记录簿设计C语言随着教育水平的提高,学生的籍贯信息越来越重要。
籍贯信息记录簿是学生个人信息管理的一个重要组成部分,它既方便管理者查看学生人口分布情况,也方便学生查询自己的籍贯信息。
本文将介绍一个基于C语言的学生籍贯信息记录簿设计方案。
这个方案可以轻松地记录和查询学生的籍贯信息,还支持对信息进行排序和修改。
1、设计思路设计一个包含以下功能的学生籍贯信息记录簿:- 添加学生籍贯信息:输入学生的姓名和籍贯信息,将其加入记录簿中。
- 查询学生籍贯信息:按学生姓名查询学生籍贯信息。
- 修改学生籍贯信息:按学生姓名修改学生籍贯信息。
- 排序学生籍贯信息:按学生姓名或籍贯信息排序学生籍贯信息。
- 导出学生籍贯信息:将学生籍贯信息导出为文本文件。
2、数据结构设计为实现上述功能,需要以下数据结构:``` struct student { char name[20]; //学生姓名 char province[20]; //籍贯 };struct node { struct student data; //数据struct node *next; //指向下一个节点的指针 }; ```这里用链表来存储学生籍贯信息记录簿,每个节点表示一个学生的信息。
数据结构包含了学生姓名和籍贯信息,还有指向下一个节点的指针。
3、函数设计实现上述功能,需要以下函数:- `void menu()`: 显示功能菜单。
- `voidadd_node(struct node **head)`: 添加节点。
- `void search_node(struct node *head)`: 按学生姓名查询节点。
- `void modify_node(struct node *head)`: 按学生姓名修改节点。
- `void sort_node(struct node*head)`: 按学生姓名或籍贯信息排序节点。
C语言程序设计学生籍贯信息记录簿
学院程序设计工程训练报告C语言程序设计学生籍贯信息记录簿课程名称C语言程序设计工程训练姓名院(系)信息科学与技术学院专业班级学号指导教师教务处制目录1 需求分析 (1)2 系统总框图和功能模块说明 (1)2.1 系统总框图 (1)2.2 功能模块说明 (2)3 系统设计 (2)3.1 主要结构体 (2)3.2主要功能函数 (2)3.3 关键函数的流程图 (3)4 系统调试 (4)5 总结 (6)6 源程序清单 (8)1 需求分析编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。
具体功能:1、创建信息链表并以磁盘文件保存2、读取磁盘文件并显示输出所有学生的籍贯信息3、按学号或姓名查询其籍贯4、按籍贯查询并输出该籍贯的所有学生5、能添加、删除和修改学生的籍贯信息6、系统以菜单方式工作2 系统总框图和功能模块说明2.1 系统总框图图1 系统总框图2.2 功能模块说明系统初始化模块:完成系统初始化。
创建信息链表模块:在本地创建学生籍贯文件,保存学生籍贯信息。
输入学生信息模块:完成学生籍贯信息的录入。
修改学生信息模块:完成学生籍贯信息的修改。
查询学生信息模块:完成学生籍贯信息的查询。
删除学生信息模块:完成学生籍贯信息的删除。
重置学生信息模块:完成学生籍贯信息的重置。
保存学生信息模块:完成学生籍贯信息的保存。
3 系统设计3.1 主要结构体学生信息:学号、姓名、籍贯typedef struct{ short zhku_status;char zhku_number[12];char zhku_name[10];char zhku_address[20];}StuType;3.2主要功能函数void zhku_AddData(void) /*录入数据*/void wxw_ListData(void) /*显示所有数据*/void wp_Delete(void) /*做删除标记*/void wp_Pack(void) /*重置信息*/ void zhku_UpdateData(void) /*修改*/void SH_Search(void) /*查询*/3.3 关键函数的流程图4 系统调试打开程序后按任意键,将会出现上述界面。
c语言数据结构学生信息表
c语言数据结构学生信息表C语言中,我们可以使用数据结构来表示学生信息表。
一种常用的数据结构是结构体(struct)。
下面是一个示例代码:```c#include <stdio.h>// 定义学生结构体struct Student {int id; // 学号char name[20]; // 姓名int age; // 年龄int main() {// 定义学生信息表数组struct Student students[100];// 添加学生信息students[0].id = 1;strcpy(students[0].name, "张三");students[0].age = 18;students[1].id = 2;strcpy(students[1].name, "李四");students[1].age = 19;// 输出学生信息for (int i = 0; i < 2; i++) {printf("学生%d:\n", i + 1);printf("学号:%d\n", students[i].id);printf("姓名:%s\n", students[i].name);printf("年龄:%d\n", students[i].age);printf("\n");return 0;```这段代码使用了一个包含100个元素的学生信息表数组,每个元素都是一个学生结构体。
通过给结构体的成员赋值,我们可以添加学生的信息。
然后,通过循环遍历数组,可以输出每个学生的信息。
注意,在实际使用中,可以根据需求扩展结构体的成员,例如添加成绩、性别等信息。
这只是一个简单的示例,你可以根据自己的需求进行修改和扩展。
C语言课程设计 学生籍贯信息记录簿设计教学教材
C语言课程设计学生籍贯信息记录簿设计C语言与程序设计课程设计学生籍贯信息记录簿设计学院信息工程班级物联1301班学号 131408119姓名滕玲一.设计目的该软件主要是编辑一个学生籍贯信息记录簿记录每个学生信息,包括:学号、姓名、籍贯。
具体功能:1.创建信息链表并以磁盘文件保存;2.读取磁盘文件并显示输出所有学生的籍贯信息;3.按学号或姓名查询其籍贯;4.按籍贯查询并输出该籍贯的所有学生;5.能添加、删除和修改学生的籍贯信息;二.总体设计1.设置输入输出流及将程序由磁盘文件保存,构件类stu,其主要包括:学号,姓名,籍贯;2.构建无返回值main函数,输出由与程序相关操作构成的信息链表;3.根据链表设置利用switch函数和循环函数将链表中的内容一一实现;三.详细设计1.学生基本信息的录入这部分的功能主要包括信息的录入,首先按程序提示输入学生的学号,姓名,籍贯等。
在录入数据的同时,系统将对信息的合法性进行检验。
若用户输入不合法的信息,则被系统要求重新输入;若合法性成立则录入完毕后系统将返回主页面。
主页面还有显示学生的全部信息,并且这些信息都会写到你所指定的文本文件中。
2.显示学生信息此功能是将原录入的学生信息读出,并在屏幕上显示出来,并且录入到你所指定的文本文件中。
3.学生信息读取进入该项功能界面后,用户可以对学生的个人信息进行查看,并且录入到你所指定的文本文件中。
4.按学号或姓名查找学生信息此项功能可以根据用户输入的选择查处该学生的所有信息,并且录入到你所指定的文本文件中。
5.删除和修改个人信息选择此项功能后,系统将会自动在屏幕上显示按学号录入原来同学的个人信息,输入后进行修改,并且录入到你所指定的文本文件中。
6.退出系统,结束任务【注:main()主函数每一C 程序都必须有一main()函数, 可以根据自己的爱好把它放在程序某个地方。
程序之前输入学生信息,main()申明主函数,输出相应的功能函数。
学生籍贯信息记录簿C语言课程设计报告
计算机科学与技术系课程设计报告2012~2013 学年第1学期课程C语言课程设计课程设计名称学生籍贯信息记录簿设计学生学号专业班级指导教师目录一、绪言——需求分析……………………二、系统设计……………………………(一)设计思想…………………………(二)源程序设计…………………………(三)、设计表示……………………………三、系统调试………………………………四、学生籍贯记录薄使用说明…………………五、总结……………………………………六、参考文献……………………………………一、绪言——需求分析随着学校办学规模的不断扩大、办学层次的多样化、在校生的不断增多。
开发这系统可以是教务处老师减轻工作压力,比较系统的对学生进行管理,加快速度、加强管理,使各项管理更加规化。
题目要求设计一个学生籍贯信息记录簿系统,该系统要求对学生籍贯信息进行管理和维护。
要求为:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的籍贯信息;(3)按学号或查询其籍贯;(4)按籍贯查询并输出该籍贯的所有学生;(5)能添加、删除和修改学生的籍贯信息(可选项)。
二、系统设计(一)设计思想:流程图(二)、源程序设计#include<stdio.h> ///宏定义函数#include<stdlib.h> //串操作及存操作函数#include<string.h> /////调用系统函数typedef struct student ////定义新结构体student {char name[10]; /*定义*/int num; /*定义学号*/char sex[10]; /*定义性别*/int age; /*定义年龄*/char location[10]; /*定义籍贯*/}s;void Fun(){char ch1;/*定义字符*/printf("继续操作?\n\t——输入Y继续操作/N退出系统[不区分大小写]\n"); scanf("%s",&ch1); /*接收字符*/switch(ch1) /*选择结构*/{case 'Y':case 'y':break;case 'N':case 'n':printf("欢迎您再次使用。
基于C 的学生籍贯信息记录簿方案设计书
学生姓名:指导老师:摘要随着现代化校园的发展,学生的学籍管理需要更快捷方便的信息化管理模式。
设计一个基于c++的学生档案管理系统,可以方便对学生信息的管理。
本设计实现了全校学生信息查询,新来的学生信息进行信息录入,由于学生上课情况复杂,还实现了信息修改,及时调整学生的基本情况的功能。
本设计的学校学生档案管理系统,使用了面向对象的方法,运用Microsoft Visual C++ 6.0实现具有添加新学生、显示全部、删除、删除全部、修改、退出等功能的学生籍贯管理系统。
关键词程序设计;C++;学籍管理1 引言学生档案管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
计算机已经成为我们学习和工作的得力助手:今天,计算机的价格已经十分低廉,性能却有了长足的进步。
它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面:首先,计算机可以代替人工进行许多繁杂的劳动;其次,计算机可以节省许多资源;第三,计算机可以大大的提高人们的工作效率等等。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对学生档案信息进行管理,具有手工管理所无法比拟的优点。
例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学生档案管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。
学生档案管理系统是典型的信息管理系统(MIS),其开发主要包括保密和前台应用程序的开发两个方面。
本次课程设计目的:通过一个企业人事管理系统,使学校档案管理工作系统化、规范化、自动化,从而达到提高学校管理效率。
学生籍贯记录簿
#include"comnirecord.h"#include"iostream.h"#include"fcntl.h"#include"errno.h"#define FILENAME1 "sichuan.txt"#define FILENAME2 "feisichuan.txt"void menu(){cout<<" [1]----------添加"<<endl;cout<<" [2]----------删除"<<endl;cout<<" [3]----------修改"<<endl;cout<<" [4]----------按学号查询"<<endl;cout<<" [5]----------按姓名查询"<<endl;cout<<" [6]----------按籍贯查询"<<endl;cout<<" [7]----------显示"<<endl;cout<<" [8]----------退出"<<endl;cout<<" 请选择要进行的操作:"<<endl;}void main(){int mu;cout<<"----------------------------------------"<<endl<<endl;cout<<"*****欢迎使用学生籍贯信息记录簿系统*****"<<endl<<endl;cout<<"----------------------------------------"<<endl;menu();cin>>mu;info inform;inform.studentID=new char[10];=new char[10];inform.province=new char[10];FILE* fh=fopen(FILENAME1,"r+");FILE* fh2=fopen(FILENAME2,"r+");if (fh==NULL||fh2==NULL){perror(FILENAME1);return;}comnirecord a(fh);//a是从四川籍的用户的链表comnirecord b(fh2);//b是从非四川籍的用户的链表while (mu!=8){switch (mu){case 1:cout<<"请输入你要添加的用户的信息:"<<endl;cout<<"请输入你要添加的用户的学号:"<<endl;cin>>inform.studentID;cout<<"请输入你要添加的用户的姓名:"<<endl;cin>>;cout<<"请输入你要添加的用户的籍贯:"<<endl;cin>>inform.province;if (strcmp(inform.province,"四川")==0){a.Insert(a.Getn()-1,inform.studentID,,inform.province);}elseb.Insert(b.Getn()-1,inform.studentID,,inform.province);break;case 2:cout<<"请输入你要删除的用户的学号:"<<endl;cin>>inform.studentID;if(!(a.Delete(inform.studentID)||b.Delete(inform.studentID))){cout<<"删除失败!未找到该学号的用户!"<<endl;}break;case 3:cout<<"请输入你要修改的用户的学号:"<<endl;cin>>inform.studentID;if(!(a.Delete(inform.studentID)||b.Delete(inform.studentID))){cout<<"修改失败!未找到该学号的用户!"<<endl;}else{cout<<"请输入你要修改的用户修改后的信息:"<<endl;cout<<"修改后的学号:";cin>>inform.studentID;cout<<"修改后的姓名:";cin>>;cout<<"修改后的籍贯:";cin>>inform.province;if (strcmp(inform.province,"四川")==0){a.Insert(a.Getn()-1,inform.studentID,,inform.province);}elseb.Insert(b.Getn()-1,inform.studentID,,inform.province);}break;case 4:cout<<"请输入要查询的用户的学号:"<<endl;cin>>inform.studentID;if (!(a.SearchID(inform.studentID)||b.SearchID(inform.studentID))){cout<<"未找到该学号的用户!"<<endl;}break;case 5:cout<<"请输入要查询的用户的姓名:"<<endl;cin>>;if (!(a.SearchNam()||b.SearchNam())){cout<<"未找到该姓名的用户!"<<endl;}break;case 6:cout<<"请输入要查询的用户的籍贯:"<<endl;cin>>inform.province;if (!(a.SearchPro(inform.province)||b.SearchPro(inform.province))){cout<<"未找到该籍贯的用户!"<<endl;}break;case 7:a.Display();b.Display();break;default:cout<<"输入有错,请重输!"<<endl;break;}menu();cin>>mu;}delete[]inform.studentID;delete[];delete[]inform.province;fclose(fh);FILE* fg=fopen(FILENAME1,"w+");FILE* fg2=fopen(FILENAME2,"w+");a.WriteInFile(fg);b.WriteInFile(fg2);}2、comnirecord头文件:#include"iostream.h"#include"string.h"#include"stdio.h"class comnirecord;struct info{char * studentID;char * name;char * province;friend comnirecord;};class Node{info element;Node * link;friend comnirecord;};class comnirecord{public:comnirecord(FILE * fp);~comnirecord();bool Insert(int i,char * stuID,char * nam,char * prov);//存取void Display(info x);//显示void Display();bool Delete(char * stuID);// 按学号删除bool SearchID(char * stuID);//按学号查询bool SearchNam(char * nam);//按姓名查询bool SearchPro(char * prov);//按籍贯查询bool WriteInFile(FILE * fp);int Getn();private:bool SearchID(char * stuID,info & x)const;bool SearchNam(char * nam,info & x)const;bool SearchPro(char * prov,Node * &x)const;Node * first;int n;};int comnirecord::Getn(){return n;}comnirecord::comnirecord(FILE * fp){n=0;first=NULL;int count=-1;int q[3];int k1,k2,k3;char * s=new char[30];while (fgets(s,30,fp)!=NULL){Node * p=new Node;int j=0;for (int i=0;s[i]!='\0';i++)//可以考虑中间是用","隔开的情况{if (s[i]==' '&&j<=2){q[j]=i;j++;}}p->element.studentID=new char[q[0]+1];p->=new char[q[1]-q[0]];p->element.province=new char[q[2]-q[1]];k1=sprintf(p->element.studentID,"%c",s[0]);for (i=1;i<q[0];i++){k1+=sprintf(p->element.studentID+k1,"%c",s[i]);}k2=sprintf(p->,"%c",s[q[0]+1]);for (i=q[0]+2;i<q[1];i++){k2+=sprintf(p->+k2,"%c",s[i]);}k3=sprintf(p->element.province,"%c",s[q[1]+1]);for (i=q[1]+2;i<q[2];i++){k3+=sprintf(p->element.province+k3,"%c",s[i]);}Insert(count,p->element.studentID,p->,p->element.province);count++;delete[]s;s=new char[30];}delete [] s;}comnirecord::~comnirecord(){Node *p;while (first){p=first->link;delete first->element.studentID;// 是否需要??delete first->;delete first->element.province;delete first;first=p;}}bool comnirecord::Insert(int i,char * stuID,char * nam,char * prov){if(i<-1||i>n-1){cout<<"out of bounds!"<<endl;cout<<"录取失败!"<<endl;return false;}Node * q=new Node;q->element.studentID=new char[strlen(stuID)+1];strcpy(q->element.studentID,stuID);q->=new char[strlen(nam)+1];strcpy(q->,nam);q->element.province=new char[strlen(prov)+1];strcpy(q->element.province,prov);Node * p=first;for (int j=0;j<i;j++) p=p->link;if (i>-1){q->link=p->link;p->link=q;}else{q->link=first;first=q;}n++;return true;}bool comnirecord::Delete(char * stuID){if(!n){cout<<"underflow"<<endl; return false;}Node * p=first;Node * q=first;for (int j=0;j<n&&strcmp(p->element.studentID,stuID)!=0;j++){q=p;p=p->link;}if (!p){//cout<<"未找到该学号的学生信息!"<<endl;return false;}if (p==first){first=first->link;}else{p=q->link;q->link=p->link;}delete []p->element.studentID;delete []p->;delete []p->element.province;delete []p;n--; return true;}bool comnirecord::SearchID(char * stuID){info x;bool a=SearchID(stuID,x);if (a){Display(x);}return a;}bool comnirecord::SearchID(char * stuID,info & x)const{Node * p=first;for (int j=0;j<n&&strcmp(p->element.studentID,stuID)!=0;j++) p=p->link;if (!p){//cout<<"未找到该学号的学生信息!"<<endl;return false;}x.studentID=newchar[strlen(p->element.studentID)+1];strcpy(x.studentID,p->element.studentID);=new char[strlen(p->)+1];strcpy(,p->);x.province=newchar[strlen(p->element.province)+1];strcpy(x.province,p->element.province);return true;}bool comnirecord::SearchNam(char * nam){info x;bool a=SearchNam(nam,x);if (a){Display(x);}return a;}bool comnirecord::SearchNam(char * nam,info & x)const {Node * p=first;。
学生籍贯信息记录簿C语言课程设计
精品文档程序设计课程设计报告课题名称:学生籍贯信息记录簿专业计算机科学与技术(软件工程)学生姓名___________________________________ 班级_______________________________________ 学号_______________________________________ 指导教师____________________________________ 完成日期___________________________________精品文档------------------------------------------------ 1 ------------------------------------------- 23.2 读 取 磁 盘 文 件 并 显 示 输 出 所 有 学 生 的 籍 贯 信 息 ; ------------------------- 3------------------------------------ 113.6 显 示输出 江 苏籍 和非 江 苏籍 学 生的信 息并 可分别 存 盘 16四 设 计 小 结-------- 17五程 序源 代 码课程设计的目的-1二设计内容与要求-1-三------------主要 技术 ------- 1指标及 特点八、3.0信息描述(注 用流程 图表示)3.1创建信息链表并以磁盘文 3.3 按 学 号 或 姓 名 ------------------- 5查询其籍贯;3.4 按 籍 贯 查 询 并 输 出 该 籍 9贯的所有 学生;3.5能添加 删除和修改学 生的籍贯信息;精品文档183欢迎。
下载六 参 考 文 献-------- 29课程设计的目的1.加深对《C 语言程序设计》课程知识的理解,掌握 C 语言应用程序的开发方法和步骤;2. 进一步掌握和利用C 语言进行课程设计的能力;3. 进一步理解和运用结构化程序设计的思想和方法;4. 初步掌握开发一个小型实用系统的基本方法;5. 学会调试一个较长的程序的基本方法;6. 学会利用流程图或N-S 图表示算法;7. 掌握书写课程设计开发文档的能力(书写课程报告)。
学生基本信息录入c语言
学生基本信息录入c语言学生基本信息录入C语言概述在学校教育中,学生信息管理是一个必不可少的环节。
为了方便管理和查询,需要将学生基本信息进行录入和存储。
这篇文章将介绍如何使用C语言来实现学生基本信息的录入。
步骤1. 定义结构体首先,我们需要定义一个结构体来存储学生的基本信息。
结构体包含姓名、性别、年龄、班级等属性。
代码如下:```struct student {char name[20];char sex[6];int age;char class[20];};```2. 录入学生信息接下来,我们可以使用scanf函数来实现学生信息的录入。
在录入之前,需要先定义一个结构体变量来存储每个学生的信息。
```struct student stu;printf("请输入姓名:");scanf("%s", );printf("请输入性别:");scanf("%s", stu.sex);printf("请输入年龄:");scanf("%d", &stu.age);printf("请输入班级:");scanf("%s", stu.class);```3. 存储学生信息当一名学生的信息输入完成后,我们需要将其存储到文件中。
在存储之前,需要打开文件并检查是否打开成功。
```FILE *fp;fp = fopen("students.txt", "a+");if (fp == NULL) {printf("文件打开失败!\n");exit(1);}```接下来,我们可以使用fprintf函数将学生信息写入文件中。
```fprintf(fp, "%s %s %d %s\n", , stu.sex, stu.age, stu.class); ```最后,需要关闭文件。
学生籍贯信息记录簿设计
}
printf("\n Saving File \n");
info = start;
while(info){
fwrite(info,sizeof(structaddress),1,fp);
info = info->next;/* get next address */
}
fclose(fp);
charname[30];
charstreet[40];
charcity[20];
charstate[3];
charzip[11];
structaddress *next;/* pointer to next entry */
structaddress *prior;/* pointer to previous record */
voidenter(void)
{
structaddress *info;
for(;;){
info= (structaddress *)malloc(sizeof(structaddress));
if(!info){
printf("\n out of memory");
return;
}
inputs("Enter name:", info->name,30);
}
/* Load the address file. */
voidload()
{
structaddress *info;
FILE *fp;
fp = fopen("mlist.txt","rb");
if(!fp){
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c语言程序学生籍贯信息记录簿设计学生籍贯信息记录簿课程设计报告书班级: 方0909-1 学号: 20096401 姓名: 苑小叶指导教师: 康亚男石家庄铁道大学四方学院2010年07月14日1课程设计报告内容1. 选择题目题目:学生籍贯信息记录簿设计 2. 内容摘要摘要:学生籍贯信息管理系统是典型的信息管理系统,根据开发要求,主要完成对学生姓名、学号、籍贯等管理。
随着学校办学规模的不断扩大、办学层次的多样化、在校生的不断增多。
开发这系统可以是教务处老师减轻工作压力,比较系统的对学生进行管理,加快速度、加强管理,使各项管理更加规范化。
本系统管理内容广泛,全面涉及管理学生资料信息的管理。
3. 索引关键词关键词:学生籍贯管理,结构体,循环,函数学生籍贯信息记录簿4. 目录目录1题目要求……………………………………………………………4 2设计思想……………………………………………………………4 3系统完成及功能……………………………………………………4 4界面设计.....................................................................5 5正文...........................................................................5 6结论...........................................................................14 7参考资料.....................................................................14 8后记...........................................................................15 9附录 (15)3学生籍贯信息记录簿 5.正文1.1课程设计题目要求1. 要求利用C语言面向过程的编程思想来完成系统的设计;2. 突出C语言的函数特征,以多个函数实现每一个子功能;3. 画出功能模块图;4. 进行简单界面设计,能够实现友好的交互;5. 具有清晰的程序流程图和数据结构的详细定义;6. 熟练掌握C语言对文件的各种操作。
2.1设计思想程序运用结构体数组和循环进行程序的编写.3.1系统完成功能及功能框图1每条记录包括一个学生学号、姓名、籍贯。
2输入功能:可以一次完成无数条记录的输入。
3显示功能:完成全部学生记录的显示。
4查找功能:完成按姓名、学号查找学生记录,并显示。
5修改功能:通过查找学生姓名、学号,修改学生记录。
6保存功能:将学生记录保存到任何自定义的文件中。
7读取功能:将保存到文件中的学生记录读取出来。
8应提供一个界面来调用各个功能,调用界面和功能的操作界面应尽可能清晰美观。
主要功能录查删编输入询除辑出4学生籍贯信息记录簿 4.1界面设计5.1核心算法及说明#include <stdio.h> #include <io.h> #include <stdlib.h> #include <string.h> #define MAX 300 struct student{char name[10]; // 姓名char no[50]; // 学号char ad[20]; //籍贯};struct data{5学生籍贯信息记录簿int count; // 当前学生数组中学生的个数struct student stu[MAX]; // 学生数组} dd;// 显示主菜单void menu(){system("cls");printf("\n");printf("\t\t\t********************************\n"); printf("\t\t\t* *\n");printf("\t\t\t* 学生籍贯信息记录簿 *\n");printf("\t\t\t* *\n");printf("\t\t\t* [0] 退出 *\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* *\n");printf("\t\t\t********************************\n"); printf("\t\t\t* 制作人:苑小叶崔京 *\n"); }// 等待用户按回车后回到主菜单void to_menu(){char c1,c2;printf("\n\n\n按回车键返回主菜单...");scanf("%c%c",&c1,&c2);menu();}// 查看所有学生信息6学生籍贯信息记录簿 void view_data(){int i;printf("姓名\t学号\t籍贯");printf("\n-------------------------------------------------------------------\n");for(i=0;i<dd.count;i++)printf("%s\t%s\t%s\n",dd.stu[i].name,dd.stu[i].no,dd.stu[i].ad);}// 将数据从结构体数组保存到文件中void save_data(){FILE *fp;int i,k;k=dd.count;fp=fopen("c:/dada.txt","w");fwrite(&k,sizeof(int),1,fp);for(i=0;i<k;i++)fwrite(&dd.stu[i],sizeof(struct student),1,fp);fclose(fp);}// 输入学生记录void add_data(){struct student st;int b;int k;int i,j;while(1){j=0;7学生籍贯信息记录簿printf("\n请输入学生信息:");printf("\n姓名\t学号\t籍贯");printf("\n---------------------------------------------------------------\n");scanf("%s%s%s",,st.no,st.ad);for(i=0;i<dd.count;i++)if(strcmp(dd.stu[i].no,st.no)==0){j=1;printf("学号录入重复,请重新输入~"); break;}if(j==1)continue;if(j==0){k = dd.count;strcpy(dd.stu[k].name,);strcpy(dd.stu[k].no,st.no);strcpy(dd.stu[k].ad,st.ad);dd.count++;}printf("\n\n继续添加学生信息[1-yes 0-no]:"); scanf("%d",&b);if(b==0) break;}save_data();}// 将数据从文件读到结构体数组中void read_data(){FILE *fp;int i,k;8学生籍贯信息记录簿struct student st;k=0;if(access("c:/dada.txt",0)==-1) // 如果文件不存在{fp=fopen("c:/dada.txt","w");fwrite(&k,sizeof(int),1,fp);fclose(fp);}fp=fopen("c:/dada.txt","r");fread(&k,sizeof(int),1,fp);dd.count=k;for(i=0;i<k;i++){fread(&st,sizeof(struct student),1,fp);strcpy(dd.stu[i].name,);strcpy(dd.stu[i].no,st.no);strcpy(dd.stu[i].ad,st.ad);}fclose(fp);}// 删除学生记录void delete_data(){int i,k;char no[50];printf("\n请输入要删除学生的学号:");scanf("%s",no);k=-1;for(i=0;i<dd.count;i++){if(strcmp(dd.stu[i].no,no)==0){k=i;9学生籍贯信息记录簿break;}}if(k==-1){printf("\n\n没有找到该学生(学号-%s)!",no); }else{for(i=k;i<dd.count;i++){strcpy(dd.stu[i].name,dd.stu[i+1].name); strcpy(dd.stu[i].no,dd.stu[i+1].no); strcpy(dd.stu[i].ad,dd.stu[i+1].ad);}dd.count--;save_data();printf("\n\n删除(学号-%s)成功!",no);}}// 编辑学生记录void edit_data(){int i,k;char no[50],ad[20];printf("\n请输入要编辑学生的学号:"); scanf("%s",no);k=-1;for(i=0;i<dd.count;i++){if(strcmp(dd.stu[i].no,no)==0){k=i;break;10学生籍贯信息记录簿}}if(k==-1){printf("\n\n没有找到该学生(学号-%s)!",no);}else{printf("\n姓名:%s,学号:%s",dd.stu[k].name,dd.stu[k].no); printf("\n请修改学生数据:");printf("\n籍贯:");scanf("%s",ad);strcpy(dd.stu[k].ad,ad);}}// 查询(学号)void query_data_no(){int i,k;char no[50];printf("\n请输入要查询学生的学号:");scanf("%s",no);k=-1;for(i=0;i<dd.count;i++){if(strcmp(dd.stu[i].no,no)==0){{printf("\n\n姓名\t学号\t籍贯");printf("\n-----------------------------------------------------------------\n");}11学生籍贯信息记录簿k=i;printf("%s\t%s\t%s\n",dd.stu[i].name,dd.stu[i].no,dd.stu[i].ad);}}if(k==-1){printf("\n\n没有找到该学生(学号-%s)!",no);}}// 查询(姓名)void query_data_name() {int i,k;char name[10];printf("\n请输入要查询学生的姓名:");scanf("%s",name);k=-1;for(i=0;i<dd.count;i++){if(strcmp(dd.stu[i].name,name)==0){{printf("\n\n姓名\t学号\t籍贯");printf("\n-----------------------------------------------------------------\n");}k=i;printf("%s\t%s\t%s\n",dd.stu[i].name,dd.stu[i].no,dd.stu[i].ad);}}if(k==-1){12学生籍贯信息记录簿printf("\n\n没有找到该学生(姓名-%s)!",name); }}//查询(籍贯)void query_data_address() {int i,sum=0;char ad[20];printf("请输入籍贯信息:");scanf("%s",ad);printf("该籍贯的学生有:");for(i=0;i<dd.count;i++)if(strcmp(dd.stu[i].ad,ad)==0){printf("%s\t",dd.stu[i].name);sum++;}if(sum==0)printf(" 0 人 \n");}// 主函数void main(){int fun;read_data();menu();while(1){printf("请输入功能号[0-7]:",&fun); scanf("%d",&fun);switch(fun){case 0: // 退出break;case 1: // 查看所有学生信息13学生籍贯信息记录簿view_data();break;case 2: // 输入学生记录add_data();break;case 3: // 删除学生记录delete_data();break;case 4: // 编辑学生记录edit_data();break;case 5: // 查询(学号)query_data_no();break;case 6: // 查询(姓名)query_data_name();break;case 7: // 查询(籍贯)query_data_address();break;}if(fun==0) break;to_menu();}}6.结论各项功能均能实现,但程序存在缺陷,如录入重复学号,没有出现提示功能,需要修改和完善。