C语言课程设计报告212899.docx
- 文档编号:4257822
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:20
- 大小:19.58KB
C语言课程设计报告212899.docx
《C语言课程设计报告212899.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告212899.docx(20页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告212899
(此文档为word格式,下载后您可任意编辑修改!
)
C语言课程设计报告
题目:
学院
专业
年级班别
学号
学生姓名
指导教师
成绩
2009年12月
1.课程设计题目,内容,要求
设计一个《学生通讯录管理系统》,在动态链表程序的基础上,设计要求如下
(必须使用结构体和链表等数据结构)
1建立文件
存储文件使用指定文件名或默认文件名;
可以不保存输入记录,但需要确认是否保存输入记录
如果已有文件,只能在其后追加;
新增记录可以不存入原文件中,以可以用原来的文件覆盖内存的内容;
可以将多个个文件记录合并到一个文件中;
2文件的存取和显示
可以单独存取文件;
可以随时显示内存中记录的全部内容;
可以直接存取默认文件或指定文件;
3删除记录
可以按“姓名”或“电话”方式删除记录并更新内存链表内容;
能给出被删除的信息,输出没有找到的信息;
如果已经是空表,上出时应给出信息并返回主菜单;
如果没有要删除的信息,输出没有找到的信息;
删除操作仅限于内存,只有执行记录时,才能覆盖原记录;
4查询记录
可以按“姓名”或“电话”或“宿舍”方式查询记录
能给出查询记录的信息;
如果查询的信息不存在,输出没有找到的信息;
5整体功能
a可以随时检索、删除、或增加新记录,保存或取消新的记录
b使姓名可由16位字符和数字的混合编码组成
c使电话号码可由18位字符和数字组成
d将输出信息加上输出信息信息栏,例如
姓名电话性别年龄生日宿舍
李四1234男217月1日东二333
e使用菜单实现功能的正确的选择
f所有节点信息都是动态生成。
6测试程序
应列出测试大纲对程序进行测试;
应保证测试用例测试到程序的各种边缘情况
二.总体设计
系统包括的函数有
Main.c:
整个系统的主函数
Menu.c:
系统的主界面
Creat.c:
创建链表
Add.c:
追加记录
Del.c:
删除记录
Modify.c:
修改记录
Read.c:
从外部文件读取记录
Save.c:
保存记录到外部文件
Search.c:
查找记录
Skim.c:
浏览记录
Headyy.—menu—Creat.c
Add.c
Del.c
Modify.c
Read.c
Save.c
Search.c
Skim.c
三.详细设计
程序清单:
","Num.","Name","Tel.","Sex","Age","Birtday","Dormitory");
structaddbok*声明结构体类型*
{longnum;
charnam[16];*储存编号*
chartel[18];*储存电话*
charsex[4];*学生性别*
intage;*学生年龄*
charbir[10];*学生生日*
chardor[13];*学生宿舍*
structaddbok*next;
};
voidprint(structaddbok*);
具体实现:
创建了结构体变量addbok
main.c
#include voidmain() {intc,color,i=0; structaddbok*\n\n\n\n\n\n\n\n\n\t\t\tWelcometoStudents'AddressSystem"); printf("\n\n"); printf("\t\t\t\t\t\tDesignbyYangYing"); sleep (1);*延时1秒* clrscr(); } while(i==0) { system("cls"); printf("============================Students'AddressSystem============================"); printf("****************************************\n"); printf("*NO.: Name: YangYingClass: ScienceOfComputerClass1*\n"); printf("****************************************\n"); printf("================================================================================"); c=meun(); switch(c) { case1: .\n\n"); } } getch(); } 具体实现: 设置了开始的欢迎词,并且对照参考书设置了背景色和字体颜色,每种颜色延时1秒,在此函数中输入了自己的学号班级姓名,并且用switch语句实验了选择功能操作的函数指向。 menu.c #include intmeun(void) { inti; printf("\n\n"); printf("#####menu#####\n"); printf("************************************************************\n"); printf("|1: Creat2: Additem3: Skimitems|\n"); printf("|4: Modifyitem5: Searchitem6: Deleteitem|\n"); printf("|7: Readfile8: Saveitem0: Exitsystem|\n"); printf("************************************************************\n"); printf("\n\tPleasechoosethenumberwhichyouWANT: "); scanf("%d",&i); return(i); } 具体实现: 主要表现了主函数的菜单,供用户选择。 1选项是建立链表并且创建多个新记录 2选项是在链表后面追加若干个记录 3选项是浏览存储的记录 4选项是修改已有的记录 5选项是查找记录 6选项是删除系统中的记录 7选项是从外部文件读取记录 8选项是保存记录到外部文件 0选项是推出系统 creat.c #include structaddbok*creat(void)*引用结构体addbok* { inti=2; structaddbok*p1,*p2,*========================Enteranewrecord,STOPby\"0\"==========================="); printf("\n"); printf("NO.1: \n"); printf("Num.: "); scanf("%ld",&p1->num); if(p1->num==0) {printf("\n\n"); printf("\nWrittenover\n"); getch(); system("cls"); return(=n+1; if(n==1){"); printf("NO.%d: \n",i); i=i+1; printf("Num.: "); scanf("%ld",&p1->num); if(p1->num==0) {p2->next=NULL; printf("\n\n"); printf("\nWrittenover\n"); getch(); system("cls"); return(\n"); printf("\nWrittenover\n"); getch(); system("cls"); return(intn; structaddbok*add(structaddbok*"); while(yy! =0) { p1=(structaddbok*)malloc(LEN); p0=p2="); printf("\n"); printf("Num.: "); scanf("%ld",p1->num); printf("Name: "); scanf("%s",p1->nam); printf("Tel.: "); scanf("%s",p1->tel); printf("Sex: "); scanf("%s",p1->sex); printf("Age: "); scanf("%d",&p1->age); printf("Birthday: "); scanf("%s",p1->bir); printf("Dormitory: "); scanf("%s",p1->dor); if(p2==NULL) { n=n+1; =n+1; p2->next=p1; p1->next=NULL; } else { while(p2->next! =NULL) { p0=p2; p2=p2->next; } n=n+1; p2->next=p1; p1->next=NULL; } } printf("\n----Writtenover----\n"); printf("\nEnter\"0\"tothemenu,Anykeygoon: "); scanf("%d",&yy); } system("cls"); return(intn; structaddbok*del(structaddbok*=================================Deleterecord=================================\n"); while(yy! =0) { if("); gotoend;} printf("\nEnterthenum.youwanttodelete: "); scanf("%ld",&num); p1==n-1; printf("\n-----~Delete~------\n"); gotoend;} else {p2->next=p1->next;n=n-1; printf("\n-----~Delete~------\n"); gotoend;} } else{printf("\nSorry,cannotfindtherecord! \n"); gotoend;} end: {printf("\nEnter\"0\"tothemenu,Anynumbergoon: "); scanf("%d",&yy);} } system("cls"); return(intn; structaddbok*modify(structaddbok*================================Modifyarecord================================\n"); if(===Norecordnow===\n"); return("); printf("%-12s%-12s%-12s%-10s%-10s%-10s%-12s","Num.","Name","Tel.","Sex","Age","Birthday","Dormitory"); printf("%-12ld%-12s%-12s%-10s%-10d%-10s%-12s\n",p1->num,p1->nam,p1->tel,p1->sex,p1->age,p1->bir,p1->dor); printf("\n================================================================================\n"); while(yy! =0) {printf("\n*************WhichonedoyouwanttoModify? ***************\n"); printf("1: Num.2: Name\n"); printf("3: Tel.4: Age\n"); printf("\n************************************************************\n"); printf("yourchoose: "); scanf("%d",&x); switch(x) { case1: printf("OriginNum.: %ld\n",p1->num); printf("PleaseinputanewNum.: "); scanf("%ld",&num); p1->num=num; printf("\n**Success! **\n"); break; case2: printf("Originname\n",p1->nam); printf("\nPleaseinputanewname: "); scanf("%s",p1->nam); printf("\n**Success! **\n"); break; case3: printf("OriginTel.: %s===\n",p1->tel); printf("\nPleaseinputanewTel.: "); scanf("%s",p1->tel); printf("\n**Success! **\n"); break; case4: printf("Originage: %d===\n",p1->age); printf("\nPleaseinputthenewage: "); scanf("%d",&p1->age); printf("\n**Success! **\n"); break; } printf("\nEnter\"0\"tothemenu,Anynumbergoon: "); scanf("%d",&yy); } } else{printf("\nSorry,cannotfindtherecordyouwant! \n");getch();} system("cls"); return(intn; structaddbok*read(void) { inti; structaddbok*p1,*p2,*kt; FILE*fp; system("cls"); fp=fopen("addbok.txt","rb"); n=getw(fp); p1=p2=(structaddbok*)malloc(LEN); kt=p1; fread(p1,sizeof(structaddbok),1,fp); for(i=0;i<(n-1);i++)*此语句可以这样用我不知道,网上翻来的* { p1=(structaddbok*)malloc(LEN); p2->next=p1; p2=p1; fread(p1,sizeof(structaddbok),1,fp);*读写一个数据块* } fclose(fp); printf("\n===AlreadyReading===\n\n"); getch(); return(kt); } 具体实现: 从外部文件读取addbok.txt,addbok.txt是保存了用户所输入的记录的文件。 其中for语句有点顺序的问题,可是我不知道怎么改。 save.c #include voidsave(structaddbok*"); printf("*1: AutoSaveasaddbook_yy.txt*\n"); printf("*2: Coveratxt*\n"); printf("*3: Renameatxt*\n"); printf("************************************************************\n"); v=getch(); switch(v) {case'1': system("cls"); if((fp=fopen("addbok.txt","wb"))==NULL) { printf("cannotopenthefile\n"); return; } putw(n,fp); for(i=0;i { if(fwrite(p,sizeof(structaddbok),1,fp)! =1) {printf("Writeerror\n");} p=p->next; } fclose(fp); printf("\n===Success! ===\n\n"); getch();break; case'2': clrscr(); printf("\n\n\n\n\t\tEnterthefilename: "); scanf("%s",&tr); system("cls"); if((fp=fopen(tr,"wb"))==NULL) { printf("Cannotopenthefile\n"); return; } putw(n,fp); for(i=0;i { if(fwrite(p,sizeof(structaddbok),1,fp)! =1) {printf("Writeerror\n");} p=p->next; } fclose(fp); printf("\n===Success! ===\n\n"); getch();break; case'3': clrscr(); printf("\n\n\n\n\t\tEnterthefilename: "); scanf("%s",&tr); system("cls"); if((fp=fopen(tr,"wb"))==NULL) { printf("Cannotopenthefile\n"); return; } putw(n,fp); for(i=0;i { if(fwrite(p,sizeof(structaddbok),1,fp)! =1) {printf("Writeerror\n");} p=p->next; } fclose(fp); printf("\n===Success! ===\n\n"); getch();break; } } 具体实现: 保存记录到外部文件addbook_yy.txt。 search.c #include voidsearch(structaddbok******************************SearchRecord*********************************\n"); printf("\n===========================NoRecord! =======================================\n"); getch(); system("cls"); return;} while(j! =0) { printf("\n*****************************SearchRecord*********************************\n"); printf("Choosewahtyouwant: \n"); printf("\n1: Num.\n2: Name\n3: Tel.\n4: Dormitry\n\t\t"); b=getch(); switch(b) {case'1': printf("PleaseinputtheNum.: "); scanf("%ld",&t); printf("\n"); for(i=0,k=0;i { if((p->num)==t) {k=1; break; }p=p->next; } if(k==0) {printf("****Sorry,cannotfind! ****\n");} else { printf("\n================================================================================"); PR; printf("%-12ld%-12s%-12s%-10s%-10d%-10s%-12s\n",p->num,p->nam,p->tel,p->sex,p->age,p->bir,p->dor); printf("================================================================================\n"); } printf("\n"); printf("\nEnter\"0\"tothemenu,Anynumbergoon: "); scanf("%d",&j); p="); for(i=0,k=0;i { if((0==strcmp(p->nam,tr))) {k=1; break; }p=p->next; } if(k==0) {printf("****Sorry,cannotfind! ****\n");} else { printf("\n================================================================================"); PR; printf("%-12ld%-12s%-12s%-10s%-10d%-1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 212899