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)`: 按学生姓名或籍贯信息排序节点。
- 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.结论各项功能均能实现,但程序存在缺陷,如录入重复学号,没有出现提示功能,需要修改和完善。