C语言做管理系统这个怎么做

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

中的第四个,求写个子函数就行,文件用a.txt,一定要TC,稍微加点注释,谢了

你可以参考这个通讯录试着自己改写一下,原理差不多的
//头文件
#include"stdio.h"
#include"string.h"
#include"windows.h"
#include"iostream.h"
#include "stdlib.h"
#include "conio.h"
#define MAX_LIST 3
#define FILE_NAME"phone_list.txt"

//函数声明
int check_phone(char *phone_num);//查找电话号码
void menu();//学生通讯录管理主菜单
void get_line(char *cmd);//接受用户命令行输入的字符
void add_user();//添加用户
int load_file(void);//装载文件
int save_file(void);//存储文件
void show_all(void);//显示用户
void del_user(void);//删除用户
void found_user(void);//查找用户
void change_user(void);//修改用户
void fenlei_user(void);//分类显示所有用户
void fenlei_user1();//显示所有移动用户
void fenlei_user2();//显示所有联通用户
void fenlei_user3();//显示所有电信用户

//定义结构体
struct phone_node{
charname[10];
charphone[12];
charflag;
};

struct phone_node phone_list[MAX_LIST];
char cmd[128];

//添加函数
void add_user()//实现向通讯录添加一条用户记录的功能,使用函数add_user()实现
{
system("color56");
system("cls");
inti,ret;
charu_name[10];
charflag = 0;
printf("请输入用户姓名:\n");
get_line(cmd);
strcpy(u_name,cmd);
printf("请输入用户手机号:\n");
get_line(cmd);
ret= check_phone(cmd);//检验用户号码是否有效,如果有效就添加到结构体数组中
if(ret)
{
printf("添加用户数据有误,请重新输入!\n");
}
else
{
for(i=0;i<MAX_LIST;i++)
{
if(phone_list[i].flag==0)
{
strcpy(phone_list[i].name,u_name);
strcpy(phone_list[i].phone,cmd);
phone_list[i].flag=1;//设置当前记录有效
printf("添加用户数据成功!\n用户名:%s\n手机号:%s\n",
phone_list[i].name,phone_list[i].phone);
flag= 1;//代表有存储空间,已保留一条记录
break;

}
}
if(flag== 0)
printf("当前用户已满,请删除另外的用户!\n");
}
}

//主函数
int main(){
load_file();
//intret;
while(1){
menu();
get_line(cmd);

switch(cmd[0])
{
case '0':
printf("谢谢使用!\n");
return0;
break;
case '1':
add_user();
break;
case '2':
show_all();
change_user();
break;
case '3':
found_user();
break;
case '4':
show_all();
del_user();
show_all();
break;
case '5':
show_all();
break;
case'6':
fenlei_user();
break;
default:
printf("输入有误,请重新选择!\n");
}
save_file();

}

return0;
}
/*---------------------------------
函数名称:get_line
函数功能:接受用户输入的字符,只有回车或换行时才结束
入口参数:char*cmd存放字符缓冲区首址
返回值:无
--------------------------------------------*/

//删除函数

void get_line(char*cmd)
{
chartemp;
while(1)
{
temp=getchar();
if(temp==0xa||temp==0xd)
{
*cmd='\0';
break;
}
*cmd=temp;
cmd++;
}
}
//检验号码
int check_phone(char *phone_num)
{

system("color 56");
system("cls");
inti;
if(strlen(phone_num)==11)
{
printf("输入的新的手机号码是:%s\n",phone_num);
for(i=0;i<11;i++)
{
if(phone_num[i]<'0'||phone_num[i]>'9')
{
return1;
}
}
}
else
{
return1;
}
return 0;
}

//删除记录
void del_user(void){
inti;
charflag=0;
printf("请输入用户姓名:");
get_line(cmd);
for(i=0;i<MAX_LIST;i++){
if(phone_list[i].flag==1){
if(strcmp(phone_list[i].name,cmd)==0){
phone_list[i].flag=0;
printf("删除用户数据成功!\n用户名:%s,手机号:%s\n",phone_list[i].name,phone_list[i].phone);
flag=1;//代表删除一条记录
break;
}
}
}
if(flag==0)
printf("usernot found\n");
}

//显示所有记录
void show_all(void){
inti;
for(i=0;i<MAX_LIST;i++){
if(phone_list[i].flag==1){
printf("[%d]Name=%s,phone=%s\n",i,phone_list[i].name,phone_list[i].phone);
}
}
}
//查找函数
void found_user(void){
inti;
charflag=0;
printf("输入要查找用户姓名:");
get_line(cmd);
for(i=0;i<MAX_LIST;i++){
if(phone_list[i].flag==1){
if(strcmp(phone_list[i].name,cmd)==0){
printf("查找成功!\n");
printf("[%d]Name=%s,phone=%s\n",i,phone_list[i].name,phone_list[i].phone);
flag=1;//代表查找到一条记录
break;
}
}
}
if(flag==0)
printf("usernot found!\n");
}

void change_user(void){
inti;
charflag=0;
printf("输入要查找用户姓名:");
get_line(cmd);
for(i=0;i<MAX_LIST;i++){
if(phone_list[i].flag==1){
if(strcmp(phone_list[i].name,cmd)==0){
printf("查找成功!\n");
printf("[%d]Name=%s,phone=%s\n",i,phone_list[i].name,phone_list[i].phone);
flag=1;//代表查找到一条记录
break;
}
}
}
if(flag==0){
printf("usernot found!\n");
}
printf("请输入要修改的姓名:");
get_line(cmd);
strcpy(phone_list[i].name,cmd);
printf("修改成功!\n");
printf("请输入要修改的电话号码:");
get_line(cmd);
strcpy(phone_list[i].phone,cmd);
printf("修改成功!\n");
}

//分类显示所有用户

void fenlei_user(void){
printf("请选择显示类别:\n\t\t1-显示所有移动用户\n\t\t2-显示所有联通用户\n\t\t3-显示所有电信用户\n");
get_line(cmd);
switch(cmd[0])
{
case'1':
printf("移动用户列表如下:\n");
fenlei_user1();
break;
case'2':
printf("联通用户列表如下:\n");
fenlei_user2();
break;
case'3':
printf("电信用户列表如下:\n");
fenlei_user3();
break;
default:
printf("选择错误!\n");
break;
}
}

void fenlei_user1()//显示所有移动用户
{
inti;
chara[3];
for(i=0;i<MAX_LIST;i++)
{
if(phone_list[i].flag==1)
{
strncpy(a,phone_list[i].phone,3);
a[3]='\0';
if(strcmp(a,"134")==0||strcmp(a,"135")==0||strcmp(a,"136")==0||strcmp(a,"137")==0||strcmp(a,"138")==0||strcmp(a,"139")==0||strcmp(a,"158")==0||strcmp(a,"159")==0||strcmp(a,"188")==0)
printf(" [%d] 姓名:%s 号码:%s\n",i,phone_list[i].name,phone_list[i].phone);
}
}
}

void fenlei_user2()//显示所有联通用户
{
inti;
chara[3];
for(i=0;i<MAX_LIST;i++)
{
if(phone_list[i].flag==1)
{
strncpy(a,phone_list[i].phone,3);
a[3]='\0';
if(strcmp(a,"130")==0||strcmp(a,"131")==0||strcmp(a,"132")==0||strcmp(a,"155")==0||strcmp(a,"156")==0||strcmp(a,"185")==0||strcmp(a,"186")==0)
printf(" [%d] 姓名:%s 号码:%s \n",i,phone_list[i].name,phone_list[i].phone);
}
}
}

void fenlei_user3()//显示所有电信用户
{
inti;
chara[3];
for(i=0;i<MAX_LIST;i++)
{
if(phone_list[i].flag==1)
{
strncpy(a,phone_list[i].phone,3);
a[3]='\0';
if(strcmp(a,"133")==0||strcmp(a,"153")==0||strcmp(a,"180")==0||strcmp(a,"189")==0)
printf(" [%d] 姓名:%s 号码:%s\n",i,phone_list[i].name,phone_list[i].phone);
}
}
}

//主菜单
void menu(){

system("color 48");
printf("\t\t=============================================================\n");
printf("\t\t----------------****学生通讯录管理系统****-------------------\n");
printf("\t\t=============================================================\n");
printf(" \t\t1.增添用户:\n");
printf(" \t\t2.修改用户:\n");
printf(" \t\t3.查找用户:\n");
printf(" \t\t4.删除用户:\n");
printf(" \t\t5.显示所有用户:\n");
printf(" \t\t6.分类显示用户:\n");
printf(" \t\t0.退出系统:\n");
printf("\t\t--------------------------------------------------------------\n");
printf("\t\t请选择:");
}

int save_file(void){
FILE*fp;
fp=fopen(FILE_NAME,"w");
if(NULL==fp){
printf("fileopen error\n");
return-1;
}
fwrite(phone_list,sizeof(struct phone_node),MAX_LIST,fp);
fclose(fp);
printf("savedata to file\n");
return0;
}

int load_file(void){
FILE*fp;
intret;
fp=fopen(FILE_NAME,"r");
if(NULL==fp){
printf("fileopen error\n");
returnsave_file();
}
ret=fread(phone_list,sizeof(structphone_node),MAX_LIST,fp);
if(ret!=MAX_LIST){
fclose(fp);
printf("fileload reeor\n");
return-1;
}
fclose(fp);
printf("fileload data ok\n");
return0;
}追问

谢谢了,虽然不是我要的,但是辛苦了

追答

呵呵。。不客气,没有直接帮到你

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-04
才给15分。。。tc应该是老师让的吧。。。我们当初老师也让用tc,。。。这tc太坑爹了,很过老了,功能太少了,还成codeblocks吧,比tc好用多了,代码都是一样的,用哪个编程环境无所谓的追问

我一共就20分,5分用来提问,TC是我们学的,这是作业必须用这个,我说的不算

追答

上课听一听,这种大作业,是可以完成的,就是麻烦一些,如果是计算机专业的,那就自己看看书自己做吧,。。。反正早晚都得会

相似回答