学生籍贯信息记录簿设计 C语言程序

wxjs054631236 2010-07-01 11:15:30
学生籍贯信息记录簿设计
编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。具体功能:
(1)创建信息并以磁盘文件保存;
(2)读取磁盘文件并显示输出所有学生的籍贯信息;
(3)按学号或姓名查询其籍贯;
(4)按籍贯查询并输出该籍贯的所有学生;
(5)统计并生成统计报表:
(6)能添加、删除和修改学生的籍贯信息;



课程设计题目设置
下列题目,请学生任选一题完成。要求:
(1)采用模块化程序设计的方法。
(2)锯齿型程序书写格式。
(3)必须上机调试通过。
(4)源程序代码中有注释。
...全文
1655 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
KevinHo 2010-07-02
  • 打赏
  • 举报
回复
期末了…… CSDN的C/C++版,到处都是这样的大作业要求了~~~
帮你们顶了
snser 2010-07-02
  • 打赏
  • 举报
回复
和我一样 在做课程设计~~ o(╯□╰)o
adooadoo 2010-07-02
  • 打赏
  • 举报
回复
我感觉每次的课程设计大家都差不多,而且一大堆不爱结贴的人,悲剧啦
zhaiershuaixu 2010-07-02
  • 打赏
  • 举报
回复
友情围观。。。。。。
jldream110 2010-07-02
  • 打赏
  • 举报
回复
我这有个 类似的 程序源码 要的话 加我 qq 我传给你
bobo364 2010-07-02
  • 打赏
  • 举报
回复
改一个字段即可
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#define Max 30
#define printf1 printf("------------------------------------------------------------------------------\n");
#define printf2 printf("学号--姓名--年龄--性别----出生年月------地址------电话-------E-mail---\n");
int sum=0;

void clearscreen()
{
getchar();
system("cls");

}

struct date
{
int year;
int month;
int day;
};

struct stud_type
{
int num;//学号
char name[20];//姓名
int age;//年龄
char sex[12];//性别
struct date birthday;//出生年月
char address[40];//地址
char tele[15];//电话
char E_mail[30];
}students[Max], t;

/*保存信息*/
int save_message(int sum)
{
FILE *fp;
int i;
if((fp=fopen("students' information.txt","w"))==NULL)
{
printf("读文件错误!\n");
return 0;
}
for(i=0;i<sum;i++)
{
if(fwrite(&students[i],sizeof(struct stud_type),1,fp)!=1)
printf("写文件错误!\n");
}
fclose(fp);
return i;
}

/*录入信息*/
int input_message()
{
int i=sum,s=Max,k=0;
do
{
clearscreen();
printf("录入学生信息(最多%d个)\n",s);
printf1;
printf(" \n 第%d个学生",i+1);
printf("\n 学号:");
scanf("%d",&students[i].num);

if(students[i].num==0)
{
break;
}
printf("\n 学生姓名:");
scanf("%s",students[i].name);
printf("\n 年龄:");
scanf("%d",&students[i].age);
printf("\n 性别:");
scanf("%s",students[i].sex);
printf("\n 出生年月(yyyy-mm-dd):");
scanf("%d-%d-%d",&students[i].birthday.year,&students[i].birthday.month,&students[i].birthday.day);
printf("\n 地址:");
scanf("%s",students[i].address);
printf("\n 电话:");
scanf("%s",students[i].tele);
printf("\n E_mail:");
scanf("%s",students[i].E_mail);
i++;
k++;
}while(i<Max);
printf("\n ---%d个学生信息输入完毕!--\n",i);
printf(" \n 按回车键返回主菜单!\n");
getchar();
sum=k+sum;
save_message(sum);
return i;

}

/*浏览信息*/
int read_message()
{
FILE *fp;
int i=0;
if((fp=fopen("students' information.txt","r"))==NULL)
{
printf("\n\n *****暂时还没有库存信息,按回车键返回主菜单!****\n");
return 0;
}
while(feof(fp)!=1)
{
fread(&students[i],sizeof(struct stud_type),1,fp);
if(students[i].num==0)
{
break;
}
else
{
i++;
sum++;
}

}
printf("\n\n 文件中原有学生的信息:\n");
printf1;
printf2;
printf1;
for(i=0;i<sum;i++)
{
if(students[i].num!=0)
{
printf("%3d%7s%5d%6s%8d-%2d-%2d%9s%13s%16s\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].birthday.year,students[i].birthday.month,students[i].birthday.day,students[i].address,students[i].tele,students[i].E_mail );
}
}
printf("\n\n\n\n 按回车键返回主菜单!");
fclose(fp);
return(i);
}

/*学生信息浏览*/
int output_message()
{
int i=0,j=0,count=0,page=1;
clearscreen();
printf("\n\n ----学生信息表---\n 第 %d 页\n\n",page);
printf1;
printf2;

for(i=0;i<sum;i++)
{
if(students[i].num!=0)
{
printf("%3d%7s%5d%6s%8d-%2d-%2d%9s%13s%16s\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].birthday.year,students[i].birthday.month,students[i].birthday.day,students[i].address,students[i].tele,students[i].E_mail );
}
if(i%8==0&&i!=0)
{
clearscreen();
printf("\n\n ----学生信息表--- 第 %d 页\n\n",++page);
printf1;
printf2;
}
}
return 0;
}

/*按学号排序*/ /*选择排序法*/
int sort_message()
{
int i,j,k;
clearscreen();
for(i=0;i<sum-1;i++)
{
k=i;
for(j=i+1;j<sum;j++)
{
if(students[k].num>students[j].num)
{
k=j;
}
t=students[i];
students[i]=students[k];
students[k]=t;
}

}
printf("\n\n\n");
printf1;
printf2;

for(i=0;i<sum;i++)
{
printf("%3d%7s%5d%6s%8d-%2d-%2d%9s%13s%16s\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].birthday.year,students[i].birthday.month,students[i].birthday.day,students[i].address,students[i].tele,students[i].E_mail );
}
getchar();
return 0;
}

/*两种查寻方式*/
int find_by_name() /*按姓名查找*/
{
int i, j=0;
char inquire_name[20];
clearscreen();
printf(" \n 请输入要查学生的姓名:");
scanf("%s",inquire_name);
for(i=0;i<sum;i++)
{
if(strcmp(students[i].name,inquire_name)==0&&students[i].num!=0)
{
printf("\n --%s的信息--\n",students[i].name);
printf1;
printf2;
printf("%3d%7s%5d%6s%8d-%2d-%2d%9s%13s%16s\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].birthday.year,students[i].birthday.month,students[i].birthday.day,students[i].address,students[i].tele,students[i].E_mail );
}
else
{
j++;
}
}
if(j==sum)
printf("\n\n 该学生不存在!");
getchar();
return 0;
}


int find_by_num() /*按学号查找*/
{
int i,j=0,inquire;
clearscreen();
printf("\n 请输入要查学生的学号:");
scanf("%d",&inquire);
for(i=0;i<sum;i++)
{
if(inquire==students[i].num&&students[i].num!=0)
{
printf("\n --%s的信息--\n",students[i].name);
printf1;
printf2;
printf("%3d%7s%5d%6s%8d-%2d-%2d%9s%13s%16s\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].birthday.year,students[i].birthday.month,students[i].birthday.day,students[i].address,students[i].tele,students[i].E_mail );
}
else
{
j++;
}
}
if(j==sum)
{
printf("\n\n 学号为%d的学生不存在!",inquire);
}
getchar();
return 0;
}


/*学生信息查询*/
int inquire_message()
{
int choice=0;
do
{
clearscreen();
printf("\n\n\n ********学生信息查询*********\n\n");
printf(" 1.按学号查询;\n\n\n");
printf(" 2.按姓名查询;\n\n\n");
printf(" 0.返回主菜单.\n\n\n");
printf(" 请选择(0-2):");
scanf("%d",&choice);
switch(choice)
{
case 2: find_by_name();break;
case 1: find_by_num();break;
case 0: break;
}
}while(choice!=0);
return 1;
}

int main()
{
int choice;
read_message();
do
{
clearscreen();
printf("\n\n\n ****学生信息管理系统****\n\n");
printf(" 1.学生信息录入;\n\n");
printf(" 2.学生信息浏览;\n\n");
printf(" 3.学生按学号排序;\n\n");
printf(" 4.学生信息查询;\n\n");
//printf(" 5.学生信息的更改;\n\n");
printf(" 0.退出系统.\n\n");
printf(" 请选择(0--5):");
scanf("%d",&choice);
switch(choice)
{
case 1: input_message();break;
case 2: output_message();break;
case 3: sort_message();break;
case 4: inquire_message();break;
//case 5: renew_message();break;
case 0:
{
save_message(sum++);
printf("\n------以上学生信息已保存-(文件名:students' information.txt)\n");
getchar();
return 0;
break;
}
}
}while(choice!=0);
return 0;
}
sytu_chyq 2010-07-02
  • 打赏
  • 举报
回复
应该自己参考下写写。。
liutengfeigo 2010-07-01
  • 打赏
  • 举报
回复
chaoliu1024 2010-07-01
  • 打赏
  • 举报
回复
估计没人会帮你写,给你一个通讯录的C程序,和你需要的很像的!
/* A simple mailing list program that illustrates the use and maintence  
of doubly linked lists. */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct address{
char name[30];
char street[40];
char city[20];
char state[3];
char zip[11];

struct address *next; /* pointer to next entry */
struct address *prior; /* pointer to previous record */
};

struct address *start; /* pointer to first entry in list */
struct address *last; /* pointer to last entry */
struct address *find(char*);

void enter(void),search(void),save(void);
void load(void),list(void);
void mldelete(struct address **,struct address **);
void dls_store(struct address *i,struct address **start,struct address **last);
void inputs(char *,char *,int);
void display(struct address *);
int menu_select (void);

int main(void)
{
start = last = NULL; /* initialize start and end pointers */

for(;;){
switch(menu_select()){
case 1: enter (); /* enter an address */
break;
case 2: mldelete(&start,&last); /* remove an address */
break;
case 3: list(); /* display the list */
break;
case 4: search(); /* find an address */
break;
case 5: save(); /* save list to disk */
break;
case 6: load(); /* read from disk */
break;
case 7: exit(0);
}
}
return 0;
}

/* Select an operation. */
int menu_select(void)
{
char s[80];
int c;

printf("1.Entry a name \n");
printf("2.Delete a name \n");
printf("3.List the file \n");
printf("4.Search \n");
printf("5.Save the file \n");
printf("6.Load the file \n");
printf("7.Quit \n");
do {
printf("\n Enter your choice:");
gets(s);
c = atoi(s);
}while(c<0||c>7);
return c;
}

/* Enter names and address. */
void enter(void)
{
struct address *info;

for(;;){
info= (struct address *)malloc(sizeof(struct address));
if(!info){
printf("\n out of memory");
return;
}

inputs("Enter name:", info->name,30);
if(!info->name[0]) break; /* stop entering */
inputs("Enter street:",info->street,40);
inputs("Enter city:",info->city,20);
inputs("Enter state:",info->state,3);
inputs("Enter zip:",info->zip,10);

dls_store(info,&start,&last);
} /* entry loop */
}

/* This function will input a string up to the length in count and will
prevent the string from being overrun . It will also display a prompting message. */
void inputs(char *prompt,char *s,int count)
{
char p[255];

do {
printf(prompt);
fgets(p,254,stdin);
if(strlen(p) > (unsigned int)count) printf("\n Too Long \n");
}while(strlen(p) > (unsigned int)count);

p[strlen(p)-1] = 0; // remove newline charater
strcpy(s,p);
}


/* Create a doubly linked list in sorted order. */
void dls_store(
struct address *i, /* new element */
struct address **start, /* firsr element in list */
struct address **last /* last element in list */
)
{
struct address *old,*p;

if(*last == NULL){ /* first element in list */
i->next = NULL;
i->prior = NULL;
*last = i;
*start = i;
return;
}
p = *start; /* start at top list */

old = NULL;
while (p){
if (strcmp(p->name,i->name)<0){
old = p;
p = p->next;
}
else {
if(p->prior){
p->prior->next = i;
i->next = p;
i->prior = p->prior;
p->prior = i;
return;
}
i->next = p; /* new first element */
i->prior = NULL;
p->prior = i;
*start = i;
return ;
}
}
old->next = i; /* put on old */
i->next = NULL;
i->prior = old;
*last = i;
}

/* Remove an element from the list. */
void mldelete(struct address **start,struct address **last)
{
struct address *info;
char s[80];

inputs("Enter name:",s,30);
info = find(s);
if(info){
if(*start == info){
*start = info->next;
if(*start)((*start)->prior) = NULL;
else *last = NULL;
}
else{
info->prior->next = info->next;
if(info!=*last)
info->next->prior = info->prior;
else
*last = info->prior;
}
free(info); /* return memory to system */
}
}

/* Find an address. */
struct address *find(char *name)
{
struct address *info;

info = start;
while (info){
if(!strcmp(name,info->name))return info;
info = info->next; /* get next address */
}
printf("Name not found. \n");
return NULL; /* not found */
}

/* Display the entire list. */
void list(void)
{
struct address *info;

info = start;
while(info){
display(info);
info = info->next; /* get next address */
}
printf("\n \n");
}

/* This function actually prints the fields in each address. */
void display(struct address *info)
{
printf("%s \n",info->name);
printf("%s \n",info->street);
printf("%s \n",info->city);
printf("%s \n",info->state);
printf("%s \n",info->zip);
printf("\n \n");
}

/* Look for a name in the list. */
void search(void)
{
char name[40];
struct address *info;

printf("Enter name to find:");
gets(name);
info = find(name);
if (!info)printf("Not Found \n");
else display(info);
}

/* Save the file to disk */
void save(void)
{
struct address *info;

FILE *fp;

fp = fopen("mlist.txt","wb");
if(!fp){
printf("Cannot open file. \n");
exit(1);
}
printf("\n Saving File \n");

info = start;
while(info){
fwrite(info,sizeof(struct address),1,fp);
info = info->next; /* get next address */
}
fclose(fp);
}

/* Load the address file. */
void load()
{
struct address *info;

FILE *fp;

fp = fopen("mlist.txt","rb");
if(!fp){
printf("Cannot open file.\n");
exit(1);
}

/* free any previously allocated memory */
while (start){
info = start->next;
free(info);
start = info;
}

/* reset top bottom pointers */
start = last = NULL;

printf("\n Loading File \n");
while(!feof(fp)){
info = (struct address *)malloc(sizeof(struct address));
if(!info){
printf("Out of Memory");
return;
}
if(1 != fread(info,sizeof(struct address),1,fp))break;
dls_store(info,&start,&last);
}
fclose(fp);
}

野男孩 2010-07-01
  • 打赏
  • 举报
回复
大作业啊,,,只能帮顶了。。
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define true 1
struct student
{
char name[60];
char ID[7];
int score;
};

int dq(struct student st[]);
void xianshi();
void bc(struct student st[]);
void add();
void select();
void zz();
void chazhao();
void xhcz();
void xmcz();
void del();
void xmsc();
void xhsc();
void tj();
void bjg();
void xg();
void xhxg();
void xmxg();
void bca();
void fh();
struct student st[300];
int Number=0;
void main()
{
int choose=0;
FILE *fp=NULL;
char yesorno;

if((fp=fopen("C://student.dat","rb"))==NULL)
{
printf("\n=========>提示:文件不存在,是否要创建一个?(y/n)\n");
scanf("%c",&yesorno);
if(yesorno=='y'||yesorno=='Y')
{
fp=fopen("C://student.dat","wb");
fclose(fp);
}
else
exit(0);
}
else
{
Number=dq(st);
}
system("cls");
while(true)
{
xianshi();
printf("\t\t====>请选择:");
scanf("%d",&choose);
system("cls");
switch(choose)
{
case 0: exit(0);fh();break;
case 1: add();fh();break;
case 2: select();fh();break;
case 3: chazhao();fh();break;
case 4: del();fh();break;
case 5: tj();fh();break;
case 6: bjg();fh();break;
case 7: xg();fh();break;
case 8:zz();fh();break;
case 9:bca();break;
default:break;
}
fflush(stdin);
getchar();
system("cls");
}
}



void bca()
{
printf("\t=====程序在运行时已自动保存.....\n");
}

void fh()
{
printf("\t===>按Enter键返回主菜单\n");
}

void xg()
{
int way=0;
printf("请选择修改查找方式\n");
printf("1 按姓名查找修改\n");
printf("2 按学号查找修改\n");
scanf("%d",&way);
switch(way)
{
case 1: xmxg();break;
case 2: xhxg();break;
default: printf("输入有误,结束!\n");break;
}
}


void xmxg()
{
FILE *fp=NULL;
char name[60];
int i=0;
int changeIndex=0;
int index=0;
printf("请输入要修改的学生姓名:");
scanf("%s",name);
for (i=0;i<Number;i++)
{
if (strcmp(name,st[i].name))
{
changeIndex=i;
}
break;
}
printf("\t姓名\t学号\t成绩\n");
printf("\t%s\t%s\t%d\n\n",st[changeIndex].name,st[changeIndex].ID,st[changeIndex].score);
printf("请重新输入该学生信息");
printf("姓名:");
scanf("%s",st[changeIndex].name);
printf("学号:");
scanf("%s",st[changeIndex].ID);
printf("成绩:");
scanf("%d",&st[changeIndex].score);


fp=fopen("C://student.dat","wb");
for (i=0;i<Number;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
}
fclose(fp);
}


void xhxg()
{
FILE *fp=NULL;
char id[60];
int i=0;
int changeIndex=0;
int index=0;
printf("请输入要修改的学生学号:");
scanf("%s",id);
for (i=0;i<Number;i++)
{
if (strcmp(id,st[i].ID))
{
changeIndex=i;
}
break;
}
printf("\t姓名\t学号\t成绩\n");
printf("\t%s\t%s\t%d\n\n",st[changeIndex].name,st[changeIndex].ID,st[changeIndex].score);
printf("请重新输入该学生信息");
printf("姓名:");
scanf("%s",st[changeIndex].name);
printf("学号:");
scanf("%s",st[changeIndex].ID);
printf("成绩:");
scanf("%d",&st[changeIndex].score);


fp=fopen("C://student.dat","wb");
for (i=0;i<Number;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("\t=======>修改成功\n");
}

void bjg()
{
int i=0;
printf("以下是不及格:\n");
printf("\t姓名\t学号\t成绩\n");
for (i=0;i<Number;i++)
{
if (st[i].score<60)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
}
void tj()
{
int i=0;
double sum=0.0;
for(i=0;i<Number;i++)
{
sum+=st[i].score;
}
printf("全班总分为:%f\n",sum);
printf("平均分为:%f\n",sum/Number);
}


void del()
{
int n=0;
printf("1 按姓名删除\n");
printf("2 按学号删除\n");
scanf("%d",&n);
switch(n)
{
case 1: xmsc();break;
case 2: xhsc();break;
}
}


void xmsc()
{
FILE *fp=NULL;
char name[60];
int i=0;
int j=0;
printf("请输入要删除的学生姓名:");
scanf("%s",name);
for(i=0;i<Number;i++)
{
if(strcmp(name,st[i].name)==0)
{
for (j=i;j<Number-1;j++)
{
st[j]=st[j+1];
}
Number--;
}
}
fp=fopen("C://student.dat","wb");
for (i=0;i<Number;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("删除成功;\n");
}

void xhsc()
{
FILE *fp=NULL;
char id[60];
int i=0;
int j=0;
printf("请输入要删除的学生学号:");
scanf("%s",id);
for(i=0;i<Number;i++)
{
if (strcmp(id,st[i].ID)==0)
{
for (j=i;j<Number-1;j++)
{
st[j]=st[j+1];
}
Number--;
}
}
fp=fopen("C://student.dat","wb");
for (i=0;i<Number;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("删除成功;\n");
}

void chazhao()
{
int n=0;
printf("1 按姓名查找\n");
printf("2 按学号查找\n");
scanf("%d",&n);
switch(n)
{
case 1: xmcz();break;
case 2: xhcz();break;
default: printf("输入有误,结束!\n");
break;
}
}

void xhcz()
{
char id[7];
int i=0;
printf("请输入要查找学生学号:");
scanf("%s",id);
system("cls");
printf("\t姓名\t学号\t成绩\n");
for(i=0;i<Number;i++)
{
if (strcmp(id,st[i].ID)==0)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
}


void xmcz()
{
char name[7];
int i=0;
printf("请输入要查找学生姓名:");
scanf("%s",name);
system("cls");
printf("\t姓名\t学号\t成绩\n");
for (i=0;i<Number;i++)
{
if (strcmp(name,st[i].name)==0)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
}


void zz()
{
printf("\t**********************************************************\n\n");
printf("\t^^^^^^^^^ 《学生成绩管理系统》 ^^^^^^^^^^\n\n");
printf("\t^^^^^^^^^ 四川省托普信息技术职业学院 ^^^^^^^^^^\n\n");
printf("\t^^^^^^^^^ 09级计算机网络技术IBM2班 ^^^^^^^^^^\n\n");
printf("\t^^^^^^^^^ 周桂修改 ^^^^^^^^^^\n\n");
printf("\t**********************************************************\n\n");
}


void select()
{
int i=0;
printf("以下是全部学生成绩\n");
printf("\t姓名\t学号\t成绩\n");
for(i=0;i<Number;i++)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}


void add()
{
int numberTemp=0;
int i=0;
struct student temp;
printf("请输入要增加学生成绩个数:");
scanf("%d",&numberTemp);
for(i=0;i<numberTemp;i++)
{
printf("输入第%d个同学信息\n",i+1);
printf("姓名:");
scanf("%s",temp.name);
printf("学号:");
scanf("%s",temp.ID);
printf("成绩:");
scanf("%d",&temp.score);
st[Number++]=temp;
bc(&temp);
}
printf("添加成功\n");
}


void bc(struct student *st)
{
FILE *fp=NULL;
fp=fopen("C://student.dat","ab+");
fwrite(st,sizeof(struct student),1,fp);
fclose(fp);
}


int dq(struct student st[])
{
FILE *fp=NULL;
int i=0;
fp=fopen("C://student.dat","rb");
while(fread(&st[i],sizeof(struct student),1,fp))
i++;
fclose(fp);
return i;
}


void xianshi()
{
printf("\t*****************************************************************\n");
printf("\t* *\n");
printf("\t* 学生成绩管理系统 *\n");
printf("\t* *\n");
printf("\t* [1] 增加学生成绩 [2] 查看学生成绩 *\n");
printf("\t* [3] 查找学生成绩 [4] 删除学生成绩 *\n");
printf("\t* [5] 统计(总成绩和平均分)[6] 输出不及格人数 *\n");
printf("\t* [7] 修改学生信息 [8] 关于作者 *\n");
printf("\t* [9] 保存数据 [0] 退出系统 *\n");
printf("\t*****************************************************************\n");
}


这种程序最近到处都有人在求...

70,005

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧