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.结论各项功能均能实现,但程序存在缺陷,如录入重复学号,没有出现提示功能,需要修改和完善。